pacman/各软件包管理器命令对应关系 - Arch Linux 中文维基

跳转到内容

# pacman/各软件包管理器命令对应关系

来自 Arch Linux 中文维基
< Pacman

翻译状态：

- 本文（或部分内容）译自 Pacman/Rosetta，最近一次同步于 2025-04-15，若英文版本有所更改，则您可以帮助同步与翻译更改的内容。
- 您可以在 ArchWiki 的对应页面找到本文翻译的原始修订历史。
- 本文可能与英文原文存在出入。

本文或本节需要翻译。要贡献翻译，请访问简体中文翻译团队。

附注： #查询软件包列表 #软件源管理 #Overrides #Using package files and building packages #Log file rotation 需要翻译（在 Talk:Pacman/各软件包管理器命令对应关系# 中讨论）

这个页面用表格展示一些流行的 Linux 发行版包管理器命令的对应关系。这是受到 openSUSE's Software Management Command Line Comparison 的启发而成的。

提示：Arch 用户在临时处理其他发行版时可以用 pacapt，它是对其它包管理器的简单包装。

## 基本操作

行为 | Arch | Red Hat/Fedora | Debian/Ubuntu | SLES/openSUSE | Gentoo
--- | --- | --- | --- | --- | ---
搜索软件包（们）。 默认情况下搜索的确切字段因每个工具而异。大多数选项都会带来同等水平的工具。 | `pacman -Ss` | `dnf search` | `apt search` | `zypper search` 或 `zypper se [-s]` | `emerge --search` (`-s`) 或 `emerge --searchdesc` (`-S`)
按照包名安装软件包（们） | `pacman -S` | `dnf install` | `apt install` | `zypper install` 或 `zypper in` | `emerge`
获取源码包（们）并构建依赖 | `makepkg -s PKGBUILD` | `dnf builddep` | `apt build-dep` | `zypper source-install` (`zypper si`) 或 `zypper install -d` | `emerge`,或explicitly `emerge --with-bdeps`
不进行实际操作，只输出操作目标 | `pacman --print` (或 `-p`) | `dnf --setopt=tsflags=test` | `apt --simulate` (or `-s`, `--dry-run`, `--just-print`) | `zypper --dry-run` | `emerge --pretend` (`-p`)
切换是否手动确认 | `pacman --confirm` 或 `pacman --noconfirm` | `dnf --assumeyes` (`-y`) 或 `dnf --assumeno` | `apt --yes` (`-y`) | `zypper --non-interactive` (`-n`) 或 `zypper --no-confirm` (`-y`) | `emerge --ask` (`-a`)
刷新本地软件包数据库 | `pacman -Sy` (见 the warnings about partial updates) | `dnf check-update`或`dnf makecache`或`dnf upgrade`（升级时自动刷新） | `apt update` | `zypper refresh` 或 `zypper ref` | `emerge --sync`
升级软件包 - 安装已经有旧版本安装的软件包 | `pacman -Syu` | `dnf upgrade` | `apt upgrade` | `zypper update` 或 `zypper up` | `emerge -[a]uDN @world`
升级软件包 -另一种的升级命令, 可以完成更复杂的升级 -- 比如发行版升级. 当普通的更新命令会忽略软件包更新时,包括依赖关系的一些变化使用这个命令可以进行更新. | `pacman -Syu` | `dnf distro-sync` | `apt dist-upgrade` | `zypper dup` | `emerge -[a]uDN @world`
按照包名移除软件包（们）及其所有依赖 | `pacman -Rs` | `dnf remove` | `apt autoremove` | `zypper remove` 或 `zypper rm` | `emerge --depclean` (`-c`)
按照包名移除软件包（们）及其配置文件 | `pacman -Rn` | ? | `apt purge` | ? | n/a
按照包名移除软件包（们）及其所有依赖和配置文件 | `pacman -Rns` | ? | `apt autoremove --purge` | ? | n/a
移除不再被需要的依赖(orphans), 例如 需要某个依赖的软件包已被移除 | `pacman -Qdtq | pacman -Rs -` (`-Qdttq` to also remove optional deps) | `dnf autoremove` | `apt autoremove` | `zypper rm -u` (just for removing a package) 或 `zypper packages --unneeded` (listing only) | `emerge --depclean` (`-c`)
移除所有不再处于任何仓库的软件包 | `pacman -Qmq | pacman -Rs -` | `dnf repoquery --extras` | `aptitude purge '~o'` |  | ?
将先前作为依赖被安装的软件包标记为明确的安装 | `pacman -D --asexplicit` | `dnf mark install` | `apt-mark manual` | `zypper install --force` (workaround which needs to reinstall the package) | `emerge --select` (`-w`)
将软件包作为依赖被安装 / 并不明确的标记为 required | `pacman -S --asdeps` | `dnf install` and then `dnf mark remove` | `apt-mark auto` | n/a (feature request + workaround) | `emerge --oneshot` (`-1`)
仅下载指定的软件包而不解包或安装 | `pacman -Sw` | `dnf download` | `apt install --download-only` (into the package cache) 或 `apt download` (bypass the package cache) | `zypper --download-only` | `emerge --fetchonly` (`-f`)
清理本地所有缓存。可以使用选项显示实际清理的内容 | `pacman -Sc`或`pacman -Scc` | `dnf clean all` | `apt autoclean` removes only unneeded, obsolete information或`apt clean` | `zypper clean` | `eclean distfiles`
打开一个Shell来在一个会话里输入多个命令 |  | `dnf shell` |  | `zypper shell` |
显示关于软件包管理行为的日志 | read `/var/log/pacman.log` | `dnf history` | read `/var/log/dpkg.log` | read `/var/log/zypp/history`或`zypper-log` provided by an additional package | read `/var/log/portage`
获取整个系统信息的转储-打印、保存或类似于包管理系统的当前状态。首选输出是文本或XML。（注意：为什么选择其中之一或此处？没有工具提供选择输出格式的选项。） | 见 `/var/lib/pacman/local` | 见 `/var/lib/rpm/Packages` | `apt-cache stats` |  | `emerge --info`
通过电子邮件发送软件包的变更 |  |  | `apt install apt-listchanges` |  | `eselect news read`

