Redhat Package Manager (weight: 3)

Candidates should be able to perform package management using RPM and YUM tools.
Install, re-install, upgrade and remove packages using RPM and YUM.
Obtain information on RPM packages such as version, status, dependencies, integrity and signatures.
Determine what files a package provides, as well as find which package a specific file comes from.

The following is a partial list of the used files, terms and utilities

rpm
rpm2cpio
/etc/yum.conf
/etc/yum.repos.d/
yum
yumdownloader

RPM (рекурсивный акроним RPM Package Manager — RPM — менеджер пакетов; ранее раскрывался как Red Hat Package Manager — менеджер пакетов Red Hat) обозначает две вещи: формат пакетов программного обеспечения и программа, созданная для управления этими пакетами. Программа позволяет устанавливать, удалять и обновлять программное обеспечение.

Прежде всего необходимо прочитать замечательную статью Идеальный сисадмин: RPM

Основы работы с менеджером пакетов RPM
Установка пакета

rpm ivh rpmforge-release-0.3.6-1.el5.rf.i386.rpm
Preparing...             ########################################### [100%]
1:rpmforge-release       ########################################### [100%]

При установке необходимо указывать полный путь и имя rpm пакета, в отличие от удаления.

Проверяем установлен ли пакет

# rpm -q rpmforge-release
rpmforge-release-0.5.2-2.el5.rf

Удаление пакета

# rpm -e rpmforge-releas

При удалении, необходимо указывать имя пакета, которое хранится в базе данных rpm. Если вы не знаете точного имени, то можно воспользоваться следующей командой и выяснить имя соответствующего пакета.

# rpm -qa | grep -i mysql
zabbix-server-mysql-1.8.3-1.el5
mysql-5.0.77-4.el5_5.4
perl-DBD-MySQL-3.0007-2.el5
mysql-server-5.0.77-4.el5_5.4
php-mysql-5.1.6-27.el5_5.3
mysql-devel-5.0.77-4.el5_5.4

Данная команда выведет список всех пакетов, в названии которых встречается слово mysql, без учета регистра. Если вы захотите удалить, например mysql-devel, то необходимо будет полностью указывать имя пакета, т.е. MySQL-devel, а не MySQL.

Обратите внимание, что регистр здесь имеет значение. Иначе при попытке удалить пакет, вы получите следующее сообщение

# rpm -e mysql-devel
ошибка: пакет mysql-devel не установлен

А с учетом регистра пакет удалится без проблем

# rpm -e MySQL-devel

Обновить пакет

rpm -Uvh rpmforge-release-0.5.2-2.el5.rf.i386.rpm
Preparing...             ########################################### [100%]
1:rpmforge-release       ########################################### [100%]

Узнать список всех установленных пакетов в системе можно с помощью следующей команды

# rpm -qa

Подсчитаем количество пакетов в системе

# rpm -qa | wc -l
918

Проверка целостности пакета

# rpm -V mc
Если не будет никаких сообщений, то значит, целостность пакета не нарушена

Для проверки

# mv /etc/zabbix/zabbix_server.conf /root/
# rpm -V zabbix-server-mysql
missing   c /etc/zabbix/zabbix_server.conf

Еще одной полезной функцией, предоставляемой rpm, является отображение информации о пакете. Допустим, вы хотите узнать, для чего предназначен этот пакет не устанавливая его. Получить информацию о пакете можно с помощью следующей команды

# rpm -qpi /root/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
Name        : rpmforge-release          Relocations: (not relocatable)
Version     : 0.5.2                     Vendor: Dag Apt Repository
Release     : 2.el5.rf                  Build Date: Sat Nov 13 05:55:45 2010
Install Date: (not installed)           Build Host: lisse.hasselt.wieers.com
Group       : System Environment/Base Source : rpmforge-release-0.5.2-2.el5.rf.src.rpm
Size        : 13418                     License: GPL
Signature   : DSA/SHA1, Sat Nov 13 06:12:30 2010, Key ID a20e52146b8d79e6
Packager    : Dag Wieers
URL         : http://rpmforge.net/
Summary     : RPMforge release file and RPM repository configuration
Description :
RPMforge.net release file. This package contains apt, yum and smart
configuration for the RPMforge RPM Repository, as well as the public
GPG keys used to sign them.

