CentOS: использование YUM и немного о полезных возможностях RPM

Автор: | 06/03/2013

centos-logo-01Что такое YUM?

Yellow dog Updater, Modified (YUM) — открытый консольный менеджер RPM-пакетов.

RPM (рекурсивный акроним RPM Package ManagerRPM — менеджер пакетов; ранее раскрывался как Red Hat Package Manager — менеджер пакетов Red Hat

YUM создан для решения следующих задач:

  • Поиск пакетов в репозиториях
  • Установка пакетов из репозиториев
  • Установка пакетов из .rpm файлов, с разрешением зависимостей с помощью репозиториев
  • Обновление системы
  • Удаление ненужных пакетов
  • Фактически, YUM представляет собой оболочку для RPM, обеспечивающую работу с репозиториями.

YUM – поиск пакетов, файлов

Для поиска используются три опции YUMlist, search, provide.

Поиск пакета по его названию выполняется с помощью опции list. Например, найти пакет packagename можно так:

# yum list packagename

Если вы не помните имя пакета полностью – можно воспользоваться подстановкой значения с помощью символа *, не забывая его заэкранировать с помощью символа обратного слеша для правильной обработки вашим командным интерпретатором (например – bash):

# yum list packagen*

Вместо * (замена любого количества символов) можно использовать знак ? – который заменяет один любой символ в поиске. Например, в имени пакета screen – 6 символов. Для поиска по первым 4-м символам введите:

# yum list scre??

screen.i686                          4.0.3-16.el6                          @base

Эти символы замены (? и *) допускаются и в большинстве остальных команд YUM.

Поиск пакета в списках по его имени  (можно неполному слову) и в его описании:

# yum search scre

screen.i686 : A screen manager that supports multiple logins on one terminal

Интересная опция – provides. Она используется для поиска пакета, содержащего указанный в поиске файл/каталог. К примеру, требуется узнать к какому пакету относится файл httpd.conf. Для этого воспользуемся такой командой:

# yum provides */httpd.conf

httpd-2.2.15-15.el6.centos.1.i686 : Apache HTTP Server
Repo        : base
Matched from:

В результате мы получаем Apache Server, который после установки будет содержать файл httpd.conf.

Другой вариант – надо найти пакет, который хранит свои файлы в каталоге /etc/httpd:

# yum provides /etc/httpd*

Установка, обновление, удаление пакетов с помощью YUM

Установка производится с помощью опции install. В процессе – YUM попробует обнаружить все зависимости и предложит их установить:

# yum install mc

Dependencies Resolved

================================================================================
Package                     Arch       Version                Repository  Size
================================================================================
Installing:
mc                          i686       1:4.7.0.2-3.el6        base       1.6 M
Installing for dependencies:
gpm-libs                    i686       1.20.6-12.el6          base        28 k
perl                        i686       4:5.10.1-127.el6       base       9.7 M
perl-Module-Pluggable       i686       1:3.90-127.el6         base        38 k
perl-Pod-Escapes            i686       1:1.04-127.el6         base        30 k
perl-Pod-Simple             i686       1:3.13-127.el6         base       210 k
perl-libs                   i686       4:5.10.1-127.el6       base       591 k
perl-version                i686       3:0.77-127.el6         base        49 k

Можно указать несколько пакетов для установки, разделяя их запятыми.

Что бы YUM не запрашивал подтверждения установки пакета и/или его зависимостей – используйте ключ -y:

# yum -y install mc

Переустановить пакет:

# yum reinstall packagename

Для установки пакета, предварительно загруженного на сервер – воспользуйтесь опцией localinstall. Например – установка пакета atop:

# yum localinstall atop-1.25-1.el5.rf.i386.rpm

Обновить установленный пакет packagename можно командой:

# yum update packagename

А обновить полностью систему – той же командой, но без указания имени пакета:

# yum update

Посмотреть список установленных пакетов, которые можно обновить:

# yum check-update

Выполнить downgrade пакета до его предыдущей версии:

# yum downgrade packagename

Для удаления пакета из системы используется опция remove (или erase – которая является алиасом remove):

# yum remove packagename

YUM и репозитории

Получить список активных репозиториев в ваших repo-файлов из каталога /etc/yum.repos.d/ можно так:

# yum repolist
repo id                                                                    repo name                                                                              status
base                                                                       CentOS-6 – Base                                                                        4,776
extras                                                                     CentOS-6 – Extras                                                                         17
updates                                                                    CentOS-6 – Updates                                                                       960

А всех, в том числе неактивных – так:

# yum repolist all

repo id                                                                  repo name                                                                        status

C6.2-extras                                                              CentOS-6.2 – Extras                                                              disabled
C6.2-updates                                                             CentOS-6.2 – Updates                                                             disabled
base                                                                     CentOS-6 – Base                                                                  enabled: 4,776
c6-media                                                                 CentOS-6 – Media                                                                 disabled

debug                                                                    CentOS-6 – Debuginfo                                                             disabled
extras                                                                   CentOS-6 – Extras                                                                enabled:    17
updates                                                                  CentOS-6 – Updates                                                               enabled:   960

Ещё интересная возможность – отобразить доступные для установки (уже установленные пакеты отображаться не будут) только из определённого репозитория. Например – вывести список пакетов из репозитория base:

# yum –disablerepo “*” –enablerepo “base” list available

Что бы получить полный список, в том числе уже установленные пакеты – уберите слово available в этой команде.

Другие возможности YUM

Получить информацию об установленных пакетах можно так:

# yum info

О конкретном пакете packagename:

# yum info packagename

Если пакет уже установлен в системе – он будет отмечен как Installed Packages в описании. Если пакет доступен для установки из репозитория, но ещё не установлен – он будет отмечен как Available Packages. Например:

# yum info gcc-c++
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
* base: ftp.colocall.net
* extras: ftp.colocall.net
* updates: ftp.colocall.net
Available Packages
Name        : gcc-c++
Arch        : i686
Version     : 4.4.6
Release     : 4.el6
Size        : 4.3 M
Repo        : base
Summary     : C++ support for GCC
URL         : http://gcc.gnu.org
License     : GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions
Description : This package adds C++ support to the GNU Compiler Collection.
: It includes support for most of the current C++ specification,
: including templates and exception handling.

Тут так же поддерживаются символы-заменители, например – вы не помните полностью имя пакета screen:

# yum info scre*

Исключить пакет из списка пакетов для обновления можно так.

Откройте для редактирования файл /etc/yum.conf, и в него добавьте строку:

exclude=

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

exclude=aic94xx-firmware, b43-openfwwf

Просмотреть список зависимостей пакета:

# yum deplist packagename

Посмотреть список последних действий YUM:

# yum history
Loaded plugins: fastestmirror
ID     | Login user               | Date and time    | Action(s)      | Altered
——————————————————————————-
7 | root <root>              | 2013-03-06 15:02 | I, U           |   45
6 | root <root>              | 2013-03-06 14:59 | Install        |    1 EE
5 | root <root>              | 2013-03-06 14:58 | Install        |    1
4 | root <root>              | 2013-03-06 14:54 | Install        |    8
3 | root <root>              | 2013-03-06 14:47 | Install        |    3
2 | root <root>              | 2013-03-06 14:22 | Install        |    1
1 | System <unset>           | 2013-03-06 13:52 | Install        |  209

При проблемах с менеджером пакетов YUM

Очистить кеш:

# yum clean all

Пересоздать кеш:

# yum makecache

Другие возможности работы с RPM-пакетами

Посмотреть список установленных в системе пакетов НЕ из списка репозиториев CentOS;

# rpm -qa –qf ‘%{NAME} %{VENDOR}n’ | grep -v CentOS

Посмотреть список man-страниц для определённого пакета можно так:

# rpm -qd packagename

Посмотреть список всех установленных в системе пакетов:

# rpm -qa

Показать список всех GPG-ключей с соответствующей информацией репозитория:

# rpm -q gpg-pubkey –qf ‘%{name}-%{version}-%{release} –> %{summary}n

Посмотреть список изменений в версиях пакета:

# rpm -q –changelog packagename | less

Посмотреть список пакетов по дате их установки/обвноления (например – найти необновившиеся пакеты):

# rpm -qa –last | less

Получить список установленных ключей GPG с информацией об их репозиториях:

# rpm -q gpg-pubkey –qf ‘%{name}-%{version}-%{release} –> %{summary}n’

GNU Privacy Guard, GnuPG, GPG — свободная альтернатива набору криптографического ПО PGP, выпущенная под лицензией GNU General Public License. Является частью проекта GNU, получила гранты от немецкого правительства. GnuPG полностью совместим со стандартом IETF OpenPGP. Текущие версии GnuPG могут взаимодействовать с PGP и другими OpenPGP-совместимыми системами в режиме совместимости. GnuPG позволяет шифровать и подписывать данные в целях безопасного хранения и передачи информации.