安装
官网https://www.msys2.org/上直接进行下载。
如果下载速度比较慢,则可以右键复制下载链接到某雷软件里下载,经过p2p和镜像加速后速度非常快。
安装过程中,日志窗口有一些乱码,但是没什么影响能正常安装完成。
pacman
mysys2里使用了pacman来管理软件包。
-Msys2使用pacman管理软件。pacman的基本使用如下:
pacman -S <packge-name> # 安装软件
pacman -U <gz-file> # 安装本地包,其扩展名为 pkg.tar.gz
pacman -Syu # 同步Msys2源,并更新
pacman -Sy # 仅同步源
pacman -Su # 更新系统
pacman -Sy <packge-name> # 同步源后再安装软件
pacman -R <packge-name> # 该命令将只删除包,不包含该包的依赖。
pacman -Rs <packge-name> # 在删除包的同时,也将删除其依赖。
pacman -Rd <packge-name> # 在删除包时不检查依赖。
pacman -Ss <keywords> # 这将搜索含关键字的包。
pacman -Qi <packge-name> # 查看有关包的信息。
替换软件源
但如果上面下载安装包速度慢的话,使用pacman就同样会很慢了,比如我这里显示:
:: 正在同步软件包数据库...
错误:无法从 repo.msys2.org : Operation too slow. Less than 1 bytes/sec transferred the last 10 seconds 获取文件 'mingw32.db'
配置一下pacman使用清华大学的镜像(PS:其实安装包也可以从清华大学镜像站中下载)。修改方法如下:
编辑 /etc/pacman.d/mirrorlist.mingw32
,在文件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686
编辑 /etc/pacman.d/mirrorlist.mingw64
,在文件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64
编辑 /etc/pacman.d/mirrorlist.msys
,在文件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch
然后执行pacman -Syu
刷新软件包并且更新mysys2系统组件即可,然后重启shell。
上面的/etc/是指mysys的安装目录下的etc目录。
mingw
mysys2默认在安装目录下放置了几个编译器的目录:clang32、clang64、mingw32、mingw64 但基本上都是空的,需要另外安装。
快速安装所有mingw:
pacman -S mingw-w64-i686-toolchain
pacman -S mingw-w64-x86_64-toolchain
但上面会将gcc-objectc等一起安装,比如i686的列表如下:
- mingw-w64-i686-binutils 2) mingw-w64-i686-crt-git 3) mingw-w64-i686-gcc 4) mingw-w64-i686-gcc-ada 5) mingw-w64-i686-gcc-fortran 6) mingw-w64-i686-gcc-libgfortran 7) mingw-w64-i686-gcc-libs 8) mingw-w64-i686-gcc-objc 9) mingw-w64-i686-gdb 10) mingw-w64-i686-headers-git 11) mingw-w64-i686-libmangle-git 12) mingw-w64-i686-libwinpthread-git 13) mingw-w64-i686-make 14) mingw-w64-i686-pkg-config 15) mingw-w64-i686-tools-git 16) mingw-w64-i686-winpthreads-git 17) mingw-w64-i686-winstorecompat-git
如果只想部分安装,手工自己挨个安装。示例,我的安装脚本:
pacman -S mingw-w64-i686-binutils mingw-w64-x86_64-crt-git mingw-w64-i686-gcc mingw-w64-i686-gcc-libs mingw-w64-i686-gdb mingw-w64-i686-headers-git mingw-w64-i686-libmangle-git mingw-w64-i686-libwinpthread-git mingw-w64-i686-make mingw-w64-i686-pkg-config mingw-w64-i686-tools-git mingw-w64-i686-winpthreads-git
然后自动安装一些依赖库(,并下载100多M,安装837M)
mingw-w64-i686-bzip2-1.0.8-1 mingw-w64-i686-ca-certificates-20190110-1
mingw-w64-i686-crt-git-8.0.0.5576.34082b63-1 mingw-w64-i686-expat-2.2.9-1
mingw-w64-i686-gettext-0.19.8.1-8 mingw-w64-i686-gmp-6.2.0-1 mingw-w64-i686-isl-0.22-1
mingw-w64-i686-libffi-3.2.1-4 mingw-w64-i686-libiconv-1.16-1 mingw-w64-i686-libsystre-1.0.1-4
mingw-w64-i686-libtasn1-4.15.0-1 mingw-w64-i686-libtre-git-r128.6fb7206-2
mingw-w64-i686-mpc-1.1.0-1 mingw-w64-i686-mpdecimal-2.4.2-1 mingw-w64-i686-mpfr-4.0.2-2
mingw-w64-i686-ncurses-6.1.20190630-1 mingw-w64-i686-openssl-1.1.1.d-2
mingw-w64-i686-p11-kit-0.23.19-1 mingw-w64-i686-python-3.8.1-1
mingw-w64-i686-readline-8.0.001-2 mingw-w64-i686-sqlite3-3.31.0-1 mingw-w64-i686-tcl-8.6.10-1
mingw-w64-i686-termcap-1.3.1-5 mingw-w64-i686-tk-8.6.10-1
mingw-w64-i686-windows-default-manifest-6.4-3 mingw-w64-i686-xz-5.2.4-1
mingw-w64-i686-zlib-1.2.11-7 mingw-w64-x86_64-headers-git-8.0.0.5576.34082b63-1
mingw-w64-i686-binutils-2.33.1-1 mingw-w64-i686-gcc-9.2.0-2 mingw-w64-i686-gcc-libs-9.2.0-2
mingw-w64-i686-gdb-8.3.1-3 mingw-w64-i686-headers-git-8.0.0.5576.34082b63-1
mingw-w64-i686-libmangle-git-8.0.0.5573.a4de8df4-1
mingw-w64-i686-libwinpthread-git-8.0.0.5574.33e5a2ac-1 mingw-w64-i686-make-4.2.1-4
mingw-w64-i686-pkg-config-0.29.2-1 mingw-w64-i686-tools-git-8.0.0.5573.a4de8df4-1
mingw-w64-i686-winpthreads-git-8.0.0.5574.33e5a2ac-1
mingw-w64-x86_64-crt-git-8.0.0.5576.34082b63-1
下载大小: 107.72 MiB
全部安装大小: 837.50 MiB
msys2启动入口
安装Msys2后,或解压Msys2后,第一次运行下msys2_shell.cmd,提示第一次设置初始化完毕后,就可以运行Msys2.exe、mingw64.exe或mingw32.exe,主要区别:
- mingw32 优先使用 msys64/mingw32 下的工具;
- mingw64 优先使用 msys64/mingw64 下的工具;
- msys2 两个都不使用,只用自身 msys 的工具;82
其它常用软件或库
pacman -S base-devel git wget p7zip perl ruby python2
,不过有些上面安装过程中已经安装了。
与cmder集成
平常使用的是cmder,与其集成可以参考:
使用过程中的错误
GPGME error: 无效的加密引擎
参考资料:
- This error can happen if there are conflicting gnupg installations in
PATH
. Try running pacman in a special shell likeset PATH=
,msys2_shell.bat
. - MacType can cause this. Put
gpg.exe
andpacman.exe
lines under the[UnloadDll]
section of your .ini file underC:\Program Files (x86)\MacType\ini
orC:\Program Files\MacType\ini
. - Check BLODA.
- It can happen when the upgrade process reported failures (fork errors). Use
update-core
for system upgrades and take care to follow the instructions. - Try re-installing
gpgme
libgpgme
,gnupg
andpacman
packages (you can temporarily disable signature checking in/etc/pacman.conf
). - Try removing
/etc/pacman.d/gnupg
, thenpacman-key --init
,pacman-key --populate msys2
,pacman-key --refresh-keys
. - Maybe
autorebase.bat
is sometimes needed even for 64-bit MSYS2. - Try debugging for GPGME by
export GPGME_DEBUG=9
before runningpacman ...something... 2> ~/gpgmelog
and looking at the logfile~/gpgmelog
.
调用pacman-key --refresh-keys 时提示我找不到readline7,而我之前编译某项目时升级了libreadline8,这似乎破坏了gpgme库的引用。
临时在 D:\msys64\etc\pacman.conf
中将 SigLevel = Never
的注释打开,把下面的 SigLevel = Required DatabaseOptional
给注释了。
pacman能暂时能用。然后使用pacman -Su 升级所有系统组件(看日志中有重新安装libgpgme)后,再解除注释,pacman恢复正常。