MSYS2学习笔记:基础使用

发布时间 2023-11-17 19:00:39作者: U_N_Owen

本随笔用于记录随笔作者在使用MSYS2工具过程中需要掌握到的基础知识,例如如何查找想要的工具与其下载、如何环境配置等基础操作。本文内容摘录自MSYS2官方文档
该随笔会不定时更新

随笔作者还正处于学习阶段,难免出现技术上和书写上的问题,如果发现类似问题,欢迎在评论区或私信与我讨论。

启动MSYS2

  • 一般情况下当我们安装好MSYS2之后会提供很多环境供我们使用(MinGW64d、Clan64或UCRT64等),MSYS2工具包提供了一个Windows命令行工具可以让我们在启用之前根据命令启用不同的MSYS2环境:
    msys2_shell.cmd
    我们可以通过添加--help参数打开该cmd脚本的使用方法:
    msys2_shell.cmd --help
    调用命令之后会打印出该命令行脚本的详细参数设置:
Usage:
    msys2_shell.cmd [options] [login shell parameters]

Options:
    -mingw32 | -mingw64 | -ucrt64 | -clang64 | -msys[2]   Set shell type
    -defterm | -mintty | -conemu                            Set terminal type
    -here                            Use current directory as working
                                     directory
    -where DIRECTORY                 Use specified DIRECTORY as working
                                     directory
    -[use-]full-path                 Use full current PATH variable
                                     instead of trimming to minimal
    -no-start                        Do not use "start" command and
                                     return login shell resulting
                                     errorcode as this batch file
                                     resulting errorcode
    -shell SHELL                     Set login shell
    -help | --help | -? | /?         Display this help and exit

Any parameter that cannot be treated as valid option and all
following parameters are passed as login shell command parameters.

参数的详细说明如下(感谢网友@qq_36525177发布的文章MSYS2 介绍与使用对参数的讲解):

  • -mingw32 | -mingw64 | -ucrt64 | -clang64 | -msys[2]
    选择我们要启用的Shell类型,也就是我们要使用的工具环境,目前来说官方最推荐使用ucrt64环境。
  • -defterm | -mintty | -conemu
    选择我们要使用的终端类型。
    -defterm是“Default Terminal(默认终端)”的缩写,一般来说使用的就是系统自带的终端,即cmd
    -mintty是MSYS2集合默认使用的终端。
    -conemu即为conemu
  • -here
    会在我们启用MSYS2之后进入到我们打开该终端时所处的目录。
  • -where DIRECTORY
    类似-here,但是会进入到指定的DIRECTORY目录。
  • -[use-]full-path
    会将系统内的PATH环境变量导入到MSYS2的环境当中,这样的话就能让MSYS2也可以使用系统的环境变量。
  • -no-start
    可以让我们直接进入到MSYS2环境里而不需要打开对应的终端,可以实现无缝打开MSYS2环境而不会有弹窗。一般来说该命令需要搭配-defterm命令使用,因为MSYS2默认使用Mintty终端,如果不指定-defterm的话则MSYS2还是会打开Mintty终端的界面从而无法无缝衔接
  • -shell SHELL
    可以指定我们要使用shell解释器类型,默认是bash。例如我们可以指定zsh作为我们的解释器类型(需要提前安装):-shell zsh

软件包管理(Package Management)

同步(升级)软件包

从主服务软件包仓库拉取软件包信息到本地的软件包仓库

pacman -Sy
因为我们本地的软件包仓库(Package Repositories)不一定代表着最新的软件包版本,所以我们需要首先从软件源上拉取最新的软件包信息到我们的本地仓库上。其中S代表“同步(Synchronization)”,y代表“刷新(Refresh。随笔作者注:这个是ArchLinux Wiki对pacman参数的注释,我个人觉得把y解释为“Synchronize”取第二个字母比较好一些)”

根据本地软件包仓库的信息更新系统

pacman -Su
该命令可以根据本地软件包仓库更新全部软件包到系统上。其中u代表“系统更新(sysupgrade)”

先从服务器拉取软件包信息然后再更新软件包到系统上

pacman -Syu
该组合命令组合了参数yu,可以实现“一次命令,两个操作”:更新软件包仓库之后再更新软件包,可以省去重复输入命令的繁琐操作。

搜索软件包

pacman -Ss <name or part of the namse of the package>
根据软件仓库的信息搜索服务器上指定的软件包。其中s代表“搜索(Search)”。
pacman -Q <package name>
搜索已安装的包中符合<package name>的软件包,而且是完全匹配<package name>指定的名字,如果我们需要模糊搜索或正则搜索,或是搜索描述而不仅仅是名字的话,则需要下面的命令:
pacman -Qs <name or part of the name of the package>
其中Q代表“查询(Query)”。

安装软件包

pacman -S <name of the package>
该命令会安装指定的软件包及其依赖包。

删除软件包

pacman -R <name of the package>
该命令会删除指定的软件包,但是不包括依赖包。因此如果我们需要连同删除该软件包依赖但是不被其他软件包依赖的依赖包时,可以使用如下命令:
pacman -Rs <name of the package>
其中s代表“递归(Recursive)”。
管理工具删除某些程序时会备份重要配置文件,并在其后面加上“*.pacsave”扩展名,使用如下命令可以连同配置文件一起删除:
pacman -Rn <name of the package>
其中n代表“不保存(nosave)”。
如果我们需要完全删除一个软件包(软件包本身、其依赖且没有被其他包依赖的包、配置文件),则可以使用如下的组合命令:
pacman -Rsn <name of the package>