Использование APT в Red Hat 8.0

Виктор Вислобоков

Использование APT в Red Hat 8.0 и 9

Предисловие ко второй редакции

Первая редакция данной статьи вызвала некоторую заинтересованность, я получил несколько откликов, где наряду с благодарностью за выход статьи были также и некоторые вопросы, которые мне пришлось пояснять отдельно. Именно поэтому я решил выпустить вторую редакцию статьи, а чтобы сохранить заинтересованность людей я добавил и упоминание о Red Hat 9,

Предисловие

Довольно часто пользователи Red Hat сталкиваются с неудобством этого дистрибутива в плане управления пакетами. Особенно это касается начинающих пользователей, потому что старики уже привыкли к этой особенности. А неудобство заключается в том, что менеджер пакетов Red Hat, который называется rpm, ничего не знает о пакетах, которые не установлены в системе. С одной стороны это логично - точно также ведут себя и другие низкоуровневые менежеры пакетов (например dpkg в Debian GNU/Linux) с другой стороны это причиняет массу неудобств.

Действительно, если для dpkg в дистрибутиве Debian GNU/Linux написаны высокоуровневые оболочки (или как их называют front-end) такие как dselect и APT, то в Red Hat, пользователь, который не поставил что-то при начальной установке становится как круглый сирота. Вот вроде есть CD с дистрибутивом, вот вроде бы изучили как работать с rpm и пытаемся поставить скажем sox командой
rpm -i sox-12.17.3-7.i386.rpm
а в итоге получае ответ, что есть, мол, неудовлетворенные зависимости:
libogg.so.0 
libvorbisenc.so.2 
libvorbisfile.so.3 
libvorbis.so.0
Что сразу может поставить в тупик - где брать эти *.so? Ладно, если существуют пакеты libogg*.rpm и libvorbis*.rpm, тогда все более или менее понятно. Но довольно часто вы можете получить и такое, что просто по имени пакета вы не найдете. Что же делать тогда? Все что можно сделать в обычном случае - это написать что-то типа:
for i in *.rpm; do echo $i; rpm -qp $i --provides | grep нужный_вам_файл;done
И запускать это на всех 3-х CD дистрибутива, чтобы наконец найти тот пакет, который предоставляет нужный вам файл. Не говоря уже о том, что это долго, это также и очень неудобно. Начиная с Red Hat 8.0, разработчики попытались сделать в этом плане шаг навстречу пользователям и написали инструмент, который по внешнему виду очень напоминает инструмент управления установкой и удалением программ в Windows 2000, и который может помочь при установке или удалении пакетов, входящих в дистрибутиве. Но как быть с теми пакетами, которые вы собрали сами или нашли в Интернет? Проблемы остаются.

Тем не менее это решаемые проблемы. Некоторые дистрибутивы, основанные на rpm обзавелись своими собственными выскоуровневыми инструментами. Не давая здесь их обзора, заметим, что некоторые из них можно вполне использовать и в Red Hat. APT, что расшифровывается как Advanced Package Tool (в русском переводе "Продвинутый инструмент для работы с пакетами"), был первоначально разработан для дистрибутива Debian GNU/Linux и менеджера пакетов dpkg. Однако, удобство его использования пришлось по вкусу и пользователям других дистрибутивов. Тогда разработчики бразильского дистрибутива Connectiva Linux, написали код, которые сделал возможным работу APT с rpm. Чтобы обеспечить пользователям максимальное удобство, был также написан графический интерфейс для APT, который называется Synaptic. Именно об этих инструментах далее и пойдет речь.

Где взять и как установить?

Начнем мы конечно с APT. Брать надо здесь: http://freshrpms.net. Это сайт, на котором есть разделы посвященные Red Hat разных версий. На нем всегда можно найти самые свежие версии очень полезных программ, собранных для дистрибутива Red Hat. Кроме того, через репозитарий APT (что это такое читайте ниже) здесь же доступны как сами дистрибутивы Red Hat, так и обновления к ним. Сборка происходит довольно качественно и могу отметить, что у меня ни разу не было проблем с совместимостью пакетов с этого сайта и пакетов дистрибутива Red Hat, для которого они были собраны.

