当前位置: 首页 > 工具软件 > Pacman > 使用案例 >

pacman使用教程,官方文档中文版

傅正豪
2023-12-01

pacman(8) pacman手册 pacman(8)

名称

pacman - 包管理器实用程序

概要

pacman <操作> [选项] [目标]

描述

Pacman 是一个包管理实用程序,用于跟踪 Linux 系统上已安装的包。
它具有依赖项支持、包组、安装和卸载脚本,以及将本地机器与远程存储库同步以自动升级包的能力。
Pacman 包是压缩的 tar 格式。

从 3.0.0 版本开始,pacman 一直是 libalpm(3)(“Arch Linux 包管理”库)的前端。
该库允许编写替代前端(例如,GUI 前端)。

调用 pacman 涉及指定具有任何潜在选项和操作目标的操作。
目标通常是包名、文件名、URL 或搜索字符串。
目标可以作为命令行参数提供。
此外,如果 标准输入 不是来自终端并且单个连字符 (-) 作为参数传递,则将从 标准输入 读取目标。

操作

-D, --database

对包数据库进行操作。
此操作允许您修改 pacman 数据库中已安装包的某些属性。
它还允许您检查数据库的内部一致性。
请参阅下面的数据库选项。

-Q, --query

查询包数据库。
此操作允许您查看已安装的软件包及其文件,以及有关单个软件包的元信息(依赖项、冲突、安装日期、构建日期、大小)。
这可以针对本地包数据库运行,也可以用于单个包文件。
在第一种情况下,如果命令行中没有提供软件包名称,则会查询所有已安装的软件包。
此外,可以在包列表上应用各种过滤器。
请参阅下面的查询选项。

-R, --remove

从系统中删除包。
也可以指定要删除的组,在这种情况下,该组中的每个包都将被删除。
属于指定包的文件将被删除,并且数据库将被更新。
大多数配置文件将以 .pacsave 扩展名保存,除非使用 --nosave 选项。
请参阅下面的删除选项。

-S, --sync

同步包。
包直接从远程存储库安装,包括运行包所需的所有依赖项。
例如, pacman -S qt 将下载并安装 qt 及其依赖的所有软件包。
如果一个软件包名称存在于多个存储库中,则可以明确指定存储库以阐明要安装的软件包:pacman -S testing/qt。
您还可以指定版本要求:pacman -S shell 将“>”解释为重定向到文件。

除了包,还可以指定组。
例如,如果 gnome 是一个已定义的软件包组,那么 pacman -S gnome 将提供一个提示,允许您从编号列表中选择要安装的软件包。
使用空格和/或逗号分隔的包裹编号列表指定包裹选择。
可以通过指定由连字符 (-) 分隔的第一个和最后一个包号来选择顺序包。
通过在数字或数字范围前加上脱字符 (^) 来排除包。

还处理提供其他包的包。
例如, pacman -S foo 将首先查找 foo 包。
如果未找到 foo,则将搜索提供与 foo 相同功能的包。
如果找到任何包,它将被安装。
如果找到多个提供 foo 的包,则会提供选择提示。

您还可以使用 pacman -Su 升级所有过时的软件包。
请参阅下面的同步选项。
升级时,pacman 会进行版本比较,以确定哪些包需要升级。
此行为的操作如下:

字母数字:
1.0a < 1.0b < 1.0beta < 1.0p < 1.0pre < 1.0rc < 1.0 < 1.0.a < 1.0.1
数字:
1 < 1.0 < 1.1 < 1.1.1 < 1.2 < 2.0 < 3.0.0

此外,版本字符串可以定义一个纪元值,该值将否决任何版本比较,除非纪元值相等。
这以 epoch:version-rel 格式指定。
例如,2:1.0-1 总是大于 1:3.6-1。

-T, --deptest

检查依赖项;这在诸如 makepkg 之类的脚本中用于检查已安装的软件包很有用。
此操作将检查指定的每个依赖项并返回系统当前不满足的依赖项列表。
此操作不接受其他选项。
用法示例:pacman -T qt “bash>=3.2”。

-U, --upgrade

将软件包升级或添加到系统并从同步存储库安装所需的依赖项。
可以指定 URL 或文件路径。
这是一个“删除然后添加”的过程。
请参阅下面的升级选项;另请参阅处理配置文件以获取有关 pacman 如何处理配置文件的说明。

-F, --files

查询文件数据库。
此操作允许您查找拥有某些文件的包或显示某些包拥有的文件。
仅搜索属于同步数据库的包。
请参阅下面的文件选项。

-V, --version

显示版本并退出。

-h, --help

显示给定操作的语法。
如果未提供任何操作,则显示一般语法。

选项

-b, --dbpath <路径>

指定备用数据库位置(默认为 /var/lib/pacman)。
除非您知道自己在做什么,否则不应使用此方法。
注意:如果指定,这是一个绝对路径,并且不会自动添加根路径。

