删除软件包
当需要彻底卸载一个软件包时,可以使用如下命令:
yay -Rns <package-name>其中参数为:
R: 移除(remove)指定的包。n: 不保存(no-save)依赖项。s: 移除未使用的依赖项(cascade removal)。
参数
pacman 和 yay 的参数很相近,其中参数可以分为两类,第一类是大写的,表示 operation:
-S: 安装软件包-R: 删除软件包-U: 安装本地包-Q: 查询已安装的软件包
operation 后是第二类小写参数,为 option ,用于修饰 operation ,可以使用 --help 进行命令的查询,如:
pacman -Q --help安装特定版本
如果希望安装特定版本的包的话,可以在 ALA 下找到适合的版本,然后使用如下命令安装:
pacman -U https://archive.archlinux.org/packages/path/packagename.pkg.tar.zst其中 zst 是一种被叫做 Zstandard 的特殊压缩包。里面是二进制文件。这个软件包是通过 PKGBUILD 文件而来的。
但我们有了一个 PKGBUILD 文件,就可以通过 makepkg 命令构建出 .pkg.tar.zst 文件。然后再通过 pacman -U 命令安装。
在传统的安装流程中, pacman 同样会缓存二进制文件,它会被放在 /var/cache/pacman/pkg/ 下。
打扫系统
pacman 的 query 功能是我们打扫系统的基础,当我们直接使用 pacman -Q ,就会列出所有的软件包,和他们的版本,如下所示:
aarch64-linux-musl 1.2.4-1
acpi 1.7-4
acpica 20240927-1
acpid 2.0.34-2
...如果我们使用 -q 参数,那么就只会出现软件包的名称,而不会出现版本号:
python-epc
python-ordered-set
python-prettytable
python-pymupdf这种方式的好处在于它可以作为 pacman 安装或者删除软件包的输入。
此外还有如下重要参数:
-t: 展示所有的“孤儿包”,即现在不作为其他包的依赖的包。-e: 展示所有“主动”安装的包。-d: 展示所有“被动”安装的包,即作为其他的包的依赖被安装的包。需要注意的是,这里强调的是“安装时”的被依赖了,现在可能是孤儿。
但是并不是所有的孤儿包都可以被安全地删除,比如像 EAF 这样的程序,它作为 emacs 的插件,隐式许多 python 包,这种依赖关系并不会被 pacman 监视到。
MakePkg
makepkg 用于从 源码 构建软件。更具体的说, makepkg 负责由脚本文件 PKGBUILD 构建出二进制文件 .pkg.tar.zst 。
我们使用 pacman 的过程,本质是下载 .pkg.tar.zst 并安装的的过程。但是软件源,本质是监控 PKGBUILD 的更新,而不是监控二进制文件的过程。
因此如果我们希望通过修改 PKGBUILD 来自定义构建过程,那么虽然我们用 pacman 可以查看它们,但是我们并不能更新它们,因为它们不来自软件源,它们的 PKGBUILD 是我们自己在维护,因此没法更新。
我们修改完 PKGBUILD 后,可以使用如下命令来安装包:
makepkg -si其中 -s 表示下载相关依赖, -i 表示安装。