Difference between revisions of "Package managers"

From OpenVZ Virtuozzo Containers Wiki
Jump to: navigation, search
(Add changelog path for portage)
(Add the start of a column for pacman)
Line 7: Line 7:
 
! DEB<br/><small>Debian, Ubuntu</small>
 
! DEB<br/><small>Debian, Ubuntu</small>
 
! Ebuild<br/><small>Gentoo, Sabayon</small>
 
! Ebuild<br/><small>Gentoo, Sabayon</small>
 +
! Pacman<br/><small>Arch Linux</small>
 
|-
 
|-
 
! colspan="4" align="center" | <big>'''Basic queries'''</big>
 
! colspan="4" align="center" | <big>'''Basic queries'''</big>
Line 14: Line 15:
 
|| <code>dpkg -l</code>
 
|| <code>dpkg -l</code>
 
|| <code>equery list</code>
 
|| <code>equery list</code>
 +
|| <code>pacman -Qi</code>
 
|-
 
|-
 
! List of installed packages matching ''substr''
 
! List of installed packages matching ''substr''
Line 19: Line 21:
 
|| <code>dpkg -l ''\*substr\*''</code>
 
|| <code>dpkg -l ''\*substr\*''</code>
 
|| <code>equery list ''substr''</code>
 
|| <code>equery list ''substr''</code>
 +
||
 
|-
 
|-
 
! Basic information about an installed ''package''
 
! Basic information about an installed ''package''
Line 24: Line 27:
 
|| <code>dpkg -p ''package''</code>
 
|| <code>dpkg -p ''package''</code>
 
|| <code>eix ''package''</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="4" align="center" | <big>'''Advanced queries'''</big>
 
! colspan="4" align="center" | <big>'''Advanced queries'''</big>
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''
Line 46: Line 53:
 
|| <code>less /var/lib/dpkg/info/''package''.{pre,post,config}*</code>
 
|| <code>less /var/lib/dpkg/info/''package''.{pre,post,config}*</code>
 
|| <code>cat `equery which ''package''`</code>
 
|| <code>cat `equery which ''package''`</code>
 +
||
 
|-
 
|-
 
! Show change log for a ''package''
 
! Show change log for a ''package''
Line 51: Line 59:
 
|| <code>zcat /usr/share/doc/package/changelog.Debian.gz</code><br/><code>aptitude [-t release] changelog package</code>
 
|| <code>zcat /usr/share/doc/package/changelog.Debian.gz</code><br/><code>aptitude [-t release] changelog package</code>
 
|| <code>view /usr/portage/''category''/''package''/ChangeLog</code>
 
|| <code>view /usr/portage/''category''/''package''/ChangeLog</code>
 +
||
 
|-
 
|-
 
! colspan="4" align="center" | <big>'''Local package installation/upgrade/removal'''</big>
 
! colspan="4" align="center" | <big>'''Local package installation/upgrade/removal'''</big>
Line 58: Line 67:
 
|| <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's dependencies</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's dependencies</ref></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>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''
Line 64: Line 74:
 
|| <code>emerge --update --usepkg|-k ''package''<ref name="emerge-usepkg"/></code><br/>
 
|| <code>emerge --update --usepkg|-k ''package''<ref name="emerge-usepkg"/></code><br/>
 
<code>emerge --update --usepkgonly|-K ''package''<ref name="emerge-usepkgonly"/></code>
 
<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 72: 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="4" align="center" | <big>'''Package installation from repositories'''</big>
 
! colspan="4" align="center" | <big>'''Package installation from repositories'''</big>
Line 81: 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''
 
! Install a debug information files for a ''package''
Line 86: Line 99:
 
|| <code>???</code>
 
|| <code>???</code>
 
|| <code>FEATURES="splitdebug installsources" emerge -av ''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
Line 91: Line 105:
 
|| <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>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="4" align="center" | <big>'''Get information about package interdependencies'''</big>
 
! colspan="4" align="center" | <big>'''Get information about package interdependencies'''</big>
Line 98: Line 113:
 
|| <code>dpkg-query -W -f='${Provides}\n' ''package''</code>
 
|| <code>dpkg-query -W -f='${Provides}\n' ''package''</code>
 
|| <code>equery files ''package'' (package must be installed first)</code>
 
|| <code>equery files ''package'' (package must be installed first)</code>
 +
||
 
|-
 
|-
 
! What a given ''package'' requires?
 
! What a given ''package'' requires?
Line 103: Line 119:
 
|| <code>dpkg-query -W -f='${Depends}\n' ''package''</code>
 
|| <code>dpkg-query -W -f='${Depends}\n' ''package''</code>
 
|| <code>equery depgraph --depth=1 ''package''</code>
 
|| <code>equery depgraph --depth=1 ''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>?
Line 108: Line 125:
 
|| <code>dpkg-query -W -f='${Package}: ${Provides}\n' '*' | grep ': .*package'</code>
 
|| <code>dpkg-query -W -f='${Package}: ${Provides}\n' '*' | grep ': .*package'</code>
 
|| <code>equery belongs ''dependency''</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"/>?
Line 113: Line 131:
 
