Package managers
From OpenVZ Linux Containers Wiki
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 |
[edit] 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 -Qi
| |
| 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 -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.gzaptitude [-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 | <code>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]
| 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-downloadonlyAnd 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 ': .*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
| 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 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
| ||
| Repository queries | |||||
Find a package in a repository which /some/file belongs to
| yum provides /some/file
| First run: apt-file updateand 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
| |
[edit] Relevant directories and files
[edit] 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/
[edit] Debian/Ubuntu
- List of repositories and mirror sites:
/etc/apt/sources.list,/etc/apt/sources.list.d/.
[edit] 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/.
[edit] 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 it's 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