Pacman (简体中文)/Rosetta (简体中文)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
翻译状态:本文是 Pacman/Rosetta翻译。上次翻译日期:2017-08-07。如果英文版本有所更改,则您可以帮助同步翻译。

这个页面用表格展示一些流行的 Linux 发行版包管理器命令的对应关系。这是受到 openSUSE's Software Management Command Line Comparison 的启发而成的。

提示: Arch 用户在临时处理其他发行版时可以用 pacapt,它是对其它包管理器的简单包装。
注意: 这里描述的一些工具只针对特定版本的 pacman。其中的 -Qk 选项是在 pacman 4.1 中新实现的。

基本操作

动作 Arch Red Hat/Fedora Debian/Ubuntu SLES/openSUSE Gentoo
按名安装包 pacman -S dnf install apt install zypper install
zypper in
emerge -1O
按名移除包 pacman -Rs dnf remove apt remove zypper remove
zypper rm
emerge -C
通过软件名、描述、简短描述来搜索包。默认搜索域依工具不同而异。Mostly options bring tools on par. pacman -Ss dnf search apt search zypper search
zypper se [-s]
emerge -S
升级包(安装已有包的更新版本) pacman -Syu dnf upgrade apt update && apt upgrade zypper update zypper up emerge -u world
升级包(更新命令的另一种形式,可以进行更复杂形式的更新,例如发行版升级。当通常的更新命令会忽略软件更新时——例如依赖改变——本命令可以进行这些更新) pacman -Syu dnf distro-sync apt update && apt dist-upgrade zypper dup emerge -uDN world
清除本地缓存(可能允许通过选项控制要清除拿些东西;autoclean 只清除过时的信息) pacman -Sc
pacman -Scc
dnf clean all apt autoclean
apt clean
zypper clean eclean distfiles
移除不再需要的依赖(例如当依赖某包的软件被移除) pacman -Qdtq | pacman -Rs - dnf autoremove apt autoremove zypper rm -u emerge --depclean
移除不再处于任何仓库中的包 pacman -Qm | pacman -Rs - package-cleanup --orphans aptitude purge '~o'
将作为依赖安装的包指定为手动安装 pacman -D --asexplicit dnf mark install apt-mark manual emerge --select
将包作为依赖安装 pacman -S --asdeps dnf install => dnf mark remove apt-mark auto emerge -1
仅下载而不解包或安装 pacman -Sw dnf download apt install --download-only (下载到缓存)
apt download (下载到当前目录)
zypper --download-only emerge --fetchonly
启动一个 shell 以便在一个会话中输入多个命令 apt-config shell zypper shell
查看日志 cat /var/log/pacman.log dnf history cat /var/log/dpkg.log cat /var/log/zypp/history located in /var/log/portage
获取当前系统所有软件包的状态 (see /var/lib/pacman/local) (see /var/lib/rpm/Packages) apt-cache stats n/a emerge --info
包变更时发送邮件 apt install apt-listchanges
Action Arch Red Hat/Fedora Debian/Ubuntu SUSE/openSUSE Gentoo

查询某个包的信息

Action Arch Red Hat/Fedora Debian/Ubuntu SLES/openSUSE Gentoo
显示包的全部或者部分信息。各种包管理工具默认显示的详细程度各不相同,但是可以通过设置选项使其一致。 pacman -[S|Q]i dnf list, dnf info apt show / apt-cache policy zypper info zypper if emerge -S; emerge -pv; eix
显示本地包信息,包括包名、版本、描述等。 pacman -Qi rpm -qi dpkg -s / aptitude show zypper info; rpm -qi emerge -pv and emerge -S
显示远程包信息,包括包名、版本、描述等。 pacman -Si dnf info apt-cache show / aptitude show zypper info emerge -pv and emerge -S
显示本地包提供的文件。 pacman -Ql rpm -ql dpkg -L rpm -Ql equery files
显示远程包提供的文件。 pacman -Fl dnf repoquery -l apt-file list $pattern pfl
查询提供某个文件的包。 pacman -Qo rpm -qf (installed only) or dnf provides (everything) dpkg -S / dlocate zypper search -f equery belongs
列出包中的文件。其他更复杂的命令亦可以提供该功能。 pacman -Ql
pacman -Fl
dnf repoquery -l dpkg-query -L rpm -ql equery files
查出文件是由哪一个包提供的,主要是为了检索特定文件。其他工具亦可通过搜索命令提供该功能。 pacman -Fo dnf provides apt-file search zypper what-provides zypper wp equery belongs (only installed packages); pfl
在所有包中查找包含指定文件的包。auto-apt 提供该功能。 pacman -Fs dnf provides apt-file search zypper search -f equery belongs
显示包的更新日志。 pacman -Qc rpm -q --changelog apt-get changelog rpm -q --changelog equery changes -f
Action Arch Red Hat/Fedora Debian/Ubuntu SUSE/openSUSE Gentoo

