Последнее изменение файла: 2015.03.27
Скопировано с www.bog.pp.ru: 2023.10.03
Bog BOS: yum - автоматическая установка, обновление и удаление пакетов rpm
yum (Yellowdog Updater, Modified;
версия 2.4.3 в CentOS 4.5; версия 3.0.5 в RHEL5; версия 3.2.2 в FC6; версия 3.2.8 в Fedora 8)
- инструмент автоматической установки, обновления и удаления пакетов для
дистрибутивов Linux,
основанных на RPM с использованием специально подготовленного
репозитария пакетов.
Основным преимуществом перед "ручной" работой с пакетами является автоматическое
разрешение зависимостей устанавливаемых или обновляемых пакетов с добавлением
дополнительно требуемых пакетов в список. Аналогично, при удалении пакета
в список для предстоящего удаления добавляются все зависимые от него пакеты.
Для дистрибутивов, основанных на пакетах в формате deb, в аналогичных целях используется apt.
Для работы yum требуется специальным образом подготовленный
репозитарий (хранилище) пакетов, обслуживающий этот репозитарий сервер и клиентская программа yum.
Перед каждой операцией клиент yum извлекает с сервера описание репозитария,
затем с сервера извлекаются заголовки затребованных пакетов и зависимых от них,
после чего клиент определяет какие дополнительные пакеты необходимо установить
(обновить, удалить), извлекает их заголовки и т.д. пока все зависимости не будут разрешены.
При обновлении пакета может потребоваться добавление или замена пакета.
Некоторые пакеты (например, ядро) можно только добавлять, но нельзя заменять,
чтобы не оказаться в ситуации, когда невозможно будет загрузиться.
Репозитарий может содержать несколько версий пакета,
в этом случае по умолчанию выбирается самая свежая.
Клиент может одновременно использовать сразу несколько локальных или удалённых репозитариев.
При использовании несовместимых репозитариев может оказаться, что обновление невозможно
(пакеты из разных репозитариев требуют несовместимых версий одной и той же библиотеки).
Для экономии сетевого трафика описание репозитария, заголовки и
сами пакеты могут кешироваться в файловой системе клиента.
В качестве сервера репозитария можно использовать
обычный FTP или HTTP сервер.
Также файлы могут быть расположены в локальной файловой системе,
сетевой файловой системе (NFS, CIFS) или сменном носителе (CD-ROM, DVD-ROM).
Для сетевой установки также можно воспользоваться локальным репозитарием
базовой системы и загрузчиком PXE, что позволяет обойтись
без установочных дисков.
Современные дистрибутивы
(начиная с Fedora Core 3,
CentOS 3) поставляются с yum,
уже настроенным на репозитарий (репозитарии) изготовителя.
В частности, установочный DVD-ROM дистрибутива содержит один из таких репозитариев (base).
Зачастую требуется также подключение к дополнительным репозитариям,
содержащим пакеты, которые коммерческий поставщик дистрибутива не может
включить в свой репозитарий (защищённые патентами кодеки, драйверы в двоичном виде и др.).
Начиная с Fedora Core 6 установщик anaconda
позволяет подключать дополнительные репозитарии ещё до начала установки.
Список репозитариев изготовителя и дополнительных репозитариев отличается от версии к версии
и описан в соответствующих разделах.
В крайнем случае можно самостоятельно установить клиента yum
из rpm-пакета с сайта разработчиков. Осторожно: версии различаются в зависимости от текущей
версии RPM и python!
В нормальном репозитарии все пакеты
защищены цифровой подписью производителя,
которую yum может проверять перед установкой (задаётся настройками клиента).
Если предстоит устанавливать и обновлять множество компьютеров в локальной сети,
то рекомендуется сделать локальные копии соответствующих репозитариев и поднять
обслуживающий их сервер.
Таким образом, общая процедура настройки репозитария и клиентов
для каждой версии дистрибутива состоит из следующих шагов:
В большой организации целесообразно создать локальные копии всех
используемых репозитариев, причём организовать единый сервер для их обслуживания.
Я поднимаю для этих целей сервер FTP на vsftpd,
настроенный на обслуживание исключительно анонимных клиентов.
Имя сервера для настройки клиентов - ftp.company.ru.
Локальные копии репозитариев для каждой версии дистрибутива размещаются в отдельном подкаталоге
внутри каталога /pub/mirror, например, "/pub/mirror/CentOS4.6".
Причём каждый репозитарий размещается в соответствующем подкаталоге,
например: "/pub/mirror/CentOS4.6/base_i386" или "/pub/mirror/CentOS4.6/updates/x86_64".
Список репозитариев определяется версией дистрибутива и описан для каждого случая
в отдельных главах (White Box Linux 3.0,
Red Hat 9, CentOS 3.4,
Fedora Core 3, Fedora Core 4, CentOS 4, Fedora Core 6, CentOS 5).
Неизменяемые базовые репозитарии можно либо скопировать с сайта изготовителя,
либо создать из ISO-образов установочных дисков, т.к. их всё равно придётся копировать.
В последнем случае, в соответствующий каталог полностью копируется содержимое всех
установочных дисков для данной архитектуры. Начиная с Fedora Core 5 (?)
репозитарий на установочных дисках стал иметь в описании "лишние" строки вида
"xml:base=\"media", которые необходимо верезать:
(подсмотрено здесь):
разархивировать и скопировать (gzip -d primary.xml.gz; cp primary.xml primary.xml.orig
Регулярно обновляемые репозитарии необходимо синхронизовать
с первоисточником. В качестве средства синхронизации я использую mirror
(но можно использовать любой другой инструмент), который запускается ежедневно по ночам
для обновления всех репозитариев, антивирусных баз и т.д..
Описание пакета для mirror на примере CentOS5.1 для архитектур i386 и x86_64:
В репозитарии yum версии 1 заголовок каждого пакета лежит в отдельном файле
в подкаталоге с именем headers в каталоге, содержащем пакеты для определённой архитектуры.
Имя файла образуется из имени пакета, заменой строки ".rpm" на ".hdr".
Содержимое представляет собой двоичный файл, сжатый gzip.
Также создаётся файл headers/header.info, который содержит по одной строке на каждый пакет.
Утилита yum-arch (скрипт на python) осуществляет рекурсивный обход
указанного в качестве параметра каталога,
вырезает заголовки всех пакетов и складывает их в подкаталог
headers (создавая его, если это необходимо). Ключи (указывать отдельно):
-v (большая болтливость, можно ещё -vv)
-q (меньшая болтливость)
-s (обрабатывать также пакеты .src; только в версии 2; несовместим с ключом -d)
-n ("холостой" запуск, работает ли?)
-d (проверить зависимости и конфликты; рекомендуется)
-c (проверить md5 и gpg, несовместим с ключом -n, до первой ошибки)
В версии yum 2.1 вместо подкаталога "headers" с заголовками для каждого пакета
в двоичном формате (может присутствовать для совместимости) используется каталог
repodata, который содержит файлы
в XML формате,
общем (предположительно) для yum и apt, и sqlite (в версии yum 3):
repomd.xml содержит информацию об остальных файлах: имена, времена,
контрольные суммы, версии формата
primary.xml[.gz] (тип primary) содержит основную информацию о пакетах
(имя, архитектура, версия, релиз,
контрольная сумма, описание, ссылка на разработчика, время сборки, время упаковки,
размер пакета и занимаемого после установки места, имя файла, формат, лицензия,
поставщик, группа, сборщик, имя исходного пакета, что пакет требует и что обеспечивает)
и некоторых файлах, используемых в зависимостях других пакетов
primary.sqlite.bz2 (тип primary_db) - в формате sqlite
filelists.xml.[gz] содержит список файлов, входящих в пакет
filelists.sqlite.bz2 (тип filelists_db) - в формате sqlite
other.xml.[gz] (тип other) содержит ChangeLog для пакетов в формате XML
other.sqlite.bz2 (тип other_db) - в формате sqlite
comps[-f8].xml (тип group) содержит описание групп пакетов: имя группы, назначение группы
(на всех языках), описание (на всех языках), устанавливать ли группу по умолчанию,
показывать ли группу при установке,
список пакетов и при каких условиях устанавливать каждый пакет
updateinfo.xml.gz (тип updateinfo) - информация о каждом изменении
(кто внёс, статус (stable), тип (безопасность, исправление ошибок, добавление функций),
версия, имя, ссылка на описание (идентификатор), для какого дистрибутива,
время выпуска, описание причины выпуска, откуда можно скачать
Создание директории repodata производится
утилитой createrepo (пакет createrepo-0.4.10-1.fc6), которой
необходимо указать имя каталога с пакетами и ключи:
-q (меньшая болтливость)
-v (большая болтливость)
-o имя-каталога (куда записывать результат)
-x шаблон (шаблоны исключений имён файлов,
можно указывать несколько раз)
-g имя-файла (файл с описанием группы; где его взять?)
-p (создавать "красивые" xml файлы)
-s sha | md5 (тип контрольной суммы)
-u URL (base url, добавляется строка "xml:base=")
-c имя-каталога (можно кешировать контрольные суммы между запусками createrepo)
--update (если пакет не изменялся, то не пересчитывать метаданные)
--split (позволяет создавать репозитарий из нескольких носителей)
--database (создавать БД в формате sqlite для ускорения работы yum)
Клиентская часть yum настраивается с помощью файла
/etc/yum.conf. В новых версиях yum данный файл содержит только
общие параметры, параметры отдельных репозитариев располагаются в
/etc/yum.repos.d/*.repo (задаётся параметром reposdir).
Файл делится на секции, каждая секция начинается с
идентификатора репозитария в квадратных скобках. Пустые строки игнорируются.
Допускаются включения (в т.ч. вложенные) в виде: include=URL.
Каждый параметр определяется на отдельной строке в формате
имя=значение
Общие параметры описываются в секции "[main]" (при описании указывается
значение по молчанию и номер версии, в которой опция появилась):
cachedir (/var/cache/yum; директория для кеширования метаданных и заголовков)
persistdir (/var/lib/yum; версия 3; здесь сохраняются данные между запусками)
keepcache (1; использовать кеширование)
reposdir (/etc/yum.repos.d; версия 2.1;
список каталогов через запятую, содержащих описания отдельных
репозитариев в файлах имя-репозитария.repo)
debuglevel (2; от 0 до 10)
errorlevel (2; от 0 до 10)
logfile (/var/log/yum.log)
gpgcheck (0; 0 или 1; проверять ли GPG подписи пакетов)
assumeyes (0; не спрашивать подтверждения, -y)
alwaysprompt (1; спрашивать подтверждения даже, если список пакетов не обновлялся)
tolerant (0; "прощать" пользователю yum некоторые ошибки, -t)
exclude (; список пакетов через пробел, которые не надо устанавливать и обновлять,
можно использовать символы шаблонов * и ?)
exactarch (1; было 0; строгое соблюдение целевой архитектуры пакета при обновлении)
installonlypkgs (kernel, kernel-smp, kernel-bigmem, kernel-enterprise,
kernel-debug, kernel-unsupported;
список пакетов, которые нельзя обновлять, а можно только устанавливать
новые версии в дополнение к старым)
installonly_limit (2; не хранить больше указанного числа пакетов типа installonly)
kernelpkgnames (список имён пакетов, которые являются ядром;
удалён в версии 2.1)
showdupesfromrepos (0; версия 2.1;
показывать только новые версии пакетов или все)
obsoletes (версия 2.1; --obsoletes;
управляет логикой удаления пакетов, признанных
"устаревшими" при смене версии дистрибутива)
overwrite_groups (0 или 1; версия 2.1; что делать, если в двух репозитариях
предлагаются группы пакетов с одинаковым именем: брать описание
из последнего репозитария или сливать описания)
enable_group_conditionals (1; можно ли использовать условные пакеты)
group_package_types (default, mandatory; версия 3; список из optional, default, mandatory;
определяет какого типа пакеты будут установлены при выполнении groupinstall)
installroot (версия 2.1; корень файловой системы для установки;
--installroot)
distroverpkg (redhat-release; пакет, по которому определяется версия дистрибутива;
например, whitebox-release, fedora-release)
diskspacecheck (1)
tsflag (; список флагов для передачи команде rpm: noscripts, notriggers, nodocs, test, repackage)
recent (7; версия 2.1; число дней для list recent)
retries (6; 0 - это бесконечность)
keepalive (1; версия 2.1; использовать HTTP/1.1 keepalive)
timeout (30; число секунд)
http_caching (all; инструкция для прокси: all (кешировать всё), packages (только пакеты),
none)
proxy (полный URL, включая номер порта; можно использовать переменную
окружения http_proxy; версия 2.2.2)
proxy_username
proxy_password
throttle (0; ограничение трафика при загрузке пакетов в байтах/секунду -
5.5k, 2M и т.д. - или в процентах от bandwidth)
bandwidth (0; пропускная способность интерфейса для throttle)
pkgpolicy (newest; newest - устанавливать самую свежую версию пакета,
last - устанавливать пакет с последнего по алфавиту репозитария;
опция удалена в версии 2)
commands (; команда yum по умолчанию, если не указано явно;
в любом случае командная строка не может быть пустой)
metadata_expire (не проверять наличие обновлённых метаданных указанное число секунд)
mirrorlist_expire (не проверять обновление списка зеркал)
Параметры отдельных репозитариев:
repositoryid (версия 2.1; уникальное имя репозитария в квадратных скобках в качестве имени секции)
name (описательное имя репозитария)
baseurl (список альтернативных URL (http/ftp/file, базовая аутентификация)
репозитария через пробел и/или nl;
в ней д.б. "поддиректория" headers для версии 1 или repodata для версии 2;
только один оператор на репозитарий!)
mirrorlist (URL файла, содержащего список baseurl)
enabled (версия 2.1; установить в 0 вместо комментирования)
gpgcheck (0 или 1 в зависимости от установки в [main]; проверять ли GPG подписи пакетов)
gpgkey (; список URL открытого GPG ключа в текстовом формате; необходим,
если ключ не импортирован в БД rpm)
exclude (; список пакетов через пробел, которые не надо устанавливать,
можно использовать символы шаблонов * и ? и переменные)
includepkgs (; работать только с пакетами из этого списка;
можно использовать символы шаблонов * и ? и переменные)
enablegroups (1; версия 2.1; можно использовать группы пакетов)
failovermethod (roundrobin; roundrobin (перебор в случайном порядке)
или priority (последовательный перебор))
keepalive (1; версия 2.1; использовать HTTP/1.1 keepalive)
timeout (30; число секунд)
http_caching (all; инструкция для прокси: all (кешировать всё), packages (только пакеты),
none)
retries (6; 0 - это бесконечность)
throttle (0; ограничение трафика при загрузке пакетов в байтах/секунду -
5.5k, 2M и т.д. - или в процентах от bandwidth)
bandwidth (0; пропускная способность интерфейса для throttle)
metadata_expire (не проверять наличие обновлённых метаданных указанное число секунд)
mirrorlist_expire (не проверять обновление списка зеркал)
proxy (полный URL, включая номер порта; можно использовать переменную
окружения http_proxy; версия 2.2.2; _none_ для отключения глобального параметра)
proxy_username
proxy_password
cost (1000; "стоимость" обращения к репозитарию, позволяет ранжировать репозитарии)
Внутри значений параметров name, baseurl и commands
можно использовать значения переменных:
$releasever (значение извлекается из пакета, указанного в distroverpkg)
$arch ("uname -p" или os.uname()[4])
$basearch (uname -i)
от $YUM0 до $YUM9 (значения берутся из переменных окружения)
Использование yum (для заполнения кэша требуются права root):
yum [ключи] команда [список-имён-пакетов-через-пробел-или-опция]
Команды yum (шаблоны имён пакетов в стиле glob;
можно указывать архитектуру (после точки), версию и релиз -
name-epoch:ver-rel.arch):
install шаблон ...
(установить самые свежие версии указанных пакетов с разрешением
зависимостей; можно использовать шаблоны в именах пакетов,
автоматически находятся все пакеты, требуемые для указанных пакетов;
запрашивается подтверждение на выполнение)
update шаблон ...
(обновить указанные пакеты до самых свежих версий с разрешением
зависимостей; можно использовать шаблоны в именах пакетов;
если имена пакетов не указаны, то обновить все установленные пакеты;
автоматически находятся все пакеты, требуемые для указанных пакетов;
запрашивается подтверждение на выполнение)
check-update
(аналог list update; возвращает код возврата 100,
если имеется хотя бы 1 требующий обновления пакет и список пакетов)
upgrade шаблон ... (версия update для перехода от одной версии дистрибутива
к более новой; пытается учитывать удалённые в новом дистрибутиве
пакеты (см. ключ --obsoletes); работает не очень надёжно)
remove шаблон ...
(или erase; удалить указанные пакеты и все зависящие от них)
list (получение информации о доступных пакетах; опции:
all (все доступные и установленные пакеты)
имя-пакета-или-шаблон ... (доступные и установленные версии указанных пакетов)
available [шаблон] (все доступные пакеты, самые свежие версии)
updates [шаблон] (доступные новые версии установленных пакетов)
installed [шаблон] (установленные версии указанных пакетов)
extras [шаблон] (показать информацию об установленных пакетах, которых нет
в репозитариях)
obsoletes [шаблон] (показать информацию об установленных пакетах,
для которых в репозитариях отмечены как устаревшие)
recent (свежедобавленные пакеты)
)
provides шаблон ... (или whatprovides;
получить список установленных или доступных пакетов,
обеспечивающих указанную фичу или файл; можно использовать шаблоны)
search шаблон ... (найти пакет по ключевому слову в имени, описании;
можно использовать шаблоны)
info (получение описания доступных пакетов; опции как у команды list)
clean [ packages | headers | oldheaders | all ]
(удалить информацию из кэша)
clean [ packages | headers | metadata | dbcache | all ] (удалить информацию
из кеша для версии 2.1; действует только на разрешённые репозитарии;
metadata в данном случае - данные о самих репозитариях)
shell (см. yum-shell(8))
resolvedep (вывести список пакетов, разрешающих указанные зависимости; provides?)
localinstall имя-файла (установка пакета из файла, а не репозитария;
зависимости разрешаются из репозитария)
localupdate имя-файла (обновление пакета из файла, а не репозитария;
зависимости разрешаются из репозитария)
deplist (выдать список всех зависимостей для указанных пакетов и какие пакеты их
обеспечивают)
repolist [all|enabled|disabled] (вывести список репозитариев)
makecache ()
groupinstall имя-группы (установка группы пакетов, кто их описывает?)
groupupdate имя-группы
grouplist (выдаёт список установленных и имеющихся групп пакетов)
groupremove имя-группы
groupinfo имя-группы (выдаёт информацию о требуемых группах,
обязательных и необязательных пакетах)
Ключи yum (в скобках - имена параметров yum.conf):
-y (не спрашивать подтверждения на выполнение; параметр assume-yes)
-c URL-конфигурационного-файла
-d уровень-отладки (начинать надо с 3; параметр debuglevel)
-R минут (время ожидания перед выполнением команды?!)
-C (использовать заголовки только из кэша)
--installroot=корень (корень файловой системы, относительно которого
будут установлены пакеты; параметр installroot)
--enablerepo=идентификатор-репозитария (параметр enabled; можно использовать шаблоны)
--disablerepo=идентификатор-репозитария (параметр disabled; можно использовать шаблоны)
--exclude=имя-пакета (не включать пакеты, соответствующие шаблону; параметр exclude)
--disableexcludes=[all|main|имя-репозитария] (отменить действие параметров exclude
в файлах настройки)
--download-only (только загрузить пакеты в кэш, не устанавливать их)
--obsoletes (включать в расчёт пакеты более старых версий;
может пригодиться при переходе к новой версии дистрибутива от обновлённой старой)
--noplugins (запретить выполнение дополнительных модулей; параметр plugins)
--nogpgcheck (не проверять цифровые подписи пакетов; параметр gpgcheck)
yum может использовать прокси, определённый
переменной окружения http_proxy (URL!). Рекомендуется следить за сообщениями
при установке, особенно о заменах конфигурационных файлов.
Для yum написано большое количество дополнительных модулей (plugins),
рекомендую yum-changelog, [yum-fedorakmod, yum-kernel-module,] yum-list-data, yum-priorities, yum-security, yum-verify:
yum-installonlyn обеспечивает добавление нового ядра вместо замены и удаление более старых ядер
(/etc/yum/pluginconf.d/installonlyn.conf), встроен в yum
yum-NetworkManager-dispatcher (учёт действий NetworkManager при проверке кеша)
yum-aliases (автор сам-то понял, чего хотел сказать?)
yum-allowdowngrade (добавляет к команде yum флаг --allow-downgrade, который позволяет
откатить пакет к указанной старой версии)
yum-basearchonly ("yum install" с указанием пакета без уточнения архитектуры
будет устанавливать только пакеты основной архитектуры - например, устанавливать
пакеты .x86_64, но не .i386)
yum-changelog (позволяет показывать changelog (yum --changelog) перед или после обновления -
указывается в /etc/yum/pluginconf.d/changelog.conf)
yum-cron (периодическое автоматическое обновление пакетов; до FC6 был встроен в пакет yum)
yum-downloadonly (добавляет к команде yum флаг --downloadonly, который позволяет загружать
требуемые пакеты без установки или обновления)
yum-fastestmirror (сортирует список зеркал по скорости соединения перед загрузкой пакетов)
yum-fedorakmod (специальная обработка пакетов "kmod-..." (модули ядра) при установке
новых пакетов ядра)
yum-kernel-module (специальная обработка пакетов "kernel-module-..." (модули ядра) при установке
новых пакетов ядра)
yum-filter-data (добавляет к команде yum флаги --filter-{vendors, groups, packagers, licenses, arches и др.})
yum-keys (добавляет команды работы с ключами подписей пакетов: keys, keys-info, keys-data, keys-remove)
yum-merge-conf (добавляет к команде yum флаг --merge-conf, при использовании которого
yum будет запрашивать о судьбе конфигурационных файлов при обновлении; плохая идея)
yum-langpacks (поддержка автоматической установки языковых пакетов для пакетов - из метаданных
устанавливаемого или удаляемого пакета извлекается информация о имеющихся языковых пакетах для него; глючный;
хранилище языков - /var/lib/yum/plugins/langpacks/installed_langpacks и $LANGUAGE и $LANG; команды
yum langavailable # какие языки поддерживаются расширением
yum langlist # какие языки установлены
yum langinfo ru # какие пакеты имеются для указанного языка
yum-post-transaction-actions (позволяет задать действие, выполняемое при изменении пакета)
yum-presto (позволяет загружать только изменения
(deltarpms)
при обновлении пакетов; требуется пакет deltarpm;
существуют ли репозитарии с дельтами для линии Red Hat кроме
авторского?)
yum-priorities (позволяет назначить приоритеты пакетам из различных репозитариев;
пакеты из репозитария с более низким значением приоритета не могут быть обновлены
из репозитария с высоким значением приоритета; не путать с параметром cost;
настройки в /etc/yum/pluginconf.d/priorities.conf (enabled=; check_obsoletes=; only_samearch=)
и в описаниях репозитариев (priority=99))
yum-protect-packages (позволяет защитить указанные пакеты от удаления;
по умолчанию защищён сам yum и его цепочка зависимости)
yum-protectbase (позволяет защитить пакеты из указанного репозитария от обновления
из незащищённых репозитариев; см. yum-priorities)
yum-refresh-updatesd (при завершении работы yum будет запрашивать yum-updatesd о
наличии обновлённых пакетов; костыль)
yum-remove-with-leaves (удалить неиспользуемое?)
yum-rpm-warm-cache (попытка ускорить доступ к rpmdb за счёт предварительного чтения, у вас есть 16ГБ памяти?)
yum-security (добавляет команды list-security (для каждого пакета выводится идентификатор
в базе изготовителя репозитария и причина обновления (security, bugfix, enhancement))
и info-security (более подробная информация - статус, описание, дата, ссылки на идентификаторы
ошибок и сообщений об уязвимостях CVE)), а также флаги
--security, --cve=номер, --bz=номер и --advisory=номер, которые позволяют ограничить список пакетов;
основывается на новом типе метаданных updateinfo в репозитариях)
yum-skip-broken (добавляет к команде yum флаг --skip-broken, который позволяет пропускать
пакеты с проблемами в зависимостях вместо аварийного завершения всей программы)
yum-tmprepo (добавляет к команде yum флаг --tmprepo, который позволяет одноразово использовать
репозитарий, описанный в .repo файле)
yum-tsflags (позволяет добавлять tsflags в командной строке; см. параметр tsflags)
yum-updateonboot (при загрузке системы запускается "yum update")
yum-updatesd (проверяет наличие обновлений и информирует через email, syslog или dbus)
yum-upgrade-helper (облегчает переход к следующей версии, удаляя устаревшие пакеты
на основании специальной метаинформации)
yum-verify (добавляет команду verify, verify-all и verify-rpm для проверки установленных пакетов,
умеет бороться с издержками multilib и изменениями в файлах конфигурации;
команда verify-rpm является аналогом "rpm -V"; команда verify-all ещё более придирчива;
настраивается в /etc/yum/pluginconf.d/verify.conf и ключами --verify-filenames (указывается список проверяемых
файлов) и --verify-configuration-files)
yum-versionlock (блокирует указанные в /etc/yum/pluginconf.d/versionlock.list пакеты от обновления;
формат EPOCH:NAME-VERSION-RELEASE.ARCH; модуль выключен по умолчанию;
команды добавления и удаления - "yum versionlock {add|del|list} шаблон")
Пакет yum-utils:
debuginfo-install (установка дополнений к пакетам, обеспечивающих отладочную информацию
к программам)
package-cleanup (очистка локальной базы пакетов), ключи:
-c имя-конфигурационного-файла (/etc/yum.conf)
-y (соглашаемся заранее)
--problems (вывести список проблем с зависимостями в локальной базе RPM; рекомендую)
--leaves --all (вывести список пакетов, от которых никто не зависит)
--orphans (вывести список пакетов, которые недоступны из репозитария)
--oldkernels --count число --keepdevel (удалить старые ядра)
yum-updatesd - сервис (демон), сообщающий об обновлениях по e-mail или syslog,
позволяет автоматическую загрузку или установку обновлений (/etc/yum/yum-updatesd.conf).
yum-metadata-parser - обработчик метаданных на C
(быстр, но требует очень много памяти).
yumex - графическая оболочка для yum.
yum-cron - предшественник yum-updatesd (убран из yum во времена FC6).
yum-updateonboot - при загрузке запускается автоматический "yum update".
создаём на локальном ftp-сервере директорию Redhat9/os/i386 и
выкладываем содержимое директорий RedHat/RPMS/ всех установочных дисков
(со всех SRPMS в Redhat9/os/SRPMS)
делаем headers
создаём на локальном ftp-сервере директорию Redhat9/updates и
обеспечиваем регулярную подкачку в неё изменений (поддиректории i386,
и SRPMS); вместе с самими пакетами получаются и многочисленные
директории headers (т.к. качаем с зеркала fedoralegacy)
настраиваем /etc/yum.conf на клиентских компьютерах:
[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
[redhat-os]
name=Red Hat Linux $releasever ($basearch)
baseurl=ftp://имя-ftp-сервера/RedHat9/os/i386
gpgcheck=1
[redhat-updates]
name=Red Hat Linux $releasever ($basearch) updates
baseurl=ftp://имя-ftp-сервера/RedHat9/updates/i386
gpgcheck=1
Создадим репозитарий CentOS 3.4 со всеми изменениями:
создаём на локальном ftp-сервере директорию CentOs3.4/base и
выкладываем содержимое директорий RedHat/RPMS/ всех установочных дисков
вместе с headers
создаём на локальном ftp-сервере директорию CentOs3.4/updates и
обеспечиваем регулярную подкачку в неё изменений (поддиректории i386,
и SRPMS); вместе с самими пакетами получаются и многочисленные
директории headers
создаём на локальном ftp-сервере директорию CentOs3.4/addons и
обеспечиваем регулярную подкачку в неё изменений (поддиректории i386);
вместе с самими пакетами получаются и директории headers
настраиваем /etc/yum.conf на клиентских компьютерах:
Создадим репозитарий Fedora Core 3 (новый yum)
со всеми изменениями и дополнительными (внешними) репозитариями:
создаём на локальном ftp-сервере директорию FedoraCore3/base,
заходим в неё
в директорию os/Fedora
выкладываем содержимое директорий RedHat/RPMS/ всех установочных дисков
копируем соответствующие директории headers и repodata с сайта
разработчика в os (или установить пакет createrepo
и создать самому, но в нём не будет описания групп)
настраиваем /etc/yum.conf на клиентских компьютерах:
[base]
name=Fedora Core $releasever - $basearch - Base
baseurl=ftp://имя-ftp-сервера/FedoraCore3/base/os
enabled=1
в директорию SRPMS
выкладываем содержимое директорий SRPMS/ всех установочных дисков
createrepo SRPMS
какую пользу можно извлечь из yum для исходных пакетов я не понял
создаём на локальном ftp-сервере директорию FedoraCore3/updates,
заходим в неё
обеспечиваем регулярную подкачку в неё изменений (поддиректории i386,
x86_64 и SRPMS); вместе с самими пакетами получаются и многочисленные
директории headers и repodata, а также огромные поддиректории debug,
содержащие пакеты с информацией для отладки
пробуем: yum install mplayer; не все пакеты в extra имеют подписи,
но т.к. они остаются в архиве, то "неподписантов" можно предварительно
установить вручную, а затем повторить установку mplayer
проверку наличия новых пакетов в crontab:
result=`yum -d 0 --disablerepo=development --disablerepo=livna-unstable --disablerepo=dag --disablerepo=updates-testing --disablerepo=livna-testing --disablerepo=at-stable --disablerepo=dag check-update`
if [ $? ]
then
echo $result | mail -s "`hostname`: `cat /etc/redhat-release`: need updates" кому
fi