MSYS2 配置

介绍

MSYS2 是 MSYS 的一个升级版,准确的说是集成了 pacman 和 Mingw-w64 的 Cygwin 升级版。与 MSYS 最大的区别是移植了 Pacman。

比较

特点 Cygwin MinGW/MSYS MSYS2
是否 GNU
软件支持? 支持绝大多数的 GNU 软件 支持常用软件 支持大多数 GNU 软件
更类似 Linux? 在 Windows 中模拟 Linux 实现了 Bash 等主要的 Linux 程序 原生 64/32bit 支持
GCC 编译 独立的 Windows/Linux 程序编译 (MingGW32 交叉编译 / 依赖 cygwin1.dll) 独立的 Windows 程序编译 独立的 Windows 程序编译
中文支持 直接支持中文显示和输入法 需要配置才能支持中文显示和输入,删除一个中文字符需要删除 2 次 支持中文显示和输入法,中文帮助系统和中文提示(部分软件)
运行速度

安装

安装 MSYS2

从官网下载 MSYS2 安装文件,一路 Next 即可。

安装开发环境

pacman -S --needed base-devel msys2-devel mingw-w64-x86_64-toolchain

配置

环境变量

1
2
3
MSYS_HOME=D:\msys64
MINGW_HOME=D:\msys64\mingw64
LIBRARY_PATH=D:\msys64\mingw64\lib

镜像配置

如果网络环境不好的话,可以增加国内的镜像,速度改进非常明显。

修改 /etc/pacman.d/ 文件夹中修改 mirrorlist 开头的三个文件:

  • mirrorlist.mingw32
1
2
3
4
5
6
7
8
9
10
##
## 32-bit Mingw-w64 repository mirrorlist
##
Server=http://mirrors3.ustc.edu.cn/msys2/REPOS/MINGW/i686

## Primary
## msys2.org
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/
  • mirrorlist.mingw64
1
2
3
4
5
6
7
8
9
10
11
##
## 64-bit Mingw-w64 repository mirrorlist
##

Server=http://mirrors3.ustc.edu.cn/msys2/REPOS/MINGW/x86_64
## Primary
## msys2.org
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/

  • mirrorlist.msys
1
2
3
4
5
6
7
8
9
10
11
##
## MSYS2 repository mirrorlist
##

Server=http://mirrors3.ustc.edu.cn/msys2/REPOS/MSYS2/$arch

## Primary
## msys2.org
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/

代理

如果需要通过代理才能上网的话,可以在 /etc/profile.d/ 增加 proxy.sh,内容如下:

1
2
3
4
5
6
export http_proxy=%PROXY_SERVER%:%PROXY_PORT%
export https_proxy=%PROXY_SERVER%:%PROXY_PORT%
export ftp_proxy=%PROXY_SERVER%:%PROXY_PORT%
export HTTP_PROXY=%PROXY_SERVER%:%PROXY_PORT%
export HTTPS_PROXY=%PROXY_SERVER%:%PROXY_PORT%
export FTP_PROXY=%PROXY_SERVER%:%PROXY_PORT%

用户目录

修改 /etc/fstab,映射用户目录,与宿主共享配置,这样类似 gitconfig 这样的配置只需要配置一份。

1
2
3
4
5
6
# For a description of the file format, see the Users Guide
# http://cygwin.com/cygwin-ug-net/using.html#mount-table

# DO NOT REMOVE NEXT LINE. It remove cygdrive prefix from path
none / cygdrive binary,posix=0,noacl,user 0 0
C:/Users /home ntfs binary,noacl,auto 1 1

公用 HOME 目录

环境变量中添加 MSYS2_PATH_TYPE 值为 inherit

包管理

  • 刷新软件包 pacman -Sy

  • 安装新包 pacman -S <package_names|package_groups>

  • 删除 pacman -R <package_names|package_groups>

  • 搜索 pacman -Ss <name_pattern>

更多请参考 Arch Linux wiki.

安装 zshoh my zsh

  • 安装 zsh
1
2
pacman -Syu
pacman -S zsh
  • 安装 oh my zsh
1
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

zsh 的配置文件是 ~/.zshrc,可以通过编辑这个文件来指定主题,插件。

重新安装

如果在使用过程中, MSYS2 出现不可恢复的问题的时候,可以通过保存安装的 packages 到文件中,再通过此文件重新安装。

  • 保存现有安装包列表到 C 盘中的 packages.txt

pacman -Qqe | xargs echo > /c/packages.txt ; exit

  • 根据保存的 packages.txt 安装
1
2
3
pacman -Sy
pacman --needed -S bash pacman pacman-mirrors msys2-runtime
pacman -S --needed --force $(cat /c/packages.txt)

如果你使用 MacType 的话,请一定在 default.ini (MacType 的配置文件) 添加 gpg/pacman 的例外。

1
2
3
[UnloadDll]
gpg.exe
pacman.exe

via #393 GPGME error: Invalid crypto engine

如果你使用 VirtualBox 4.3.14+ 的话,也需要把相关进程排除。via VirtualBox 4.3.12 以后的 E_FAIL (0x80004005) 问题

—EOF—