Также с помощью rpm вы можете получить список файлов принадлежащих данному пакету, а также пути, куда они были установлены. Для получения данной информации необходимо выполнить следующую команду

# rpm -ql bind-utils-9.3.6-4.P1.el5_4.2
/usr/bin/dig
/usr/bin/host
/usr/bin/nslookup
/usr/bin/nsupdate
/usr/share/man/man1/dig.1.gz
/usr/share/man/man1/host.1.gz
/usr/share/man/man1/nslookup.1.gz
/usr/share/man/man1/nsupdate.1.gz

Если вы хотите просмотреть список файлов, предоставляемых данным пакетом, но при этом не хотите устанавливать сам пакет, то выполните следующую команду

# rpm -qpl /root/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
/etc/apt
/etc/apt/sources.list.d
/etc/apt/sources.list.d/rpmforge-extras.list
/etc/apt/sources.list.d/rpmforge-testing.list
/etc/apt/sources.list.d/rpmforge.list
/etc/pki/rpm-gpg
/etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
/etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-fabian
/etc/smart
/etc/smart/channels
/etc/smart/channels/rpmforge.channel
/etc/sysconfig/rhn
/etc/sysconfig/rhn/sources.rpmforge.txt
/etc/yum.repos.d
/etc/yum.repos.d/mirrors-rpmforge
/etc/yum.repos.d/mirrors-rpmforge-extras
/etc/yum.repos.d/mirrors-rpmforge-testing
/etc/yum.repos.d/rpmforge.repo
/usr/share/doc/rpmforge-release-0.5.2
/usr/share/doc/rpmforge-release-0.5.2/RPM-GPG-KEY-rpmforge-dag
/usr/share/doc/rpmforge-release-0.5.2/RPM-GPG-KEY-rpmforge-fabian
/usr/share/doc/rpmforge-release-0.5.2/mirrors-rpmforge.yum
/usr/share/doc/rpmforge-release-0.5.2/rpmforge.apt
/usr/share/doc/rpmforge-release-0.5.2/rpmforge.smart
/usr/share/doc/rpmforge-release-0.5.2/rpmforge.up2date
/usr/share/doc/rpmforge-release-0.5.2/rpmforge.yum

Какие зависимости у пакета

# rpm -qR mc
/bin/sh
/usr/bin/perl
config(mc) = 1:4.6.1a-35.el5
dev >= 0:3.3-3
libc.so.6
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)
libc.so.6(GLIBC_2.2)
libc.so.6(GLIBC_2.2.1)
libc.so.6(GLIBC_2.3)
libc.so.6(GLIBC_2.3.4)
libc.so.6(GLIBC_2.4)
libcom_err.so.2
libext2fs.so.2
libglib-2.0.so.0
libslang.so.2
libslang.so.2(SLANG2)
perl(File::Basename)
perl(File::Temp)
perl(POSIX)
perl(bytes)
perl(strict)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)

Иногда, бывает необходимо узнать, к какому пакету принадлежит определенный файл и здесь вам опять поможет rpm. Для получения этой информации необходимо выполнить следующую команду

# rpm -qf /usr/bin/nslookup
bind-utils-9.3.6-4.P1.el5_4.2

Yellow dog Updater Modified
YUM — открытый консольный менеджер RPM-пакетов. Позволяет облегчить каскадное обновление Linux систем с отслеживанием взаимосвязей RPM-пакетов. Распространяется под лицензией GNU. Первоначально был разработан программистом Seth Vidal и группой волонтёров.

Основы работы с YUM
Установка пакета

# yum -y install mc

Удаление пакета

# yum -y remove mc

Обновить пакеты

# yum update

Поиск пакета

# yum search bind-utils
bind-utils.i386 : Utilities for querying DNS name servers.

Информация о пакете