|| <code>dpkg-query -W -f='${Package}: ${Depends}\n' '*' | grep ': .*package'</code><br><code>aptitude why package</code><ref name="why">Actualy shows the whole dpendency situation that leads to install this package</ref>
 
|| <code>dpkg-query -W -f='${Package}: ${Depends}\n' '*' | grep ': .*package'</code><br><code>aptitude why package</code><ref name="why">Actualy shows the whole dpendency situation that leads to install this package</ref>
 
|| <code>equery depends ''package''</code>
 
|| <code>equery depends ''package''</code>
 +
||
 
|-
 
|-
 
! Show what prevents installation of a package
 
! Show what prevents installation of a package
Line 118: Line 137:
 
|| <code>aptitude why-not package</code>
 
|| <code>aptitude why-not package</code>
 
|| <code>emerge -pv ''package''</code>
 
|| <code>emerge -pv ''package''</code>
 +
||
 
|-
 
|-
 
! Get package source files
 
! Get package source files
Line 123: Line 143:
 
|| <code>apt-get source ''package''</code>
 
|| <code>apt-get source ''package''</code>
 
|| <code>emerge -f ''package''</code>
 
|| <code>emerge -f ''package''</code>
 +
|| <code>abs ''repository''/''package''</code>
 
|-
 
|-
 
! colspan="4" align="center" | <big>'''Working with package files'''</big>
 
! colspan="4" align="center" | <big>'''Working with package files'''</big>
Line 130: Line 151:
 
|| <code>dpkg -x ''file.deb'' .</code>
 
|| <code>dpkg -x ''file.deb'' .</code>
 
|| N/A
 
|| N/A
 +
||
 
|-
 
|-
 
! Check package file integrity (checksums, signatures...)
 
! Check package file integrity (checksums, signatures...)
Line 135: Line 157:
 
|| <code>debsums ''package''</code>
 
|| <code>debsums ''package''</code>
 
|| <code>emerge -f ''package''</code>
 
|| <code>emerge -f ''package''</code>
 +
||
 
|-
 
|-
 
! colspan="4" align="center" | <big>'''Repository queries'''</big>
 
! colspan="4" align="center" | <big>'''Repository queries'''</big>
Line 142: Line 165:
 
|| First run: <br/><code>apt-file update</code><br/>and then:<br/><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
 
! Find a package based on some string or part of the string descriping it
Line 147: Line 171:
 
|| <code>apt-cache search ''\*substr\*''</code>
 
|| <code>apt-cache search ''\*substr\*''</code>
 
|| <code>eix -S ''substr''</code>
 
|| <code>eix -S ''substr''</code>
 +
|| <code>pacman -Ss ''substr''</code>
 
|-
 
|-
 
! Shows the full description of ''package''
 
! Shows the full description of ''package''
Line 152: Line 177:
 
|| <code>apt-cache show ''package''</code>
 
|| <code>apt-cache show ''package''</code>
 
|| <code>eix ''package''</code>
 
|| <code>eix ''package''</code>
 +
|| <code>pacman -Si ''package''</code>
 
|}
 
|}
  

Revision as of 15:25, 21 March 2011

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.

Commands

Action RPM
RHEL, Fedora, CentOS, Mandriva, SUSE, ...
DEB
Debian, Ubuntu
Ebuild
Gentoo, Sabayon
Pacman
Arch Linux
Basic queries
List of all installed packages rpm -qa dpkg -l equery list pacman -Qi
List of installed packages matching substr rpm -qa \*substr\* dpkg -l \*substr\* equery list substr
Basic information about an installed package rpm -qi package dpkg -p 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
Local package installation/upgrade/removal
Install a package from local package_file rpm -ihv package_file*.rpm
yum localinstall package_file*.rpm[1]
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]

emerge --update --usepkgonly|-K package[4]

pacman -U package
Remove an installed package rpm -e package

yum remove|erase package[5]

dpkg -r package

dpkg -P package

emerge --unmerge package

emerge --prune package

pacman -R package
Package installation from repositories
Install a package yum install package

urpmi package

apt-get update && apt-get install package

aptitude update && aptitude 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)
What a given package requires? rpm -q --requires package dpkg-query -W -f='${Depends}\n' package equery depgraph --depth=1 package
Which installed package(s) provide a given dependency[8]? rpm -q --whatprovides dependency dpkg-query -W -f='${Package}: ${Provides}\n' '*' | grep ': .*package' 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
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 file.deb . N/A
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
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

  1. In case there are unsatisfied dependencies for package_file, yum will try to get and install it from known repositores.
  2. 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 it's dependencies
  3. 3.0 3.1 Use a binary package if it is available from $PKGDIR, otherwise emerge from source as usual.
  4. 4.0 4.1 Use a binary package if it is available from $PKGDIR, otherwise abort.
  5. This will also remove any packages which depend on the package
  6. Package will reside in /var/cache/apt/archives.
  7. Package sources will reside in /usr/portage/distfiles.
  8. 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.
  9. Actualy shows the whole dpendency situation that leads to install this package

See also

Debian