Итак, заходим на сайт и переходим в раздел Red Hat 8.0 или Red Hat 9 в зависимости от вашей версии Red Hat (обслуживается даже версия 7.3). Затем выкачиваем оттуда один единственный пакет - apt. На момент написания данной статьи это apt-0.5.5cnc5-fr2.i386.rpm. Устанавливаем его обычным образом:

rpm -i apt-0.5.5cnc5-fr2.i386.rpm

Установка на этом не кончается. Это как-то связано с работой rpm, но для того, чтобы вы потом могли нормально генерировать списки пакетов, необходимо провести следующую операцию:

rpm --import /usr/share/doc/redhat-release-8.0/RPM-GPG-KEY

Чтобы избежать проблем с пакетами, которые вы выкачаете с http://freshrpms.net и разместити у себя на локальном диске, выполните также операцию:

rpm --import /usr/share/doc/apt-0.5.5cnc5/RPM-GPG-KEY.freshrpms

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

Далее нужно настроить APT.

Настройка APT

Сперва надо подготовить репозитарий пакетов, т.е. создать каталоги для хранения пакетов и список пакетов. У меня это выглядит так (здесь говорится о версии 8.0, но для версии 9 все делается абсолютно аналогично):

  • Создан каталог /var/APT/RedHat/8.0/en/i386. Разумеется, что вы можете создать каталог и в другом месте и с другим именем. В этом вас никто не ограничивает.
  • В этом каталоге созданы два подкаталога RPMS.os и RPMS.my. В RPMS.os я переписал пакеты с 3-х дистрибутивных дисков Red Hat 8.0. В RPMS.my лежат собранный мной пакеты и пакеты надерганные из Internet. Окончательный вид дерева каталогов дан ниже:
Directories
  • В файле /etc/apt/sources.list у меня сделаны две записи. Первая соответствуют моему хранилищу, вторая репозитарию пакетов на сайте http://freshrpms.net
rpm file:/var/APT RedHat/8.0/en/i386 os my
rpm http://apt.freshrpms.net redhat/8.0/en/i386 os updates freshrpms

Далее, чтобы APT мог работать с нашим репозитарием пакетов, мы должны изготовить список пакетов. Я это делаю командой:

genbasedir --bloat --flat --bz2only /var/APT/RedHat/8.0/en/i386 my os

Команда требует базовый каталог в качестве первого аргумента (в нашем случае /var/APT/RedHat/8.0/en/i386) и суффиксы подкаталогов RPMS.*, находящихся в этом каталоге (в данном случае это my и os, так как есть два подкаталога RPMS.my и RPMS.os). После выполнения команды в /var/APT/RedHat/8.0/en/i386 появится еще один подкаталог: base, в котором будут содержаться служебные файлы для APT. Особый интерес представляют файлы pkglist.*, которые и являются списками пакетов.

Теперь когда мы настроили APT, можно перейти непостредственно к работе с пакетами.

Работа с APT

Дальнейшая работа с APT происходит точно также как и в Debian GNU/Linux. Сперва нужно, чтобы APT создал кэш пакетов. Подключитесь к Интернет, если вы используете внешние источники пакетов (такие как freshrpms) и выполните команду:

apt-get update

На экране вы увидите процесс работы этой команды. Если все было сделано правильно, то вы не увидите ошибок, а после выполнения команды у вас будет готовый кэш пакетов. Смотреть его целиком нет никакого смысла, хотя это и возможно. Гораздо вероятней, что вы захотите посмотреть информацию о каком-либо пакете. Пусть это будет тот же sox. Это можно сделать так:

apt-cache showpkg sox