# yum info mc
Installed Packages
Name       : mc
Arch       : i386
Epoch      : 1
Version    : 4.6.1a
Release    : 35.el5
Size       : 5.2 M
Repo       : installed
Summary    : User-friendly text console file manager and visual shell
URL        : http://www.ibiblio.org/mc/
License    : GPL
Description: Midnight Commander is a visual shell much like a file manager, only
           : with many more features. It is a text mode application, but it also
           : includes mouse support. Midnight Commander's best features are its
           : ability to FTP, view tar and zip files, and to poke into RPMs for
           : specific files.

Посмотреть какие репозитории подключены

# yum repolist
repo id             repo name                                             status
CentOS-nixtime      CentOS-nixtime Packages for Enterprise Linux 5 - i386 enabled:    19
addons              CentOS-5 - Addons                                     enabled:     0
base                CentOS-5 - Base                                       enabled:  2599
epel                Extra Packages for Enterprise Linux 5 - i386          enabled:  4869
extras              CentOS-5 - Extras                                     enabled:   337
openvz-kernel-rhel5 OpenVZ RHEL5-based kernel                             enabled:    14
openvz-utils        OpenVZ utilities                                      enabled:    24
rpmforge            RHEL 5 - RPMforge.net - dag                           enabled: 10381
updates             CentOS-5 - Updates                                    enabled:   828
repolist: 22400

Посмотреть к какому пакету принадлежит определенный файл

# yum provides /usr/bin/nslookup
30:bind-utils-9.3.6-4.P1.el5_4.2.i386 : Utilities for querying DNS name servers.
Repo        : base
Matched from:
Filename    : /usr/bin/nslookup

30:bind-utils-9.3.6-4.P1.el5_4.2.i386 : Utilities for querying DNS name servers.
Repo        : installed
Matched from:
Other       : Provides-match: /usr/bin/nslookup

Материал был частично взят с сайта www.sys-adm.org.ua , так как сайт частенько недоступен то его можно прочитать через web.archive.org

Вопросы LPI-I ( приблизительные )

1) You have accidentally deleted the file /usr/lib/libm.so. It needs to be re-installed,
but you cannot remember what package it comes from.
Which of the following commands would help you find the package that contains libm.so?
A. rpm -qf libm.so
B. rpm -e libm.so
C. rpm -ivh libm.so
D. rpm -qi libm.so
2) Version 1.7 of your favorite web browser has just been released as an RPM package.
You would like to install it while automatically un-installing any other versions.
Which RPM command will allow you to install a new version of an RPM
while automatically un-installing other versions?
A. rpm --install
B. rpm --upgrade
C. rpm --verify
D. rpm --erase
3) What function will be performed by the command rpm -ivh foo.rpm?
A. Verification of the files in foo.rpm
B. Recalculation of the MD5 hash value for foo.rpm
C. Installation of the package foo.rpm
D. Verification of the signature for foo.rpm
4) You want to deinstall the packet foobar from your RedHat box. But you are
not sure, if some other packets depend on this packet. What command would
you use to get this information?
A. rpm --dep foobar
B. rpm -q --whatrequires foobar
C. rpm -q --list-deps foobar
D. rpm -d foobar
E. grep foobar /var/rpm/deps

Ответы

1) The correct answer is A, rpm -qf will query a file to find out which package it came
Answer B is incorrect because rpm -e is used to erase packages
Answer C is incorrect since rpm -ivh is used to install packages
Answer D is incorrect because rpm -qi is used to query packages for information
2) The correct answer is B, rpm --upgrade will install the new version of an RPM
and then un-install any other version
Answer A is incorrect, because while rpm --install will install a package
it will not un-install other versions
Answer C is incorrect, because rpm --verify does not install or remove packages
Answer D is incorrect, rpm --erase removes packages
3) The correct answer is C, rpm -ivh foo.rpm will install the package foo.rpm
More specifically it will install verbosely
with hash marks to indicate the installation progress
Answer B is incorrect, do not confuse hash marks with hash values
Answer D is incorrect as signatures verification is performed with rpm --checksig
The correct answer is B
# rpm -q --whatrequires mc-4.6.1a-35.el5
no package requires mc-4.6.1a-35.el5

Читать: Learn Linux, 101: RPM and YUM package management