понедельник, 24 января 2011 г.

Система управления RPM-пакетами YUM



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
# 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]:

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

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
# 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]:

Для автоматического ответа на вопрос «Is this ok [y/N]» можно воспользоваться параметром -y (например: yum update -y ), который дает согласие на все вопросы.
При необходимости выполнять обновления автоматически можно воспользоваться утилитами yum-cron (для периодического обновления пакетов) и yum-updateonboot (для обновлений во время загрузки системы), чтобы их установить:

# 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
# 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]:

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 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]:

В случае, если вы не знаете полный путь к бинарному файлу, то можно воспользоваться командой yum provedes совместно с 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
# 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]:

Вся информация о установке/удалении/обновлении пакетов фиксируется в файле /var/log/yum.log (для его просмотра необходимы права пользователя root).

3. Получение сведений о пакетах

Для поиска имен пакетов и их краткого описания можно использовать команду yum search pkg_name :

1
2
3
4
5
6
7
8
$ 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:

1
2
3
4
5
$ 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 :

1
2
3
4
5
6
7
8
9
10
11
12
$ 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:

1
2
3
4
5
6
7
8
9
$ 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 — предоставляет возможность скачать пакет из репозитория:

1
2
3
4
$ 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). Например, чтобы узнать какие пакеты не используются, следует воспользоваться следующей командой:

1
2
3
4
5
6
7
$ 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-versionlock, который позволяет удерживать версию необходимого пакета, т.е. не дает его обновлять.

6. GUI для yum

Для yum существует несколько графических фронтендов, одним из них является PackageKit — «набор открытого и свободного программного обеспечения, предназначенного для обеспечения последовательного и высокоуровневого фронт-энда для некоторого числа различных систем управления пакетами». Для PackageKit есть несколько фронт-эндов:

  • gnome-packagekit (GNOME, см. рис. 1);
  • kpackagekit (KDE);
  • yumex;
  • pkcon (консольная утилита).

Рис.1. gnome-packagekit

Выбор фронт-энда зависит от используемого DE, например, если вы пользователь GNOME, то по умолчанию у вас будет установлен gnome-packagekit.

7. Ссылки

Комментариев нет:

Отправить комментарий