Библиотека сайта rus-linux.net
YUM HOWTO (управление программным обеспечением в дистрибутиве Fedora)
(С) В.А.Костромин, 10-22 мая 2008 г.
Для начала хочу сказать, что до недавнего времени у меня не было достаточно
свободного выхода в интернет. И если мне требовалось установить какое-то
приложение в Линукс-системе, приходилось пользоваться утилитой rpm, предварительно
найдя и скачав соответствующий rpm-пакет (компиляцией ПО из исходных кодов я как-то
никогда не увлекался). И у меня была уверенность (обоснованная личным опытом)
в том, что установка дополнительного ПО в Линукс - это довольно нетривиальная
задача. Так что когда я подключился к Интернет по безлимитному тарифу и
познакомился
с утилитой yum
в дистрибутиве Fedora, я был приятно удивлен той
легкостью, с которой можно устанавливать и обновлять программное обеспечение
в Линукс. Захотелось детальнее разобраться с этой утилитой и ее возможностями,
результатом чего и является настоящая статья.
Основным источником для настоящего HOWTO послужила статья Fedora Software Management Guide, которую авторы считают пока только черновиком. Из нее заимствованы некоторые примеры. Но я старался проверить приводимые утверждения на своей системе. Другие использованные источники перечислены в конце настоящей статьи.
Начну я издалека, с напоминания о том, что такое менеджер пакетов rpm, и определения понятия репозитория.
Менеджер пакетов RPM
Одним из самых существенных признаков или критериев, по которым различаются дистрибутивы Линукс, является используемый в данном дистрибутиве принцип управления программным обеспечением и, соответственно, менеджер пакетов, который входит в этот дистрибутив. Существуют дистрибутивы, у которых все программное обеспечение поставляется в исходных кодах и компилируется "на месте". Другие дистрибутивы применяют заранее скомпилированные пакеты ПО и специальные программы (менеджеры пакетов), которые размещают исполняемые файлы пакета по "своим местам" в системе, проверяют зависимости и создают необходимые ссылки.
В Red Hat и его клонах (или наследниках, последователях) таким менеджером служит RPM. RPM является сокращением от Red Hat Package Manager - менеджер пакетов Red Hat. Эта аббревиатура обозначает две взаимосвязанных вещи: формат пакетов программного обеспечения и утилиту, созданную для управления этими пакетами.
Каждый rpm-пакет представляет собой сжатый архив, содержащий информацию о продукте, программные файлы, документацию и скрипты управления. Утилита rpm (и другие средства управления пакетами) использует содержимое пакета для того, чтобы корректно разместить программные файлы в системе, инсталлировать ПО, обновить или удалить его. Пакет часто включает в себя еще и цифровую подпись, удостоверяющую, что пакет получен из определенного (надежного) источника, что обеспечивает безопасность системы. Перед установкой осуществляется проверка цифровой подписи с использованием публичного (открытого) ключа. Рассказывать здесь о том, что такое rpm не имеет смысла, я просто приведу несколько ссылок, по которым вы при желании сможете отыскать нужную информацию.
Обе книги имеются только на английском языке (по крайней мере мне переводы неизвестны и Google тоже ничего не находит).
14 июля 2009 г. посетитель сайта с ником navaga прислал мне следующее собщение: "Я хочу сообщить Вам, что вторая книга (RPM Guide) имеет русский перевод и лежит по этому адресу http://www.lexpr.ru/node/11"
Нужно еще отметить, что rpm-пакеты используются не только в Red Hat и Fedora, но и в других дистрибутивах, например, в Mandriva, openSUSE и других.
RPM - отличная утилита, которая существенно упрощает установку программного обеспечения в Линукс-системах, однако она имеет один существенный недостаток, который иногда называют "кошмаром зависимостей" ("dependency hell"). Он заключается в том, что rpm-пакеты часто требуют установки каких-то других пакетов, необходимых для работы устанавливаемого ПО. Чаще всего это бывает связано с использованием библиотек, которые используются многими приложениями и поэтому поставляются в виде отдельных пакетов. Чтобы корректно установить приложение, оказывается необходимо вначале установить все используемые им библиотеки. В составе rpm-пакета содержится информация о том, какие библиотеки или отдельные файлы нужны данному приложению, но часто эта информация ограничивается названием нужного модуля или файла и не содержит данных о том, в каком именно пакете содержится нужный файл. И найти нужный пакет или отдельную библиотеку бывает очень не просто. С этой проблемой и помогают справиться репозитории программного обеспечения и утилита YUM, которые будут предметом нашего дальнейшего рассмотрения.
Утилита yum
заботится о том, чтобы все зависимости были удовлетворены
в процессе инсталляции. Она автоматически установит все библиотеки, которые необходимы
новому приложению. А если новое приложение конфликтует с уже установленным ПО,
yum
откажется делать какие-то изменения в вашей системе.
Все необходимые для разрешения зависимостей дополнительные пакеты утилита
yum
находит и забирает из указанных ей (в конфигурационных файлах)
репозиториев.
Репозиторий
Русскоязычная Википедия сообщает о репозитории следующее:
Примером репозитория может служить репозиторий свободного программного обеспечения Сизиф ALT Linux.
Репозитории используются в системах управления версиями, в них хранятся все документы вместе с историей их изменения и другой служебной информацией. Русское сообщество Subversion рекомендует использовать вместо термина репозиторий термин хранилище, поскольку он полностью соответствует как прямому переводу слова "repository", так и его понятию.
Разрабатывается автоматизированная система создания репозиториев на CD/DVD - APTonCD."
Англоязычная версия википедии дает более подробные сведения:
"Репозиторий программного обеспечения (иногда сокращенно называемый репо) -
это место для хранения ПО, из которого программные пакеты могут быть получены
и установлены на компьютер. Многие организации и распространители программного
обеспечения поддерживают для этой цели сервера в Интернет, доступ к которым
может быть либо бесплатным, либо предоставляться по подписке за определённую
плату. Репозитории могут создаваться под одну конкретную программу, например,
репозиторий CPAN для языка программирования Perl, или для целой операционной
системы. Владельцы таких репозиториев обычно предоставляют систему управления
пакетами, инструменты для поиска, установки и других действий с программными
пакетами, хранящимися в репозитории. Например, многие дистрибутивы Линукс
используют Advanced Packaging Tool или yum.
Поскольку репозитории создаются как место хранения полезных программ,
обычно принимаются специальные меры для того, чтобы в их состав не попало
вредоносное ПО. Если сконфигурировать систему на компьютере таким образом,
чтобы использовались только надежные репозитории и при инсталляции ПО
производилась проверка цифровых подписей, да к тому же были правильно настроены
права доступа в системе, то угроза проникновения вредоносного ПО для такой
системы существенно снижается. В качестве следствия или побочного эффекта
получаем, что построенные таким образом системы могут не нуждаться
в установке дополнительных средств защиты от вредоностного ПО и компьютерных
вирусов."
Эти две цитаты дают достаточно полное представление о репозитории в общем смысле. Нас же интересуют репозитории, ориентированные конкретно на определенный дистрибутив Линукс. Такие репозитории представляют собой наборы пакетов программного обеспечения, ориентированные на определенную систему управления пакетами ПО, размещенные в специальном дереве каталогов и снабженные дополнительными файлами с индексами и контрольными суммами пакетов. Кроме того, для каждого репозитория разрабатываются специальные средства, обеспечивающие и облегчающие доступ пользователей к этому репозиторию. Для дистрибутива Дебиан таким средством является набор скриптов APT, для дистрибутива Fedora - утилита YUM.
- имеются все необходимые пакеты для разрешения зависимостей и
- отсутствуют противоречия между различными приложениями.
О репозиториях для дистрибутива Дебиан можно прочитать в специальном HOWTO, автором которого является Aaron Isotton и который переведен на русский язык: "HOWTO: репозиторий Debian" . Но нас сейчас интересует работа с репозиториями Fedora, что и будем рассматривать в оставшейся части заметки.
Предназначение yum
Как уже сказано выше, основной проблемой системы управления пакетами RPM является проблема разрешения зависисимостей пакетов друг от друга. В дистрибутиве Дебиан для решения подобной проблемы был создан набор утилит Advanced Packaging Tool (APT), но в своем исходном виде он не работает в Red Hat и Fedora. В рамках Connectiva Linux была разработана утилита APT-RPM, которая предоставляла пользователям дистрибутивов, основанных на rpm, большинство возможностей APT, однако в своих ранних версиях она для достижения результата использовала некоторые приемы, противоречащие правилам rpm.
Утилита Yum (Yellow Dog Updater, Modified) была создана с целью преодоления недостатков APT-RPM и удовлетворения всех ограничений, накладываемых инструментом управления пакетами up2date, разработанным Red Hat. Yum корректно обрабатывает зависимости и обеспечивает работу с несколькими репозиториями. Кроме того, он поддерживает установку пакетов группами - можно дать утилите задание обработать определенную группу приложений и она установит все приложения данной группы. Это существенно упрощает процедуры в случае управления многими машинами.
Yum создан для решения следующих задач:
- Поиск пакетов в репозитариях
- Установка пакетов из репозиториев
- Установка пакетов из .rpm файлов, с разрешением зависимостей с помощью репозиториев
- Обновление версий отдельных пакетов или всей системы
- Удаление ненужных пакетов или приложений из системы
Принципы именования rpm-пакетов
Прежде чем приступить к рассказу о том, как использоватьyum
, надо немного рассказать о том, как именуются rpm-пакеты.
Название rpm-пакета состоит из нескольких частей или полей и в общем виде может
быть представлено такой строкой:
name-version-release.architecture.rpm
где
Указание архитектуры - это обычно минимум информации, помимо названия приложения, который необходим для установки пакета. Это поле может принимать следующие значения:
Иногда rpm-пакеты с программным обеспечением могут быть оптимизированы
для определенного типа процессора. Одно и то же ПО может поставляться
в разных пакетах для компьютеров на процессорах
i386
, i586
, i686
и x86_64
.
На машинах, основанных как минимум на Intel Pentium, VIA C3 или совместимых ЦПУ,
можно использовать пакеты, которые содержат i586
в своем имени.
Для компьютеров на Intel Pentium Pro или выше или на соответствующей модели AMD
рассчитаны i686
-пакеты.
Утилита yum
не требует указания всех полей в том случае, когда
ей передается имя rpm-пакета (например, для установки). Она воспринимает
следующие варианты наименования пакетов: name, name.architecture, name-version, name-version-release,
name-version-release.architecture и epoch:name-version-release.architecture (Прим. К сожалению,
не могу пояснить, что такое epoch ;-)).
При вызове команды yum
рекомендуется использовать краткие имена
rpm-пакетов. В таком случае yum
автоматически выберет в репозиториях
самый свежий пакет из числа тех, которые соответствуют архитектуре вашего
компьютера.
Репозитории обычно организованы таким образом, что пакеты для каждой
архитектуры хранятся в отдельных каталогах. Тем не менее можно указать имя
пакета в формате name.architecture
, чтобы быть уверенным в соответствии
ПО вашему процессору.
Указание пакета с другим форматом имени служит для того, чтобы указать yum
,
что требуется изменить принятый по умолчанию режим обработки и использовать
пакет, который строго соответствует указанному шаблону. Это может потребоваться
в тех случаях, когда известно, что выбираемый по умолчанию пакет содержит
ошибку или по каким-то другим причинам не годится для установки в вашей
системе.
Установка и настройка yum
Примечание:su
,
например, следующим образом:
su -c 'yum update'Однако при этом каждый раз придется снова вводить пароль суперпользователя. Гораздо удобнее выполнять эти действия, запустив отдельную сессию с соответствующими правами, например, перейдя в виртуальную консоль или запустив окно эмулятора терминала от имени root-а.
[root] #характерное именно для работы в root-сессии.
Если утилита yum
в вашей системе не установлена по умолчанию, то можно скачать и установить соответствующий rpm-пакет (например, из одного из репозиториев Fedora, адреса которых будут приведены ниже).
Настройка утилиты осуществляется с помощью файла /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] name=Fedora Core $releasever - $basearch - Base baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/$releasever/$basearch/os/> [updates-released] name=Fedora 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" может оказаться недостаточно для полного отключения репозитория. Чтобы полностью исключить доступ к репозиторию:
- Удалите соответствующий файл из
/etc/yum.repos.d/
. - Удалите сохраненную в кэше директорию из
/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
GPG-PUB-KEY.asc
с веб-сайта www.therepository.com, используйте следующую команду
[root] # rpm --import http://www.therepository.com/GPG-PUB-KEY.asc
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
прекратит установку пакетов из этого репозитория.
Подключение дополнительных репозиториев
При инсталляции системы из дистрибутива Fedora обычно автоматически настраивается доступ к основным репозиториям проекта Fedora. Таких репозиториев существует несколько. Основными можно назвать репозитории Fedora, в которых поддерживаются стабильные версии этого дистрибутива. Для каждой версии Fedora поддерживаются 2 стандартных репозитория, называющихся 'fedora' и 'updates'. Для целей разработки и тестирования создаются отдельные репозитории: fedora-devel (Rawhide), fedora-extras-devel и updates-testing.
Но поскольку некоторые программные продукты являются несвободными или требуют для своей работы установки каких-то несвободных компонентов, а проект Fedora придерживается принципа использования только свободного ПО, в указанных выше репозиториях может не оказаться нужного вам ПО. Искать его нужно в других репозиториях. Производитель продукта может дать ссылку или рекомендовать обратиться к какому-то другому репозиторию. Например, популярное программное обеспечения для языка программирования Java можно найти в репозитории http://www.jpackage.org/. Кроме того, существуют репозитории, организуемые различными независимыми организациями и даже отдельными лицами. Краткий обзор таких репозиториев имеется в блоге А.Шейна. Аркадий поддерживает и собственный репозиторий, который вы сможете найти по приведенной ссылке.
Среди дополнительных репозиториев самым интересным для новичка является Livna - репозиторий, необходимый для установки многих несвободных пакетов, в первую очередь относящихся к разделу мультимедиа, например, обеспечивающих поддержку формата mp3. Из этого репозитория вы можете установить такие пакеты как mplayer-gui - видеоплейер, поддерживающий почти все существующие мультимедиаформаты, gstreamer-plugins-ugly - плагины для gstreamer, добавляющие поддержку несвободныех мультимедиа форматов в totem и некоторые другие программы gnome, kdemultimedia-extras-nonfree - поддержка несвободных мультимедиа форматов в программах kde, mplayerplug-in - поддержка несвободных мультимедиа форматов для firefox и совместимых браузеров, k3b-extras-nonfree - поддержка несвободных мультимедиа форматов для k3b, xine - отличный dvd плейер.
В некоторых случаях добавление нового репозитория в перечень доступных источников
пакетов для yum
может быть выполнено с помощью утилиты rpm
.
Организаторы репозиториев часто поддерживают специальный rpm-пакет, который надо просто
установить в свою систему, чтобы включить репозиторий в перечень доступных.
Например, репозиторий Livna можно добавить с помощью одной из следующих
команд (в соответствии с установленной у вас версией Fedora):
[root] # rpm -Uvh http://rpm.livna.org/livna-release-6.rpm [root] # rpm -Uvh http://rpm.livna.org/livna-release-7.rpm [root] # rpm -Uvh http://rpm.livna.org/livna-release-8.rpmПримечание: очевидно все вышеперечисленные команды будут работать только если ваш компьютер подключен к интернету.
Если такого рода команда по каким-то причинам не работает, можно все, что
она делает, сделать и "вручную". Для этого достаточно отредактировать соответствующим образом какой-то из файлов с расширением .repo
, из числа размещающихся в каталоге /etc/yum.repos.d/
(или создать новый файл такого типа) в соответствии с приведенными выше рекомендациями. Если приведенных рекомендаций недостаточно, загляните в man yum.conf
или man yum
.
Если одновременно подключены несколько репозиториев и один и тот же пакет представлен в разных репозиториях разными версиями, то автоматически будет выбираться самая последняя версия из представленных.
Совместимость репозиториев
Полный набор пакетов для дистрибутива Fedora содержит несколько тысяч пакетов, которые все совместимы между собой. Если пакет разрабатывается сторонним разработчиком, он тоже должен быть совместим со всеми пакетами официального дистрибутива. Но это условие трудно выполнить просто из-за большого объема проверок, которые для этого необходимо проделать. Конечно, создатели репозитория такую работу проводят, и все пакеты, включенные в отдельный репозиторий совместимы друг с другом. Но если мы подключаем несколько репозиториев, то гарантий, что все пакеты объединенной совокупности будут совместимы, уже никто не дает.
Кроме того, сторонние производители ПО могут предлагать версии некоторых продуктов, которые отличаются от аналогичных продуктов, производимых сообществом Fedora, функционируют по-другому и так далее. Обычно информация о таких несовместимостях присутствует на сайте производителя продукта. Вы сами должны оценивать необходимость и целесообразность использования альтернативных версий ПО.
Еще один вариант возникновения несовместимости - смена версии самого дистрибутива Fedora. Пакеты, созданные для одной версии, могут оказаться несовместимы с пакетами, разработанными для другой версии (последующей). Создатели репозитория должны четко указывать (а вы - найти эту информацию перед использованием репозитория) на какую версию Fedora рассчитан данный репозиторий.
Но всегда следует помнить, что если вы сконфигурируете yum
на
использование нескольких репозиториев, процедура обновления системы или
какого-то отдельного приложения может завершиться неудачно.
Можно еще отметить, что формат индекса репозитория изменился при переходе на версию 2.1 утилиты yum
. Чтобы убедиться, что репозиторий совместим с современными версиями yum
, проверьте, содержит ли репозиторий подкаталог с именем repodata/
.
Использование yum
Поиск в репозиториях
С помощью утилиты yum
можно осуществлять поиск как в доступных
репозиториях, так и среди установленных в системе пакетов.
Для поиска в репозиториях с помощью yum используются три команды: list, search и provides. Самый простой способ поиска - использование команды list. Команда list просматривает названия пакетов и их версии в поисках совпадений. Например, для вывода списка пакетов, в названии которых присутствует tsclient, используйте команду:
[root] # yum list tsclient
[root] # yum list tsclient-0.132будет производиться поиск пакета, содержащего tsclient версии 0.132. Если в ответ на запрос вы не получили никакой информации, значит не существует пакета, соответствующего заданным критериям.
Если вы не знаете названия пакета, используйте опции search или provides. С любой из опций можно использовать символы-заместители, что позволяет расширить зону поиска (подробнее об этом будет сказано чуть позже).
Опция search проверяет имена пакетов, описания, резюме и список разработчиков пакета в поисках совпадений с указанной строкой. Например, для поиска пакетов, связанных с PalmPilot, введите:
[root] # yum search PalmPilot
Опция provides проверяет файлы, включенные пакет, и имена функций, которые реализуются программами этого пакета. Например, для поиска пакетов, содержащих файл libneon, введите:
[root] # yum provides libneon
Для поиска всех пакетов, которые реализуют сервис MTA (Mail Transport Agent)
или содержат файлы, содержащие в имени подстроку MTA
, используйте
команду:
[root] # yum provides MTAСледует иметь в виду, что опция provides требует от утилиты
yum
загрузки и обработки индексных файлов значительно бОльшего объема,
чем опция search.
Использование шаблонов
Пакеты можно искать по части их имени. Все команды поиска поддерживают символы-заместители ? и * (экранируйте их символом \ для корректной обработки bash). К примеру, для поиска пакетов, начинающихся на tsc, введите:
[root] # yum list tsc\*для поиска пакетов, содержащих файлы в директории /etc/httpd
[root] # yum provides /etc/httpd\*В результатах поиска
yum
покажет все пакеты, которые соответствуют заданному критерию. При этом надо иметь в виду, что соответствие должно быть точным. Так, например, если вы зададите шаблон запроса в виде shadowutils
или shadow-util
, то пакет shadow-utils
не появится в результатах поиска. Для того, чтобы его найти, в качестве шаблона запроса надо задать shadow-util\?
или shadow\*
.
Установка пакетов из репозиториев с помощью Yum
Если у вас настроены репозитории, то для установки любого приложения (пакета) с помощьюyum
достаточно воспользоваться параметром install с указанием
нужного приложения. При этом yum
отыщет последнюю версию пакета из имеющихся в
сконфигурированных репозиториях, и проанализирует имеющиеся зависимости.
Например, для установки tsclient введите:
[root] # yum install tsclientБудет запрошен пароль root-а, поскольку для установки нового ПО в системе обычно необходимы права суперпользователя. После ввода пароля и некоторой задержки (в это время производится разрешение зависимостей)
yum
сообщит об
итогах разрешения зависимостей и запросит подтверждения
на установку, обновление или удаление пакетов:
============================================================================= Package Arch Version Repository Size ============================================================================= Installing: tsclient i386 0.132-6 base 247 k Installing for dependencies: rdesktop i386 1.4.0-2 base 107 k Transaction Summary ============================================================================= Install 2 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 355 k Is this ok [y/N]:
Если вы введете в ответ [y], yum
скачает найденный пакет и все
пакеты, которые необходимы для разрешения зависимостей, после чего установит
полученные пакеты в вашей системе. Если необходимо, будут удалены какие-то пакеты,
конфликтующие с устанавливаемым ПО. Если в ответ на запрос вы введете [N] или
[Enter], это будет означать отказ от установки указанного приложения. Соответственно,
и перекачка пакетов производиться не будет.
Как уже упоминалось выше, yum
ищет и устанавливает самую последнюю
версию приложения из тех, которые ему доступны. Если вы хотите установить
какую-то конкретную версию, например, одну из предыдущих, надо указать номер
версии в команде, то есть вместо
[root] # yum install tsclientдать команду вида
[root] # yum install tsclient-0.132-1
Примечания
- Каждая завершенная операция по установке пакета отображается в файле протокола
/var/log/yum.log
. Этот файл доступен для просмотра только суперпользователю (root). - Если приложение, которые вы обновляете, в это время используется, старая версия остается активной до тех пор, пока приложение или сервис не будут перезапущены. Изменения в ядре вступят в силу только после перезапуска системы.
- Если вы устанавливаете сервис или службу, Fedora не запускает и не активизирует его. Чтобы обеспечить запуск службы во время загрузки системы, воспользуйтесь пунктом "Система - Службы" или "Администрирование - Службы" главного меню или же используйте утилиты командной строки
chkconfig
иservice
. - Пакеты, содержащие ядро Linux, не удаляются из системы полсе установки свежей версии ядра. Это сделано для того, чтобы обеспечить загрузку работоспособной версии ядра в том случае, если с ядром новой версии загрузка окажется невозможной или будут иметь место какие-то ошибки. Однако
yum
автоматически удалит из системы пакеты с совсем устаревшими версиями ядра, оставив только текущее ядро и предыдущую версию. - Пакеты, которые скачиваются для инсталляции, временно сохраняются в каталоге,
указанном в параметре cachedir= конфигурационного файла
/etc/yum.conf
(по умолчанию cachedir=/var/cache/yum). Если в том же файле параметр keepcache= принимает значение 0, то после установки эти пакеты будут удалены. Если вы хотите их сохранить, замените строку keepcache=0 на keepcache=1.
Установка приложений из .rpm файлов
Для установки приложения из локального .rpm пакета с автоматическим разрешением зависимостей используется команда localinstall. Так команда:[root] # yum localinstall foo.rpmавтоматически найдет зависимости пакета foo.rpm в репозиториях (если сможет) и предложит их установить.
Если вы потребуете установить пакет, содержащий более свежую версию приложения, уже установленного в системе, yum
обновит установленное ПО.
Если устанавливаемый пакет требует установки других приложений, которые у вас отсутствуют,
yum
пытается разрешить все зависисмости, используя подключенные рапозитории. Если в этих репозиториях нужное ПО отсутствует, вам придется самостоятельно найти и установить необходимые пакеты.
Если вы установили какое-то приложение не из репозитория, а из другого источника (например, загрузили его с сайта производителя) yum update
не сможет в дальнейшем отслеживать появление новых версий и обновлять такое ПО. Если вы хотите быть в курсе обновлений такого пакета, подпишитесь на рассылку новостей на сайте производителя.
Но вообще-то рекомендуется использовать "ручной" метод установки пакетов только в крайних случаях, когда вы уверены, что не существует подходящего репозитория, который обеспечит установку и последующую поддержку нужного вам пакета.
Установка групп приложений
yum
можно устанавливать приложения не по одному, а целыми группами. Список доступных групп приложений можно получить по команде
[root] # yum grouplistВ моей системе вывод этой команды содержит 57 названий, причем список разбит на 2 части: установленные группы (у меня их 20) и доступные группы.
MySQL Database
, введите команду:
[root] # yum groupupdate "MySQL Database"
Обновление системы
Обновление системы осуществляется с помощью уже упоминавшейся команды update, только уже без указания конкретного пакета. Таким образом:[root] # yum updateобновит все приложения в вашей системе. А команда
[root] # yum update fooобновит только пакет foo.
Пакет yum
, поставляемый в дистрибутиве Fedora, включает скрипты, которые обеспечивают полное обновление каждый день. Чтобы активизировать автоматическое ежедневное обновление системы, необходимо выполнить следующую команду:
[root] # /sbin/chkconfig --level 345 yum on; /sbin/service yum start
yum
, которая запускается этой командой. Приведенная команда активизирует скрипт /etc/cron.daily/yum.cron
, который заставляет демон cron
автоматически запускать обновление системы в 4 часа ночи каждый день.
Удаление пакетов
С помощьюyum
можно не только устанавливать и обновлять программное обеспечение вашей системы, но и удалять ненужные пакеты. Удаление пакетов осуществляется с помощью команды remove. Так,
[root] # yum remove fooудалит пакет foo из системы.
При удалении пакета yum
не просто удаляет указанный пакет, но и исследует зависимости пакетов, определяя те пакеты, которые от него зависят. В результате выполнения команды будет удален заданный пакет и все зависящие от него пакеты. Конечно, вам будет выдан список удаляемых пакетов и запрошено согласие на их удаление.
Можно также удалить целиком группу пакетов. Чтобы удалить все пакеты группы MySQL Database
, введите команду:
[root] # yum groupremove "MySQL Database"
При удалении пакетов все пользовательские данные остаются нетронутыми, но в некоторых случаях удаляются конфигурационные файлы. Если при удалении пакеты конфигурационные файлы остаются не тронутыми и вы познее установите пакет заново, вы сможете воспользоваться старыми конфигурационными файлами.
Создание локального репозитория
По умолчанию yum
в Fedora требует доступа к интернету и скачивает пакеты оттуда. Но можно создать локальный репозиторий из имеющихся у вас пакетов (в том числе и с установочного диска). Для этого:
[root] # createrepo /tmp/repo/
[local] baseurl=file:///tmp/repo/ enabled=1 gpgcheck=0Можно поставить gpgcheck=1 и импортировать ключ, но если вы качаете пакеты только из проверенных источников, эту проверку и мороку с ключами можно опустить, еще наверное придется отключить проверку gpg в /etc/yum.conf.
Если вы запишете репозиторий на DVD-диск, то путь, соответственно, будет примерно такой:
baseurl=file:///media/cdrom/repo/Здесь /mnt/cdrom - путь, по которому у вас примонтирован установочный диск. Для случая, когда у вас fedora на нескольких dvd или cd, то придется скопировать содержимое этих дисков в определенную папку на жестком диске и уже ее прописывать как baseurl.
Если вы не подключены к Интернет, то имеет смысл во всех остальных файлах *.repo в каталоге /etc/yum.repos.d/ прописать enabled=0, чтобы yum не искал обновления ПО в сети, ибо это вызовет только дополнительные задержки.
На этом я закончу эту часть статьи про утилиту yum
. Во второй части я планирую рассмотреть графические оболочки к этой утилите. Так что "Продолжение следует...". А пока перечислю те источники, которые были использованы при подготовке статьи.
Источники и ссылки
Утилита yum
имеет свойства и опции, которые не рассмотрены в настоящем HOWTO. Чтобы познакомиться с ними, восспользуйтесь man-страницами man yum
и man yum.conf
.
Полезно посетить веб-сайт проекта yum
подписаться на лист рассылки
Есть несколько статей (в том числе и на русском языке), которые полезно прочитать или хотя бы просмотреть.
- Yum - менеджер пакетов Fedora
- Upgrading Fedora Using Yum
- Кратко о работе с yum - как создать локальный репозиторий.
- How to run your own yum repository
- Managing Packages And Repositories With Yum And Yumex On Fedora 7 - эта статья содержит, в частности большой перечень репозиториев
- Yum - менеджер пакетов Fedora
- Руководство по быстрой "доводке" Fedora Core
- Создание репозитория для YUM и APT
- Fedora Linux или как упростить себе жизнь.
- FAQ по yum и Pirut (Установка/удаление программ)