跳至內容

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

出自 Arch Linux 中文维基

這個頁面用表格展示一些流行的 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 searchzypper se [-s] emerge --search (-s)

emerge --searchdesc (-S)

按照包名安裝軟體包(們) pacman -S dnf install apt install zypper installzypper 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 --confirmpacman --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-updatednf makecachednf upgrade(升級時自動刷新) apt update zypper refreshzypper ref emerge --sync
升級軟體包 - 安裝已經有舊版本安裝的軟體包 pacman -Syu dnf upgrade apt upgrade zypper updatezypper 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 removezypper 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 -Scpacman -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/historyzypper-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 -Sipacman -Qi dnf listdnf info apt showapt-cache policy zypper infozypper if emerge -S, emerge -pveix
顯示本地軟體包信息:名稱、版本、描述等等 pacman -Qi rpm -qi / dnf info installed dpkg -saptitude show zypper --no-remote inforpm -qi emerge -pvemerge -S
顯示遠端軟體包信息:名稱、版本、描述等等 pacman -Si dnf info apt-cache showaptitude show zypper info emerge -pv and emerge -Sequery meta
顯示由本地軟體包提供的文件 pacman -Ql rpm -ql dpkg -L rpm -ql equery filesqlist
顯示由遠端軟體包提供的文件 pacman -Fl dnf repoquery -lrepoquery -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 -Sdlocate rpm -qf (installed only)或zypper search -f (everything) equery belongsqfile
列出軟體包所提供的文件. 同樣,這個功能可以被其他更複雜的命令實現 pacman -Qlpacman -Fl dnf repoquery -l dpkg-query -L rpm -ql equery filesqlist
顯示提供給定表達式的包,也稱為反向提供。主要是搜索特定欄位的快捷方式。其他工具可能通過搜索命令提供此功能。 pacman -F dnf provides apt-file search zypper what-provideszypper wp (exact match)或zypper se --provides (fuzzy match) equery belongs (only installed packages)或pfl
搜索所有軟體包以找到持有某個特定文件的包 pacman -F dnf provides apt-file searchauto-apt is using this functionality. zypper search -f equery belongsqfile
顯示軟體包的變更日誌 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 searchzypper se -s emerge -Seix
列出有可用更新的軟體包。注意:有些工具提供特殊命令來限制輸出到某些安裝源,而有些工具則使用選項來實現相同的功能。 pacman -Qu dnf list updatesdnf check-update apt list --upgradable zypper list-updateszypper patch-check (just for patches) emerge -uDNp @world
顯示由軟體包管理器處理的所有安裝源中的軟體包列表。一些工具提供選項或額外的命令來限制輸出到特定的安裝源。 pacman -Sl dnf list available apt-cache dumpavailapt-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 -lapt list --installed zypper search -sirpm -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 leavespackage-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 @selectedeix --selected
列出(作為依賴)自動安裝的軟體包 pacman -Qd zypper search | grep -E '^i[^+]' (workaround) apt-mark showauto

查詢軟體包依賴

[編輯 | 編輯原始碼]
Action Arch Red Hat/Fedora Debian/Ubuntu SLES/openSUSE Gentoo
顯示需要安裝X的包,也稱為顯示反向依賴關係 pacman -Siipacman -Qii dnf repoquery --alldeps --whatrequiresrepoquery --whatrequires apt-cache rdependsaptitude search ~D$pattern zypper search --requires equery depends
顯示與給定表達式(通常是軟體包)衝突的軟體包。也可以使用搜索功能來模仿此功能。 pacman -Sipacman -Qi dnf repoquery --conflicts aptitude search '~C$pattern' zypper search --conflicts
列出所有為給定軟體包所需的軟體包,也就是顯示依賴項 pacman -Sipacman -Qi dnf repoquery --requiresrepoquery -R apt-cache dependsapt-cache show zypper info --requires emerge -ep
列出當前軟體包提供的內容 pacman -Siipacman -Qii dnf repoquery --provides dpkg -saptitude show zypper info --provides equery filesqlist
列出所有需要特定軟體包的軟體包 pacman -Sii dnf repoquery --installed --alldeps --whatrequires aptitude search ~D{depends,recommends,suggests}:$patternaptitude whyapt-cache rdepends zypper search --requires equery depends -a
Display all packages that the specified packages obsoletes. pacman -Sipacman -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 laymaneselect repository
將安裝源添加到系統中。一些工具為某些源提供了額外的命令,而另一些工具則允許添加命令使用所有類型的源URI。還有一些,比如apt強制編輯源列表。apt-cdrom是一個特殊的命令,為CD/DVD作為源提供了選項。 edit /etc/pacman.conf dnf config-manager apt-cdrom add zypper ar <URL or .repo file> laymanoverlays
刷新所有或指定安裝源的信息 pacman -Sy (always upgrade the whole system afterwards) dnf clean expire-cache and then dnf check-update apt-get update zypper refreshzypper ref [-s] emerge --synclayman -S
列印所有安裝源的列表,包括URI、別名等重要信息。 cat /etc/pacman.d/mirrorlist cat /etc/yum.repos.d/* apt-cache policy zypper reposzypper lr --uri --alias layman -leselect 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 packageapt-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 findbrokenpkgsAURlddd (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 sourcedebcheckout zypper source-install emerge --fetchonly
構建一個軟體包 makepkg -s rpmbuild -ba (normal)或mock (in chroot) debuild rpmbuild -ba, then build, and then osc build ebuildquickpkg
檢查可能的打包問題 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.

另見

[編輯 | 編輯原始碼]