本页使用表格展示了一些最流行的 Linux 发行版之间软件包管理命令的对应关系。最初的灵感来自于 openSUSE 的软件包管理命令行对比。
提示: 需要临时使用其他 Linux 发行版的 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 ,或显式地 emerge --with-bdeps |
仅打印目标而不执行实际操作 |
pacman --print (或 -p ) |
dnf --setopt=tsflags=test |
apt --simulate (或 -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 (参见关于部分更新的警告) |
dnf check-update 或 dnf makecache 或 dnf upgrade (内置自动功能) |
apt update |
zypper refresh 或 zypper ref [-s] |
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 |
移除不再需要的依赖项(孤立软件包),例如,因为需要这些依赖项的软件包已被移除。 |
pacman -Qdtq | pacman -Rs - (-Qdttq 也移除可选依赖) |
dnf autoremove |
apt autoremove |
zypper rm -u (仅用于移除软件包) 或 zypper packages --unneeded (仅列出) |
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 (需要重新安装软件包的变通方法) |
emerge --select (-w ) |
将软件包作为依赖项安装 / 不标记为显式需要。 |
pacman -S --asdeps |
dnf install 然后 dnf mark remove |
apt-mark auto |
n/a (功能请求 + 变通方法) |
emerge --oneshot (-1 ) |
仅下载给定的软件包,而不解包或安装它们 |
pacman -Sw |
dnf download |
apt install --download-only (到软件包缓存中) 或 apt download (绕过软件包缓存) |
zypper --download-only |
emerge --fetchonly (-f ) |
清理所有本地缓存。选项可能会限制实际清理的内容。 |
pacman -Sc 或 pacman -Scc |
dnf clean all |
apt autoclean 仅移除不需要的、过时的信息 或 apt clean |
zypper clean |
eclean distfiles
|
启动一个 shell 以在一个会话中输入多个命令 |
|
dnf shell |
|
zypper shell |
|
显示软件包管理所执行操作的日志。 |
读取 /var/log/pacman.log |
dnf history |
读取 /var/log/dpkg.log |
读取 /var/log/zypp/history 或由附加软件包提供的 zypper-log |
读取 /var/log/portage |
获取整个系统信息的转储 - 打印、保存或类似操作软件包管理系统的当前状态。首选输出为文本或 XML。(注意:这里为什么是“或”?没有工具提供选择输出格式的选项。) |
查看 /var/lib/pacman/local |
查看 /var/lib/rpm/Packages |
apt-cache stats |
|
emerge --info
|
通过电子邮件发送软件包更改通知 |
|
|
apt install apt-listchanges |
|
eselect news read
|
查询特定软件包
操作 |
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 和 emerge -S 或 equery meta |
显示本地软件包提供的文件 |
pacman -Ql |
rpm -ql |
dpkg -L |
rpm -ql |
equery files 或 qlist |
显示远程软件包提供的文件 |
pacman -Fl |
dnf repoquery -l 或 repoquery -l (来自软件包 yum-utils) |
apt-file list |
|
pfl
|
查询提供 FILE 的软件包 |
pacman -Qo |
rpm -qf (仅限已安装) 或 dnf provides (所有) 或 repoquery -f (来自软件包 yum-utils) |
dpkg -S 或 dlocate |
rpm -qf (仅限已安装) 或 zypper search -f (所有) |
equery belongs 或 qfile |
列出软件包包含的文件。同样,此功能可以通过其他更复杂的命令来模拟。 |
pacman -Ql 或 pacman -Fl |
dnf repoquery -l |
dpkg-query -L |
rpm -ql |
equery files 或 qlist |
显示提供给定 exp 的软件包。也称为反向提供。主要是搜索特定字段的快捷方式。其他工具可能会通过搜索命令提供此功能。 |
pacman -F |
dnf provides |
apt-file search |
zypper what-provides 或 zypper wp (精确匹配) 或 zypper se --provides (模糊匹配) |
equery belongs (仅限已安装软件包) 或 pfl |
搜索所有软件包以查找包含指定文件的软件包。 |
pacman -F |
dnf provides |
apt-file search 或 auto-apt 正在使用此功能。 |
zypper search -f |
equery belongs 或 qfile |
显示软件包的变更日志 |
pacman -Qc |
dnf changelog |
apt-get changelog |
rpm -q --changelog |
equery changes -f
|
查询软件包列表
操作 |
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 (仅用于补丁) |
emerge -uDNp @world
|
显示软件包管理处理的所有软件包源中的所有软件包列表。有些工具提供选项或附加命令来限制输出到特定的软件包源。 |
pacman -Sl |
dnf list available |
apt-cache dumpavail 或 apt-cache dump (仅缓存) 或 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 |
grep -E '^i\+' (变通方法) |
emerge -pvO @selected 或 eix --selected |
列出自动安装的软件包(作为依赖项) |
pacman -Qd |
grep -E '^i[^+]' (变通方法) |
apt-mark showauto |
|
|
查询软件包依赖关系
操作 |
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
|
显示指定软件包废弃的所有软件包。 |
pacman -Si 或 pacman -Qi |
dnf list obsoletes |
apt-cache show |
zypper info --obsoletes |
|
为给定的软件包生成适合使用 dotty 处理的输出。 |
|
|
apt-cache dotty |
|
|
软件包源管理
操作 |
Arch |
Red Hat/Fedora |
Debian/Ubuntu |
SLES/openSUSE |
Gentoo |
软件包源管理 |
编辑 /etc/pacman.conf |
编辑 /etc/yum.repos.d/${REPO}.repo |
编辑 /etc/apt/sources.list |
编辑 /etc/zypp/repos.d/${REPO}.repo |
layman 或 eselect repository |
向系统添加软件包源。有些工具为某些源提供附加命令,其他工具允许添加命令的所有类型的源 URI。还有一些,例如 apt 强制编辑源列表。apt-cdrom 是一个特殊命令,它为 CD/DVD 作为源提供了特殊选项设计。 |
编辑 /etc/pacman.conf |
dnf config-manager |
apt-cdrom add |
zypper ar <URL or .repo file> |
layman 或 overlays |
刷新关于指定软件包源或所有软件包源的信息。 |
pacman -Sy (之后总是升级整个系统) |
dnf clean expire-cache 然后 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> 或 zypper pa -r <repo> |
eix --in-overlay
|
为操作禁用软件包源 |
|
dnf --disablerepo= |
|
|
emerge package::repo-to-use
|
从与已安装发行版不同的版本下载软件包。 |
pacman -S repo_name/package |
dnf --releasever= |
apt-get install -t release package 或 apt-get install package/release (不包含依赖项) |
zypper install -r <repo> package |
echo "category/package ~amd64" >> /etc/portage/package.keywords 然后 emerge package |
覆盖
操作 |
Arch |
Red Hat/Fedora |
Debian/Ubuntu |
SLES/openSUSE |
Gentoo |
添加软件包锁定规则以防止其当前状态被更改 |
编辑 /etc/pacman.conf 修改 IgnorePkg 数组 |
编辑 dnf.conf 添加/修改 exclude 选项 |
apt-mark hold pkg |
zypper al 或将软件包名称放入 /etc/zypp/locks |
/etc/portage/package.mask
|
删除软件包锁定规则 |
编辑 /etc/pacman.conf 从 IgnorePkg 行中移除软件包 |
|
apt-mark unhold pkg |
zypper rl 或从 /etc/zypp/locks 中移除软件包名称 |
/etc/portage/package.mask (或 package.unmask ) |
显示所有锁定规则的列表 |
cat /etc/pacman.conf |
|
/etc/apt/preferences |
zypper ll 或查看 /etc/zypp/locks |
cat /etc/portage/package.mask
|
设置给定软件包的优先级,以避免升级、强制降级或覆盖任何默认行为。也可以用于首选来自特定软件包源的软件包版本。 |
编辑 /etc/pacman.conf 修改 HoldPkg 和/或 IgnorePkg 数组 |
|
/etc/apt/preferences, apt-cache policy |
zypper mr -p |
编辑 /etc/portage/package.accept_keywords 添加一行 =category/package-version |
移除先前设置的优先级 |
|
|
/etc/apt/preferences |
zypper mr -p |
编辑 /etc/portage/package.accept_keywords 移除冲突行 |
显示已设置优先级的列表 |
|
|
apt-cache policy 或 /etc/apt/preferences |
zypper lr -p |
grep -r . /etc/portage/package.accept_keywords
|
验证与修复
操作 |
Arch |
Red Hat/Fedora |
Debian/Ubuntu |
SLES/openSUSE |
Gentoo |
验证单个软件包 |
pacman -Qk (可以添加另一个 k ) |
rpm -V |
debsums |
rpm -V |
equery check
|
验证所有软件包 |
pacman -Qk (可以添加另一个 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
|
使用一些魔法来修复系统中损坏的依赖关系 |
对于 pacman 依赖级别,使用 pacman -Dk ;对于共享库级别,使用 findbrokenpkgsAUR 或 lddd (来自 devtools) |
dnf repoquery --unsatisfied |
apt-get --fix-broken 然后 aptitude install |
zypper verify |
revdep-rebuild
|
为软件包系统添加检查点以便稍后回滚 |
|
(不必要,它在每次事务中都会完成) |
|
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 |
|
使用软件包文件和构建软件包
操作 |
Arch |
Red Hat/Fedora |
Debian/Ubuntu |
SLES/openSUSE |
Gentoo |
查询在命令行上提供的软件包,而不是软件包管理数据库中的条目 |
pacman -Qp |
rpm -qp |
dpkg -I |
|
|
列出软件包文件的内容 |
pacman -Qpl |
rpmls rpm -qpl |
dpkg -c |
rpm -qpl |
|
安装本地软件包文件,例如 app.rpm,并使用软件包源来解析依赖关系 |
pacman -U |
dnf install |
dpkg -i |
zypper in |
emerge
|
使用本地软件包更新软件包,并使用软件包源来解析依赖关系 |
pacman -U |
dnf upgrade |
debi |
|
emerge
|
将本地软件包添加到本地软件包缓存,主要用于调试目的。 |
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
|
安装/移除软件包以满足构建依赖关系。使用源码包中的信息 |
使用 ABS 和 makepkg -seoc |
dnf builddep |
apt-get build-dep |
zypper si -d |
emerge -o
|
显示给定软件包名称的源码包 |
|
dnf repoquery -s |
apt-cache showsrc |
n/a |
|
下载给定软件包名称的对应源码包 |
使用 ABS 和 makepkg -o |
dnf download --source |
apt-get source 或 debcheckout |
zypper source-install |
emerge --fetchonly
|
构建软件包 |
makepkg -s |
rpmbuild -ba (正常) 或 mock (在 chroot 中) |
debuild |
rpmbuild -ba ,然后构建,然后 osc build |
ebuild 或 quickpkg |
检查可能的打包问题 |
namcap (需要 namcap) |
rpmlint |
lintian |
rpmlint |
repoman
|
日志文件轮换
默认情况下,Arch Linux 不轮换 pacman.log
。例如,参见 FS#11272 和 FS#20428#comment66480。这与其他大多数 Linux 发行版的默认策略形成对比。一些发行版,特别是 Gentoo,默认情况下几乎不写入日志文件。
参见