-r, --root <路径>

指定备用安装根目录(默认为 /)。
这不应用作将软件安装到 /usr/local 而不是 /usr 的方式。
注意:如果没有在命令行或 pacman.conf(5) 中指定数据库路径或日志文件,它们的默认位置将在此根路径内。
注意:此选项不适合在已安装的来宾系统上执行操作。
请参阅 --sysroot 。

-v, --verbose

输出路径,例如 Root、Conf File、DB Path、Cache Dirs 等。

–arch <架构>

指定替代架构。

–cachedir <目录>

指定替代的包缓存位置(默认为 /var/cache/pacman/pkg)。
可以指定多个缓存目录,并按照它们传递给 pacman 的顺序进行尝试。
注意:这是一个绝对路径,不会自动添加根路径。

–color <何时>

指定何时启用着色。
有效选项是 always、never 或 auto。
总是强制颜色;从不强制关闭颜色;和 auto 仅在输出到 tty 时自动启用颜色。

–config <文件>

指定备用配置文件。

–debug

显示调试消息。
报告错误时,建议使用此选项。

–gpgdir <目录>

指定 GnuPG 用于验证包签名的文件目录(默认为 /etc/pacman.d/gnupg)。
该目录应包含两个文件:pubring.gpg 和 trustdb.gpg。
pubring.gpg 保存着所有打包者的公钥。
trustdb.gpg 包含一个所谓的信任数据库,它指定密钥是真实可信的。
注意:这是一个绝对路径,不会自动添加根路径。

–hookdir <目录>

指定一个包含钩子文件的替代目录(默认为 /etc/pacman.d/hooks)。
可以使用后面目录中的钩子优先于前面目录中的钩子来指定多个钩子目录。
注意:这是一个绝对路径,不会自动添加根路径。

–logfile <文件>

指定备用日志文件。
这是一个绝对路径,与安装根设置无关。

–noconfirm

绕过所有“你确定吗?”消息。
除非您想从脚本运行 pacman,否则这样做不是一个好主意。

–confirm

取消前一个 --noconfirm 的效果。

–disable-download-timeout

禁用低速限制和下载超时的默认值。
如果您在使用代理和/或安全网关下载文件时遇到问题,请使用此选项。

–sysroot <目录>

指定备用系统根。
Pacman 会在运行前 chroot 和 chdir 进入系统根目录。
这允许正确操作已安装的访客系统。
给定的任何其他路径都将被解释为相对于系统根目录。
需要root权限。

交易选项(适用于 -S、-R 和 -U)

-d, --nodeps

跳过依赖版本检查
仍然检查包名称。
正常情况下,pacman 会一直检查一个包的依赖字段,以确保所有依赖都安装完毕,并且系统中没有包冲突。
指定此选项两次以跳过所有依赖项检查

–assume-installed <package=version>

将版本为“version”的虚拟包“package”添加到事务中以满足依赖关系。
这允许在不影响所有依赖项检查的情况下禁用特定的依赖项检查。
要禁用所有依赖项检查,请参阅 --nodeps 选项。

–dbonly

仅添加/删除数据库条目,保留所有文件。

–noprogressbar

下载文件时不显示进度条。
这对于调用 pacman 并捕获输出的脚本很有用。

–noscriptlet

如果安装脚本存在,请不要执行它。
除非您知道自己在做什么,否则不要使用它。

-p, --print

只打印目标而不是执行实际操作(同步、删除或升级)。
使用 --print-format 指定目标的显示方式。
默认格式字符串是“%l”,它显示带有 -S 的 URL、带有 -U 的文件名和带有 -R 的 pkgname-pkgver。

–print-format <格式>

指定类似 printf 的格式来控制 --print 操作的输出。
可能的属性是:“%n”代表 pkgname,“%v”代表 pkgver,“%l”代表位置,“%r”代表存储库,“%s”代表大小。
暗示 --print。

升级选项(适用于 -S 和 -U)

-w, --downloadonly

从服务器检索所有软件包,但不要安装/升级任何东西。

–asdeps

非显式安装软件包;换句话说,假装他们的安装原因被安装为依赖项。
这对于需要在构建包之前安装依赖项的 makepkg 和其他从源构建的工具很有用。

–asexplicit

显式安装软件包;换句话说,假装他们的安装原因是明确安装的。
如果您想将依赖项标记为显式安装以便它不会被 --recursive remove 操作删除,这将非常有用。

–ignore <包>

指示 pacman 忽略软件包的升级,即使有可用的升级。
可以通过用逗号分隔来指定多个包。

–ignoregroup <组>

指示 pacman 忽略组中所有软件包的升级,即使有可用的软件包。
可以通过用逗号分隔来指定多个组。

–needed

不要重新安装已经是最新的目标。

