Msys2安装教程

1. 前言

之前一直是使用的Cygwin作为命令行终端, 后来好像是因为Cygwin上的git不兼容还是什么原因, 具体记不太清了, 就安装了git for windows后来终端也就切换到了git bash, 使用了很长一段时间, 后面发现git for window安装不了额外的软件, 使用完整的Linux命令行都是在虚拟机上完成的, 也就一直这样别扭的用着. 今天发现一个可用在windows上使用bash并可以安装额外软件包的方法,特地写文章纪念一下.

2. Msys2的历史

Cygwin最初由Cygnus Solutions开发, 于1995年发布. 它最初是为了在Windows上运行GNU工具集而创建的, Cygnus Solutions为Windows创建了一个POSIX的运行时库, 这套运行时库可以允许类Unix软件被编译然后运行在Windows上面. 这是一项了不起的成就, 它方便开发人员可以花最小的代价将Unix程序移植到Windows上面. 当然Cygnus Solutions还做了另外一项开创性的贡献让Unix开发人员可以使用GNU工具开发Windows应用. 感兴趣的可以深入了解一下.

MinGW的全称叫做(Minimalist GNU for Windows), MinGW在Cygwin基础上做了进一步的创新, MinGW为开发者提供呢一个轻量级的开发环境, 如果说Cygwin使用运行时库在Windows上模拟了一整套Unix系统调用, 这样GNU工具不用修改或少量修改就能运行在Windows上. 那么MinGW的贡献就是为GNU程序提供了一套编译,Debug和打包工具,相当于提供了一整套开发环境, 这样GNU源代码通过这些工具打包后, 可以直接调用Windows的API运行在Windows上, 而不依赖运行时. 这样使得整个架构更轻量级.

MSYS的全称叫做(Minimal System) 是一个在Windows上运行的类Unix环境和命令行接口, 它基于MinGW, 并提供了一个更完整的Unix环境和命令行接口. MSYS还提供了一组工具和库, 运行开发人员使用开源工具和库构建Windows应用程序. MSYS使用的是一个名为MinGW-get的包管理器.

Msys2是Msys的一个后继项目, 它提供了一个更现代的Unix环境和命令行接口, 包括许多常见的类Unix工具和库. 与Msys不同, Msys2使用了一个名为pacman的软件包管理器, 它类似于Arch Linux中使用的pacman.

git for windows是基于Msys2 开发的, 如果不需要Git GUI, 完全可以用Msys2替代它了.

3. 安装

我选择的版本是msys2-x86_64-20230318.exe

  1. 下载安装程序(官网首页有):官网 或 CSDN:https://download.csdn.net/download/ymzhu385/45988277
  2. 运行安装程序。MSYS2 需要 64 位 Windows 7 或更新版本。
  3. 输入所需的安装路径
  4. 下载的位置很多, 可以使用
  5. 完成后,勾选Run MSYS2 now。

4. 配置

由于计划将 msys2 作为基本的命令行工具,但是在实际使用过程中,发现其无法调用 window 下面的程序,
包括 python,ruby 等,由此推测其环境变量中未包含系统环境变量,导致敲命令的时候,程序无法识别到。

解决方案:
添加一个新的 Windows 环境变量 MSYS2_PATH_TYPE=inherit。

具体如何添加, 可以参考这篇文章MSYS2使用windows环境变量

5. 安装额外软件包

先安装git, 这样就可以替代git for windows了.

1
2
3

pacman -S git

再安装一个我喜欢的文件传输工具rsync

1
2
3

pacman -S rsync

再装个ansible, 简直不要太香了. 有人说Ansible不能安装在Windows下面, 这种说法是不准确的.

实际可以通过msys2进行安装, 这一种安装方式是Ansible官网上也没有介绍的. 有了Ansible意味着在Windows上可以以命令行的方式管理Linux主机了.

1
2
3

pacman -S ansible

6. Msys2与Cmder整合

打开Cmder导航到settings=>Startup=>Tasks.

新建一个task, 给task命名例如Bash::Msys2

Task parameters不用填写

在Commands一栏填入例如如下内容, 路径按照自己的安装路径酌情修改

1
set CHERE_INVOKING=1 & C:\tools\msys2\usr\bin\bash.exe --login -i -new_console:C:"C:\tools\msys2\msys2.ico"

保存, 如果要将Msys2作为默认终端, 勾选Default task for new console再次保存.

注意:
win11 cmder 打开 远程 vim 有时会出现 空白屏幕, 打字不显示的 bug
解决办法: Debug -> Properties… -> 选项 -> 使用旧版控制台(UI)(需要重新启动,影响所有控制台)
参考: https://github.com/Maximus5/ConEmu/issues/2384

7. pacman命令详解

安装软包

1
2
3

pacman -S package_name

删除软件包

1
pacman -R package_name

删除指定软件包,及其所有没有被其他已安装软件包使用的依赖关系:

1
pacman -Rs package_name

查询软件包

pacman -Ss package

安装一个’本地’包(不从源里)

1
pacman -U /path/to/package/package_name-version.pkg.tar.gz

安装一个’远程’包(不从源里)

1
pacman -U http://url/package_name-version.pkg.tar.gz

8. 更新

最近尝试了一下WSL, 发现它是在Windows上使用Linux最方便的方式. 如果说Cygwin, MinGW, Msys, Msys2是民间组织在弥合Windows和Linux的鸿沟,
那么WSL则是Microsoft官方主动向Linux”投诚”. 曾经Microsoft对Linux是非常仇视的态度, 将Linux视为”恶性肿瘤”, 如今Microsoft也开始主动拥抱Linux了, 不仅在自己的云产品上拥抱Linux, 在自家的核心产品Windows上也开始拥抱Linux了.

如果需要安装配置WSL可以参考我的博客鹏叔的博客空间 - Windows下搭建WSL Linux开发环境.

另外本文原文位于Msys2安装教程, 需要最近更新及反馈问题请访问原文.

9. 参考文章

Windows下使用Git+rsync构建文件同步工具

git bash 下 pacman 环境配置

搭建msys2基础开发平台

pacman命令详解