Глава 10. Обновление Linux и других приложений

Чтобы оснастить Linux-систему дополнительными возможностями, закрыть дырки в защите, управиться с новым оборудованием или избавиться от ошибок в программном обеспечении нужно регулярно обновлять систему. В данной главе как раз и рассматриваются такие вопросы.

Использование Red Hat Package Manager (RPM)

Red Hat Linux, включая ядро, библиотеки и приложения поставляется в файлах RPM. Файлы RPM, также известные как “пакеты” позволяют распространять программы, просто их ставить, удалять, обновлять, получать сведения о них. RPM файлы хранят данные о имени пакета, его версии, зависимостях от других файлов, платформе (Intel или Alpha, etc.), и о том, куда по умолчанию ставить файлы.

Утилита RPM была сначала разработана Red Hat и представлена как продукт Open Source, как и положено в мире Linux. Другие разработчики улучшили ее и добавили функциональность. Метод RPM упаковки файлов стал популярным и используется не только в Red Hat, но и в других дистрибутивах.

Популярные прикладные программы Linux почти всегда выпускаются как файлы RPM довольно быстро. Однако, в Unix мире defacto-стандартом для пакетов продолжает быть так называемый “tarballs”. Tarballs просто файлы, которые являются читаемыми утилитой ``tar''. Установка с помощью tar обычно более утомительна чем использование RPM (замечание переводчика: после работы с обеими утилитами у меня сложилось прямо противоположное мнение!). Так почему же люди так поступают? К сожалению иногда требуется несколько недель, чтобы дождаться последней версии пакета, преобразованного в RPM (много разработчиков сначала выпускают их как tarballs).

Если Вы ставите или обновляете пакеты, используя tar, база данных RPM станет устаревшей и непоследовательной. Это не страшно (когда я использовал Slackware, я использовал исключительно tar: не было никакого другого выбора, без слишком большого дискомфорта), но везде, где возможно, я пробую быть терпеливым и ждать, пока не станет доступным RPM, или посылаю вежливый запрос разработчику пакета. (Вы можете также формировать ваши собственные файлы RPM и раздавать их другим, что является иногда полезным для разработчиков, которые не имеют возможности или времени, чтобы произвести такие файлы непосредственно.)

Хорошее место для выяснения есть ли данный пакет в формате RPM: репозитарий RPM на http://rufus.w3.org/linux/RPM. Репозитарий поддерживает индексирование по категориям и хранит тысячи ссылок на пакеты.

Для запроса пакета используйте ``rpm -q pkg-name'' (например, ``rpm -q pine''). RPM сообщит Вам, какая версия пакета уже установлена, или что пакет не установлен.

Допустим, что пакет стоит, но вы скачали его новую версию. Обновите пакет командой ``rpm -Uvh pkg-name''. Если все идет хорошо, пакет будет автоматически установлен и немедленно готов для использования. Если нет, RPM даст Вам довольно хорошую причину (например, возможно, что пакет от которого зависит устанавливаемый пакет должен быть обновлен). Это может требовать немного размышления, но решения здесь очень прямые.

Если пакет еще не установлен, и Вы решаете установить его, введите: ``rpm -ivh pkg-name''. Если предварительно надо поставить еще какие-то пакеты, RPM Вам сообщит.

Иногда надо поставить пакет, доступный только в исходниках. Такой подход уменьшает шанс получить в бинарном коде троян или подобную пакость. Однако, на солидных сайтах (например, Red Hat FTP), такое маловероятно, поскольку там RPM проверяются на такие вещи. Но относительно пакета стороннего разработчика никаких гарантий нет.

В утилите RPM есть параметр ``rebuild'':

rpm -ivh --rebuild foo.src.rpm

Данная команда настроит и откомпилирует пакет ``foo'', изготовив двоичный RPM файл в каталоге `` /usr/src/redhat/RPMS/i386/'' (предполагается, что используется Linux на платформе Intel). Затем такой пакет можно поставить обычным порядком.

В заключение, если Вы имеете проблемы при получении исходного пакета, для компиляции (возможно Вы должны изменить makefile, или изменять опцию конфигурации) Вы можете использовать следующие шаги: создайте новый двоичный пакет и установите из него:


rpm -ivh foo.src.rpm
cd /usr/src/redhat/SPECS
pico -w foo.spec

Внесите любые необходимые изменения в файл ``.spec'' и введите:

rpm -ba foo.spec

Данная команда пересоздаст пакет, используя изменения из файла ``.spec''. Результат будет помещен в каталог ``/usr/src/redhat/RPMS/i386/ '' и может быть установлен оттуда на общих основаниях.

Самый лучший источник сведений про RPM ``Maximum RPM'', который доступен в формате postscript на http://www.rpm.org/maximum-rpm.ps.gz (если хотите его напечатать, имейте в виду, что понадобится много бумаги!). Есть небольшое руководство ``RPM-HOWTO'', доступное на http://www.rpm.org/support/RPM-HOWTO.html.