Editing Package managers

Jump to: navigation, search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 1: Line 1:
 
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.
 
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 ==
 
 
{| class="wikitable"
 
{| class="wikitable"
 
! align="center" | Action
 
! align="center" | Action
! RPM<br/><small>RHEL, Fedora, CentOS, Mandriva, SUSE, ...</small>
+
! RPM<br/><small>RHEL, Fedora, CentOS, Mandrake, SUSE, ...</small>
! DEB<br/><small>Debian, Knoppix, Ubuntu, ...</small>
+
! DEB<br/><small>Debian, Ubuntu</small>
! Ebuild<br/><small>Gentoo and derivatives (Sabayon, Ututo, ...)</small>
+
! Ebuild<br/><small>Gentoo, Sabayon</small>
! Pacman<br/><small>Arch Linux</small>
 
 
|-
 
|-
! colspan="5" align="center" | <big>'''Basic queries'''</big>
+
| colspan="4" align="center" | '''Basic queries'''
 
|-
 
|-
 
! 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 installed packages matching ''substr''
+
! List of installing 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 -s ''package''</code>
+
|| <code>dpkg -p ''package''</code>
|| <code>eix ''package''</code>
+
|| <code>-???-</code>
|| <code>pacman -Qi ''package''</code>
 
 
|-
 
|-
 
! List of files in a given ''package''
 
! List of files in a given ''package''
Line 33: Line 28:
 
|| <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="5" align="center" | <big>'''Advanced queries'''</big>
+
| colspan="4" align="center" | '''Advanced queries'''
 
|-
 
|-
 
! Which package a ''file'' belongs to?
 
! Which package a ''file'' belongs to?
Line 41: Line 35:
 
|| <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 47: Line 40:
 
|| <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>cat `equery which ''package''`</code>
+
|| <code>-???-</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><br/><code>aptitude [-t release] changelog ''package''</code>
+
|| <code>zcat /usr/share/doc/package/changelog.Debian.gz</code>
|| <code>view /usr/portage/''category''/''package''/ChangeLog</code>
+
|| <code>-???-</code>
|| <code>pacman -Qc ''package''</code>
 
 
|-
 
|-
! colspan="5" align="center" | <big>'''Local package installation/upgrade/removal'''</big>
+
| colspan="4" align="center" | '''Local package installation/upgrade/removal'''
 
|-
 
|-
 
! 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 its 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>-???-</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>emerge --update --usepkg|-k ''package''<ref name="emerge-usepkg"/></code><br/>
+
|| <code>-???-</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''
|| <code>rpm -e ''package''</code><br/>
+
|| <code>rpm -e ''package''</code>
<code>yum remove|erase ''package''<ref name="yum-remove">This will also remove any packages which depend on the ''package''</ref></code>
 
 
|| <code>dpkg -r ''package''</code><br/>
 
|| <code>dpkg -r ''package''</code><br/>
 
<code>dpkg -P ''package''</code>
 
<code>dpkg -P ''package''</code>
 
|| <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="5" align="center" | <big>'''Package installation from repositories'''</big>
+
| colspan="4" align="center" | '''Package installation from repositories'''
 
|-
 
|-
 
! Install a ''package''
 
! Install a ''package''
 
|| <code>yum install ''package''</code><br/>
 
|| <code>yum install ''package''</code><br/>
 
<code>urpmi ''package''</code>
 
<code>urpmi ''package''</code>
|| <code>apt-get update && apt-get install ''package''</code><br/>
+
|| <code>apt-get install ''package''</code><br/>
<code>aptitude update && aptitude install ''package''</code>
+
<code>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
|| 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>-???-</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>apt-get install --download-only --reinstall ''package''</code><ref name="dpkgdir">Package will reside in /var/cache/apt/archives.</ref>
 
|| <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="5" align="center" | <big>'''Get information about package interdependencies'''</big>
+
| colspan="4" align="center" | '''Get information about package interdependencies'''
 
|-
 
|-
 
! 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>equery files ''package'' (package must be installed first)</code>
+
|| <code>-???-</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>equery depgraph --depth=1 ''package''</code>
+
|| <code>-???-</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 ': .*''dependency''<nowiki>'</nowiki></code>
+
|| <code>-???-</code>
|| <code>equery belongs ''dependency''</code>
+
|| <code>-???-</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''<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>
|| <code>equery depends ''package''</code>
+
|| <code>-???-</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
 
|| <code>yumdownloader --source ''package''</code>
 
|| <code>apt-get source ''package''</code>
 
|| <code>emerge -f ''package''</code>
 
|| <code>abs ''repository''/''package''</code>
 
 
|-
 
|-
! colspan="5" align="center" | <big>'''Working with package files'''</big>
+
| colspan="4" align="center" | '''Working with package files'''
 
|-
 
|-
 
! 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 / --extract ''file.deb'' .</code>
+
|| <code>dpkg -x ''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><br/>(yum/rpm also checks GPG-signature and checksums automatically every time the package is installed or upgraded)
+
|| <code>rpm -K ''file.rpm''</code>
|| <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
 
|| ??
 
|-
 
! Show package file list
 
|| <code>rpm -qlvp ''file.rpm''</code>
 
|| <code>dpkg -c / --contents ''file.deb''</code>
 
 
|| N/A
 
|| N/A
|| ??
 
 
|-
 
|-
! colspan="5" align="center" | <big>'''Repository queries'''</big>
+
| colspan="4" align="center" | '''Repository queries'''
 
|-
 
|-
! Find a package in a repository which <code>/some/file</code> belongs to
+
! Find a package which <code>/some/file</code> belongs to
 
|| <code>yum provides ''/some/file''</code>
 
|| <code>yum provides ''/some/file''</code>
|| First run: <br/><code>apt-file update</code><br/>and then:<br/><code>apt-file search ''/some/file''</code>
+
|| <code>apt-file search ''/some/file''</code>
 
|| N/A
 
|| N/A
||
 
|-
 
! Find a package based on some string or part of the string describing 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>
 
 
|}
 
|}
 
== Relevant directories and files ==
 
 
=== Red Hat, Fedora, CentOS ===
 
 
* yum config: <code>/etc/yum.conf</code>.
 
* yum repos: <code>/etc/yum.repos.d/</code>.
 
* rpm configs and macros: <code>/etc/rpm/</code>, <code>/usr/lib/rpm/</code>,
 
* rpm DB: <code>/var/lib/rpm/</code>
 
 
=== Debian/Ubuntu ===
 
 
* List of repositories and mirror sites: <code>/etc/apt/sources.list</code>, <code>/etc/apt/sources.list.d/</code>.
 
 
=== Gentoo ===
 
 
* emerge configs: <code>/etc/make.conf</code>, <code>/etc/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==

Please note that all contributions to OpenVZ Virtuozzo Containers Wiki may be edited, altered, or removed by other contributors. If you don't want your writing to be edited mercilessly, then don't submit it here.
If you are going to add external links to an article, read the External links policy first!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)