## 查询特定的软件包

Action | Arch | Red Hat/Fedora | Debian/Ubuntu | SLES/openSUSE | Gentoo
--- | --- | --- | --- | --- | ---
显示关于一个软件包的全部或者大多数信息。针对默认命令，每个根据的信息详细程度各不相同。但通过选项，各个工具可以达到大致相同的详细程度。 | `pacman -Si`或`pacman -Qi` | `dnf list` 或 `dnf info` | `apt show` 或 `apt-cache policy` | `zypper info`或`zypper if` | `emerge -S`, `emerge -pv`或`eix`
显示本地软件包信息：名称、版本、描述等等 | `pacman -Qi` | `rpm -qi` / `dnf info installed` | `dpkg -s` 或 `aptitude show` | `zypper --no-remote info`或`rpm -qi` | `emerge -pv`或`emerge -S`
显示远端软件包信息：名称、版本、描述等等 | `pacman -Si` | `dnf info` | `apt-cache show` 或 `aptitude show` | `zypper info` | `emerge -pv` and `emerge -S`或`equery meta`
显示由本地软件包提供的文件 | `pacman -Ql` | `rpm -ql` | `dpkg -L` | `rpm -ql` | `equery files`或`qlist`
显示由远端软件包提供的文件 | `pacman -Fl` | `dnf repoquery -l`或`repoquery -l` (from package yum-utils) | `apt-file list` |  | `pfl`
查询拥有某个文件的软件包 | `pacman -Qo` | `rpm -qf` (installed only)或`dnf provides` (everything)或`repoquery -f` (from package yum-utils) | `dpkg -S`或`dlocate` | `rpm -qf` (installed only)或`zypper search -f` (everything) | `equery belongs` 或 `qfile`
列出软件包所提供的文件. 同样,这个功能可以被其他更复杂的命令实现 | `pacman -Ql`或`pacman -Fl` | `dnf repoquery -l` | `dpkg-query -L` | `rpm -ql` | `equery files` 或 `qlist`
显示提供给定表达式的包，也称为反向提供。主要是搜索特定字段的快捷方式。其他工具可能通过搜索命令提供此功能。 | `pacman -F` | `dnf provides` | `apt-file search` | `zypper what-provides`或`zypper wp` (exact match)或`zypper se --provides` (fuzzy match) | `equery belongs` (only installed packages)或`pfl`
搜索所有软件包以找到持有某个特定文件的包 | `pacman -F` | `dnf provides` | `apt-file search`或`auto-apt` is using this functionality. | `zypper search -f` | `equery belongs` 或 `qfile`
显示软件包的变更日志 | `pacman -Qc` | `dnf changelog` | `apt-get changelog` | `rpm -q --changelog` | `equery changes -f`