查询包列表

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
Lists packages which have an update available. Note: Some provide special commands to limit the output to certain installation sources, others use options. pacman -Qu dnf list updates, dnf check-update apt-get upgrade -> n zypper list-updates zypper patch-check (just for patches) emerge -uDNp world
Display a list of all packages in all installation sources that are handled by the packages management. Some tools provide options or additional commands to limit the output to a specific installation source. pacman -Sl dnf list available apt-cache dumpavail apt-cache dump (Cache only) apt-cache pkgnames zypper packages emerge -ep world
Generates a list of installed packages pacman -Q dnf list installed dpkg --list | grep ^i zypper search --installed-only emerge -ep world
List packages that are installed but are not available in any installation source (anymore). pacman -Qm dnf list extras deborphan zypper se -si | grep 'System Packages' eix-test-obsolete
List packages that were recently added to one of the installation sources, i.e. which are new to it. (none) dnf list recent aptitude search '~N' / aptitude forget-new n/a eix-diff
List installed local packages along with version pacman -Q rpm -qa dpkg -l zypper search -s; rpm -qa emerge -e world
Search locally installed package for names or descriptions pacman -Qs rpm -qa '*<str>*' aptitude search '~i(~n $name|~d $description)' eix -S -I
List packages not required by any other package pacman -Qt package-cleanup --all --leaves deborphan -anp1
List packages installed explicitly (not as dependencies) pacman -Qe apt-mark showmanual
List packages installed automatically (as dependencies) pacman -Qd apt-mark showauto
Action Arch Red Hat/Fedora Debian/Ubuntu SUSE/openSUSE Gentoo

查询包的依赖关系

Action Arch Red Hat/Fedora Debian/Ubuntu SLES/openSUSE Gentoo
Display packages which require X to be installed, aka show reverse dependencies. pacman -Sii dnf repoquery --alldeps --whatrequires apt-cache rdepends / aptitude search ~D$pattern zypper search --requires equery depends
Display packages which conflict with given expression (often package). Search can be used as well to mimic this function. dnf repoquery --conflicts aptitude search '~C$pattern'
List all packages which are required for the given package, aka show dependencies. pacman -[S|Q]i dnf repoquery --requires apt-cache depends / apt-cache show zypper info --requires emerge -ep
List what the current package provides dnf provides dpkg -s / aptitude show zypper info --provides equery files
List all packages that require a particular package dnf repoquery --alldeps --whatrequires aptitude search ~D{depends,recommends,suggests}:$pattern / aptitude why zypper search --requires equery depends -a
Display all packages that the specified packages obsoletes. dnf list obsoletes apt-cache show
Generates an output suitable for processing with dotty for the given package(s). apt-cache dotty n/a
Action Arch Red Hat/Fedora Debian/Ubuntu SUSE/openSUSE Gentoo

管理软件源

