CITKIT.ru - свободные мысли о свободном софте
Деловая газета CitCity.ru Библиотека CITForum.ru Форумы Курилка
Каталог софта Движение Open Source Дискуссионный клуб Дистрибутивы Окружение Приложения Заметки Разное
26.06.2017

Последние комментарии

ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)
24 December, 22:53
Kubuntu Feisty (15)
24 December, 18:42
Один на один с Windows XP (3758)
24 December, 11:46

Каталог софта

Статьи

Дискуссионный клуб
Linux в школе
Open Source и деньги
Open Source и жизнь
Windows vs Linux
Копирайт
Кто такие анонимусы
Лицензии
Нетбуки
Нужен ли русский Linux?
Пользователи
Дистрибутивы
Идеология
Выбор дистрибутива
Archlinux & CRUX
Debian
Fedora
Gentoo
LFS
LiveCD
Mandriva
OpenSolaris
Slackware
Zenwalk
Другие линуксы
BSD
MINIX
Движение Open Source
История
Классика жанра
Окружение
shell
Библиотеки UI
Графические среды
Шрифты
Приложения
Безопасность
Управление пакетами
Разное
Linuxformat. Колонки Алексея Федорчука
Заметки
Блогометки
Файловые системы
Заметки о ядре

Дистрибутивы :: Fedora

Приложения :: Управление пакетами

Yum: введение и базовые средства

http://alv.me/

Yum — система управления rpm-пакетами и их репозиториями, предлагающая автоматическую установку, обновление и удаление пакетов и пакетных групп с автоматическим контролем зависимостей. По механизму действия и функциональности она сходна с системой APT, разработанной для Debian. Однако, в отличие от последней, за пределами rpm-based дистрибутивов, насколько мне известно, не используется.

Аббревиатура yum интерпретируется как Yellow dog Updater, Modified, то есть Обновитель Yellow dog Модифицированный. Что заставляет предполагать его связь с одноимённым дистрибутивом — портом (см. о клонах, портах etc.) Red Hat на архитектуру Power. Связь действительно есть, хотя и не совсем прямая. В Yellow dog использовался свой пакетный менеджер, именовавшийся YUP, написанный Брайаном Стиллвелом (Bryan Stillwell) сотоварищи. Он был взять за основу и практически полностью переписан Сетом Видалом (Seth Vidal), сотрудником Университета Дюка, для дистрибутива Red Hat, который использовался там на физическом факультете. Новый продукт и получил имя yum.

Символично и дословное значение имени программы (yum — по английски конфета). Злые языки могут трактовать его в том смысле, что эта система в состоянии сделать конфетку даже из такого… не самого совершешнного продукта, как пакеты в формате RPM. Впрочем, как выясняется, последний не столь уж и плох, как кажется по началу (этому вопросу я собираюсь посвятить специальную заметку). Что же, посредством yum он становится ещё лучше.

Yum быстро получил признание среди ряда клонов Red Hat, в частности, он был принят в качестве штатного менеджера пакетов в ASPLinux. Однако в самом Red Hat он долго конкурировал с apt-rpm, и развитие yum’а одно время только силами команды ASPLinux и осуществлялось. Однако в конце концов он утвердился в RHEL и его клонах, в Fedora и в Yellow Dog.

В настоящее время Сет Видал, ныне — сотрудник Red Hat, вместе с группой товарищей (список разработчиков приведён в файле AUTHORS внутри пакета, там же перечислены и разработчики исходного YUP’а). Официальный сайт проекта, ранее живший на сервере Университете Дюка, — http://yum.baseurl.org/. На нём находятся исходники собственно пакета yum и сопутствующих компонентов (yum-utils, yum-metadata-parser), как стабильных, так и разрабатываемых, и кое-какая документация, впрочем, не очень обильная и систематизированная. Справочные сведения о yum, как обычно, можно почерпнуть из экранной документации — man yum или man info.

Система yum включает в себя собственно одноимённую утилиту, набор дополнительных утилит (yum-utils) и многочисленные плагины, образующие самостоятельные пакеты и расширяющие функциональность главной программы.

Запускается yum одноимённой командой, требующей указания субкоманды (возможно, с опциями последней), и, в ряде случаев, аргументов в виде имени пакета или группы пакетов, что в общей форме выглядит так:

$ yum subcommand [arguments] --[options]

Команда yum без указания субкоманды выведёт краткую справку касаемо последних и их опций. Аналогичный результат будет получен посредством субкоманды

$ yum help
Loaded plugins: fastestmirror, presto, refresh-packagekit
Usage: yum [options] COMMAND

List of Commands:

check-update   Check for available package updates
...
Options:
  -h, --help            show this help message and exit
  ...
    Plugin Options:
  ...

А указание имени субкоманды в качестве аргумента в этой строке выведет краткие сведения о её назначении, например:

$ yum help install
Loaded plugins: fastestmirror, presto, refresh-packagekit
install PACKAGE...

Install a package or packages on your system