## 查询软件包列表

Action | Arch | Red Hat/Fedora | Debian/Ubuntu | SLES/openSUSE | Gentoo
--- | --- | --- | --- | --- | ---
通过软件包的名称、描述、简介来检索软件包。不同工具检索的字段可能有所不同，大多数选项可以使这些工具的功能趋于一致 | `pacman -Ss` | `dnf search` | `apt search` | `zypper search` 或 `zypper se -s` | `emerge -S` 或 `eix`
列出有可用更新的软件包。注意：有些工具提供特殊命令来限制输出到某些安装源，而有些工具则使用选项来实现相同的功能。 | `pacman -Qu` | `dnf list updates` 或 `dnf check-update` | `apt list --upgradable` | `zypper list-updates`或`zypper patch-check` (just for patches) | `emerge -uDNp @world`
显示由软件包管理器处理的所有安装源中的软件包列表。一些工具提供选项或额外的命令来限制输出到特定的安装源。 | `pacman -Sl` | `dnf list available` | `apt-cache dumpavail`或`apt-cache dump` (Cache only)或`apt-cache pkgnames` | `zypper packages` | `portageq all_best_visible /`
生成一个已安装软件包的列表 | `pacman -Q` | `dnf list installed` | `dpkg --list | grep ^i` | `zypper packages --installed-only` | `qlist -IC`
列出已安装但不(再)属于任何软件源的软件包 | `pacman -Qm` | `dnf list extras` | `apt --installed list | grep ,local` | `zypper packages --installed-only --orphaned` | `eix-test-obsolete`
列出最近添加到其中一个安装源的软件包，即其中一个安装源中新增的软件包。 |  | `dnf list recent` | `aptitude search '~N'`或`aptitude forget-new` |  | `eix-diff`
列出本地已安装的软件包及版本 | `pacman -Q` | `rpm -qa` | `dpkg -l`或`apt list --installed` | `zypper search -si`或`rpm -qa` | `qlist -ICv`
搜索本地已安装的软件包名或描述 | `pacman -Qs` | `rpm -qa '*<str>*'` | `aptitude search '~i(~n $name|~d $description)'` | `zypper search --installed-only --search-descriptions` | `eix -S -I`
列出不再被任何软件包所需要的依赖 | `pacman -Qtt` | `dnf leaves`或`package-cleanup --leaves --all` | `deborphan -anp1` | `zypper packages --unneeded` | `emerge -pc`
列出显式安装的软件包(不作为任何其他软件包的依赖而安装) | `pacman -Qe` | `dnf history userinstalled` | `apt-mark showmanual` | `zypper search | grep -E '^i\+'` (workaround) | `emerge -pvO @selected`或`eix --selected`
列出(作为依赖)自动安装的软件包 | `pacman -Qd` | `zypper search | grep -E '^i[^+]'` (workaround) | `apt-mark showauto` |  |

## 查询软件包依赖

Action | Arch | Red Hat/Fedora | Debian/Ubuntu | SLES/openSUSE | Gentoo
--- | --- | --- | --- | --- | ---
显示需要安装X的包，也称为显示反向依赖关系 | `pacman -Sii`或`pacman -Qii` | `dnf repoquery --alldeps --whatrequires`或`repoquery --whatrequires` | `apt-cache rdepends`或`aptitude search ~D$pattern` | `zypper search --requires` | `equery depends`
显示与给定表达式（通常是软件包）冲突的软件包。也可以使用搜索功能来模仿此功能。 | `pacman -Si`或`pacman -Qi` | `dnf repoquery --conflicts` | `aptitude search '~C$pattern'` | `zypper search --conflicts` |
列出所有为给定软件包所需的软件包，也就是显示依赖项 | `pacman -Si`或`pacman -Qi` | `dnf repoquery --requires`或`repoquery -R` | `apt-cache depends`或`apt-cache show` | `zypper info --requires` | `emerge -ep`
列出当前软件包提供的内容 | `pacman -Sii`或`pacman -Qii` | `dnf repoquery --provides` | `dpkg -s`或`aptitude show` | `zypper info --provides` | `equery files`或`qlist`
列出所有需要特定软件包的软件包 | `pacman -Sii` | `dnf repoquery --installed --alldeps --whatrequires` | `aptitude search ~D{depends,recommends,suggests}:$pattern`或`aptitude why`或`apt-cache rdepends` | `zypper search --requires` | `equery depends -a`
Display all packages that the specified packages obsoletes. | `pacman -Si`或`pacman -Qi` | `dnf list obsoletes` | `apt-cache show` | `zypper info --obsoletes` |
Generates an output suitable for processing with dotty for the given package(s). |  |  | `apt-cache dotty` |  |

