如何使用 Arch Linux 软件包管理

开始的


Arch Linux 提供类似于其他现代 Linux 发行版的包管理功能,这是通用包管理操作的指南。

在继续前,请确保您的包数据库是最新的:

1sudo pacman -Sy

搜索


优于简短性而非直观性,Arch Linux中的大多数包管理操作都以以下格式出现:

1pacman -<a-z><a-z>.

例如,寻找 pacman 存储库的正常命令是

1pacman -Ss <package>

与大多数 pacman 命令一样,它并不特别明显. pacman 也配备了 pacsearch 实用程序. 它以类似的方式工作,但与 pacman -Ss 相比,它有一些改进:

  • 色彩突出
  • 安装包类别 ('本地')

以下是如何列出所有标准包的关键字linux

1pacsearch linux

有时会有很多包匹配你的搜索标准,这尤其适用于使用一个AUR助手,如酸奶。常规表达式可以帮助缩小列表,例如,假设你试图找到与背后工具相关的东西。对ack的常规搜索将不可避免地返回很多结果,比如包装,黑客反弹

1pacsearch ack

但是,没有多少单词 ** 开始** 用 ack. 将 ^ 添加到搜索单词中,只会包含以这些字母开始的结果. 这至少适用于 pacsearch、pacman 和酸奶。

1pacsearch ^ack

为了确保正常的表达式按预期运作,请用引文包围它。

1pacsearch 'c\+\+'

如果你想获得与搜索相匹配的安装包列表,请将结果引导到抓住本地-A 1选项告诉grep在每个匹配后包括一行(在这种情况下,包描述)。

1pacsearch linux | grep local -A 1

或者,您可以使用Pacman -Qs,缺点是没有色彩突出。

1pacman -Qs linux

如果你想用 pacman -Ss 进行颜色突出显示,你可以从 /etc/pacman.conf 解读颜色,但它突出不同于 pacsearch,所以你可能想尝试两者,看看你更喜欢哪一个。

 1sudo vi /etc/pacman.conf
 2
 3...
 4# Misc options
 5#UseSyslog
 6Color
 7#TotalDownload
 8CheckSpace
 9#VerbosePkgLists
10...

获取信息


pacman -Qi 显示有关已安装的软件包的基本信息。

 1pacman -Qi linux
 2
 3Name           : linux
 4Version        : 3.8.4-1
 5Description    : The linux kernel and modules
 6Architecture   : x86_64
 7URL            : http://www.kernel.org/
 8Licenses       : GPL2
 9Groups         : base
10Provides       : kernel26=3.8.4
11Depends On     : coreutils linux-firmware kmod mkinitcpio>=0.7
12Optional Deps  : crda: to set the correct wireless channels of your country
13Required By    : None
14Optional For   : None
15Conflicts With : kernel26
16Replaces       : kernel26
17Installed Size : 64728.00 KiB
18Packager       : Tobias Powalowski <[email protected]>
19Build Date     : Wed Mar 20 21:16:17 2013
20Install Date   : Fri Mar 29 01:02:14 2013
21Install Reason : Explicitly installed
22Install Script : Yes
23Validated By   : Unknown

如果 pacman -Qi 通过没有争议,它会返回系统中的所有包. 您可以搜索此输出获取有关安装的包的专业信息。

例如,如果您想获得每个包和其大小:

1pacman -Qi | grep -e "Name" -e "Installed Size"
2
3Name           : a52dec
4Installed Size : 244.00 KiB
5Name           : aalib
6Installed Size : 768.00 KiB
7...

虽然 pacman -Qi 提供有关已安装的软件包的信息,但 pacman -Si 会查询数据库的最新信息。

 1pacman -Si linux
 2
 3Repository     : core
 4Name           : linux
 5Version        : 3.11.6-1
 6Description    : The Linux kernel and modules
 7Architecture   : x86_64
 8URL            : http://www.kernel.org/
 9Licenses       : GPL2
