如何使用ArchLinux包管理
入门
Arch Linux 提供了类似于其他现代 Linux 发行版中的包管理工具。 这是常见包管理操作的指南。
在继续之前,请确保您的包数据库是最新的:
sudo pacman -Sy
搜索
Arch Linux 中的大多数包管理操作都倾向于简洁而不是直观,格式如下:
pacman -<a-z><a-z>.
例如,搜索 pacman 存储库的常规命令是
pacman -Ss <package>
像大多数 pacman 命令一样,它并不是特别明显。 pacman 还附带了一个 pacsearch 实用程序。 它的工作原理类似,但它比 pacman -Ss 有一些增强:
- 颜色高亮
- 已安装的软件包类别(“本地”)
以下是列出所有带有关键字“linux”的标准包的方法。
pacsearch linux
有时会有很多符合您搜索条件的包裹。 在使用像 yaourt 这样的 AUR 助手时尤其如此。 正则表达式可以帮助缩小列表范围。 例如,假设您正在尝试查找与“ack”工具相关的任何内容。 由于诸如“package”、“hack”或“playback”之类的词,对 ack 的常规搜索将不可避免地返回大量结果进行筛选。
pacsearch ack
但是,没有多少单词 以 ack 开头。 在搜索词中添加 ^ 将仅包含以这些字母开头的结果。 这至少适用于 pacsearch、pacman 和 yaourt。
pacsearch ^ack
为保证正则表达式按预期工作,请用引号将其括起来。
pacsearch 'c\+\+'
如果您想获取与搜索匹配的已安装软件包列表,请将结果通过管道传输到“grep local”。 “-A 1”选项告诉 grep 在每次匹配后包含一行(在这种情况下是包描述)。
pacsearch linux | grep local -A 1
或者,您可以使用 pacman -Qs 并使用没有颜色突出显示的缺点。
pacman -Qs linux
如果你想用 pacman -Ss 突出显示颜色,你可以从 /etc/pacman.conf 取消注释颜色。 不过,它突出显示了与 pacsearch 不同的内容,因此您可能想同时尝试两者,看看您更喜欢哪一个。
sudo vi /etc/pacman.conf ... # Misc options #UseSyslog Color #TotalDownload CheckSpace #VerbosePkgLists ...
获取资讯
吃豆人-Qi 显示有关已安装软件包的基本信息。
pacman -Qi linux Name : linux Version : 3.8.4-1 Description : The linux kernel and modules Architecture : x86_64 URL : http://www.kernel.org/ Licenses : GPL2 Groups : base Provides : kernel26=3.8.4 Depends On : coreutils linux-firmware kmod mkinitcpio>=0.7 Optional Deps : crda: to set the correct wireless channels of your country Required By : None Optional For : None Conflicts With : kernel26 Replaces : kernel26 Installed Size : 64728.00 KiB Packager : Tobias Powalowski <tpowa@archlinux.org> Build Date : Wed Mar 20 21:16:17 2013 Install Date : Fri Mar 29 01:02:14 2013 Install Reason : Explicitly installed Install Script : Yes Validated By : Unknown
如果 pacman -Qi 没有传递任何参数,它会返回系统中的所有包。 您可以搜索此输出以获取有关已安装软件包的专门信息。
例如,如果您想获取每个包及其大小:
pacman -Qi | grep -e "Name" -e "Installed Size" Name : a52dec Installed Size : 244.00 KiB Name : aalib Installed Size : 768.00 KiB ...
pacman -Qi 提供有关已安装软件包的信息,而 pacman -Si 查询数据库以获取有关软件包的最新检索信息。
pacman -Si linux Repository : core Name : linux Version : 3.11.6-1 Description : The Linux kernel and modules Architecture : x86_64 URL : http://www.kernel.org/ Licenses : GPL2 Groups : base Provides : kernel26=3.11.6 Depends On : coreutils linux-firmware kmod mkinitcpio>=0.7 Optional Deps : crda: to set the correct wireless channels of your country Conflicts With : kernel26 Replaces : kernel26 Download Size : 47855.98 KiB Installed Size : 64493.00 KiB Packager : Thomas Bächler <thomas@archlinux.org> Build Date : Fri 18 Oct 2013 05:25:12 PM EDT Validated By : MD5 Sum SHA256 Sum Signature
吃豆人-Ql 列出与包关联的所有文件。
pacman -Ql vi vi /usr/ vi /usr/bin/ vi /usr/bin/edit vi /usr/bin/ex vi /usr/bin/vedit vi /usr/bin/vi ...
每行的包名会使输出在脚本中更难使用。 pacman -Qlq (即 “pacman query list, quiet”) 不会打印包名。
pacman -Qlq vi /usr/ /usr/bin/ /usr/bin/edit /usr/bin/ex /usr/bin/vedit /usr/bin/vi ...
你可以使用 pacman -Qlq | grep bin 查找该包中位于 bin 文件夹中的所有文件(因此可能是可执行文件)。 当与包关联的命令与包名不同时,这很方便。
pacman -Qql pacman | grep bin /usr/bin/ /usr/bin/bacman /usr/bin/checkupdates /usr/bin/cleanupdelta /usr/bin/makepkg /usr/bin/paccache /usr/bin/pacdiff /usr/bin/paclist /usr/bin/paclog-pkglist /usr/bin/pacman /usr/bin/pacman-db-upgrade /usr/bin/pacman-key /usr/bin/pacman-optimize /usr/bin/pacscripts /usr/bin/pacsearch /usr/bin/pacsort /usr/bin/pacsysclean /usr/bin/pactree /usr/bin/pkgdelta /usr/bin/rankmirrors /usr/bin/repo-add /usr/bin/repo-elephant /usr/bin/repo-remove /usr/bin/testdb /usr/bin/testpkg /usr/bin/updpkgsums /usr/bin/vercmp
存储消耗
查看系统上哪些软件包占用最多空间的最简单方法是 pacsysclean,它随 pacman 一起提供。
pacsysclean
如果您想要一些更复杂的东西,pacgraph 实用程序可以生成 SVG 和 PNG 格式的最大包的依赖词云。
pacgraph 可以在社区存储库中找到。
sudo pacman -S pacgraph
pacgraph -c 会像 pacsysclean 一样输出到控制台。 如果有很多包,pacgraph 的输出可能会变得笨拙,因为它是从大到小排序的,这与 pacsysclean 不同。 您可以通过管道将其传送到头部以查看最大的包裹。
pacgraph -c | head Autodetected Arch. Loading package info Total size: 730MB 114MB linux 103MB libtool 84MB pacgraph 40MB imagemagick 25784kB ppl 22264kB nmap 17295kB pkgfile
在我测试的 Arch Linux droplet 中,在此输出之前产生了一些错误。 要删除错误,您需要从默认的“C”更正区域设置。
export LANG=en_US.UTF-8
在没有任何参数的情况下运行,pacgraph 会生成一个 SVG,如果可能的话,还会生成一个 PNG 文件。 如果您的虚拟服务器没有设置文件共享系统,访问 pacgraph 生成的图像的最简单方法是使用 Secure Copy。
scp <user>@<addr>:<remote_path> <local_path>
注意:虽然 pacgraph 会声称在安装 imagemagick 和 libpng 后会渲染 PNG 文件,但在撰写本文时,它实际上不会在没有 inkscape 的情况下生成 PNG,因为它有很多依赖项。
下载/安装
安装或升级标准软件包的典型方法是 pacman -S。
sudo pacman -S <package>
包的名称中通常有类似的模式。 括号可以用作快捷方式。
sudo pacman -S lua-{sec,socket,zlib}
有时您可能只想下载一个包用于存档而不安装它。 pacman -Sw 将下载一个包到缓存文件夹。
sudo pacman -Sw <package>
如果已经下载了一个包,或者如果你知道 url,你可以直接安装它。
sudo pacman -U <package_path>
升级
由于 pacman 围绕着将软件包与远程存储库“同步”的想法,pacman -S 将升级已经安装的软件包。
Pacman 可以列出过期的软件包。
pacman -Qu
不幸的是,它不会在存储库中显示包的版本,因此您将无法判断每个包的过时程度。 如果这对您很重要,您可能需要查看 3rd 方包管理器或编写一个脚本,将来自 pacman -Qi 和 pacman -Si 的包版本绑定在一起。
您可以使用正则表达式从 pacman -Qi 或 pacman -Si 获取版本。
pacman -Qi linux | grep "Version" | sed 's/^Version\s*:\s//' 3.8.4-1
然后编写一个并排显示版本的脚本。
for i in $(pacman -Qqu) do printf "$i: " printf "$(pacman -Qi "$i" | grep 'Version' | sed 's/^Version\s*:\s//') " echo "$(pacman -Si "$i" | grep 'Version' | sed 's/^Version\s*:\s//')" done
Pacman 提供了一种一次性升级所有软件包的方法,但不推荐这样做,因为 Arch 是一个滚动发行版。 如果出现问题,可能需要时间来确定原因是什么。
sudo pacman -Syu
降级
Arch Linux 没有正式维护已弃用的软件包。 相反,您将需要依赖包缓存和 Arch Rollback Machine 等位置。
缓存
使用 pacman 下载的每个软件包都存储在 /var/cache/pacman/pkg 中。
ls /var/cache/pacman/pkg | grep linux linux-3.11.6-1-x86_64.pkg.tar.xz linux-3.9.7-1-x86_64.pkg.tar.xz ...
如果您想恢复到缓存中的包,只需直接安装即可。
pacman -U <path_to_cached_file>
拱形回滚机
Arch Rollback Machine 是 Arch Linux 官方镜像的快照集合。 在撰写本文时,它可以追溯到四个月前。 ARM 目前托管在 http://seblu.net/a/arm 上,但将来可能会改变。
可以使用 pacman -U 远程安装 ARM 软件包 .
pacman -U http://seblu.net/a/arm/2013/08/31/extra/os/x86_64/apache-2.2.25-1-x86_64.pkg.tar.xz
浏览 ARM 以获取较旧的软件包并不十分方便。 幸运的是,有一些工具可以让这更容易:
他们在缓存和 ARM 中搜索旧版本。 它们的用法是您所期望的。
downgrade <package> downgrader <package>
这两个工具都在 AUR 中,因此安装它们的最简单方法是使用 yaourt 之类的助手。
注意:ARM 是一个非官方项目,过去已经关闭,所以最好避免清除缓存,以防 ARM 出现故障或再次更改位置。 如果您想推出自己的 ARM,github 上似乎有一个 NodeJS 项目。
移动
删除一个包,前提是没有任何东西依赖它。 保留其依赖项安装。
sudo pacman -R <package>
删除一个包,前提是没有任何东西依赖它。 删除其他任何东西都不需要的依赖项。
sudo pacman -Rs <package>
强制删除一个包。 这是您只需从系统中擦除软件包并在单独重新安装还不够时重新安装的命令。
sudo pacman -Rdd <package>
非官方软件包
绝大多数 Arch Linux 软件包都位于 Arch User Repository。 从 AUR 搜索和下载软件包的最佳方法是使用 帮助工具 。
AUR和yaourt工具上已经有Digital Ocean文章。