最近从MSYS1.0迁移到了MSYS2.0,简单讲,MSYS2.0功能更强大,其环境模拟更加符合linux。虽然本身来自cygwin,但其集成了pacman软件管理工具,很有linux范,并且可以直接手动添加Mingw原生编译工具集。当下git代码托管最为红火,其在win平台所使用的linux模拟环境就是msys2.0,从此角度,msys2.0将取代msys1.0成为主流。

1)下载MSYS2.0并安装

MSYS2的官网为http://msys2.github.io/,但是其下载速度太慢,推荐使用国内的源进行下载,例如使用中科院源http://mirrors.ustc.edu.cn/msys2。根据电脑系统,可以选择32位(i686版)以及64位(x86_64)。其中32位版本可以运行在32和64位windows中,但64位版msys2只能运行在64位windows中,我选择的是32位版本(i686),电脑系统是win7x64(注意,使用32版本msys2仍然可以编译64位的程序,只需要mingw编译工具支持64即可)。对于使用镜像源的朋友,可以进入/msys2/distrib/下载最新版本。可以选择安装包,也可以选择压缩包。

安装完后的目录列表如下:

总用量 24029
-rw-r--r-- 1 Domain Users 68 三月 30 2016 autorebase.bat
drwxr-xr-x 1 Domain Users 0 十二 28 18:55 bin
-rw-r--r-- 1 Domain Users 915 十二 27 21:39 components.xml
drwxr-xr-x 1 Domain Users 0 十二 27 21:38 dev
drwxr-xr-x 1 Domain Users 0 十二 27 22:52 etc
drwxr-xr-x 1 Domain Users 0 一月 4 11:08 home
-rw-r--r-- 1 Domain Users 6965 十二 27 21:39 InstallationLog.txt
-rw-r--r-- 1 Domain Users 2070564 十二 27 21:39 maintenancetool.dat
-rwxr-xr-x 1 Domain Users 22021168 十二 27 21:39 maintenancetool.exe
-rw-r--r-- 1 Domain Users 4200 十二 27 21:39 maintenancetool.ini
drwxr-xr-x 1 Domain Users 0 十二 28 10:29 mingw32
-rwxr-xr-x 1 Domain Users 50822 九月 8 02:37 mingw32.exe
-rw-r--r-- 1 Domain Users 154 九月 8 02:37 mingw32.ini
drwxr-xr-x 1 Domain Users 0 十二 28 10:30 mingw64
-rwxr-xr-x 1 Domain Users 50822 九月 8 02:37 mingw64.exe
-rw-r--r-- 1 Domain Users 154 九月 8 02:37 mingw64.ini
-rwxr-xr-x 1 Domain Users 50822 九月 8 02:37 msys2.exe
-rw-r--r-- 1 Domain Users 25758 七月 19 13:05 msys2.ico
-rw-r--r-- 1 Domain Users 151 九月 8 02:37 msys2.ini
-rw-r--r-- 1 Domain Users 5307 七月 19 13:05 msys2_shell.cmd
-rw-r--r-- 1 Domain Users 362 十二 27 21:39 network.xml
dr-xr-xr-x 9 Domain Users 0 一月 4 18:50 proc
drwxr-xr-x 1 Domain Users 0 一月 4 18:50 tmp
drwxr-xr-x 1 Domain Users 0 十二 27 22:46 usr
drwxr-xr-x 1 Domain Users 0 十二 27 21:37 var

其中mingw32和mingw64为空文件夹,可以直接拷贝任意版本的mingw编译工具集。执行mingw32.exe会默认将mingw32挂在/mingw下,即使用mingw32进行编译;反之亦然。执行msys2.exe则进入原版msys2的环境,如需要mingw,则需要使用pacman进行安装。推荐使用mingw32/64。(下面msys2环境均指从Mingw32/64.exe中启动的环境,并非原始msys2.exe的启动环境)

2)配置msys2环境

首次进入,会自动在/home/中添加当前电脑用户的用户名作为模拟环境的用户,并创建默认的配置文件,以“.”开头:

-rw-r--r-- 1 Domain Users       77 十二 28 11:48 .bash_logout
-rw-r--r-- 1 Domain Users 1255 七月 19 13:05 .bash_profile
-rw-r--r-- 1 Domain Users 6523 十二 30 14:17 .bashrc
-rw-r--r-- 1 Domain Users 3272 七月 19 13:05 .inputrc
-rw-r--r-- 1 Domain Users 148 十二 30 16:29 .minttyrc
-rw-r--r-- 1 Domain Users 1574 七月 19 13:05 .profile

msys2使用mintty作为终端模拟,该软件比windows自带的cmd界面更加优秀,并且支持多种编码方式,可以随时调节窗口大小,设置字体等。该软件配置文件为.minttyrc,下面是我的配置:

