MSYS2学习笔记:基础使用
本随笔用于记录随笔作者在使用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
下执行这段命令,那么使用的终端就是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
该组合命令组合了参数y
和u
,可以实现“一次命令,两个操作”:更新软件包仓库之后再更新软件包,可以省去重复输入命令的繁琐操作。
搜索软件包
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>