这个页面用表格展示一些流行的 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
|
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 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
|
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 [-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
|
List all packages from a certain repo |
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.
See also