–overwrite

绕过文件冲突检查并覆盖冲突文件。
如果即将安装的软件包包含已安装的文件并且匹配 glob,则此选项将导致所有这些文件被覆盖。
使用 --overwrite 将不允许用文件覆盖目录或安装具有冲突文件和目录的包。
可以通过用逗号分隔来指定多个模式。
可以多次指定。
可以否定模式,这样匹配它们的文件就不会被覆盖,方法是在它们前面加上感叹号。
后续匹配将覆盖之前的匹配。
需要转义开头的文字感叹号或反斜杠。

查询选项(适用于 -Q)

-c, --changelog

查看包的 ChangeLog(如果存在)。

-d, --deps

显示作为依赖项安装的包。
此选项可以与 -t 结合使用以列出真正的孤儿 - 作为依赖项安装但任何已安装包不再需要的包。

-t, --unrequired

显示已安装的不被需要的包。
指定此选项两次以包含另一个包可选但不直接需要的包

-e, --explicit

限制或过滤输出到显式安装的包。
此选项可以与 -t 结合使用以列出任何其他软件包不需要的显式安装的软件包。

-g, --groups

显示作为命名组成员的所有包。
如果未指定名称,则列出所有分组的包。

-i, --info

显示有关给定包的信息。
如果查询包文件而不是本地数据库,则可以使用 -p 选项。
传递两个 --info 或 -i 标志还将显示备份文件列表及其修改状态。

-k, --check

检查系统上是否存在给定包拥有的所有文件。
如果未指定包或未提供过滤器标志,请检查所有已安装的包。
两次指定此选项将对包含所需 mtree 文件的包执行更详细的文件检查(包括权限、文件大小和修改时间)。

-l, --list

列出给定包拥有的所有文件。
可以在命令行上指定多个包。

-m, --foreign

将输出限制或过滤到同步数据库中未找到的包。
通常,这些是手动下载并使用 --upgrade 安装的软件包。

-n, --native

显示在同步数据库中找到的包。
这是 --foreign 的逆过滤器。

-o, --owns <文件>

搜索拥有指定文件的包。
路径可以是相对的,也可以是绝对的,可以指定一个或多个文件。

-p, --file

表示命令行上提供的包是一个文件,而不是数据库中的条目。
文件将被解压和查询。
这与 --info 和 --list 结合使用很有用。

-q, --quiet

为某些查询操作显示较少的信息。
当 pacman 的输出在脚本中处理时,这很有用。
搜索将只显示包名称,而不显示版本、组和描述信息

-s, --search

在每个本地安装的包中搜索与正则表达式匹配的名称或描述。
当包含多个搜索词时,只返回描述与所有这些词匹配的包。

-u, --upgrades

限制或过滤输出到本地系统上过时的包。
仅使用包版本来查找过时的包;此处不检查替换。
如果使用 -Sy 刷新同步数据库,则此选项效果最佳。

删除选项(适用于 -R)

-c, --cascade

删除目标包,及其依赖

-n, --nosave

不指定文件备份
通常,当从系统中删除文件时,会检查数据库以查看是否应使用 .pacsave 扩展名重命名该文件。

-s, --recursive

删除目标,及其依赖,前提: (A) 不被其他包需要; (B) 不是用户明确安装的。
如果要省略条件 (B),请传递此选项两次。

-u, --unneeded

删除其他包不需要的目标。
这在不使用 -c 选项的情况下删除组时非常有用,以避免破坏任何依赖关系。

同步选项(适用于 -S)

-c, --clean

从缓存中删除所有非本地安装的软件包和当前未使用的同步数据库以释放磁盘空间。
当 pacman 下载软件包时,它会将它们保存在缓存目录中。
此外,您下载的每个同步数据库都会保存数据库,即使它们从配置文件 pacman.conf(5) 中删除也不会被删除。
使用一个 --clean :只删除不再安装的包;使用两个:从缓存中删除所有文件。
如果您使用网络共享缓存,请参阅 pacman.conf(5) 中的 CleanMethod 选项。

-g, --groups

显示指定的每个包组的所有成员。
如果没有提供组名,将列出所有组;两次传递标志以查看所有组及其成员。

-i, --info

显示有关给定同步数据库包的信息。
传递两个 --info 或 -i 标志还将在依赖此包的所有存储库中显示这些包。

-l, --list

列出指定存储库中的所有包。
可以在命令行上指定多个存储库。

-q, --quiet

为某些同步操作显示较少的信息
当 pacman 的输出在脚本中处理时,这很有用。
搜索将只显示包名称,而不显示存储库、版本、组和描述信息

-s, --search <regexp>

按照正则表达式在同步数据库中匹配名称或描述

-u, --sysupgrade

