MSYS2 可能是 Windows 下最好的仿 Linux 环境,它采用了 Pacman 作包管理器。

Pacman 软件包管理器是 Arch Linux 的主要特色之一。它结合了简单的二进制包格式和易于使用的构建系统。无论软件包是来自官方存储库还是用户自己的内部版本,Pacman 都能够轻松管理。

Pacman 采用C/S架构,支持系统的滚动发布模型,允许用户使用简单的命令下载、安装软件包和依赖,通过与服务器同步软件包列表来使系统保持最新状态。

本文是 MSYS2 环境下的 Pacman 使用记录。

基本配置

开启颜色

1
2
3
4
# 编辑 pacman.conf 去掉 color 的注释
vim /etc/pacman.conf
...
Color

添加国内软件源

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
vim /etc/pacman.d/mirrorlist.mingw32  #在文件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686
Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686

vim /etc/pacman.d/mirrorlist.mingw64  #在文件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64
Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64

vim /etc/pacman.d/mirrorlist.msys  #在文件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch
Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch
1
2
3
sed -i "1iServer = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch" /etc/pacman.d/mirrorlist.msys
sed -i "1iServer = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686" /etc/pacman.d/mirrorlist.mingw32
sed -i "1iServer = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64" /etc/pacman.d/mirrorlist.mingw64

更新系统

1
2
3
4
5
6
pacman -Sy   # 更新软件包数据库。重新打开shell,运行
pacman -Syu  # 更新包数据库和核心系统包 (可能需要手动关闭终端)

# 重新打开shell(可能需要重新配置软件源)再次执行
pacman -Syu  # 系统更新(建议经常使用)
pacman -Su   # 软件更新

基本操作

1
2
3
4
# 帮助
pacman -h
pacman -S -h
pacman -Q -h
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# 查看可用或已安装软件包
pacman -Sg   # 查看可用软件包组
pacman -Sl   # 查看可安装软件包
pacman -Qg   # 列出所有已安装软件包
pacman -Qe   # 列出所有单独指定安装的软件包
pacman -Qd   # 列出所有作为依赖安装的软件包
pacman -Qt   # 列出不被任何软件包依赖的软件包
pacman -Qet  # 列出所有明确安装且不被依赖的软件包
pacman -Qdt  # 列出所有不再作为依赖的软件包

# 查询软件包和软件包信息
pacman -Sg editors  #查询软件包组包含的软件包
pacman -Qg editors  #本地软件包组包含的软件包
pacman -Si vim git  #查询软件包的详细信息
pacman -Qi vim git  #本地软件包的详细信息
pacman -Sl mingw64  #查看软件库中的软件包清单
pacman -Ql which    #列出已安装软件包中的文件
pacman -Ss vim      #查询远端库中的相关软件包
pacman -Qs vim      #查询已安装的相关软件包
1
2
3
4
5
6
7
8
9
# 安装软件包
pacman -S  package1 package2 ...
pacman -S  group_name     #安装软件包组
pacman -S  extra/package  #安装指定库中的软件包
pacman -Sy package ...    #同步包数据库后再安装
pacman -Sf package        #重新安装软件包
pacman -Sw package        #下载但不安装软件包
pacman -U /path/package.pkg.tar.gz  #安装本地软件包
pacman -U http://www.example.com/repo/example.pkg.tar.gz  #安装远程软件包
1
2
3
4
5
6
7
8
# 删除软件包
pacman -R  pkg_name  #删除软件包
pacman -Rs pkg_name  #删除软件包及相关依赖

# 清理软件包缓存 /var/cache/pacman/pkg
pacman -Sc   # 清除未安装软件包的缓存,保留软件包的当前有效版本
pacman -Scc  # 清理所有缓存,需要软件包时只能重新下载了
paccache -r  # 默认会删除最近3个版本前的软件包

安装开发工具

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 基础工具
pacman -S zsh vim git
pacman -S make diffutils tar
pacman -S mingw-w64-x86_64-nodejs
pacman -S help2man man-db man-pages-posix #文档
pacman -S mingw-w64-x86_64-python2 mingw-w64-x86_64-cmake
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-gdb mingw-w64-x86_64-make

# 安装 Python
pacman -S mingw-w64-x86_64-python2 mingw-w64-x86_64-python2-setuptools mingw-w64-x86_64-python2-pip mingw-w64-x86_64-python2-ipython
pacman -S mingw-w64-x86_64-python3 mingw-w64-x86_64-python3-setuptools mingw-w64-x86_64-python3-pip mingw-w64-x86_64-python3-ipython

# 安装开发工具套件
pacman -S mingw-w64-x86_64-toolchain libraries development base-devel msys2-devel
pacman -S compression VCS sys-utils net-utils editors python-modules
pacman -S mingw-w64-cross mingw-w64-cross-toolchain

结束语

因为 MSYS2 使用了 Pacman,所以想到了 Arch Linux,还有很火的 Manjaro,一款基于 Arch Linux 的桌面操作系统,“替代 Windows 或 MacOS 的又一选择”。

参考

https://wiki.archlinux.org/index.php/Pacman
https://mirrors.tuna.tsinghua.edu.cn/help/msys2
https://lug.ustc.edu.cn/wiki/mirrors/help/msys2