Action Arch Red Hat/Fedora Debian/Ubuntu SLES/openSUSE Gentoo
Installation sources management ${EDITOR} /etc/pacman.conf ${EDITOR} /etc/yum.repos.d/${REPO}.repo ${EDITOR} /etc/apt/sources.list ${EDITOR} /etc/zypp/repos.d/${REPO}.repo layman
Add an installation source to the system. Some tools provide additional commands for certain sources, others allow all types of source URI for the add command. Again others, like apt and dnf force editing a sources list. apt-cdrom is a special command, which offers special options design for CDs/DVDs as source. /etc/pacman.conf /etc/yum.repos.d/*.repo apt-cdrom add zypper service-add layman, overlays
Refresh the information about the specified installation source(s) or all installation sources. pacman -Sy (always upgrade the whole system afterwards) dnf clean expire-cache && dnf check-update apt-get update zypper refresh zypper ref emerge --sync;layman -S
Prints a list of all installation sources including important information like URI, alias etc. cat /etc/pacman.d/mirrorlist cat /etc/yum.repos.d/* apt-cache policy zypper service-list layman -l
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. dnf --releasever= apt-get install -t release package/ apt-get install package/release (deps not covered) echo "category/package ~amd64" >> /etc/portage/package.keywords && emerge package
Action Arch Red Hat/Fedora Debian/Ubuntu SUSE/openSUSE Gentoo

Overrides

Action Arch Red Hat/Fedora Debian/Ubuntu SLES/openSUSE Gentoo
增加包锁定规则来保持其当前状态不被改变 /etc/pacman.conf
modify IgnorePkg array
dnf.conf <--”exclude” option (add/amend) apt-mark hold pkg Put package name in /etc/zypp/locks, or zypper al /etc/portage/package.mask
删除包锁定规则 remove package from IgnorePkg line in /etc/pacman.conf apt-mark unhold pkg Remove package name from /etc/zypp/locks or zypper rl /etc/portage/package.mask (or package.unmask)
列出所有锁定规则 cat /etc/pacman.conf /etc/apt/preferences View /etc/zypp/locks or zypper ll cat /etc/portage/package.mask
Set the priority of the given package to avoid upgrade, force downgrade or to overwrite any default behavior. Can also be used to prefer a package version from a certain installation source. ${EDITOR} /etc/pacman.conf
Modify HoldPkg and/or IgnorePkg arrays
/etc/apt/preferences, apt-cache policy zypper mr -p ${EDITOR} /etc/portage/package.keywords
Add a line with =category/package-version
Remove a previously set priority /etc/apt/preferences zypper mr -p ${EDITOR} /etc/portage/package.keywords
remove offending line
Show a list of set priorities. apt-cache policy /etc/apt/preferences zypper lr -p cat /etc/portage/package.keywords
Ignores problems that priorities may trigger. n/a
Action Arch Red Hat/Fedora Debian/Ubuntu SUSE/openSUSE Gentoo

校验和修复

Action Arch Red Hat/Fedora Debian/Ubuntu SLES/openSUSE Gentoo
Verify single package pacman -Qk[k] rpm -V debsums rpm -V equery check
Verify all packages pacman -Qk[k] rpm -Va debsums rpm -Va equery check
Reinstall given Package - Will reinstall the given package without dependency hassle. pacman -S dnf reinstall apt install --reinstall zypper install --force emerge [-a]
Verify dependencies of the complete system. Used if installation process was forcefully killed. pacman -Dk dnf repoquery --requires apt-get check zypper verify emerge -uDN world
Use some magic to fix broken dependencies in a system pacman dep level - pacman -Dk, shared lib level - findbrokenpkgs or lddd dnf repoquery --unsatisfied apt-get --fix-broken
aptitude install
zypper verify revdep-rebuild
为包系统增加一个检查点以便未来回滚 (unnecessary, 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
Action Arch Red Hat/Fedora Debian/Ubuntu SUSE/openSUSE Gentoo

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

Action Arch Red Hat/Fedora Debian/Ubuntu SLES/openSUSE Gentoo
Query a package supplied on the command line rather than an entry in the package management database pacman -Qp rpm -qp dpkg -I
List the contents of a package file pacman -Qpl rpmls rpm -qpl dpkg -c rpm -qpl
Installs 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 $filename /var/cache/pacman/pkg/ apt-cache add n/a cp $filename /usr/portage/distfiles
解包 tar -Jxvf rpm2cpio | cpio -vid dpkg-deb -x rpm2cpio | cpio -vid tar -jxvf
安装/移除包以适合构建依赖(使用源码包中的信息) automatic 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
Downloads the corresponding source package(s) to the given package name(s) Use ABS && makepkg -o dnf download --source apt-get source / debcheckout zypper source-install emerge --fetchonly
Build a package makepkg -s rpmbuild -ba (normal)
mock (in chroot)
debuild rpmbuild -ba; build; osc build ebuild; quickpkg
Check for possible packaging issues namcap rpmlint lintian rpmlint repoman
Action Arch Red Hat/Fedora Debian/Ubuntu SUSE/openSUSE Gentoo

参阅