這個頁面用表格展示一些流行的 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
|
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 and without recursion) |
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) |
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
|
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 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
|
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
|
Search for package(s) by searching the expression in name, description, short description. What exact fields are being searched by default varies in each tool. Mostly options bring tools on par. |
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 search --installed-only |
qlist -IC
|
列出已安裝但不(再)屬於任何軟體源的軟體包 |
pacman -Qm |
dnf list extras |
apt --installed list | grep ,local |
zypper se -si | grep 'System Packages' |
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 -s 或rpm -qa
|
qlist -ICv
|
搜索本地已安裝的軟體包名或描述 |
pacman -Qs |
rpm -qa '*<str>*' |
aptitude search '~i(~n $name|~d $description)' |
|
eix -S -I
|
列出不再被任何軟體包所需要的依賴
|
pacman -Qtt |
dnf leaves 或package-cleanup --leaves --all
|
deborphan -anp1 |
|
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' |
|
|
列出所有為給定軟體包所需的軟體包,也就是顯示依賴項 |
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 or 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 |
|
|
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
|
Refresh the information about the specified installation source(s)或all installation sources. |
pacman -Sy (always upgrade the whole system afterwards) |
dnf clean expire-cache and then dnf check-update
|
apt-get update |
zypper refresh 或zypper ref
|
emerge --sync 或layman -S
|
列印所有安裝源的列表,包括URI、別名等重要信息。 |
cat /etc/pacman.d/mirrorlist |
cat /etc/yum.repos.d/* |
apt-cache policy |
zypper repos 或zypper lr
|
layman -l 或eselect repository list
|
List all packages from a certain repo |
paclist <repo> |
|
|
zypper search -r <repo> 或zypper se -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
|
Ignore problems that priorities may trigger.
|
|
|
|
n/a |
|
驗證和修復
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 |
apt install |
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.
See also