在windows上模拟linux环境,MSYS2——Windows平台下模拟linux环境的搭建-Go语言中文社区...
最近從MSYS1.0遷移到了MSYS2.0,簡(jiǎn)單講,MSYS2.0功能更強(qiáng)大,其環(huán)境模擬更加符合linux。雖然本身來自cygwin,但其集成了pacman軟件管理工具,很有l(wèi)inux范,并且可以直接手動(dòng)添加Mingw原生編譯工具集。當(dāng)下git代碼托管最為紅火,其在win平臺(tái)所使用的linux模擬環(huán)境就是msys2.0,從此角度,msys2.0將取代msys1.0成為主流。
1)下載MSYS2.0并安裝
MSYS2的官網(wǎng)為http://msys2.github.io/,但是其下載速度太慢,推薦使用國內(nèi)的源進(jìn)行下載,例如使用中科院源http://mirrors.ustc.edu.cn/msys2。根據(jù)電腦系統(tǒng),可以選擇32位(i686版)以及64位(x86_64)。其中32位版本可以運(yùn)行在32和64位windows中,但64位版msys2只能運(yùn)行在64位windows中,我選擇的是32位版本(i686),電腦系統(tǒng)是win7x64(注意,使用32版本msys2仍然可以編譯64位的程序,只需要mingw編譯工具支持64即可)。對(duì)于使用鏡像源的朋友,可以進(jìn)入/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編譯工具集。執(zhí)行mingw32.exe會(huì)默認(rèn)將mingw32掛在/mingw下,即使用mingw32進(jìn)行編譯;反之亦然。執(zhí)行msys2.exe則進(jìn)入原版msys2的環(huán)境,如需要mingw,則需要使用pacman進(jìn)行安裝。推薦使用mingw32/64。(下面msys2環(huán)境均指從Mingw32/64.exe中啟動(dòng)的環(huán)境,并非原始msys2.exe的啟動(dòng)環(huán)境)
2)配置msys2環(huán)境
首次進(jìn)入,會(huì)自動(dòng)在/home/中添加當(dāng)前電腦用戶的用戶名作為模擬環(huán)境的用戶,并創(chuàng)建默認(rèn)的配置文件,以“.”開頭:
-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界面更加優(yōu)秀,并且支持多種編碼方式,可以隨時(shí)調(diào)節(jié)窗口大小,設(shè)置字體等。該軟件配置文件為.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
因?yàn)閙sys2下面絕大多數(shù)軟件均使用utf-8編碼,所以建議使用utf-8字符編碼。這樣就會(huì)造成使用windows自帶的軟件(如ping,ipconfig等)會(huì)顯示亂碼。不用擔(dān)心,使用iconv進(jìn)行實(shí)時(shí)轉(zhuǎn)換編碼,例如:
ping www.cnblogs.com | iconv -f gbk -t utf-8
即可正常顯示中文字符,為了方便使用,可以定義一個(gè)別名:“alias win='iconv -f gbk -t utf-8'”,以后當(dāng)使用win的程序時(shí),只需要在命令后面加入“|win”即可正常顯示。
由于linux默認(rèn)將.開頭的文件視為隱藏,但是win則不然,這樣就會(huì)在~目錄下面創(chuàng)建各種以點(diǎn)開頭的文件和文件夾,為了隱藏次文件,可以使用win自帶的attrib命令進(jìn)行隱藏。具體為:
attrib +h +s /S /D /home/user/.*
由于運(yùn)行環(huán)境的問題,如果在msys2下運(yùn)行則會(huì)失敗,請(qǐng)?jiān)谳斎雡indows下的正確路徑名。也可以添加到.bashrc中,具體為:
attrib.exe "c:msys2x86homeyourname.*" +h +s //S //D
其中“//”為轉(zhuǎn)義/,在每次啟動(dòng)后,自動(dòng)隱藏.*文件和文件夾。
3)安裝必要軟件
msys2最大的優(yōu)點(diǎn)就是集成pacman軟件管理器,可以方便的對(duì)軟件進(jìn)行安裝與卸載。與ArchLinux一樣,pacman會(huì)自動(dòng)安裝依賴包,pacman的基本命令如下:
pacman -S package_name#安裝軟件包
pacman -R package_name#刪除軟件包
pacman -Rs package_name#順便刪除軟件包相關(guān)依賴
pacman -Syu #升級(jí)系統(tǒng)中的所有包
pacman -Ss package#查詢軟件包
pacman -Qs package#查詢已安裝的包
pacman -Qi package#顯示查找的包的信息
pacman -Ql package#顯示你要找的包的文件都安裝的位置
pacman -Sw package#下載但不安裝包
pacman -U /path/package.pkg.tar.gz #安裝本地包
pacman -Scc#清理包緩存,下載的包會(huì)在/var/cache 這個(gè)目錄
pacman -Sf pacman#重新安裝包
由于默認(rèn)msys2使用國外的軟件源,速度很慢,經(jīng)常下載一半就失敗了,可以更換成國內(nèi)源,以中科院的為例,在/etc/pacman.d/中有三個(gè)mirrorlist文件,分別為mingw32,mingw64以及msys的源,具體配置如下:
##
## MSYS2 repository mirrorlist
##
## Primary
## msys2.org
## 中國科學(xué)技術(shù)大學(xué)開源軟件鏡像
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
## 中國科學(xué)技術(shù)大學(xué)開源軟件鏡像
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
## 中國科學(xué)技術(shù)大學(xué)開源軟件鏡像
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/
若使用其他源,請(qǐng)根據(jù)源說明添加。
下面是我安裝的軟件供參考:
autoconf
autogen
automake
colordiff
cscope
ctags
git
mercurial
nasm
openssh
openssl
p7zip
subversion
tar
xz
yasm
zip
unzip
注意:請(qǐng)不要安裝gcc或mingw的軟件,建議使用其他版本的mingw,pacman軟件倉庫中的是gcc5,推薦使用http://xhmikosr.1f0.de/tools/msys的版本,我使用的是MSYS_MinGW-w64_GCC_483_x86-x64,下載解壓后,直接將mingw提取出,覆蓋到Msys2/mingw32即可。
4)定制個(gè)性標(biāo)題和命令前導(dǎo)符
經(jīng)常使用git的用戶,必定對(duì)于此界面很熟悉:
如何在標(biāo)題動(dòng)態(tài)的顯示當(dāng)前git的branch和更改狀態(tài)呢?很簡(jiǎn)單,從git源碼中提提取出git-completion.sh以及git-prompt.sh,放在~下面,并將其重命名為點(diǎn)開頭,以進(jìn)行隱藏,然后在.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='[ 33]0;$MSYSTEM:w $(__git_ps1 "(%s)") 07
33[32m]u@h [ 33[33m]w 33[36m]$(__git_ps1 "(%s)") 33[0m]
$ '
重新啟動(dòng)msys2(實(shí)際上為mingw32.exe)則可以實(shí)現(xiàn)如上圖示。如果進(jìn)入普通文件夾,則不會(huì)出現(xiàn)git的狀態(tài)。
總結(jié)
以上是生活随笔為你收集整理的在windows上模拟linux环境,MSYS2——Windows平台下模拟linux环境的搭建-Go语言中文社区...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux富文本软件,CherryTre
- 下一篇: linux内核arch模块,Kernel