Субкоманды yum’а определяют одно из действий, которое команда должна выполнить — установку или удаление пакета, вывод информации о нём, поиск пакетов и так далее. Обычно назначение субкоманды легко угадывается из её названия и (или) краткой характеристики в выводе help’а.

Все субкоманды yum можно разделить на две группы. Первая связана с поиском пакетов и получением информации о них, вторая — с манипуляциями пакетами и группами.

В состав первой группы входят такие

  • search [string] — поиск пакета по имени или его фрагменту;
  • list — вывод списка пакетов, всех (all или без указания фильтра), установленных (installed) или доступных (available);
  • repolist — вывод списка подключённых репозиториев;
  • resolvedep [shortname] — вывод полного имени пакета, с указанием номера версии, сборки и т.д., по его краткому имени;
  • provides filename — поиск пакета, содержащего указанный файл;
  • info pkgname — вывод полной информации о пакете;
  • deplist pkgname — вывод списка зависимостей указанного пакета;
  • grouplist — вывод списка групп, разделённого на установленные и доступные;
  • groupinfo "Group name" — вывод списка пкаетов, входящих в указанную группу, имя которой даётся в соответствие с выводом субкоманды grouplist и экранируется кавычками;
  • check-update — вывод списка пакетов, для которых в данный момент доступны обновления.

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

В группу субкоманд, связанных с манипуляцией пакетами, входят:

  • install pkgname1 ... pkgname# — установка из репозиториев единичного пакета или нескольких пакетов, имена которых даны (в краткой форме) в качестве аргумента, вместе со всеми их зависимостями;
  • localinstall path2/fullname.rpm — установка пакета из локально хранящегося файла; зависимости его извлекаются из репозиториев, если таковые доступны;
  • update [pkgname] — обновление пакета, указанного в качестве аргумента; в отсутствие аргумента выполняется тотальное обновление системы, аналогично сумме apt-get update и apt-get upgrade;
  • upgrade — тотальное обновление системы при смене версии дистрибутива, подобно apt-get distupgrade;
  • reinstall — переустановка ранее инсталлированного пакета, например, безнадёжно испорченного;
  • groupinstall "Group name" — установка группы пакетов, аргумент указывается аналогично субкоманде groupinfo;
  • downgrade pkgname — “откат” пакета, заданного в качестве аргумента, на предыдущую версию из числа сохраняющихся в репозитории;
  • erase pkgname — удаление пакета вместе со всем, что от него зависит; пакеты, от которых зависит удаляемый, остаются в неприкосновенности, даже если они никем не используются;
  • groupremove “Group name” — удаление группы пакетов, аргумент указывается аналогично субкоманде groupinfo;
  • makecache — запись метаданных репозиториев в локальный кэш;
  • clean — очистка локального кэша.

Все субкоманды второй группы для своего исполнения требуют прав администратора. И начинается их исполнение с синхронизации локальной базы пакетов с базами репозиториев. Затем происходит проверка зависимостей — и по её результатам выводится итог: сколько пакетов, включая зависимости, должно быть установлено, обновлено или удалено, их имена, подлежащий скачиванию объем информации. И запрашивается подтверждение на выполнение операции. Так что при ошибке вполне можно отказаться от её выполнения — это особенно актуально при удалении программ и особенно групп, когда удаление поддержки, скажем, зулусского языка может снести весь OpenOffice.org и изрядную часть шрифтов.

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

Пока же упомяну только одну из опций, --skip-broken — она может понадобиться при первом же обновлении системы, не важно, через yum или PackageKit, о котором говорилось в предыдущей заметке. Поскольку, как показывает практика, вероятность ошибки при обновлении очень не равна нулю, особенно если не ограничиваться рекомендуемыми gpk-update-viewer обновлениями безопасности. И ошибка эта, скорее всего, окажется связанной с нарушениями зависимостей обновляемых пакетов.

И в этом случае команда

# yum update --skip-broken

спасёт всех родственников русской демократии, пропустив обновление пакетов с нарушенными зависимостями.

Отдельно надо сказать о субкоманде shell — она запускает собственную интерактивную командную оболочку yum’а, в сеансе которой можно оперировать уже просто его субкомандами, аргументами и опциями. Опуская главную команду yum. Впрочем, с учётом того, что в yum shell не работают автодополнения, выигрыш от этого сомнителен.

Сказанного, думаю, достаточно, чтобы начать практическую работу с yum. Чем м ы и займёмся в следующей серии.




Комментарии

аноним, Wed Aug 19 17:05:43 2009:
Не плохо. было интересно

Комментарии заморожены.

Новости:

Все новости на CitCity.ru

Компании месяца

 
Последние комментарии
Почему школам следует использовать только свободные программы (101)
20 Декабрь, 14:51
ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)

24 Декабрь, 22:53
Linux в школе: мифы про школу и информатику (334)
24 Декабрь, 22:43
Kubuntu Feisty (15)
24 Декабрь, 18:42
Software is like sex: it's better when it's free.
©Linus Torvalds