更新所有过时的软件包
将显示所有要升级的软件包的报告,未经用户确认,操作将不会继续。
输入两次选项:启用软件包降级;在这种情况下,pacman 将选择版本与本地版本不匹配的同步包。
当用户从测试存储库切换到稳定存储库时,这会很有用。

-y, --刷新

这通常应该在每次使用 -u 时使用
传递两个 -y 将强制刷新所有数据库

数据库选项(适用于 -D)

–asdeps <包>

将软件包标记为非显式安装;换句话说,将它们的安装原因设置为依赖项。

–asexplicit <包>

将软件包标记为显式安装;换句话说,将它们的安装原因设置为显式安装。
如果您想保留安装的软件包,即使它最初是作为另一个软件包的依赖项安装的,这也很有用。

-k, --check

检查本地包数据库是否内部一致。
这将检查所有必需的文件是否存在以及已安装的软件包是否具有所需的依赖项、不冲突以及多个软件包不拥有相同的文件。
两次指定此选项将对同步数据库执行检查以确保所有指定的依赖项都可用。

-q, --quiet

成功完成数据库操作时抑制消息。

文件选项(适用于 -F)

-y, --刷新

从服务器下载新的软件包数据库。
即使数据库是最新的,也可以使用两次强制刷新。

-l, --list

列出被查询包拥有的文件。

-x, --regex

将每个查询解释为正则表达式。

-q, --quiet

对某些文件操作显示较少的信息。
这在脚本中处理 pacman 的输出时很有用,但是,您可能希望使用 --machinereadable 来代替。

–machinereadable

以机器可读的输出格式打印每个匹配项。
格式为 repository\0pkgname\0pkgver\0path\n,其中 \0 是 NULL 字符,\n 是换行符。

处理配置文件

Pacman 使用与 rpm 相同的逻辑来确定针对指定要备份的文件的操作。
在升级过程中,每个备份文件使用三个 MD5 哈希值来确定所需的操作:
一个用于安装的原始文件,一个用于即将安装的新文件,一个用于文件系统上存在的实际文件。
比较这三个哈希值后,可能会出现以下情况:

原始=X,当前=X,新=X
所有三个文件都是相同的,因此覆盖不是问题。
安装新文件。

原始=X,当前=X,新=Y
当前文件与原始文件相同,但新文件不同。
由于用户从未修改过该文件,并且新文件可能包含改进或错误修复,因此请安装新文件。

原始=X,当前=Y,新=X
两个软件包版本都包含完全相同的文件,但文件系统上的文件已被修改。
保留当前文件。

原始=X,当前=Y,新=Y
新文件与当前文件相同。
安装新文件。

原始=X,当前=Y,新=Z
这三个文件都不同,因此请安装扩展名为 .pacnew 的新文件并警告用户。
然后,用户必须手动将任何必要的更改合并到原始文件中。

原始=NULL,当前=Y,新=Z
先前未安装该软件包,并且该文件已存在于文件系统中。
安装扩展名为 .pacnew 的新文件并警告用户。
然后,用户必须手动将任何必要的更改合并到原始文件中。

例子

pacman -Ss ne.hack
在包数据库中搜索正则表达式“ne.hack”。

pacman -S gpm
下载并安装 gpm 包括依赖项。

pacman -U /home/user/ceofhack-0.6-1-x86_64.pkg.tar.gz
从本地文件安装 ceofhack-0.6-1 包。

pacman-Syu
更新包列表并在之后升级所有包。

pacman -Syu gpm
更新包列表,升级所有包,如果还没有安装 gpm,则安装。

配置

有关使用 pacman.conf 文件配置 pacman 的更多详细信息,请参阅 pacman.conf(5)。

也可以看看

alpm-hooks(5), libalpm(3), makepkg(8), pacman.conf(5)

有关 pacman 及其相关工具的最新信息,请参阅 pacman 网站 https://archlinux.org/pacman/。

错误

错误?你一定在开玩笑;这个软件没有错误。
但是,如果我们碰巧错了,请在pacman部分的 Arch Linux 错误跟踪器中提交尽可能详细的错误报告。

作者

当前维护者:

• 艾伦麦克雷 allan@archlinux.org

• 安德鲁·格雷戈里 andrew.gregory.8@gmail.com

• Eli Schwartz eschwartz@archlinux.org

• Morgan Adamiec morganamilo@archlinux.org

过去的主要贡献者:

• 贾德·维内特 jvinet@zeroflux.org

• Aurelien Foret aurelien@archlinux.org

• 亚伦格里芬 aaron@archlinux.org

• Dan McGee dan@archlinux.org

• Xavier Chantry shiningxc@gmail.com

• Nagy Gabor ngaba@bibl.u-szeged.hu

• Dave Reisner dreisner@archlinux.org

对于其他贡献者,请在 pacman.git 上使用 git shortlog -s
存储库。

pacman 6.0.1 2021-09-15 pacman(8)

 类似资料: