mysys2使用记录

安装

官网https://www.msys2.org/上直接进行下载。

image.png

如果下载速度比较慢,则可以右键复制下载链接到某雷软件里下载,经过p2p和镜像加速后速度非常快。

安装过程中,日志窗口有一些乱码,但是没什么影响能正常安装完成。

pacman

mysys2里使用了pacman来管理软件包。

-Msys2使用pacman管理软件。pacman的基本使用如下:

pacman -S      # 安装软件
pacman -U          # 安装本地包,其扩展名为 pkg.tar.gz
pacman -Syu                 # 同步Msys2源,并更新 
pacman -Sy                  # 仅同步源 
pacman -Su                  # 更新系统
pacman -Sy     # 同步源后再安装软件
pacman -R      # 该命令将只删除包,不包含该包的依赖。
pacman -Rs     # 在删除包的同时,也将删除其依赖。
pacman -Rd     # 在删除包时不检查依赖。
pacman -Ss        # 这将搜索含关键字的包。
pacman -Qi     # 查看有关包的信息。

替换软件源

但如果上面下载安装包速度慢的话,使用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的列表如下:

  1. 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,与其集成可以参考:

  • https://www.52pojie.cn/thread-950212-1-1.html
  • https://www.cnblogs.com/hongdada/p/7989068.html

使用过程中的错误

GPGME error: 无效的加密引擎

参考资料:

  • This error can happen if there are conflicting gnupg installations in PATH. Try running pacman in a special shell like set PATH=, msys2_shell.bat.
  • MacType can cause this. Put gpg.exe and pacman.exe lines under the [UnloadDll] section of your .ini file under C:\Program Files (x86)\MacType\ini or C:\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 and pacman packages (you can temporarily disable signature checking in /etc/pacman.conf).
  • Try removing /etc/pacman.d/gnupg, then pacman-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 running pacman ...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恢复正常。

你可能感兴趣的:(mysys2使用记录)