跳转至内容

pacman/罗塞塔石碑

来自 ArchWiki

本页面使用表格展示了部分主流 Linux 发行版中软件包管理命令的对应关系。其灵感源于 openSUSE 的软件管理命令行比较

提示 必须暂时使用其他 Linux 发行版的 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
仅打印目标而不执行实际操作 pacman -p (或 --print) dnf --setopt=tsflags=test apt --simulate (或 -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 (参见关于部分更新的警告) dnf check-updatednf makecachednf upgrade (内置自动功能) apt update zypper refreshzypper ref [-s] 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 ? 不适用
移除软件包、其所有依赖项及配置文件 pacman -Rns ? apt autoremove --purge ? 不适用
移除不再需要的依赖项(孤儿包),例如移除依赖该包的软件后留下的依赖项。 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 不可用 (功能请求 + 变通方案) emerge --oneshot (-1)
仅下载给定的软件包,不解压或安装它们 pacman -Sw dnf download apt install --download-only (存入软件包缓存) 或 apt download (跳过缓存) zypper --download-only emerge --fetchonly (-f)
清理所有本地缓存。选项可限制实际清理的内容。 pacman -Scpacman -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 -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 -pvemerge -Sequery meta
显示本地软件包提供的文件 pacman -Ql rpm -ql dpkg -L rpm -ql equery filesqlist
显示远程软件包提供的文件 pacman -Fl dnf repoquery -lrepoquery -l (来自 yum-utils 包) apt-file list pfl
查询提供 FILE 的软件包 pacman -Qo rpm -qf (仅已安装) 或 dnf provides (所有) 或 repoquery -f (来自 yum-utils 包) dpkg -Sdlocate rpm -qf (仅已安装) 或 zypper search -f (所有) 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 (精确匹配) 或 zypper se --provides (模糊匹配) equery belongs (仅已安装软件包) 或 pfl
搜索所有软件包以找到包含指定文件的那个。 pacman -F dnf provides apt-file searchauto-apt 使用此功能。 zypper search -f equery belongsqfile
显示软件包的更新日志 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 searchzypper se -s emerge -Seix
列出有可用更新的软件包。注:部分工具提供特殊命令来限制输出到特定安装源,其他则使用选项。 pacman -Qu dnf list updatesdnf check-update apt list --upgradable zypper list-updateszypper patch-check (仅限补丁) emerge -uDNp @world
显示软件包管理所处理的所有安装源中的所有软件包列表。一些工具提供选项或附加命令来限制输出到特定安装源。 pacman -Sl dnf list available apt-cache dumpavailapt-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 -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 packages --userinstalled emerge -pvO @selectedeix --selected
列出自动安装的软件包(作为依赖项) pacman -Qd apt-mark showauto zypper packages --autoinstalled

查询软件包依赖

动作 Arch Red Hat/Fedora Debian/Ubuntu SLES/openSUSE Gentoo
显示需要 X 才能安装的软件包,即显示反向依赖。 pacman -Siipacman -Qii dnf repoquery --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 --whatrequires aptitude search ~D{depends,recommends,suggests}:$patternaptitude whyapt-cache rdepends zypper search --requires equery depends -a
显示所有被指定软件包废弃(obsoletes)的软件包。 pacman -Sipacman -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 laymaneselect repository
向系统添加安装源。某些工具为特定源提供附加命令,另一些允许在 add 命令中使用所有类型的 URI。还有像 apt 这样强制编辑源列表的。apt-cdrom 是特殊命令,提供专为 CD/DVD 设计的源选项。 编辑 /etc/pacman.conf dnf config-manager apt-cdrom add zypper ar <URL 或 .repo 文件> laymanoverlays
刷新关于指定安装源或所有安装源的信息。 pacman -Sy (之后务必升级整个系统) dnf clean expire-cache 然后 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>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 packageapt-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;对于共享库级别,使用 findbrokenpkgsAURlddd (来自 devtools) dnf repoquery --unsatisfied apt-get --fix-broken 然后 aptitude install zypper verify revdep-rebuild
为软件包系统添加检查点以便后续回滚 (无需,每次事务都会自动完成) 不适用
从系统中移除检查点 不适用 不适用 不适用
提供所有系统检查点列表 不适用 dnf history list 不适用
将整个软件包回滚到特定日期或检查点 不适用 dnf history rollback 不适用
撤销指定的单个事务 不适用 dnf history undo 不适用

使用软件包文件与构建软件包

动作 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 不适用 cp package-filename /usr/portage/distfiles
解压软件包 tar -xvf rpm2cpio | cpio -vid dpkg-deb -x rpm2cpio | cpio -vid tar -jxvf
安装/移除软件包以满足构建依赖。使用源代码包中的信息 使用 ABSmakepkg -seoc dnf builddep apt-get build-dep zypper si -d emerge -o
显示给定软件包名称的源包 dnf repoquery -s apt-cache showsrc 不适用
下载给定软件包名称对应的源代码包 使用 ABSmakepkg -o dnf download --source apt-get sourcedebcheckout zypper source-install emerge --fetchonly
构建软件包,首先检查并安装所需的依赖项 makepkg -s rpmbuild -ba (常规) 或 mock (在 chroot 中) debuild rpmbuild -ba,然后构建,再 osc build ebuildquickpkg
检查可能的打包问题 namcap
(需要 namcap)
rpmlint lintian rpmlint repoman

日志文件轮转

默认情况下,Arch Linux 不轮转 pacman.log。例如参见 FS#11272FS#20428#comment66480。这与大多数其他 Linux 发行版的默认策略相反。一些发行版(特别是 Gentoo)默认几乎不写入日志文件。

参见

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.