介绍

MSYS2 是一个基于 Cygwin 的软件分发和构建平台,它提供了一个类 Unix 环境,使得开发者能够在 Windows 系统上运行和编译基于 Unix 的应用程序。MSYS2 配备了包管理器(pacman),它来自 Arch Linux,提供了安装、更新和管理软件包的便捷方式。以下是一些 MSYS2 的具体用途示例:

  1. 编译软件:MSYS2 可以编译许多只能在 Linux 环境中编译的软件,如使用 GCC 或 Clang 编译器的 C/C++ 项目。
  2. 运行 Unix 命令:MSYS2 提供了许多 Unix 命令行工具,如 Bash、grep、sed 和 awk,可以在 Windows 上执行这些工具。
  3. 开发跨平台软件:开发者可以使用 MSYS2 来开发和测试在 Windows 和 Unix 系统上都能运行的软件。
  4. 管理依赖:通过 pacman 包管理器,用户可以容易地安装、更新和管理依赖库和工具,支持大量开源软件和库的安装。
  5. 创建包:开发者可以使用 MSYS2 制作和维护自己的软件包,使得软件部署和分发更为方便。
  6. 脚本和自动化:MSYS2 提供了强大的 shell 环境,支持编写和运行 shell 脚本来自动化各种任务。

通过这些功能,MSYS2 成为了开发者在 Windows 环境中进行 Unix 风格开发的有力工具。

包含子环境

clang32

clang64

mingw32

mingw64

msys

ucrt64

如果需要确保应用程序在不同版本的Windows上都有良好的兼容性,特别是在新的Windows系统上,ucrt64可能是更好的选择。如果对兼容性的要求不那么高,或者已经有针对mingw64的特定优化,那么使用mingw64也很有意义。

通常在windows使用ucrt64就可以了

pacman

更新软件包数据库

Pacman 是一个命令行的包管理器,广泛使用在 Arch Linux 及其衍生系统如 Manjaro 和 MSYS2 中。它主要用于安装、更新、搜索和管理软件包。这里给出了一些基本的 Pacman 命令,可以帮助你在使用 MSYS2 或类似系统时管理软件包:

包的数量

1
2
pacman -Sl | wc -l
12517

1. 更新软件包数据库

1
pacman -Sy

这个命令将同步包数据库,这是安装或更新软件包之前的一个重要步骤。

2. 升级所有已安装的包

1
pacman -Syu

这个命令首先同步包数据库,然后升级所有已安装的包到最新版本。

3. 安装软件包

1
pacman -S package_name

使用这个命令来安装名为 package_name 的包。

4. 搜索软件包

1
pacman -Ss search_term

这个命令搜索所有与 search_term 相关的包。

5. 查看已安装的软件包

1
pacman -Q

这个命令列出所有已安装的包。

6. 查看特定软件包的详细信息

1
pacman -Qi package_name

查看已安装的 package_name 软件包的详细信息。

7. 删除软件包

1
pacman -R package_name

删除名为 package_name 的包。如果要包括依赖(那些不再被其他已安装软件包所需的依赖),可以使用 -Rs

8. 清除未使用的包(孤立包)

1
pacman -Rns $(pacman -Qdtq)

这个命令将移除所有没有其他包依赖的孤立软件包。

9. 清理缓存

1
pacman -Sc

这个命令清理掉旧版本的包缓存,释放磁盘空间。如果你想彻底清理所有缓存,包括当前安装的版本,可以使用 pacman -Scc,但这通常不推荐。

这些是 Pacman 包管理器的一些基本使用方法。在实际操作中,你可能需要根据你的具体需求调整命令或查看更多的选项和参数。

让pacman优先使用国内镜像

pacman默认优先使用MSYS2官方源,在国内的速度可能比较慢,可以考虑修改配置让它优先使用国内的镜像(比如科大或者清华的)。

%MSYS2%\etc\pacman.d路径下,找到mirrorlist.<子环境>文件,然后把其中USTC或者TUNA的链接移到最上方即可。

例如,将Server = https://mirrors.***.edu.cn/msys2/mingw/ucrt64/移到mirrorlist.ucrt64的最上方,即可让UCRT64子环境的包优先使用科大镜像下载。

pacman -Ss中屏蔽掉不想要的子环境

打开%MSYS2%/etc/pacman.conf,到最下面用#注释掉不想要的子环境源。

1
2
3
4
# 如果不想在pacman -Ss里看到mingw32环境的包

#[mingw32]
#Include = /etc/pacman.d/mirrorlist.mingw

安装特定包

重要

1
pacman -S  ucrt64/mingw-w64-ucrt-x86_64-boost
1
pacman -S mingw-w64-ucrt-x86_64-toolchain

pacman -S cmake安装的是MSYS子环境的cmake

要安装ming64子环境下的cmake,则应该是

1
pacman -S mingw-w64-x86_64-cmake

参考

msys2 | 镜像站使用帮助 | 北京外国语大学开源软件镜像站 | BFSU Open Source Mirror

给萌新的C/C++环境搭建攻略(VSCode和MSYS2) - 知乎 (zhihu.com)