После выполнения этой команды вы увидите что-то типа:

Package: sox
Versions: 
12.17.3-11(/var/lib/rpm/Packages)

Reverse Depends:
 gtoaster,sox
 redhat-config-soundcard,sox
Dependencies: 
12.17.3-11 - /bin/sh (0 (null)) libc.so.6 (0 (null)) libc.so.6(GLIBC_2.0) (0 (null)) libc.so.6(GLIBC_2.1) (0 (null)) libc.so.6(GLIBC_2.3) (0 (null)) libm.so.6 (0 (null)) libm.so.6(GLIBC_2.0) (0 (null)) libogg.so.0 (0 (null)) libvorbis.so.0 (0 (null)) libvorbisenc.so.2 (0 (null)) libvorbisfile.so.3 (0 (null)) 
Provides: 
12.17.3-11 - 
Reverse Provides:

Обяснять здесь всё я не вижу смысла, вы найдете подробности в документации по APT. Хочу только заострить внимание на "Dependencies:". Теперь очень легко средствами APT можно найти пакет, который предоставляет нужную нам функциональность. Например команда

apt-cache search libogg.so.0

Выдаст результат:

libogg - The Ogg bitstream file format library.

Именно пакет libogg нам нужно поставить, чтобы удовлетворить зависимость в библиотеке libogg.so.0. Но если вы заходите установить sox, то вам не понадобится вручную искать все нужные пакеты. Вполне достаточно будет выполнить команду

apt-get install sox

Система APT сама выдаст вам список недостающих пакетов наряду с sox и запросит разрешение на их установку. Всё что остается - сказать "Y" и как говорит изделие дяди Билли: "Откинтесь на спинку кресла...". Не правда ли все это очень удобно?

Наверняка вас заинтересует возможность обновления вашей системы. Это можно сделать выполнив команду

apt-get upgrade

APT проанализирует какие версии пакетов обновились и предложит вам список пакетов, которые можно обновить.

Я не будут здесь перечислять все команды и все опции apt-get и других программ, входящих в APT. Когда-то я сделал перевод страниц руководства по APT и теперь с удовольствием отсылаю за подробностями туда.
Мы же выполним последнюю операцию, после которой я предлагаю вас пустится в самостоятельное плавание - установку графического интрфейса к APT - программы Synaptic. Итак, подключитесь к Интернет и наберите команду

apt-get install synaptic

APT проведет выкачивание rpm-пакета Synaptic с freshrpms и его установку. Все что требуется от вас - это наслаждаться процессом. Если в процессе установки понадобятся какие-либо другие пакеты, то как уже говорилось, APT самостоятельно их найдет и предложит установить! Теперь запустите программу, набрав synaptic в среде GNOME или KDE и вперед. Программа имеет интуитивно-понятный и простой интерфейс. Новые версии Synaptic имеют дополнительные возможности и удобства. Вот снимочек окна Synaptic для Red Hat 9:

synaptic

Немного об утилите apt-cdrom

В письмах, которые пришли в ответ на первую версию статьи часто спрашивали об возможности использования apt-cdrom. Вынужден слегка огорчить - использование apt-cdrom со стандартными дисками дистрибутивов Red Hat на мой взгляд невозможно. Это обусловлено тем, что на CD c Red Hat отсутствует необходимая для APT структура каталогов и список пакетов.

Однако, никто не мешает вам создавать репозитарии пакетов на CD самим и если они будут выполнены также, как указано выше, то никаких проблем с их использованием быть не должно.

Заключение

Разумеется, APT далеко не единственный высокоуровневый инструмент для работы с пакетами. Однако, на мой взгляд он наиболее удобен и очень прост в настройке. Не последнюю роль играет и популярность APT.

В Интрнет существует множество репозитариев APT, которые предоставляют дополнительные пакеты для Red Hat и основанных на rpm дистрибутивов. После установки APT вы получаете возможность без труда работать с ними.