pacman/各软件包管理器命令对应关系
外观
< Pacman
(重定向自Pacman/Rosetta)
这个页面用表格展示一些流行的 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 )
或 |
按照包名安装软件包(们) | 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.