MSYS2——Windows平台下模拟linux环境的搭建
最近从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环境的搭建的更多相关文章
- windows系统下ruby开发环境的搭建方法
ruby是一种简单快捷的面向对象的脚本语言,非常直观.下面说一下windows系统下ruby开发环境的搭建方法. 工具/原料 rubyinstaller.exe 方法/步骤 1 到如下网站去下载最新的 ...
- windows平台下基于QT和OpenCV搭建图像处理平台
在之前的博客中,已经分别比较详细地阐述了"windows平台下基于VS和OpenCV"以及"Linux平台下基于QT和OpenCV"搭建图像处理框架,并 ...
- windows平台下安装linux
win10系统下,可直接安装linux系统,且可打开linux的命令行 安装 1.开始--->微软应用商店 进入之后,在搜索框,搜索linux 在搜索结果中,选择要安装的 linux 系统 这里 ...
- windows 10下sublime text3环境的搭建以及配置python开发环境
1 - 安装Sublime Text 3 到官网下载对应的版本,如下: OS X (10.7 or later is required) Windows - also available as a p ...
- [转]Windows平台下安装Hadoop
1.安装JDK1.6或更高版本 官网下载JDK,安装时注意,最好不要安装到带有空格的路径名下,例如:Programe Files,否则在配置Hadoop的配置文件时会找不到JDK(按相关说法,配置文件 ...
- Windows上模拟Linux环境的软件Cygwin
Windows上模拟Linux环境的软件Cygwin 2010-10-11 15:19 我要评论(0) 字号:T|T Cygwin是一个用于在Windows上 模拟Linux环境的软件.它可 ...
- 【android开发】如何在Linux平台下安装JDK环境
原文:http://android.eoe.cn/topic/android_sdk Linux平台JDK安装 本文主要描述如何在Linux平台下安装JDK环境.进入网页:http://www.ora ...
- windows下模拟linux命令的工具 xshell
windows下模拟linux命令的工具 xshell
- 在windows系统下打包linux平台运行的go程序
在windows系统下打包linux平台运行的go程序 1.先在main.go下打包成.exe可执行程序测试代码是否正确 //cd到main.go目录 go build //打包命令 如果打包成功则表 ...
随机推荐
- Hibernatel框架关联映射
Hibernatel框架关联映射 Hibernate程序执行流程: 1.集合映射 需求:网络购物时,用户购买商品,填写地址 每个用户会有不确定的地址数目,或者只有一个或者有很多.这个时候不能把每条地址 ...
- 对抗假人 —— 前后端结合的 WAF
前言 之前介绍了一些前后端结合的中间人攻击方案.由于 Web 程序的特殊性,前端脚本的参与能大幅弥补后端的不足,从而达到传统难以实现的效果. 攻防本为一体,既然能用于攻击,类似的思路同样也可用于防御. ...
- TSQL Identity 用法全解
Identity是标识值,在SQL Server中,有ID列,ID属性,ID值,ID列的值等术语. Identity属性是指在创建Table时,为列指定的Identity属性,其语法是:column_ ...
- OpenCASCADE BRep Projection
OpenCASCADE BRep Projection eryar@163.com 一网友发邮件问我下图所示的效果如何在OpenCASCADE中实现,我的想法是先构造出螺旋线,再将螺旋线投影到面上. ...
- System.FormatException: GUID 应包含带 4 个短划线的 32 位数(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)。
在NHibernate数据库查询中出现了这个错误,由于是数据库是mysql的,当定义的字段为char(36)的时候就会出现这个错误. [解决方法] 将char(36) 改成varchar(40)就行了 ...
- gulp详细入门教程
本文链接:http://www.ydcss.com/archives/18 gulp详细入门教程 简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优 ...
- CoreCRM 开发实录——想用国货不容易
昨天(2016年12月29日)发了开始开发的文章.本来晚上准备在 Coding.NET 上添加几个任务开始搞起了.可是真的开始用的时候才发现:Coding.NET 的任务功能只针对私有的任务开放.我想 ...
- Shell碎碎念
1. 字符串如何大小写转换 str="This is a Bash Shell script." 1> tr方式 newstr=`tr '[A-Z]' '[a-z]' < ...
- 【干货分享】流程DEMO-合同会审表
流程名: 合同会审表 业务描述: 合同的审批及签订 流程相关文件: 流程包.xml 事务呈批表业务服务.xml 事务呈批表主数据.xml 流程说明: 1.此流程必须先进行事务呈批表流程的配置才可 ...
- BPM配置故事之案例4-子表
公司渐渐对采购管理重视起来了,新招聘了采购主管老李,老李对现有的申请表很不满意,要求将申请物资和申请原因改成物资明细表 物资明细表 小明只好继续致电大毛-- 大毛:把申请物资和申请原因删掉,新增一个数 ...