10Groups         : base
11Provides       : kernel26=3.11.6
12Depends On     : coreutils linux-firmware kmod mkinitcpio>=0.7
13Optional Deps  : crda: to set the correct wireless channels of your country
14Conflicts With : kernel26
15Replaces       : kernel26
16Download Size  : 47855.98 KiB
17Installed Size : 64493.00 KiB
18Packager       : Thomas Bächler <thomas@archlinux.org>
19Build Date     : Fri 18 Oct 2013 05:25:12 PM EDT
20Validated By   : MD5 Sum SHA256 Sum Signature

pacman -Ql 列出了与一个包相关的所有文件。

1pacman -Ql vi
2
3vi /usr/
4vi /usr/bin/
5vi /usr/bin/edit
6vi /usr/bin/ex
7vi /usr/bin/vedit
8vi /usr/bin/vi
9...

每个行上的包名称可能会使输出更难在脚本中使用。 pacman -Qlq(即pacman 查询列表,安静)不会打印包名称。

1pacman -Qlq vi
2
3/usr/
4/usr/bin/
5/usr/bin/edit
6/usr/bin/ex
7/usr/bin/vedit
8/usr/bin/vi
9...

您可以使用 pacman -Qlq grep bin 查找该包中的所有文件,这些文件在一个 Bin 文件夹中(因此可能是可执行的文件)。

 1pacman -Qql pacman | grep bin
 2
 3/usr/bin/
 4/usr/bin/bacman
 5/usr/bin/checkupdates
 6/usr/bin/cleanupdelta
 7/usr/bin/makepkg
 8/usr/bin/paccache
 9/usr/bin/pacdiff
10/usr/bin/paclist
11/usr/bin/paclog-pkglist
12/usr/bin/pacman
13/usr/bin/pacman-db-upgrade
14/usr/bin/pacman-key
15/usr/bin/pacman-optimize
16/usr/bin/pacscripts
17/usr/bin/pacsearch
18/usr/bin/pacsort
19/usr/bin/pacsysclean
20/usr/bin/pactree
21/usr/bin/pkgdelta
22/usr/bin/rankmirrors
23/usr/bin/repo-add
24/usr/bin/repo-elephant
25/usr/bin/repo-remove
26/usr/bin/testdb
27/usr/bin/testpkg
28/usr/bin/updpkgsums
29/usr/bin/vercmp

储存消费


查看哪个包在您的系统上占用最多空间的最简单的方法是 pacsysclean 与 pacman 搭配。

1pacsysclean

如果你想要一些更复杂的东西,那么 pacgraph 实用程序可以生成 SVG 和 PNG 格式中最大的包的依赖词云。

pacgraph 在社区存储库中找到。

1sudo pacman -S pacgraph

pacgraph -c 将像 pacsysclean 那样输出到控制台。如果有很多包,那么 pacgraph 的输出可能会变得不舒服,因为它是从最大的到最小的,不像 pacsysclean。

 1pacgraph -c | head
 2
 3Autodetected Arch.
 4Loading package info
 5Total size: 730MB
 6114MB linux
 7103MB libtool
 884MB pacgraph
 940MB imagemagick
1025784kB ppl
1122264kB nmap
1217295kB pkgfile

在我测试的Arch Linux dropplet中,此输出之前出现了一些错误,要删除这些错误,您需要从默认C中纠正本地设置。

1export LANG=en_US.UTF-8

如果您没有与虚拟服务器建立文件共享系统,最简单的方法来访问由 pacgraph 生成的图像是使用 Secure Copy。

1scp <user>@<addr>:<remote_path> <local_path>

** 注意**:虽然 pacgraph 声称在安装 imageagick 和 libpng 后会渲染 PNG 文件,但在本文写作时,它实际上不会生成没有 inkscape 的 PNG,它具有相当少量的依赖性。

下载 / 安装


