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/各软件包管理器命令对应关系
新增話題