如何使用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文章。

提交人: [[“%3Ca|http]] ://robertqualls.com [[“%3C/a|”>罗伯特·夸尔斯]]