跳转到内容

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.

另见