## 软件源管理

Action | Arch | Red Hat/Fedora | Debian/Ubuntu | SLES/openSUSE | Gentoo
--- | --- | --- | --- | --- | ---
软件源管理 | 编辑 `/etc/pacman.conf` | 编辑 `/etc/yum.repos.d/${REPO}.repo` | 编辑 `/etc/apt/sources.list`或者apt edit-source | 编辑 `/etc/zypp/repos.d/${REPO}.repo` | `layman`或`eselect repository`
将安装源添加到系统中。一些工具为某些源提供了额外的命令，而另一些工具则允许添加命令使用所有类型的源URI。还有一些，比如apt强制编辑源列表。apt-cdrom是一个特殊的命令，为CD/DVD作为源提供了选项。 | edit `/etc/pacman.conf` | `dnf config-manager` | `apt-cdrom add` | `zypper ar <URL or .repo file>` | `layman`或`overlays`
刷新所有或指定安装源的信息 | `pacman -Sy` (always upgrade the whole system afterwards) | `dnf clean expire-cache` and then `dnf check-update` | `apt-get update` | `zypper refresh`或`zypper ref` `[-s]` | `emerge --sync`或`layman -S`
打印所有安装源的列表，包括URI、别名等重要信息。 | `cat /etc/pacman.d/mirrorlist` | `cat /etc/yum.repos.d/*` | `apt-cache policy` | `zypper repos`或`zypper lr` `--uri --alias` | `layman -l`或`eselect repository list`
列出某一个仓库中的所有软件包 | `paclist <repo>` |  |  | `zypper packages -r <repo>` or `zypper pa -r <repo>` | `eix --in-overlay`
Disable an installation source for an operation |  | `dnf --disablerepo=` |  |  | `emerge package::repo-to-use`
Download packages from a different version of the distribution than the one installed. | `pacman -S repo_name/package` | `dnf --releasever=` | `apt-get install -t release package`或`apt-get install package/release` (dependencies not covered) | `zypper install -r <repo> package` | `echo "category/package ~amd64" >> /etc/portage/package.keywords` and then `emerge package`

## Overrides

Action | Arch | Red Hat/Fedora | Debian/Ubuntu | SLES/openSUSE | Gentoo
--- | --- | --- | --- | --- | ---
Add a package lock rule to keep its current state from being changed | edit `/etc/pacman.conf` modifying IgnorePkg array | edit `dnf.conf` adding/amending the `exclude` option | `apt-mark hold pkg` | `zypper al`或put package name in `/etc/zypp/locks` | `/etc/portage/package.mask`
Delete a package lock rule | edit `/etc/pacman.conf` removing package from IgnorePkg line |  | `apt-mark unhold pkg` | `zypper rl`或remove package name from `/etc/zypp/locks` | `/etc/portage/package.mask` (or `package.unmask`)
Show a listing of all lock rules | `cat /etc/pacman.conf` |  | `/etc/apt/preferences` | `zypper ll`或view `/etc/zypp/locks` | `cat /etc/portage/package.mask`
Set the priority of the given package to avoid upgrade, force downgrade或to overwrite any default behavior. Can also be used to prefer a package version from a certain installation source. | edit `/etc/pacman.conf` modifying HoldPkg and/or IgnorePkg arrays |  | `/etc/apt/preferences`, `apt-cache policy` | `zypper mr -p` | edit `/etc/portage/package.accept_keywords` adding a line with `=category/package-version`
Remove a previously set priority |  |  | `/etc/apt/preferences` | `zypper mr -p` | edit `/etc/portage/package.accept_keywords` removing offending line
Show a list of set priorities |  |  | `apt-cache policy`或`/etc/apt/preferences` | `zypper lr -p` | `grep -r . /etc/portage/package.accept_keywords`