$ cat .minttyrc
BoldAsFont=-1
CursorColour=0,255,64
CursorType=block
Font=Consolas
FontHeight=12
Locale=zh_CN
Charset=UTF-8
Columns=120
Rows=30
Term=xterm-256color

因为msys2下面绝大多数软件均使用utf-8编码,所以建议使用utf-8字符编码。这样就会造成使用windows自带的软件(如ping,ipconfig等)会显示乱码。不用担心,使用iconv进行实时转换编码,例如:

ping www.cnblogs.com | iconv -f gbk -t utf-8

即可正常显示中文字符,为了方便使用,可以定义一个别名:“alias win='iconv -f gbk -t utf-8'”,以后当使用win的程序时,只需要在命令后面加入“|win”即可正常显示。

由于linux默认将.开头的文件视为隐藏,但是win则不然,这样就会在~目录下面创建各种以点开头的文件和文件夹,为了隐藏次文件,可以使用win自带的attrib命令进行隐藏。具体为:

attrib +h +s /S /D /home/user/.*

由于运行环境的问题,如果在msys2下运行则会失败,请在输入windows下的正确路径名。也可以添加到.bashrc中,具体为:

attrib.exe "c:\msys2x86\home\yourname\.*" +h +s //S //D

其中“//”为转义/,在每次启动后,自动隐藏.*文件和文件夹。

3)安装必要软件

msys2最大的优点就是集成pacman软件管理器,可以方便的对软件进行安装与卸载。与ArchLinux一样,pacman会自动安装依赖包,pacman的基本命令如下:

pacman -S package_name	#安装软件包
pacman -R package_name #删除软件包
pacman -Rs package_name #顺便删除软件包相关依赖
pacman -Syu #升级系统中的所有包
pacman -Ss package #查询软件包
pacman -Qs package #查询已安装的包
pacman -Qi package #显示查找的包的信息
pacman -Ql package #显示你要找的包的文件都安装的位置
pacman -Sw package #下载但不安装包
pacman -U /path/package.pkg.tar.gz #安装本地包
pacman -Scc #清理包缓存,下载的包会在/var/cache 这个目录
pacman -Sf pacman #重新安装包

由于默认msys2使用国外的软件源,速度很慢,经常下载一半就失败了,可以更换成国内源,以中科院的为例,在/etc/pacman.d/中有三个mirrorlist文件,分别为mingw32,mingw64以及msys的源,具体配置如下:

##
## MSYS2 repository mirrorlist
##
## Primary
## msys2.org
## 中国科学技术大学开源软件镜像
Server = http://mirrors.ustc.edu.cn/msys2/REPOS/MSYS2/$arch
Server = http://repo.msys2.org/msys/$arch
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MSYS2/$arch
Server = http://www2.futureware.at/~nickoe/msys2-mirror/msys/$arch/ ##
## 32-bit Mingw-w64 repository mirrorlist
##
## Primary
## msys2.org
## 中国科学技术大学开源软件镜像
Server = http://mirrors.ustc.edu.cn/msys2/REPOS/MINGW/i686
Server = http://repo.msys2.org/mingw/i686
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MINGW/i686
Server = http://www2.futureware.at/~nickoe/msys2-mirror/i686/ ##
## 64-bit Mingw-w64 repository mirrorlist
##
## Primary
## msys2.org
## 中国科学技术大学开源软件镜像
Server = http://mirrors.ustc.edu.cn/msys2/REPOS/MINGW/x86_64
Server = http://repo.msys2.org/mingw/x86_64
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MINGW/x86_64
Server = http://www2.futureware.at/~nickoe/msys2-mirror/x86_64/

若使用其他源,请根据源说明添加。

下面是我安装的软件供参考:

autoconf
autogen
automake
colordiff
cscope
ctags
git
mercurial
nasm
openssh
openssl
p7zip
subversion
tar
xz
yasm
zip
unzip

注意:请不要安装gcc或mingw的软件,建议使用其他版本的mingw,pacman软件仓库中的是gcc5,推荐使用http://xhmikosr.1f0.de/tools/msys的版本,我使用的是MSYS_MinGW-w64_GCC_483_x86-x64,下载解压后,直接将mingw提取出,覆盖到Msys2/mingw32即可。

4)定制个性标题和命令前导符

经常使用git的用户,必定对于此界面很熟悉:

如何在标题动态的显示当前git的branch和更改状态呢?很简单,从git源码中提提取出git-completion.sh以及git-prompt.sh,放在~下面,并将其重命名为点开头,以进行隐藏,然后在.bashrc中增加如下代码:

# Git Completion which extract from git source/contrib/completion
source ~/.git-completion.sh
source ~/.git-prompt.sh
export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_SHOWSTASHSTATE=1
export GIT_PS1_SHOWUNTRACKEDFILES=1
export GIT_PS1_SHOWUPSTREAM="verbose git svn"
export PS1='\[\033]0;$MSYSTEM:\w $(__git_ps1 "(%s)")\007
\033[32m\]\u@\h \[\033[33m\]\w \033[36m\]$(__git_ps1 "(%s)")\033[0m\]
$ '

重新启动msys2(实际上为mingw32.exe)则可以实现如上图示。如果进入普通文件夹,则不会出现git的状态。

MSYS2——Windows平台下模拟linux环境的搭建的更多相关文章

  1. windows系统下ruby开发环境的搭建方法

    ruby是一种简单快捷的面向对象的脚本语言,非常直观.下面说一下windows系统下ruby开发环境的搭建方法. 工具/原料 rubyinstaller.exe 方法/步骤 1 到如下网站去下载最新的 ...

  2. windows平台下基于QT和OpenCV搭建图像处理平台

        在之前的博客中,已经分别比较详细地阐述了"windows平台下基于VS和OpenCV"以及"Linux平台下基于QT和OpenCV"搭建图像处理框架,并 ...

  3. windows平台下安装linux

    win10系统下,可直接安装linux系统,且可打开linux的命令行 安装 1.开始--->微软应用商店 进入之后,在搜索框,搜索linux 在搜索结果中,选择要安装的 linux 系统 这里 ...

  4. windows 10下sublime text3环境的搭建以及配置python开发环境

    1 - 安装Sublime Text 3 到官网下载对应的版本,如下: OS X (10.7 or later is required) Windows - also available as a p ...

  5. [转]Windows平台下安装Hadoop

    1.安装JDK1.6或更高版本 官网下载JDK,安装时注意,最好不要安装到带有空格的路径名下,例如:Programe Files,否则在配置Hadoop的配置文件时会找不到JDK(按相关说法,配置文件 ...

  6. Windows上模拟Linux环境的软件Cygwin

    Windows上模拟Linux环境的软件Cygwin 2010-10-11 15:19      我要评论(0) 字号:T|T Cygwin是一个用于在Windows上 模拟Linux环境的软件.它可 ...

  7. 【android开发】如何在Linux平台下安装JDK环境

    原文:http://android.eoe.cn/topic/android_sdk Linux平台JDK安装 本文主要描述如何在Linux平台下安装JDK环境.进入网页:http://www.ora ...

  8. windows下模拟linux命令的工具 xshell

    windows下模拟linux命令的工具 xshell

  9. 在windows系统下打包linux平台运行的go程序

    在windows系统下打包linux平台运行的go程序 1.先在main.go下打包成.exe可执行程序测试代码是否正确 //cd到main.go目录 go build //打包命令 如果打包成功则表 ...

随机推荐

  1. Angular企业级开发(1)-AngularJS简介

    AngularJS介绍 AngularJS是一个功能完善的JavaScript前端框架,同时是基于MVC(Model-View-Controller理念的框架,使用它能够高效的开发桌面web app和 ...

  2. [C#] C# 知识回顾 - 异常介绍

    异常介绍 我们平时在写程序时,无意中(或技术不够),而导致程序运行时出现意外(或异常),对于这个问题, C# 有专门的异常处理程序. 异常处理所涉及到的关键字有 try.catch 和 finally ...

  3. Linux学习之探索文件系统

    Linux,一起学习进步-    ls With it, we can see directory contents and determine a variety of important file ...

  4. ajax前后端数据交互简析

    前端-------->后端 方法:POST 将要传递给后台的数据在前端拼接成url字符串,通过request.send()传递给后台,后台php把得到的数据以索引数组的方式存储在$_POST中. ...

  5. 你真的会玩SQL吗?之逻辑查询处理阶段

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  6. await and async

    Most people have already heard about the new “async” and “await” functionality coming in Visual Stud ...

  7. 内存映射文件MemoryMappedFile使用

    参考资料: http://blog.csdn.net/bitfan/article/details/4438458 所谓内存映射文件,其实就是在内存中开辟出一块存放数据的专用区域,这区域往往与硬盘上特 ...

  8. C#使用GET、POST请求获取结果

    C#使用GET.POST请求获取结果,这里以一个简单的用户登陆为例. 1. 使用GET请求获取结果 1.1 创建LoginHandler.aspx处理页面 protected void Page_Lo ...

  9. 编译器开发系列--Ocelot语言5.表达式的有效性检查

    本篇将对"1=3""&5"这样无法求值的不正确的表达式进行检查. 将检查如下这些问题.●为无法赋值的表达式赋值(例:1 = 2 + 2)●使用非法的函数 ...

  10. Linux服务器安全配置

    众所周知,网络安全是一个非常重要的课题,而服务器是网络安全中最关键的环节.Linux被认为是一个比较安全的Internet服务器,作为一种开放源代码操作系统,一旦Linux系统中发现有安全漏洞,Int ...