YUM (
Yellowdog
Updater
Modified) — система управления пакетами (реализована на Python), предоставляющая возможность установки, удаления и обновления пакетов или групп пакетов. Yum изначально разработан для управления системой Red Hat Linux и в настоящее время используется в RPM-based (Red Hat Package Managment) дистрибутивах, таких как Fedora, CentOS, SUSE, Yellow Dog Linux и т.д.
Изначально разработанный Terra Soft «yup» (Yellow Dog Updater) был улучшен и теперь разрабатывается и поддерживается Linux@Duke team, получив название «yum».
1. Обновление пакетов
Чтобы проверить наличие обновлений в системе, следует использовать команду
yum check-update:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
$ yum check-update Loaded plugins: langpacks, presto, refresh-packagekit Adding en_US to language list
имя пакета.архитектура версия пакета репозиторий dracut.noarch 006-6.fc14 updates elfutils.i686 0.151-1.fc14 updates elfutils-libelf.i686 0.151-1.fc14 updates elfutils-libs.i686 0.151-1.fc14 updates libuser.i686 0.56.18-3.fc14 updates libuser-python.i686 0.56.18-3.fc14 updates procps.i686 3.2.8-15.fc14 updates sssd.i686 1.5.0-2.fc14 updates sssd-client.i686 1.5.0-2.fc14 updates stunnel.i686 4.34-1.fc14 updates
|
Обратите внимание на строку «
Loaded plugins: langpacks, presto, refresh-packagekit» - yum всегда предоставляет информацию о том, какие плагины установлены и включены. В данном выводе yum использует три плагина:
langpacks — позволяет автоматически установить langpacks (языковые пакеты) программы для вашего родного языка (настроить требуемый язык можно в файле
/etc/yum/pluginconf.d/langpacks.conf);
presto — данный плагин реализует поддержку DeltaRPM (DeltaRPM это разница между двумя rpm пакетами одной программы, т.о., позволяет экономить трафик, не скачивая весь пакет, а только разницу версий);
refresh-packagekit — предназначен для взаимодействия с PackageKit (например, если вы обновили пакеты с помощью yum, то PackageKit будет знать об этом).
Для того, чтобы обновить необходимые пакеты нужно использовать команду
yum update pkg_name :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
# yum update elfutils Loaded plugins: langpacks, presto, refresh-packagekit Adding en_US to language list ... ================================================================================ Package Arch Version Repository Size ================================================================================ Updating: elfutils i686 0.151-1.fc14 updates 215 k Updating for dependencies: elfutils-libelf i686 0.151-1.fc14 updates 173 k elfutils-libs i686 0.151-1.fc14 updates 198 k
Transaction Summary ================================================================================ Upgrade 3 Package(s)
Total download size: 586 k Is this ok <y>N>: <</y>code> Вы можете заметить, что некоторые пакеты тоже будут обновлены по зависимостям, т.к. yum автоматически разрешает зависимости. Если требуется обновить все возможные пакеты, то можно использовать команду <i>yum update</i> без аргументов:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
# yum update Loaded plugins: langpacks, presto, refresh-packagekit Adding en_US to language list ... ================================================================================ Package Arch Version Repository Size ================================================================================ Updating: dracut noarch 006-6.fc14 updates 87 k elfutils i686 0.151-1.fc14 updates 215 k elfutils-libelf i686 0.151-1.fc14 updates 173 k elfutils-libs i686 0.151-1.fc14 updates 198 k libuser i686 0.56.18-3.fc14 updates 370 k libuser-python i686 0.56.18-3.fc14 updates 50 k procps i686 3.2.8-15.fc14 updates 197 k sssd i686 1.5.0-2.fc14 updates 815 k sssd-client i686 1.5.0-2.fc14 updates 49 k stunnel i686 4.34-1.fc14 updates 124 k
Transaction Summary ================================================================================ Upgrade 10 Package(s)
Total download size: 2.2 M Is this ok <y>N>: <</y>code> Для автоматического ответа на вопрос «<i>Is this ok <y>N><</y>i>» можно воспользоваться параметром </i><i>-y</i> (например: <i>yum update -y </i>), который дает согласие на все вопросы. При необходимости выполнять обновления автоматически можно воспользоваться утилитами <i>yum-cron</i> (для периодического обновления пакетов) и <i>yum-updateonboot</i> (для обновлений во время загрузки системы), чтобы их установить:
|
|
# yum install yum-cron yum-updateonboot
|
2. Установка/удаление пакетов
Пакет вместе со всеми зависимостями можно установить командой
yum install pkg_name :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
# yum install pitivi Loaded plugins: langpacks, presto, refresh-packagekit Adding en_US to language list ... ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: pitivi noarch 0.13.5-4.fc14 updates 790 k Installing for dependencies: gnonlin i686 0.10.16-1.fc14 updates 65 k goocanvas i686 0.15-1.fc14 fedora 134 k pygoocanvas i686 0.14.1-3.fc14 fedora 51 k python-zope-interface i686 3.6.1-7.fc14 fedora 118 k
Transaction Summary ================================================================================ Install 5 Package(s)
Total download size: 1.1 M Installed size: 5.1 M Is this ok <y>N>:<</y>code> Если вы не знаете имя пакета, но знаете имя бинарного файла, который хотите установить, то можно воспользоваться путем к бинарному файлу для установки:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
# yum install /usr/bin/pitivi Loaded plugins: langpacks, presto, refresh-packagekit Adding en_US to language list ... ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: pitivi noarch 0.13.5-4.fc14 updates 790 k ... ================================================================================ Install 5 Package(s)
Total download size: 1.1 M Installed size: 5.1 M Is this ok <y>N>:<</y>code> В случае, если вы не знаете полный путь к бинарному файлу, то можно воспользоваться командой <i>yum provides</i> совместно с glob-выражением, чтобы его узнать:
|
1 2 3 4 5 6 7 8 9 10 11 12 13
|
$ yum provides "*bin/pitivi" Loaded plugins: langpacks, presto, refresh-packagekit Adding en_US to language list ... pitivi-0.13.4-3.fc14.noarch : Non-linear video editor Repo : fedora Matched from: Filename : /usr/bin/pitivi
pitivi-0.13.5-4.fc14.noarch : Non-linear video edito Repo : updates Matched from: Filename : /usr/bin/pitivi
|
Чтобы удалить ранее установленный пакет можно воспользоваться следующей командой
yum remove pkg_name :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
# yum remove wicd Loaded plugins: langpacks, presto, refresh-packagekit Adding en_US to language list ... ================================================================================ Package Arch Version Repository Size ================================================================================ Removing: wicd i686 1.7.0-4.fc14 @updates 183 k
Transaction Summary ================================================================================ Remove 1 Package(s)
Installed size: 183 k Is this ok <y>N>:<</y>code> Вся информация о установке/удалении/обновлении пакетов фиксируется в файле <i>/var/log/yum.log</i> (для его просмотра необходимы права пользователя root).
<b><span style="color:#0174DF;">3. Получение сведений о пакетах</span></b> Для поиска имен пакетов и их краткого описания можно использовать команду <i>yum search pkg_name </i>:
|
|
$ yum search wicd Loaded plugins: langpacks, presto, refresh-packagekit Adding en_US to language list ============================= Matched: wicd ============================== wicd-common.noarch : Wicd common files wicd-curses.noarch : Curses client for wicd wicd-gtk.noarch : GTK+ client for wicd wicd.i686 : Wireless and wired network connection manager
|
Для получения более подробной информации о пакетах следует использовать команду
yum info pkg_name :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
$ yum info wicd Loaded plugins: langpacks, presto, refresh-packagekit Adding en_US to language list Installed Packages Name : wicd Arch : i686 Version : 1.7.0 Release : 4.fc14 Size : 183 k Repo : installed From repo : updates Summary : Wireless and wired network connection manager URL : http://wicd.sourceforge.net/ License : GPLv2+ Description : Wicd is designed to give the user as much control over behavior of : network connections as possible. Every network, both wired and : wireless, has its own profile with its own configuration options : and connection behavior. Wicd will try to automatically connect : only to networks the user specifies it should try, with a : preference first to a wired network, then to wireless. : : This package provides the architecture-dependent components of : wicd.
|
Использование yum search аналогично использованию команды
rpm -q -i pkg_name:
|
$ rpm -q -i wicd Name : wicd elocations: (not relocatable) Version : 1.7.0 Vendor: Fedora Project Release : 4.fc14 Build Date: Sat 23 Oct 2010 12:47:23 AM MSD ...
|
Чтобы получить еще больше информации о пакете, например контрольную сумму, то следует использовать
yumdb info pkg_name :
|
$ yumdb info wicd Loaded plugins: langpacks, presto, refresh-packagekit Adding en_US to language list wicd-1.7.0-4.fc14.i686 checksum_data = e675dfa382c45c23902cdb421bbccf1a398fc92b7124482db15e652a98127bc1 checksum_type = sha256 from_repo = updates from_repo_revision = 1294690430 from_repo_timestamp = 1294694157 installed_by = 4294967295 reason = user releasever = 14
|
Еще одной командой для получения информации о пакетах является
yum list:
|
$ yum list wicd-\* Loaded plugins: langpacks, presto, refresh-packagekit Adding en_US to language list Installed Packages wicd.i686 1.7.0-4.fc14 @updates wicd-common.noarch 1.7.0-4.fc14 @updates wicd-gtk.noarch 1.7.0-4.fc14 @updates Available Packages wicd-curses.noarch 1.7.0-4.fc14 updates
|
Ниже приведен список некоторых команд
yum list, а также команды для вывода информации о группах пакетов и репозиториях:
yum list all — вывести список всех доступных и установленных пакетов;
yum list installed — вывести список только установленных пакетов;
yum list available — вывести список только доступных пакетов;
yum grouplist — вывести список всех групп пакетов (например, «Administration Tools», «GNOME Desktop Environment» и так далее);
yum groupinfo group_name — вывести список пакетов группы group_name, например
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
$ yum groupinfo KDE Loaded plugins: langpacks, presto, refresh-packagekit Adding en_US to language list ... Group: KDE Software Compilation Description: The KDE SC includes the KDE Plasma Desktop, a highly-configurable graphical user interface which includes a panel, desktop, system icons and desktop widgets, and many powerful KDE applications. Mandatory Packages: kdebase-runtime kdebase-workspace kdelibs Default Packages: amarok cups-pk-helper dejavu-sans-fonts ...
|
Имеется возможность не только просматривать группы пакетов, но также устанавливать, удалять и обновлять их, используя команды
yum groupinstall/groupremove/groupupdate, соответственно.
yum repolist — вывести список id репозиториев (repo id) и количество пакетов, предоставляемых каждым из них.
И последняя команда
yum history (от root) которая показывает время выполненных транзакицй (установка/удаление/обновление пакетов) и какой пользователь их выполнял. Вся история транзакций храниться в
/var/lib/yum/history/.
4. Добавление новых репозиториев
Добавить новый репозиторий можно путем установки rpm-пакета или используя файл *.repo (находятся в
/etc/yum.repos.d/). Приведем пример добавления репозиториев RPMFusion и Adobe:
|
su -c 'yum localinstall --nogpgcheck http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm'
|
Для того, чтобы подключить репозиторий Adobe необходимо скачать пакет
adobe-release-i386-1.0-1.noarch.rpm с сайта http://get.adobe.com/flashplayer/ (выбрав YUM for Linux) и затем установить его:
|
# rpm -ivh adobe-release-i386-1.0-1.noarch.rpm
|
Будет скопирован adobe General Public Key в
/etc/pki/rpm-gpg/RPM-GPG-KEY-adobe-linux, но не импортирован, поэтому импортируем ключ:
|
# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-adobe-linux
|
5. yum-utils
yum-utils это набор утилит и плагинов, которые расширяют возможности yum, например могут показаться довольно полезными следующие утилиты:
yumdownloader — предоставляет возможность скачать пакет из репозитория:
|
$ yumdownloader wicd Loaded plugins: langpacks, presto, refresh-packagekit Adding en_US to language list wicd-1.7.0-4.fc14.i686.rpm | 42 kB 00:00
|
package-cleanup — позволяет выявлять неиспользуемые пакеты (--leaves), неполадки (--problems) и удалять старые версии ядер (--oldkernels). Например, чтобы узнать какие пакеты не используются, следует воспользоваться следующей командой:
|
$ package-cleanup --leaves Loaded plugins: langpacks, presto, refresh-packagekit Adding en_US to language list libcanberra-gtk3-0.25-4.fc14.i686 libertas-usb8388-firmware-5.110.22.p23-4.fc13.noarch libmpdclient-devel-2.1-3.fc13.i686 libotf-0.9.11-1.fc14.i686
|
Для администраторов может оказаться полезным плагин
yum-plugin-security, который предоставляет доступ к списку и обновлениям только тех пакетов, которые связаны с безопасностью системы. Например, доступны следующие пакеты для обновления (можно воспользоваться
yum info-security, чтобы получить более подробную информацию по каждому пакету):
|
$ yum list-security Loaded plugins: langpacks, presto, refresh-packagekit, security Adding en_US to language list FEDORA-2011-0485 enhancement gdb-7.2-36.fc14.i686 FEDORA-2011-0543 enhancement microcode_ctl-1:1.17-7.fc14.i686 FEDORA-2011-0530 bugfix pciutils-3.1.7-3.fc14.i686 FEDORA-2011-0530 bugfix pciutils-libs-3.1.7-3.fc14.i686 FEDORA-2011-0478 bugfix system-setup-keyboard-0.8.6-3.fc14.i686
|
Используя опцию
--security мы узнаем, что есть 5 пакетов для обновления, но ни один из них не связан с безопасностью:
|
$ yum --security check-update Loaded plugins: langpacks, presto, refresh-packagekit, security Adding en_US to language list Limiting package lists to security relevant ones No packages needed for security; 5 packages available
|
Если требуется обновлять багфиксы, то можно воспользоваться опцией
--bugfixes:
|
$ yum --security --bugfixes check-update Loaded plugins: langpacks, presto, refresh-packagekit, security Adding en_US to language list Limiting package lists to security relevant ones 3 package(s) needed for security, out of 5 available
pciutils.i686 3.1.7-3.fc14 updates pciutils-libs.i686 3.1.7-3.fc14 updates system-setup-keyboard.i686 0.8.6-3.fc14 updates
|
Дополнительную информацию о плагине можно получить на странице справочного руководства man (man yum-security), а также тут.
Также интерес представляет плагин
yum-plugin-versionlock, который позволяет удерживать версию необходимого пакета, т.е. не дает его обновлять.
6. GUI для yum
Для yum существует несколько графических фронтендов, одним из них является PackageKit — «
набор открытого и свободного программного обеспечения, предназначенного для обеспечения последовательного и высокоуровневого фронт-энда для некоторого числа различных систем управления пакетами». Для PackageKit есть несколько фронт-эндов:
gnome-packagekit (GNOME, см. рис. 1);
kpackagekit (KDE);
yumex;
pkcon (консольная утилита).
Рис.1. gnome-packagekit
Выбор фронт-энда зависит от используемого DE, например, если вы пользователь GNOME, то по умолчанию у вас будет установлен gnome-packagekit.
7. Ссылки
Официальная старница YUM;
Fedora 14 — Software Management Guide;
Learn Linux, 101: RPM and YUM package management;
Система управления пакетами Yum.
P.S. Надеюсь, что для начинающего пользователя этой информации будет достаточно. На вопрос - "А зачем мне уметь работать с yum?" - есть простой ответ: во-первых, зачастую это быстрее, во-вторых, не всегда есть возможность работать с "иксами".
Если встретите очепятки, то пишите в ЛС, если ошибки, то в комментарии. Если есть желание что-то дополнить, также пишите в комментарии. Может показаться, что большинство выводов избыточно, мне кажется, что так воспринимать информацию (работу команды) несколько проще, но при необходимости могу сократить. Может быть у кого-то возникнет желаение рассказать про работу с rpm и самого PackageKit, буду рад.
Ну и как всегда pdf'ка (scribd.com опять надругался над документом).
ps единственное что добавил бы, что скрипт написан на Python