zoukankan      html  css  js  c++  java
  • 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:msys2x86homeyourname.*" +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='[33]0;$MSYSTEM:w $(__git_ps1 "(%s)")07
    33[32m]u@h [33[33m]w 33[36m]$(__git_ps1 "(%s)")33[0m]
    $ '
    

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

  • 相关阅读:
    [JSOI2007]文本生成器 --- AC自动机 + DP
    [POI2000]病毒 --- AC自动机
    [HNOI2011]数学作业 --- 矩阵优化
    [BZOJ4245][ONTAK2015]OR-XOR(贪心)
    [BZOJ4247]挂饰(DP)
    [BZOJ4032][HEOI2015]最短不公共子串(Trie+DP)
    [BZOJ4028][HEOI2015]公约数数列(分块)
    [BZOJ4027][HEOI2015]兔子与樱花(贪心)
    [BZOJ4004][JLOI2015]装备购买(贪心+线性基)
    [HDU5029]Relief grain(树链剖分+线段树)
  • 原文地址:https://www.cnblogs.com/eudiwffe/p/6249630.html
Copyright © 2011-2022 走看看