Difference between revisions of "Package managers"
m (nit: it's -> its) |
|||
(44 intermediate revisions by 18 users not shown) | |||
Line 4: | Line 4: | ||
{| class="wikitable" | {| class="wikitable" | ||
! align="center" | Action | ! align="center" | Action | ||
− | ! RPM<br/><small>RHEL, Fedora, CentOS, | + | ! RPM<br/><small>RHEL, Fedora, CentOS, Mandriva, SUSE, ...</small> |
− | ! DEB<br/><small>Debian, Ubuntu</small> | + | ! DEB<br/><small>Debian, Knoppix, Ubuntu, ...</small> |
− | ! Ebuild<br/><small>Gentoo, | + | ! Ebuild<br/><small>Gentoo and derivatives (Sabayon, Ututo, ...)</small> |
+ | ! Pacman<br/><small>Arch Linux</small> | ||
|- | |- | ||
− | ! colspan=" | + | ! colspan="5" align="center" | <big>'''Basic queries'''</big> |
|- | |- | ||
! List of all installed packages | ! List of all installed packages | ||
|| <code>rpm -qa</code> | || <code>rpm -qa</code> | ||
|| <code>dpkg -l</code> | || <code>dpkg -l</code> | ||
− | || <code>equery list</code> | + | || <code>equery list '*'</code> |
+ | || <code>pacman -Q</code> | ||
|- | |- | ||
− | ! List of | + | ! List of installed packages matching ''substr'' |
|| <code>rpm -qa ''\*substr\*''</code> | || <code>rpm -qa ''\*substr\*''</code> | ||
|| <code>dpkg -l ''\*substr\*''</code> | || <code>dpkg -l ''\*substr\*''</code> | ||
|| <code>equery list ''substr''</code> | || <code>equery list ''substr''</code> | ||
+ | || <code>pacman -Q | grep ''substr''</code> | ||
|- | |- | ||
! Basic information about an installed ''package'' | ! Basic information about an installed ''package'' | ||
|| <code>rpm -qi ''package''</code> | || <code>rpm -qi ''package''</code> | ||
− | || <code>dpkg - | + | || <code>dpkg -s ''package''</code> |
− | || <code>- | + | || <code>eix ''package''</code> |
+ | || <code>pacman -Qi ''package''</code> | ||
|- | |- | ||
! List of files in a given ''package'' | ! List of files in a given ''package'' | ||
Line 29: | Line 33: | ||
|| <code>dpkg -L ''package''</code> | || <code>dpkg -L ''package''</code> | ||
|| <code>equery files ''package''</code> | || <code>equery files ''package''</code> | ||
+ | || <code>pacman -Ql ''package''</code> | ||
|- | |- | ||
− | ! colspan=" | + | ! colspan="5" align="center" | <big>'''Advanced queries'''</big> |
|- | |- | ||
! Which package a ''file'' belongs to? | ! Which package a ''file'' belongs to? | ||
Line 36: | Line 41: | ||
|| <code>dpkg -S ''file''</code> | || <code>dpkg -S ''file''</code> | ||
|| <code>equery belongs ''file''</code> | || <code>equery belongs ''file''</code> | ||
+ | || <code>pacman -Qo ''file''</code> | ||
|- | |- | ||
! Check the hash (i.e. MD5 etc.) sums of an installed package | ! Check the hash (i.e. MD5 etc.) sums of an installed package | ||
Line 41: | Line 47: | ||
|| <code>debsums -ca ''package''</code> | || <code>debsums -ca ''package''</code> | ||
|| <code>equery check ''package''</code> | || <code>equery check ''package''</code> | ||
+ | || | ||
|- | |- | ||
! Show pre/post install/uninstall scripts from a ''package'' | ! Show pre/post install/uninstall scripts from a ''package'' | ||
|| <code>rpm -q --scripts ''package''</code> | || <code>rpm -q --scripts ''package''</code> | ||
|| <code>less /var/lib/dpkg/info/''package''.{pre,post,config}*</code> | || <code>less /var/lib/dpkg/info/''package''.{pre,post,config}*</code> | ||
− | || <code> | + | || <code>cat `equery which ''package''`</code> |
+ | || | ||
|- | |- | ||
! Show change log for a ''package'' | ! Show change log for a ''package'' | ||
|| <code>rpm -q --changelog ''package''</code> | || <code>rpm -q --changelog ''package''</code> | ||
− | || <code>zcat /usr/share/doc/package/changelog.Debian.gz</code> | + | || <code>zcat /usr/share/doc/''package''/changelog.Debian.gz</code><br/><code>aptitude [-t release] changelog ''package''</code> |
− | || <code>- | + | || <code>view /usr/portage/''category''/''package''/ChangeLog</code> |
+ | || <code>pacman -Qc ''package''</code> | ||
|- | |- | ||
− | ! colspan=" | + | ! colspan="5" align="center" | <big>'''Local package installation/upgrade/removal'''</big> |
|- | |- | ||
! Install a package from local ''package_file'' | ! Install a package from local ''package_file'' | ||
|| <code>rpm -ihv ''package_file*.rpm''<br/>yum localinstall ''package_file*.rpm''<ref name="localinstall">In case there are unsatisfied dependencies for ''package_file'', yum will try to get and install it from known repositores.</ref></code> | || <code>rpm -ihv ''package_file*.rpm''<br/>yum localinstall ''package_file*.rpm''<ref name="localinstall">In case there are unsatisfied dependencies for ''package_file'', yum will try to get and install it from known repositores.</ref></code> | ||
− | || <code>dpkg -i ''package_file*.deb'' <ref name="apt">Usually it is not necessary to download packages manually and install them. Use apt-cache search ''name'' to search for package in configured repositories and apt-get install ''package'' to install package and all it' | + | || <code>dpkg -i ''package_file*.deb'' <ref name="apt">Usually it is not necessary to download packages manually and install them. Use apt-cache search ''name'' to search for package in configured repositories and apt-get install ''package'' to install package and all its dependencies</ref></code> |
− | || <code>- | + | || <code>emerge --usepkg|-k ''package''<ref name="emerge-usepkg">Use a binary package if it is available from $PKGDIR, otherwise emerge from source as usual.</ref></code><br/><code>emerge --usepkgonly|-K ''package''<ref name="emerge-usepkgonly">Use a binary package if it is available from $PKGDIR, otherwise abort.</ref></code> |
+ | || <code>pacman -U ''package''</code> | ||
|- | |- | ||
! Upgrade a package from local ''package_file'' | ! Upgrade a package from local ''package_file'' | ||
|| <code>rpm -Uhv ''package_file*.rpm''</code> | || <code>rpm -Uhv ''package_file*.rpm''</code> | ||
|| <code>dpkg -i ''package_file*.deb'' <ref name="apt"/></code> | || <code>dpkg -i ''package_file*.deb'' <ref name="apt"/></code> | ||
− | || <code>- | + | || <code>emerge --update --usepkg|-k ''package''<ref name="emerge-usepkg"/></code><br/> |
+ | <code>emerge --update --usepkgonly|-K ''package''<ref name="emerge-usepkgonly"/></code> | ||
+ | || <code>pacman -U ''package''</code> | ||
|- | |- | ||
! Remove an installed ''package'' | ! Remove an installed ''package'' | ||
Line 71: | Line 83: | ||
|| <code>emerge --unmerge ''package''</code><br/> | || <code>emerge --unmerge ''package''</code><br/> | ||
<code>emerge --prune ''package''</code> | <code>emerge --prune ''package''</code> | ||
+ | || <code>pacman -R ''package''</code> | ||
|- | |- | ||
− | ! colspan=" | + | ! colspan="5" align="center" | <big>'''Package installation from repositories'''</big> |
|- | |- | ||
! Install a ''package'' | ! Install a ''package'' | ||
Line 80: | Line 93: | ||
<code>aptitude update && aptitude install ''package''</code> | <code>aptitude update && aptitude install ''package''</code> | ||
|| <code>emerge -av ''package''</code> | || <code>emerge -av ''package''</code> | ||
+ | || <code>pacman -S ''package''</code> | ||
+ | |- | ||
+ | ! Install a debug information files for a ''package'' | ||
+ | || <code>debuginfo-install ''package''</code> | ||
+ | || | ||
+ | || <code>FEATURES="splitdebug installsources" emerge -av ''package''</code> | ||
+ | || | ||
|- | |- | ||
! Only download a ''package'' from repository, do not install | ! Only download a ''package'' from repository, do not install | ||
− | || <code>- | + | || First install the yum-downloadonly plugin by running: <br/><code>yum install yum-downloadonly</code><br/> And then: <br/> <code>yum install|update ''package'' -y --downloadonly --downloaddir=/opt</code> |
− | || <code>apt-get install --download-only --reinstall ''package''</code><ref name="dpkgdir">Package will reside in /var/cache/apt/archives.</ref> | + | || <code>apt-get install --download-only --reinstall ''package''</code><ref name="dpkgdir">Package will reside in /var/cache/apt/archives.</ref><br/><code>aptitude download ''package''</code> |
|| <code>emerge -avf ''package''</code><ref name="distfiles">Package sources will reside in /usr/portage/distfiles.</ref> | || <code>emerge -avf ''package''</code><ref name="distfiles">Package sources will reside in /usr/portage/distfiles.</ref> | ||
+ | || <code>pacman -Sw ''package''</code> | ||
|- | |- | ||
− | ! colspan=" | + | ! colspan="5" align="center" | <big>'''Get information about package interdependencies'''</big> |
|- | |- | ||
! What a given ''package'' provides? | ! What a given ''package'' provides? | ||
|| <code>rpm -q --provides ''package''</code> | || <code>rpm -q --provides ''package''</code> | ||
|| <code>dpkg-query -W -f='${Provides}\n' ''package''</code> | || <code>dpkg-query -W -f='${Provides}\n' ''package''</code> | ||
− | || <code>- | + | || <code>equery files ''package'' (package must be installed first)</code> |
+ | || <code>pacman -Ql ''package'' (package must be installed first)</code> | ||
|- | |- | ||
! What a given ''package'' requires? | ! What a given ''package'' requires? | ||
|| <code>rpm -q --requires ''package''</code> | || <code>rpm -q --requires ''package''</code> | ||
|| <code>dpkg-query -W -f='${Depends}\n' ''package''</code> | || <code>dpkg-query -W -f='${Depends}\n' ''package''</code> | ||
− | || <code>- | + | || <code>equery depgraph --depth=1 ''package''</code> |
+ | || <code>pacman -Si ''package''</code> | ||
|- | |- | ||
! Which installed package(s) provide a given ''dependency''<ref name="dep">In rpm world, a ''dependency'' can be a package name, a file, or a special atom like <code>perl(IO::Zlib)</code> for a perl module. In deb world, this can be either real or virtual package name.</ref>? | ! Which installed package(s) provide a given ''dependency''<ref name="dep">In rpm world, a ''dependency'' can be a package name, a file, or a special atom like <code>perl(IO::Zlib)</code> for a perl module. In deb world, this can be either real or virtual package name.</ref>? | ||
|| <code>rpm -q --whatprovides ''dependency''</code> | || <code>rpm -q --whatprovides ''dependency''</code> | ||
− | || <code>dpkg-query -W -f='${Package}: ${Provides}\n' '*' | grep ': | + | || <code>dpkg-query -W -f='${Package}: ${Provides}\n' '*' | grep ': .*''dependency''<nowiki>'</nowiki></code> |
− | || <code> | + | || <code>equery belongs ''dependency''</code> |
+ | || | ||
|- | |- | ||
! Which installed package(s) require a given ''dependency''<ref name="dep"/>? | ! Which installed package(s) require a given ''dependency''<ref name="dep"/>? | ||
|| <code>rpm -q --whatrequires ''dependency''</code> | || <code>rpm -q --whatrequires ''dependency''</code> | ||
− | || <code>dpkg-query -W -f='${Package}: ${Depends}\n' '*' | grep ': package'</code> | + | || <code>dpkg-query -W -f='${Package}: ${Depends}\n' '*' | grep ': .*''package''<nowiki>'</nowiki></code><br><code>aptitude why ''package''</code><ref name="why">Actualy shows the whole dpendency situation that leads to install this package</ref> |
− | || <code>- | + | || <code>equery depends ''package''</code> |
+ | || <code>pacman -Qi ''package'' | grep Required</code> | ||
+ | || | ||
+ | |- | ||
+ | ! Show what prevents installation of a package | ||
+ | || <code>(yum/rpm tells with --verbose option -v)</code> | ||
+ | || <code>aptitude why-not ''package''</code> | ||
+ | || <code>emerge -pv ''package''</code> | ||
+ | || | ||
|- | |- | ||
− | ! Get package source files | + | ! Get package source files |
− | || <code>- | + | || <code>yumdownloader --source ''package''</code> |
|| <code>apt-get source ''package''</code> | || <code>apt-get source ''package''</code> | ||
− | || <code>- | + | || <code>emerge -f ''package''</code> |
+ | || <code>abs ''repository''/''package''</code> | ||
|- | |- | ||
− | ! colspan=" | + | ! colspan="5" align="center" | <big>'''Working with package files'''</big> |
|- | |- | ||
! Unpack a package ''file'' to local directory | ! Unpack a package ''file'' to local directory | ||
|| <code>rpm2cpio ''file.rpm'' | cpio -id</code> | || <code>rpm2cpio ''file.rpm'' | cpio -id</code> | ||
− | || <code>dpkg -x ''file.deb'' .</code> | + | || <code>dpkg -x / --extract ''file.deb'' .</code> |
|| N/A | || N/A | ||
+ | || <code>tar -xzf ''package''</code> if ''package''.pkg.tar.gz or<br/><code>tar -xJf ''package''</code> if ''package''.pkg.tar.xz | ||
|- | |- | ||
! Check package file integrity (checksums, signatures...) | ! Check package file integrity (checksums, signatures...) | ||
− | || <code>rpm -K ''file.rpm''</code> | + | || <code>rpm -K ''file.rpm''</code><br/>(yum/rpm also checks GPG-signature and checksums automatically every time the package is installed or upgraded) |
− | || - | + | || <code>debsums ''package''</code> |
+ | || <code>emerge -f ''package''</code> | ||
+ | || | ||
+ | |- | ||
+ | ! Show package metadata | ||
+ | || <code>rpm -qip ''file.rpm''</code> | ||
+ | || <code>dpkg -I / --info ''file.deb''</code> | ||
|| N/A | || N/A | ||
+ | || ?? | ||
|- | |- | ||
− | ! | + | ! Show package file list |
+ | || <code>rpm -qlvp ''file.rpm''</code> | ||
+ | || <code>dpkg -c / --contents ''file.deb''</code> | ||
+ | || N/A | ||
+ | || ?? | ||
|- | |- | ||
− | ! Find a package which <code>/some/file</code> belongs to | + | ! colspan="5" align="center" | <big>'''Repository queries'''</big> |
+ | |- | ||
+ | ! Find a package in a repository which <code>/some/file</code> belongs to | ||
|| <code>yum provides ''/some/file''</code> | || <code>yum provides ''/some/file''</code> | ||
− | || <code>apt-file search ''/some/file''</code> | + | || First run: <br/><code>apt-file update</code><br/>and then:<br/><code>apt-file search ''/some/file''</code> |
|| N/A | || N/A | ||
+ | || | ||
+ | |- | ||
+ | ! Find a package based on some string or part of the string descriping it | ||
+ | || <code>yum search ''\*substr\*''</code> | ||
+ | || <code>apt-cache search ''\*substr\*''</code> | ||
+ | || <code>eix -S ''substr''</code> | ||
+ | || <code>pacman -Ss ''substr''</code> | ||
+ | |- | ||
+ | ! Shows the full description of ''package'' | ||
+ | || <code>yum info ''package''</code> | ||
+ | || <code>apt-cache show ''package''</code> | ||
+ | || <code>eix ''package''</code> | ||
+ | || <code>pacman -Si ''package''</code> | ||
|} | |} | ||
Line 150: | Line 210: | ||
* emerge configs: <code>/etc/make.conf</code>, <code>/etc/portage/</code>. | * emerge configs: <code>/etc/make.conf</code>, <code>/etc/portage/</code>. | ||
* Portage tree: <code>/usr/portage</code>. | * Portage tree: <code>/usr/portage</code>. | ||
+ | * Binary packages (FEATURES="buildpkg" enabled in make.conf): <code>/usr/portage/packages</code>. | ||
+ | * Default directory to download sources to: <code>/usr/portage/distfiles</code>. | ||
+ | * Default Portage working directory: <code>/var/lib/portage/</code>. | ||
== Notes== | == Notes== |
Revision as of 22:39, 2 February 2021
With OpenVZ, you can run many different Linux distributions on a single box. One particular thing in which distributions differ is package management. This article summarizes how to perform various common package management tasks on a different distributions.
Contents
Commands
Action | RPM RHEL, Fedora, CentOS, Mandriva, SUSE, ... |
DEB Debian, Knoppix, Ubuntu, ... |
Ebuild Gentoo and derivatives (Sabayon, Ututo, ...) |
Pacman Arch Linux | |
---|---|---|---|---|---|
Basic queries | |||||
List of all installed packages | rpm -qa
|
dpkg -l
|
equery list '*'
|
pacman -Q
| |
List of installed packages matching substr | rpm -qa \*substr\*
|
dpkg -l \*substr\*
|
equery list substr
|
pacman -Q | grep substr
| |
Basic information about an installed package | rpm -qi package
|
dpkg -s package
|
eix package
|
pacman -Qi package
| |
List of files in a given package | rpm -ql package
|
dpkg -L package
|
equery files package
|
pacman -Ql package
| |
Advanced queries | |||||
Which package a file belongs to? | rpm -qf file
|
dpkg -S file
|
equery belongs file
|
pacman -Qo file
| |
Check the hash (i.e. MD5 etc.) sums of an installed package | rpm -V package
|
debsums -ca package
|
equery check package
|
||
Show pre/post install/uninstall scripts from a package | rpm -q --scripts package
|
less /var/lib/dpkg/info/package.{pre,post,config}*
|
cat `equery which package`
|
||
Show change log for a package | rpm -q --changelog package
|
zcat /usr/share/doc/package/changelog.Debian.gz aptitude [-t release] changelog package
|
view /usr/portage/category/package/ChangeLog
|
pacman -Qc package
| |
Local package installation/upgrade/removal | |||||
Install a package from local package_file | rpm -ihv package_file*.rpm
|
dpkg -i package_file*.deb [2]
|
emerge --usepkg|-k package[3] emerge --usepkgonly|-K package[4]
|
pacman -U package
| |
Upgrade a package from local package_file | rpm -Uhv package_file*.rpm
|
dpkg -i package_file*.deb [2]
|
emerge --update --usepkg|-k package[3]
|
pacman -U package
| |
Remove an installed package | rpm -e package
|
dpkg -r package
|
emerge --unmerge package
|
pacman -R package
| |
Package installation from repositories | |||||
Install a package | yum install package
|
apt-get update && apt-get install package
|
emerge -av package
|
pacman -S package
| |
Install a debug information files for a package | debuginfo-install package
|
FEATURES="splitdebug installsources" emerge -av package
|
|||
Only download a package from repository, do not install | First install the yum-downloadonly plugin by running: yum install yum-downloadonly And then: yum install|update package -y --downloadonly --downloaddir=/opt
|
apt-get install --download-only --reinstall package [6]aptitude download package
|
emerge -avf package [7]
|
pacman -Sw package
| |
Get information about package interdependencies | |||||
What a given package provides? | rpm -q --provides package
|
dpkg-query -W -f='${Provides}\n' package
|
equery files package (package must be installed first)
|
pacman -Ql package (package must be installed first)
| |
What a given package requires? | rpm -q --requires package
|
dpkg-query -W -f='${Depends}\n' package
|
equery depgraph --depth=1 package
|
pacman -Si package
| |
Which installed package(s) provide a given dependency[8]? | rpm -q --whatprovides dependency
|
dpkg-query -W -f='${Package}: ${Provides}\n' '*' | grep ': .*dependency'
|
equery belongs dependency
|
||
Which installed package(s) require a given dependency[8]? | rpm -q --whatrequires dependency
|
dpkg-query -W -f='${Package}: ${Depends}\n' '*' | grep ': .*package' aptitude why package [9]
|
equery depends package
|
pacman -Qi package | grep Required
|
|
Show what prevents installation of a package | (yum/rpm tells with --verbose option -v)
|
aptitude why-not package
|
emerge -pv package
|
||
Get package source files | yumdownloader --source package
|
apt-get source package
|
emerge -f package
|
abs repository/package
| |
Working with package files | |||||
Unpack a package file to local directory | rpm2cpio file.rpm | cpio -id
|
dpkg -x / --extract file.deb .
|
N/A | tar -xzf package if package.pkg.tar.gz ortar -xJf package if package.pkg.tar.xz
| |
Check package file integrity (checksums, signatures...) | rpm -K file.rpm (yum/rpm also checks GPG-signature and checksums automatically every time the package is installed or upgraded) |
debsums package
|
emerge -f package
|
||
Show package metadata | rpm -qip file.rpm
|
dpkg -I / --info file.deb
|
N/A | ?? | |
Show package file list | rpm -qlvp file.rpm
|
dpkg -c / --contents file.deb
|
N/A | ?? | |
Repository queries | |||||
Find a package in a repository which /some/file belongs to
|
yum provides /some/file
|
First run: apt-file update and then: apt-file search /some/file
|
N/A | ||
Find a package based on some string or part of the string descriping it | yum search \*substr\*
|
apt-cache search \*substr\*
|
eix -S substr
|
pacman -Ss substr
| |
Shows the full description of package | yum info package
|
apt-cache show package
|
eix package
|
pacman -Si package
|
Relevant directories and files
Red Hat, Fedora, CentOS
- yum config:
/etc/yum.conf
. - yum repos:
/etc/yum.repos.d/
. - rpm configs and macros:
/etc/rpm/
,/usr/lib/rpm/
, - rpm DB:
/var/lib/rpm/
Debian/Ubuntu
- List of repositories and mirror sites:
/etc/apt/sources.list
,/etc/apt/sources.list.d/
.
Gentoo
- emerge configs:
/etc/make.conf
,/etc/portage/
. - Portage tree:
/usr/portage
. - Binary packages (FEATURES="buildpkg" enabled in make.conf):
/usr/portage/packages
. - Default directory to download sources to:
/usr/portage/distfiles
. - Default Portage working directory:
/var/lib/portage/
.
Notes
- ↑ In case there are unsatisfied dependencies for package_file, yum will try to get and install it from known repositores.
- ↑ 2.0 2.1 Usually it is not necessary to download packages manually and install them. Use apt-cache search name to search for package in configured repositories and apt-get install package to install package and all its dependencies
- ↑ 3.0 3.1 Use a binary package if it is available from $PKGDIR, otherwise emerge from source as usual.
- ↑ 4.0 4.1 Use a binary package if it is available from $PKGDIR, otherwise abort.
- ↑ This will also remove any packages which depend on the package
- ↑ Package will reside in /var/cache/apt/archives.
- ↑ Package sources will reside in /usr/portage/distfiles.
- ↑ 8.0 8.1 In rpm world, a dependency can be a package name, a file, or a special atom like
perl(IO::Zlib)
for a perl module. In deb world, this can be either real or virtual package name. - ↑ Actualy shows the whole dpendency situation that leads to install this package