## 验证和修复

Action | Arch | Red Hat/Fedora | Debian/Ubuntu | SLES/openSUSE | Gentoo
--- | --- | --- | --- | --- | ---
验证单个软件包 | `pacman -Qk` (can add another `k`) | `rpm -V` | `debsums` | `rpm -V` | `equery check`
验证所有软件包 | `pacman -Qk` (can add another `k`) | `rpm -Va` | `debsums` | `rpm -Va` | `equery check`
重新安装给定的软件包。这将重新安装给定的包，而不会产生依赖性问题。 | `pacman -S` | `dnf reinstall` | `apt install --reinstall` | `zypper install --force` | `emerge -1O`
验证整个系统的依赖关系; 安装过程被强制终止时使用 | `pacman -Dk` | `dnf repoquery --requires` | `apt-get check` | `zypper verify` | `emerge -uDN @world`
使用一些魔法来修理损坏的依赖关系 | for pacman dependency level, use `pacman -Dk`; for shared library level, use findbrokenpkgsAUR或`lddd` (from devtools包) | `dnf repoquery --unsatisfied` | `apt-get --fix-broken` and then `aptitude install` | `zypper verify` | `revdep-rebuild`
为软件包系统添加一个检查点，以备后续回滚。 |  | (unnecessary, it is done on every transaction) |  | n/a |
从系统中移除一个检查点。 | n/a | n/a |  | n/a |
提供所有系统检查点的列表。 | n/a | `dnf history list` |  | n/a |
将整个软件包回滚到特定日期或检查点 | n/a | `dnf history rollback` |  | n/a |
撤销单个指定的事务 | n/a | `dnf history undo` |  | n/a |

## Using package files and building packages

Action | Arch | Red Hat/Fedora | Debian/Ubuntu | SLES/openSUSE | Gentoo
--- | --- | --- | --- | --- | ---
查询命令行上提供的包，而不是包管理数据库中的条目 | `pacman -Qp` | `rpm -qp` | `dpkg -I` |  |
List the contents of a package file | `pacman -Qpl` | `rpmls rpm -qpl` | `dpkg -c` | `rpm -qpl` |
Install local package file, e.g. app.rpm and uses the installation sources to resolve dependencies | `pacman -U` | `dnf install` | `dpkg -i` | `zypper in` | `emerge`
Updates package(s) with local packages and uses the installation sources to resolve dependencies | `pacman -U` | `dnf upgrade` | `debi` |  | `emerge`
Add a local package to the local package cache mostly for debugging purposes. | `cp package-filename /var/cache/pacman/pkg/` |  | `apt-cache add package-filename` | n/a | `cp package-filename /usr/portage/distfiles`
解包一个软件包 | `tar -xvf` | `rpm2cpio | cpio -vid` | `dpkg-deb -x` | `rpm2cpio | cpio -vid` | `tar -jxvf`
Install/Remove packages to satisfy build-dependencies. Uses information in the source package | Use ABS and `makepkg -seoc` | `dnf builddep` | `apt-get build-dep` | `zypper si -d` | `emerge -o`
Display the source package to the given package name(s) |  | `dnf repoquery -s` | `apt-cache showsrc` | n/a |
Download the corresponding source package(s) to the given package name(s) | Use ABS and `makepkg -o` | `dnf download --source` | `apt-get source`或`debcheckout` | `zypper source-install` | `emerge --fetchonly`
构建一个软件包 | `makepkg -s` | `rpmbuild -ba` (normal)或mock (in chroot) | `debuild` | `rpmbuild -ba`, then build, and then `osc build` | `ebuild`或`quickpkg`
检查可能的打包问题 | namcap (requires namcap包) | rpmlint | lintian | rpmlint | repoman

## Log file rotation

By default, Arch Linux does not rotate `pacman.log`. See, for example, FS#11272 and FS#20428#comment66480. This is in contrast to the default policy of most other Linux distributions. Some distributions, notably Gentoo, hardly write log files by default.

## 另见

- Changes in DNF CLI compared to Yum

分类：​

- 包管理器

隐藏分类：​

- 使用“模板:Translateme”标记的页面或章节

pacman/各软件包管理器命令对应关系
添加话题