Вы здесь

Управление пакетами в CentOS Linux

 

Установка пакетного менеджера YUM

если у вас не установлен yum, установите его командой:


wget -q -O - http://www.atomicorp.com/installers/atomic.sh |sh

Настройка YUM

 

Настройка утилиты yum осуществляется с помощью файла /etc/yum.conf. Этот файл содержит несколько секций. Секции бывают двух типов - главная и секции репозиториев. Главная секция (обозначается ключевым словом [main]) содержит глобальные опции конфигурации. Секция (секции) репозиториев определяют конфигурацию отдельного репозитория (сервера). Файл /etc/yum.conf может содержать одну или несколько секций репозиториев. Но иногда такие секции могут вообще отсутствовать в этом файле - они выносятся в отдельные файлы, располагающиеся в каталоге /etc/yum.repos.d. В моей системе имеет место как раз такой случай, у меня файл /etc/yum.conf имеет следующий вид:

[main]
cachedir=/var/cache/yum
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
metadata_expire=1800
# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d

Значение параметров, задаваемых в главной секции этого файла, можно понять, просмотрев страничку man yum.conf. В моем случае строки этой секции означают следующее:

cachedir=/var/cache/yum рабочий каталог, в котором будут временно сохраняться скачанные для обновления пакеты и файлы баз установленных и(или) обновляемых пакетов
keepcache=0 указание на то, надо ли сохранять (=1) или нужно удалять (=0) содержимое кэша после успешной инсталляции
debuglevel=2 уровень выдачи отладочных сообщений (от 0 до 10)
logfile=/var/log/yum.log полный путь к файлу, в котором будет сохранен протокол работы программы
exactarch=1 если установить этот параметр в 1, то yum будет обновлять только те пакеты, для которых указана та же самая архитектура, что и у установленных пакетов; то есть если был установлен пакет для архитектуры i386, то новый пакет с суффиксом i686 не будет рассматриваться как возможный вариант для обновления
obsoletes=1 эта опция работает только вместе с командой update; полезна для случая полного обновления версии дистрибутива
gpgcheck=1 если значение этой опции равно 1, то будет произволиться проверка цифровой подписи GPG для устанвливаемых пакетов
plugins=1 переключатель, определяющий возможность использования плагинов к команде yum
metadata_expire=1800 величина интервала (в секундах) по истечении которого yum будет обновлять метаданные репозиториев; если вы считаете, что yum недостатоно часто проверяет наличие обновлений в репозиториях, уменьшите это значение

Секции репозиториев могут иметь примерно такой вид:

 [base]
 Core $releasever - $basearch - Base
 baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/$releasever.$basearch/os/>
 [updates-released]
 Core $releasever - $basearch - Released Updates
 baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/updates/$releasever/$basearch/
 #[updates-testing]
 #name=Fedora Core $releasever - $basearch - Unreleased Updates
 #baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/updates/testing/$releasever/$basearch/
 #[development]
 #name=Fedora Core $releasever - Development Tree
 #baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/development/$basearch/

Вместо $releasever и $basearch yum подставит нужные значения, так что путь будет указывать на реальную точку в структуре каталогов репозитория.

Но в моем случае, как вы можете видеть из приведенного выше листинга файла /etc/yum.conf, таких секций в этом файле нет. Описания репозиториев вынесены в отдельные файлы, размещенные в каталоге /etc/yum.repos.d. В следующем листинге приведен пример одного из этих файлов:

[fedora8]
name=Fedora8 $releasever - $basearch
#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/releases/8/Everything/$basearch/os/
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-8&arch=$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY
[fedora-debuginfo]
name=Fedora $releasever - $basearch - Debug
#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/releases/$releasever/Everything/$basearch/debug/
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-debug-$releasever&arch=$basearch
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY
[fedora-source]
name=Fedora $releasever - Source
#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/releases/$releasever/Everything/source/SRPMS/
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-source-$releasever&arch=$basearch
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY

В строке, начинающейся с ключевого слова "name" приводится понятное для человека условное название репозитория (можете назвать его так, как вам нравится). В строке, обозначенной ключом "baseurl", приводится путь (URL) к репозиторию. URL должен начинаться одним из следующих префиксов http://, ftp:// или file://. В моем случае, как вы можете видеть, эта строка оказалась закомментирована (символом #). Зато в следующей строке (ключевое слово "mirrorlist") указан путь к файлу, содержащему список базовых URL.

В секции репозитория, кроме указанных выше имени и адреса репозитория, могут также задаваться какие-то опции. В отличие от опций, заданный в секции [main] они будут влиять только на один репозиторий, указанный в данной секции. В частности, с помощью опции "enabled=0" можно вообще отключить данный репозиторий. Что вы и видите в приведеном примере - хотя в нем содержаться 3 секции репозиториев, но yum будет работать только с одним репозиторием из этих трех.