安装或升级标准包的典型方法是pacman -S。

1sudo pacman -S <package>

包裹通常在其名称中具有类似的图案. 轴承可以用作捷径。

1sudo pacman -S lua-{sec,socket,zlib}

有时你可能只想下载一个包用于存档目的而不安装它。 pacman -Sw将下载一个包到缓存文件夹。

1sudo pacman -Sw <package>

如果下载了软件包,或者你知道 url,你可以直接安装它。

1sudo pacman -U <package_path>

升级


由于 pacman 围绕着与远程存储器同步一个包的想法, pacman -S 将升级一个包,如果它已经安装了。

Pacman 可以列出已过时的包。

1pacman -Qu

不幸的是,它不会显示存储库中的软件包版本,因此您将无法知道每个软件包的日期是否过时. 如果这对您来说很重要,您可能想查看第三方软件包管理器或编写一个脚本,将从 pacman -Qi 和 pacman -Si 获得的软件包版本联系在一起。

您可以使用正常表达式从 pacman -Qi 或 pacman -Si 获取版本。

1pacman -Qi linux | grep "Version" | sed 's/^Version\s*:\s//'
2
33.8.4-1

然后写一个脚本,显示版本旁边。

1for i in $(pacman -Qqu)
2do
3  printf "$i: "
4  printf "$(pacman -Qi "$i" | grep 'Version' | sed 's/^Version\s*:\s//') "
5  echo   "$(pacman -Si "$i" | grep 'Version' | sed 's/^Version\s*:\s//')"
6done

Pacman 提供了一次升级所有软件包的方法,但不建议,因为 Arch 是一个滚动版本发行版. 如果出现问题,可能需要时间来确定原因。

1sudo pacman -Syu

降级


Arch Linux 並沒有正式維護過的包,相反,你需要依靠你的包內存和地方,如 Arch Rollback Machine。

隐藏


使用 pacman 下载的每个包都存储在 /var/cache/pacman/pkg 中。

1ls /var/cache/pacman/pkg | grep linux
2
3linux-3.11.6-1-x86_64.pkg.tar.xz
4linux-3.9.7-1-x86_64.pkg.tar.xz
5...

如果你想回到你的缓存中的一个包,只需直接安装它。

1pacman -U <path_to_cached_file>

Arch Rollback 机器


The Arch Rollback Machine是官方Arch Linux镜像的瞬间图像的集合,截至此写作,它可以追溯到四个月。ARM目前在HTTP://seblu.net/a/arm](http://seblu.net/a/arm)托管,但这可能会在未来发生变化。

ARM 包可以使用 pacman -U <package_url> 远程安装。

1pacman -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中寻找较旧的版本,他们的使用是你所期望的。

1downgrade <package>
2downgrader <package>

这两种工具都在AUR中,所以安装它们的最简单的方法将是使用像酸奶这样的助手。

** 注意**: ARM 是一个非官方项目,过去已经关闭,所以如果 ARM 再次出现故障或更改位置,最好避免清除缓存,如果您想滚动自己的 ARM,在 github上似乎有一个 NodeJS 项目。

删除


删除一个包,只要没有任何东西依赖于它。

1sudo pacman -R <package>

删除一个包,只要没有任何东西依赖于它,删除其他任何东西不需要的依赖。

1sudo pacman -Rs <package>

强制删除一个包. 这是你将到达的命令,只需从系统中删除该包,并在重新安装时重新安装是不够的。

1sudo pacman -Rdd <package>

非官方包裹


绝大多数 Arch Linux 包位于 Arch User Repository中,从 AUR 搜索和下载软件包的最佳方法是使用 Help Tool

已经有一篇关于AUR和酸奶工具的数字海洋文章(https://www.digitalocean.com/community/articles/how-to-use-yaourt-to-easily-download-arch-linux-community-packages)。

Submitted by: Robert Qualls
Published At
Categories with 技术
Tagged with
comments powered by Disqus