删除软件包
当需要彻底卸载一个软件包时,可以使用如下命令:
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
表示安装。