Но в некоторых случаях только задания опции "enabled=0" может оказаться недостаточно для полного отключения репозитория. Чтобы полностью исключить доступ к репозиторию:

  1. Удалите соответствующий файл из /etc/yum.repos.d/.
  2. Удалите сохраненную в кэше директорию из /var/cache/yum/.

Использование цифровых подписей

Чтобы убедиться, что загруженные для инсталляции пакеты не сфальсифицированы каким-либо злоумышленником, yum у каждого устанавливаемого пакета проверяет цифровую подпись, используя открытую часть ключа разработчика пакета. Инсталляция производится только в том случае, когда все необходимые для установки пакеты проверены и проверка подписей завершилась успешно.

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

Открытые ключи для проверки пакетов хранятся в базе данных открытых ключей утилиты rpm. Добавить новый ключ в эту базу можно с помощью команды rpm. Например, чтобы добавить ключ из файла /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora, нужно выполнить команду

[root] # rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora 

Можно импортировать открытый ключ подписи в базу ключей rpm непосредственно с веб-сайта. Например, чтобы импортировать файл GPG-PUB-KEY.asc с веб-сайта www.therepository.com, используйте следующую команду

[root] # rpm --import http://www.therepository.com/GPG-PUB-KEY.asc 

Man-страница к утилите rpm сообщает, что все установленные в системе открытые ключи можно просмотреть по команде

[root] # rpm --qa gpg-pubkey* 

В моей системе эта команда выдала следующий результат:

gpg-pubkey-db42a60e-37ea5438
gpg-pubkey-a109b1ec-3f6e28d5
gpg-pubkey-4f2a6fd2-3f9d9d3b

Подробную информацию о каждом ключе можно получить по такой, примерно, команде:

[root] # rpm --qi gpg-pubkey-a109b1ec-3f6e28d5 

а удалить ключ из базы можно командой:

[root] # rpm -e gpg-pubkey-a109b1ec-3f6e28d5 

При работе с репозиториями утилита yum автоматически импортирует открытый ключ цифровой подписи в систему в первом же сеансе работы с данным репозиторием. Вы увидите сообщение примерно такого вида:

warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2 
public key not available for tsclient-0.132-6.i386.rpm
Retrieving GPG key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
Importing GPG key 0x4F2A6FD2 "Fedora Project <fedora@redhat.com>"
Is this ok [y/N]:

Если ввести в ответ [y], это будет означать, что вы признаете данный ключ и разрешаете проводить проверку файлов на основе такого ключа. Если нажать [N] или [Enter], yum прекратит установку пакетов из этого репозитория.

При инсталляции системы обычно автоматически настраивается доступ к основным репозиториям в которых поддерживаются стабильные версии пакетов. Если требуется нечто дополнительно, то воспользуйтесь рекомендациями этой статьи - "CentOS - добавление репозиториев"

Часто используемые команды yum:

# yum check-update #посмотреть список обновлений
# yum search ${keyword} #поиск пакета
# yum install ${package name/s} #установить новый пакет\пакеты
# yum localinstall ${absolute path to package name/s} #установить локально-расположенный пакет
# yum update #обновление всех пакетов; обновление между версиями centos 5.2 -> 5.3 происходит аналогично.
# yum update ${package name/s} #обновить единичный пакет\пакеты
# yum update httpd mod_php  
# yum list installed #показать список установленных пакетов
# yum list available #показать список доступных пакетов
# yum info ${package name} #показать информацию о пакете
# yum provides ${file name or lib name} #показать какому пакету принадлежит библиотека или файл.
# yum provides /etc/modprobe.conf
# yum --disablerepo=* --enablerepo=epel ${action} # сделать что-либо указав определенный репозитарий.
# yum --disablerepo=* --enablerepo=epel list available #например, вывести список доступных пакетов в репозитории epel
# yum remove ${package name/s} #удалить пакет\пакеты

 Полезные команды rpm:

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

# rpm -qa #показать список установленных пакетов
# rpm -ql ${package name} #показать список файлов от установленного пакета
# rpm -ql exim
# rpm -qlp ${package name} #показать список файлов в неустановленном пакете.  
# rpm -qf ${file name} #показать какому пакету принадлежит файл. (аналог yum provides)
# rpm -Uvh ${path or url to package name/s} #установка\обновления отделно взятого rpm

Установка групп пакетов

У yum есть возможность связки пакетов в группы.

То есть вместо установки десятка пакетов для решения задачи, можно установить группу и все требуемые пакеты будут установены автоматически.

Список всех имеющихся стандартных групп:

yum grouplist

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

yum groupinfo "Legacy Software Development"

Установка группы:

yum groupinstall KVM

Удаление группы:

yum groupremove KVM

Полезные советы

Как исключить из обновления yum определенные пакеты?

Заходим в /etc/yum.conf. Прописываем параметр exclude= и в нем прописываем через запятую пакеты, например, для xmms строчка выглядит так: exclude=xmms-a52dec,xmms-cdread,xmms-mad,xmms-devel,xmms-wma,xmms,xmms-lirc,xmms-alarm,xmms-coverviewer,xmmsctrl

 

Материал взят отсюда