Установить из rpm. Как установить RPM пакеты на Ubuntu. Rpm, посмотреть файлы документации определенного пакета

Для Windows Phone 05.04.2019

Для установки, удаления и обновления программ в дистрибутивах RHEL, Fedora, Mandriva, AltLinux и некоторых других используется менеджер пакетов rpm . Менеджер пакетов rpm позволяет устанавливать, удалять, верифицировать пакеты соответствующего формата, но не имеет средств для автоматического разрешения зависимостей и поиска в репозиториях. Для автоматизации установки пакетов можно воспользоваться программой yum (Yellowdog Update Manager), которая автоматически разрешает зависимости между пакетами и подгружает необходимые файлы. При необходимости собрать пакет с программой из исходных текстов можно воспользоваться rpmbuild . Для этого необходимо подготовить пакет в формате.src.rpm, включающий исходные тексты программы и.spec файл, описывающий процесс сборки.

Структура пакета

Пакеты именуются по следующей схеме: имя-версия-сборка. Распространяются пакеты в виде файлов, в название которых добавляется.архитектура.rpm . Например, squid-2.5.STABLE8–1.FC3.1.i386.rpm расшифровывается так: программа squid , версия 2.5.STABLE8 , сборка 1.FC3.1 , архитектура i386 (неоптимизированное приложение под i386 совместимые процессоры). Номер сборки может включать название дистрибутива (FC3 в данном случае, а может и не включать). Архитектура noarch означает скрипты, независимые от архитектуры процессора. Файлы.src.rpm содержат исходные тексты программ и устанавливаются особым образом.

Каждый пакет содержит файлы программ, библиотек, конфигурации, документации и пр., упакованные архиватором cpio . Также пакет содержит дополнительные секции:

  • PROVIDE – предоставляемая функциональность (например, “mail server”) плюс файлы пакета;
  • REQUIRENAME – необходимые для корректной работы пакеты, файлы и т.п. (то, что требуется в REQUIRENAME , должно присутствовать в PROVIDE ранее установленных пакетов);
  • OBSOLETES – список пакетов, которые могут быть удалены т.к. их функциональность и/или файлы заменяютя данным пакетом;
  • PREIN, POSTIN – скрипты, выполняемые до установки (например, остановка обновляемого демона), и скрипты, выполняемые после установки (например, правка конфигурационных файлов под конкретную машину);
  • PREUN, POSTUN – скрипты, выполняемые при удалении;
  • SUMMARY краткое описание пакета;
  • DESCRIPTION – подробное описание.

Кроме того, каждый пакет принадлежит к некоторой группе Интернет, Разработка Программ, Развлечения и т.п. Просмотреть секции rpm файла можно в mc.

В дальнейших описаниях <пакет> означает имя пакета без i386.rpm (если установлена одна версия программы, то номер версии и сборки тоже можно опустить), а <файл> означает имя файла.rpm. В качестве файла можно указывать его URL, например, http://download.fedora.redhat.com/pub/fedora/linux/core/updates/3/i386/yum-2.2.0-0.fc3.noarch.rpm

Установка, удаление, обновление программ

Вспомогательные опции: -v – подробный вывод сообщений, -h – показ индикатора прогресса установки.

rpm -ivh <файл>... – установить пакет(ы)
rpm -Uvh <файл>... – обновить пакет(ы), если не установлены – установить
rpm -Fvh <файл>... – обновить уже установленный(е) пакет(ы)
rpm -e <пакет>... – удалить пакет(ы)

Просмотр информации об установленных пакетах или файлах rpm

Вспомогательные опции: -a – все установленные пакеты, -p – информация о файле rpm (в примерах будут приведены не везде).

rpm -q <пакет>... – проверка на наличие установленного пакета и его версии
rpm -qa - список всех пакетов
rpm -qi <пакет>... – DESCRIPTION пакета
rpm -qip <файл>... – DESCRIPTION файла
rpm -qR <пакет>... – REQUIERS пакета
rpm -ql <пакет>... – список файлов пакета
rpm -qf <файл_в_файловой_системе>... – определение принадлежности произвольного файла к одному из установленных пакетов

Проверка целостности rpm пакета

Файлы, размещенные в rpm пакете, сопровождаются вычисленной контрольной суммой и, как правило, подписаны цифровой подписью сборщика пакета. После установки пакета контрольные суммы и подписи сохраняются в базе установленных пакетов. Эти вспомогательные данные позволяют выполнить несколько проверок, например, можно проверить, что пакет создан доверенным издателем и что файлы пакета не были подменены после установки.

Первая проверка очень важна при скачивании пакетов из интернета, а вторая при подозрении на взлом компьютера.

Публичные ключи для проверки подписи автоматически устанавливаются при установке из дистрибутива, а также полуавтоматически добавляются при установке rpm пакетов для подключения репозиториев yum . Файлы с ключами в CentOS устанавливаются в каталог /etc/pki/rpm-gpg/ . Можно добавить ключ вручную, указав путь к локальному файлу или его url. Файл с ключем должен иметь текстовый формат "ASCII armored"

Rpm --import PUBKEY-file

После инсталляции к ключам применимы те же команды, что и к установленным пакетам

rpm -qa gpg-pubkey* – список всех ключей
rpm -qi gpg-pubkey-db42a60e – информация (в том числе имя хозяина) о конкретном ключе
rpm -e gpg-pubkey-db42a60e – удаление ключа

Проверка файла пакета на целостность

Rpm --checksig <файл>

Проверка установленного пакета на целостность

Rpm --verify <пакет>

После выполнения этой команды будет выдан список изменившихся файлов с указанием, что именно в них поменялось. Информация о типе изменений состоит из строки аббревиатур, включающих:

  • S – размер (Size)
  • M – тип файла или права доступа (Mode)
  • 5 контрольная сумма (MD5)
  • D – мажор или минор устройства устройства (Device)
  • L – содержимое символической ссылки (Link)
  • U – владелец (User)
  • G – группа (Group)
  • T – время модификации (mTime)
  • P – капабилити (caPabilities)

Извлечение и упаковка файлов rpm пакета

Программа rpm2cpio извлекает файлы из RPM пакета в формате архива cpio . Для распаковки файлов вместе со структурой каталогов используется команда cpio с опциями -i – распаковать и -d – создать каталоги:

rpm2cpio <файл.rpm> | cpio -i -d

rpmrebuild

Особые случаи

Eсли пакет уже установлен и его надо переустановить или необходимо понизить версию пакета, то можно к командам инсталяции или обновления добавить опцию --force .

Если установка или удаление пакета формально нарушает зависимости, но известно, что все будет хорошо, то используется опция --nodeps .

Рано или поздно нам приходится устанавливать программное обеспечение не из официальных репозиториев. Там есть далеко не все пакеты, и не всегда есть самые новые версии, только что вышедших программ. Очень часто разработчики размещают на своем официальном сайте пакеты для самых популярных дистрибутивов. Обычно это deb и rpm. Последний встречается немного реже, но если вы используете дистрибутив на базе Red Hat, вам нужен именно этот формат пакетов. Также в сети часто можно найти библиотеки и другие компоненты, которых нет в репозиториях в виде пакетов.

Раньше мы уже рассматривали установку deb пакетов в Ubuntu. А в этой статье будет подробно разобрана установка rpm пакетов в linux.

RPM или RPM Package Manager - это пакетный менеджер, используемый в дистрибутивах Linux, основанных на Red Hat. Такое же название имеет формат файлов этого пакетного менеджера.

Этот формат не очень сильно отличается от того же самого Deb. Вы можете посмотреть их детальное сравнение в статье что . Здесь же, только отмечу, что файл rpm - это обычный cpio архив, в котором содержатся сами файлы программы, а также метаданные, описывающие куда их нужно устанавливать. База всех установленных пакетов находится в каталоге /var/lib/rpm. Из особенностей можно отметить, что rpm не поддерживает рекомендованные пакеты, а также зависимости формата или-или.

Для управления пакетами, так же как и в Debian-системах, здесь существует консольная, низкоуровневая утилита с одноименным названием - rpm. Ее мы и будем рассматривать дальше в статье. В разных системах используются разные пакетные менеджеры, например в Red Hat используется Yum, в Fedora - DNF, а в OpenSUSE - zypper, но во всех этих системах будет работать утилита rpm.

Установка RPM пакетов в Linux

Давайте сначала рассмотрим синтаксис самой утилиты rpm:

$ rpm -режим опции пакет

Утилита может работать в одном из режимов:

  • -q - запрос, получение информации;
  • -i - установка;
  • -V - проверка пакетов;
  • -U - обновление;
  • -e - удаление.

Рассмотрим только самые интересные опции программы, которые понадобятся нам в этой статье:

  • -v - показать подробную информацию;
  • -h - выводить статус-бар;
  • --force - выполнять действие принудительно;
  • --nodeps - не проверять зависимости;
  • --replacefiles - заменять все старые файлы на новые без предупреждений;
  • -i - получить информацию о пакете;
  • -l - список файлов пакета;

Теперь, когда вы уже имеете представление как работать с этой утилитой, может быть рассмотрена установка rpm пакета в Linux. Самая простая команда установки будет выглядеть вот так:

sudo rpm -i имя_пакета.rpm

Для работы с командной текущей директорией должна быть папка с пакетом. Здесь мы устанавливаем режим установки и передаем файл пакета. При успешной установке утилита не выведет ничего, если произойдет ошибка, вы об этом узнаете.

Для того чтобы посмотреть более подробную информацию в процессе установки используйте опцию -v:

sudo rpm -iv имя_пакета.rpm

Также вы можете включить отображение статус бара в процессе установки:

sudo rpm -ivh имя_пакета.rpm

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

sudo rpm -q имя_пакета

Также сразу можно удалить пакет, если он не нужен:

sudo rpm -e имя_пакета

Но у rpm так же как и у dpkg, есть один существенный недостаток. Программа не может разрешать зависимости. В случае отсутствия нужного пакета в системе, вы просто получите сообщение об ошибке и пакет не установится.

Для автоматической загрузки зависимостей во время выполнения установки rpm linux нужно использовать пакетный менеджер дистрибутива. Рассмотрим несколько команд для самых популярных RPM дистрибутивов. В RedHat и других дистрибутивах, использующих Yum используйте такую команду:

sudo yum --nogpgcheck localinstall имя_пакета.rpm

Первая опция отключает проверку GPG ключа, а вторая говорит, что мы будем выполнять установку локального пакета. В Fedora, с помощью dnf все делается еще проще:

sudo dnf install имя_пакета.rpm

Пакетный менеджер Zypper и OpenSUSE справляются не хуже:

sudo zypper install имя_пакета.rpm

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

Установка RPM файла в GUI

Если вы используете OpenSUSE, то это делается очень просто. Универсальный конфигуратор системы YaST, кроме всего прочего позволяет установить rpm пакеты. Вы можете сделать это с помощью файлового менеджера, выбрав пункт контекстного меню для файла открыть с помощью Yast или выполнив команду:

yast2 -i имя_пакета.rpm

В Fedora для тех же целей вы можете использовать менеджер приложений дистрибутива. Раньше было еще несколько универсальных утилит для решения этой задачи, но сейчас они уже все устарели.

Выводы

Теперь вы знаете как выполняется установка rpm файла в Linux. На самом деле это очень просто и даже существует не только один способ, а целых несколько. Хотя графических утилит здесь немного меньше чем в Ubuntu. Но консольных утилит полностью хватает. Если у вас остались вопросы, спрашивайте в комментариях!

RPM (RedHat Package Manager) - самая популярная утилита управления пакетами для систем на базе RedHat , таких как RHEL , CentOS , Fedora . Инструмент позволяет системным администраторам и пользователям устанавливать, обновлять, удалять, запрашивать, проверять и управлять пакетами системного программного обеспечения в операционных системах Unix/Linux . Менеджер пакетов RPM хранит информацию об установленных в системе приложениях в свой базе данных /var/lib/rpm . Сами.rpm файлы содержат скомпилированные версии программного обеспечения, библиотеки необходимые для их работы, а так-же актуальную информацию об источниках пакетов, версиях и зависимостях. RPM не может управлять программным обеспечением скомпилированным и установленным из исходных кодов.

По сути RPM работает в нескольких режимах. Запросы и проверки:

  • rpm {-q|--query}
  • rpm {-V|--verify}
Установка, обновление, удаление пакетов:
  • rpm {-i|--install} PACKAGE_FILE ...
  • rpm {-U|--upgrade} PACKAGE_FILE ...
  • rpm {-F|--freshen} PACKAGE_FILE ...
  • rpm {-e|--erase} [--allmatches] [--justdb] [--nodeps] [--noscripts][--notriggers] [--test] PACKAGE_NAME ...

1. Проверить gpg подпись rpm пакета

Желательно всегда проверять gpg подпись пакета перед его установкой что-бы удостовериться в его подлинности. # rpm --checksig pidgin-2.7.9-5.el6.2.i686.rpm pidgin-2.7.9-5.el6.2.i686.rpm: rsa sha1 (md5) pgp md5 OK

2. Установка rpm пакета

Для установки rpm пакета используется ключ -i : # rpm -ivh pidgin-2.7.9-5.el6.2.i686.rpm Preparing... ########################################### 1:pidgin ########################################### -i : Установить пакет -v : показать отладочную информацию -h : выводить хэш-меток при установке

3. Проверить зависимости rpm пакета перед установкой

Посмотреть список зависимостей пакета можно так: # rpm -qpR htop-2.0.2-2.fc26.aarch64.rpm ld-linux-aarch64.so.1()(64bit) ld-linux-aarch64.so.1(GLIBC_2.17)(64bit) libc.so.6()(64bit) libc.so.6(GLIBC_2.17)(64bit) libm.so.6()(64bit) libm.so.6(GLIBC_2.17)(64bit) libncursesw.so.6()(64bit) libtinfo.so.6()(64bit) rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(PayloadIsXz) <= 5.2-1 rtld(GNU_HASH) -q : выполнить запрос -p | --package : запросить информацию -R : опция режима query, список зависимостей пакета

4. Rpm, установка пакетов без зависимостей

Если вы уверены что все необходимые зависимости установлены, а rpm ругается и не дает установить пакет, можно игнорировать установку зависимостей с помощью флага --nodeps : # rpm -ivh --nodeps BitTorrent-5.2.2-1-Python2.4.noarch.rpm Preparing... ########################################### 1:BitTorrent ########################################### Вышеприведенная команда принудительно установит пакет, не смотря на ошибки rpm . Учтите, что если окажется что зависимости все таки отсутствуют в системе, установленная программа работать не будет и нужно будет отдельно установить необходимые зависимости.

5. Rpm, проверить установленный пакет

Что-бы проверить установлен пакет или нет, нужно выполнить запрос нужного пакета: пакет htop установлен # rpm -q htop htop-2.0.2-1.el7.x86_64 пакет fake не установлен # rpm -q fake package fake is not installed

6. Rpm, список файлов установленного пакета

Список файлов установленного пакета можно получить запросом -ql (query list ): # rpm -ql htop /usr/bin/htop /usr/share/doc/htop-2.0.2 /usr/share/doc/htop-2.0.2/AUTHORS /usr/share/doc/htop-2.0.2/COPYING /usr/share/doc/htop-2.0.2/ChangeLog /usr/share/doc/htop-2.0.2/README /usr/share/man/man1/htop.1.gz /usr/share/pixmaps/htop.png

7. Rpm, список последних установленных пакетов

# rpm -qa --last htop-2.0.2-1.el7.x86_64 Sat 03 Jun 2017 06:20:07 PM MSK

8. Rpm, вывести список всех установленных пакетов

Что-бы получить список всех установленных в системе пакетов, нужно выполнить запрос -qa без дополнительных параметров # rpm -qa perl-HTML-Parser-3.71-4.el7.x86_64 dracut-network-033-463.el7.x86_64 filesystem-3.2-21.el7.x86_64 ..................... список пакетов будет довольно большим, для постраничного вывода можно использовать такие утилиты как more или less : # rpm -qa | more

9. Обновление rpm пакета

Для обновления любого rpm пакета используется опция -U (upgrade ). Данная опция не только делает обновление любого пакета до последней версии, но и создает резервную копию старой версии пакета. Если после обновления что-то пойдет не так и программное обеспечение не заработает, можно будет вернуться на ранее установленную и заведомо рабочую версию. # rpm -Uvh nx-3.5.0-2.el6.centos.i686.rpm Preparing... ########################################### 1:nx ###########################################

10. Удаление rpm пакета

Для удаления пакета предназначена опция -e (erase ), опция vv используется для более подробного вывода отладочных сообщений: # rpm -evv nx

11. Удаление rpm пакета без зависимостей

Параметр --nodeps принудительно удаляет пакет rpm из системы. Имейте в виду, что удаление определенного пакета может нарушить работу других рабочих приложений. # rpm -ev --nodeps htop

12. Rpm, запросить файл принадлежащий пакету

Если понадобилось узнать какому пакету принадлежит конкретный файл, используется опция -qf (query file ): # rpm -qf /etc/my.cnf mariadb-libs-5.5.52-1.el7.x86_64

13. Rpm, получить информацию об установленном пакете

Что-бы получить развернутую информацию об установленном пакете, используется опция -qi (query info ): # rpm -qi htop Name: htop Version: 2.0.2 Release: 1.el7 Architecture: x86_64 Install Date: Sun 04 Jun 2017 10:20:51 AM MSK Group: Applications/System Size: 212139 License: GPL+ Signature: RSA/SHA256, Sun 24 Jul 2016 09:22:13 PM MSK, Key ID 6a2faea2352c64e5 Source RPM: htop-2.0.2-1.el7.src.rpm Build Date: Sun 24 Jul 2016 01:01:34 PM MSK Build Host: buildvm-26.phx2.fedoraproject.org Relocations: (not relocatable) Packager: Fedora Project Vendor: Fedora Project URL: http://hisham.hm/htop/ Summary: Interactive process viewer Description: htop is an interactive text-mode process viewer for Linux, similar to top(1).

14. Rpm, получить информацию о пакета который еще не установлен

Что-бы получить информацию о пакете который уже скачан, но еще не установлен, можно запросом -qip (query info package ): rpm -qip ./pachage_name.rpm

15. Rpm, посмотреть файлы документации определенного пакета

Запрос -qdf (query document file ) выведет список всех файлов документации пакета: # rpm -qdf /usr/bin/htop /usr/share/doc/htop-2.0.2/AUTHORS /usr/share/doc/htop-2.0.2/COPYING /usr/share/doc/htop-2.0.2/ChangeLog /usr/share/doc/htop-2.0.2/README /usr/share/man/man1/htop.1.gz

16. Проверка определенного rpm пакета

При проверке пакета сравнивается информацию об установленных файлах пакета с базой данных rpm . # rpm -Vp sqlbuddy-1.3.3-1.noarch.rpm S.5....T. c /etc/httpd/conf.d/sqlbuddy.conf

17. Проверка всех rpm пакетов

# rpm -Va S.5....T. c /etc/rc.d/rc.local .......T. c /etc/dnsmasq.conf .......T. /etc/ld.so.conf.d/kernel-2.6.32-279.5.2.el6.i686.conf

18. Импорт GPG ключа

Для проверки пакетов RHEL/CentOS/Fedora , нужно импортировать GPG ключ. Для этого выполните следующую команду: # rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

19. Rpm, посмотреть все импортированные ключи

# rpm -qa gpg-pubkey* gpg-pubkey-7bd9bf62-5762b5f8 gpg-pubkey-352c64e5-52ae6884 gpg-pubkey-f4a80eb5-53a7ff4b gpg-pubkey-810f8996-552b1d92

20. Перестроить поврежденную базу данных rpm

Иногда база данных rpm может быть повреждена, при этом rpm не может нормально функционировать. Если подобное случилось, нужно перестроить базу данных rpm : # cd /var/lib/rpm # rm -f __db.* # rpm --rebuilddb Ну и как обычно: # man rpm Удачи

В этой статье мы покажем вам, как вы можете установить RPM пакеты на Ubuntu. Система Ubuntu на базе Debian и на базе RedHat такая как CentOS, в основном аналогичны по своей конструкции. Тем не менее, есть несколько различий здесь и там. Например, система RedHat на основе использование.rpm файлов для представления пакетов программного обеспечения, в то время как система Debian на основе использование файлов.deb. Эти типы файлов отличаются друг от друга по своей конструкции, и не могут быть установлены за пределами их соответствующего типа операционных систем (например, установка файла.deb на , или установка файла.rpm на Ubuntu). Тем не менее, есть способы импорта этих пакетов для других типов систем.

Есть два способа установки пакета RPM: либо путь преобразования файла.rpm в файл.deb, или путем непосредственно установки файла.rpm. Оба метода довольно просты, но установка RPM пакетов в системе может привести к некоторым проблемам, в зависимости от устанавливаемого программного обеспечения (более подробно об этом внизу).

1. Добавьте репозитория Universe

Для первого способа вам понадобится пакет программного обеспечения под названием «Alien», который является программным обеспечением, предназначенным для преобразования файлов.rpm в файлы.deb. Для того, чтобы установить Alien, вам нужно будет добавить репозиторий программного обеспечения под названием «Universe». Откройте терминал и введите:

Sudo add-apt-repository universe

2. Обновление apt-get

Введите пароль учетной записи пользователя, когда терминал предложит вам сделать это. Теперь вам необходимо обновить apt-get для того, чтобы хранилищем можно было воспользоваться.

Sudo apt-get update

3. Установите пакет Alien

Sudo apt-get install alien

4. Преобразование.rpm в.deb

После установки, убедитесь, что пакет программного обеспечения вы загрузили файл.rpm. Перейдите в папку, где находится файл.rpm. Если у вас есть готовый файл.rpm, просто запустите следующую команду:

Sudo alien .rpm

5. Установите преобразованного пакета

Это может занять некоторое время файл для преобразования. Как только это будет сделано, установите файл, обычно с помощью DPKG:

Sudo dpkg -i .deb

Он должен установиться как обычный файл.deb. Теперь вы можете использовать только что установленное программное.

6. Установка пакета RPM непосредственно на систему

Для другого метода, Alien также программное обеспечение, используемое для установки RPM пакетов непосредственно на систему. Просто запустите следующую команду, в той же папке, что и пакет RPM, который вы хотите установить.

Sudo alien -i .rpm

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

Возможные проблемы

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

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

Статья рассказывает об основных методах установки нового ПО в существующую Linux-систему. Хотя упоминаемые в ней версии дистрибутивов и соответствующих утилит уже несколько устарели, базовые принципы управления программными пакетами остались практически неизменными.

[Соколов Роман (romanso AT rt.mipt.ru)]

Установка программных пакетов в Linux для начинающих

Два способа установки ПО.

Необходимость в установке новых программных пакетов под LINUX возникает в двух основных случаях:
  • когда появляется новая версия одного из уже установленных у Вас пакетов;
  • когда возникает необходимость использования какой-то пакета, еще не установленного в системе.
Во втором случае это может быть один из пакетов, имеющихся на Вашем установочном диске, но не установленный в процессе инсталляции. Однако чаще всего новое ПО Вы будете находить в Интернет, тем более, что значительная часть этого ПО бесплатное или условно бесплатное. Как бы то ни было, но рано или поздно Вы все равно окажетесь перед необходимостью установить новый пакет.

Существует две основных формы распространения ПО для LINUX: в исходных текстах и в виде исполняемых модулей. И в том и в другом случае пакет ПО может поставляться либо в виде tar-gz архива, либо в виде rpm-пакета.

Проще всего установить ПО, представленное в виде rpm-пакета, содержащего исполняемые файлы, этот способ и рассмотрим первым. Отметим только, что для инсталляции новых пакетов Вы должны войти в систему как пользователь root.

Программа rpm.

Название этой программы (или команды) является аббревиатурой от Redhat Package Manager. Такая расшифровка дается в большинстве книг и руководств по Линукс и кажется мне более правильной и логичной, хотя в главе 6 "The Official Red Hat Linux Reference Guide" говорится: "The RPM Package Manager (RPM), is an open packaging system available for any-one to use, and works on Red Hat Linux as well as other Linux and UNIX systems".

Программа rpm в некотором смысле аналогична программам типа setup wizard для MS Windows. Преимуществом использования этой программы по сравнению с установкой tar-gz архивов является то, что она автоматически проделает все необходимые действия по установке ПО: создаст необходимые каталоги, распределит по ним файлы, создаст ссылки. Кроме того, она может быть использована не только для установки нового пакета, но и для обновления версий ПО, получения перечней установленного ПО и проверки установки, а также для деинсталляции отдельных пакетов (например, если после периода пробной работы с программой Вы решили отказаться от ее дальнейшего использования). С помощью той же программы rpm можно самому создать пакет формата rpm, однако для начинающих лучше, наверное, этим не заниматься, а воспользоваться готовыми rpm-пакетами.

rpm-пакеты - это специальным образом подготовленные архивы, предназначенные для обработки программой rpm. Название rpm-пакетов оканчивается на суффикс.rpm, например, xzip-180-1.i386.rpm или xzip-180-1.src.rpm. Как видите, перед суффиксом.rpm стоит еще один суффикс. Если это.i386 или.i586, то в пакете находятся исполняемые файлы, а если этот суффикс.src, - то в пакете исходные тексты, которые после установки еще надо скомпилировать. Обычно и на установочных компакт-дисках и в Интернет-каталогах rpm-пакеты с исполняемыми файлами располагаются в каталогах с названием RPMS, а rpm-пакеты с исходными текстами - в подкаталогах SRPMS.

В Интернет rpm-пакеты можно найти на различных серверах. По моему опыту наиболее удобным сервером в Интернет для поиска rpm-архивов является сервер http://rufus.w3.org . На нем установлена поисковая система, которая позволяет упорядочивать список пакетов наиболее удобным для Вас способом:

  • по именам пакетов;
  • по дистрибутивам;
  • по группам приложений;
  • по датам;
  • по поставщикам (производителям) ПО.
Общий объем архива rpm-пакетов на этом сервере составляет более 66 Гигабайт. Очень богатые архивы хранят также два ftp-сервера в России: ftp://ftp.chg.ru/pub/Linux и ftp://ftp.nc.orc.ru/

Необходимо только заметить, что если для перекачки пакетов из Интернет Вы используете компьютер, работающий под Windows, то все имена пакетов у Вас будут, скорее всего, искажены. Дело в том, что Windows "не любит" имена, в которых несколько точек (например, glib-1.0.6-3.i386.rpm и заменит "лишние", по его мнению, точки на подчеркивания - glib-1_0_6-3_i386.rpm). Так что после получения пакета (при переносе его на ПК с ОС Linux) надо эти "исправления" устранить, вернувшись к UNIX-вым именам.

Итак, Вы нашли и скачали rpm-архив с исполняемой версией нужного Вам пакета. Если Вы ставите совершенно новый пакет (у Вас не было на компьютере предыдущих версий этого ПО), то для установки пакета из этого архива достаточно перейти в тот каталог, где находится архив, и дать команду (для самых нетерпеливых: не спешите выполнять эту рекомендацию, прочитайте еще хотя бы пару абзацев)

Rpm -i имя_rpm-архива Если у Вас была установлена предыдущая версия пакета, то в простейшем случае надо дать команду следующего формата: rpm -U --force имя_rpm-архива Здесь параметр -U говорит программе, что надо произвести обновление (upgrade) пакета, а опция --force требует безусловно (и без лишних вопросов) обновить все входящие в пакет файлы. Заметьте, что это очень сильное требование, и в некоторых случаях может быть лучше сохранить какие-то (например, конфигурационные) файлы от предыдущей версии. Если установка проходит нормально, и никаких дополнительных сообщений не появляется, то после завершения работы программы (после появления приглашения shell) Вы можете пользоваться вновь установленным пакетом.

К сожалению не всегда все так просто. Приведу конкретный пример. У меня был установлен RedHat Linux версии 5.2, причем программа Midnight Commander (mc) была версии 4.1.36. На ftp-сервере я увидел версию 4.5.30 этой программы (пакет mc-4.5.30-12.i386.rpm) и, естественно, решил ее поставить. Однако оказалось, что для этого необходимо, чтобы были установлены еще 4 других пакета, о чем rpm мне и сообщила:

Ошибка: неудовлетворенные зависимости: redhat-logos нужен для mc-4.5.30-12 libglib-1.2.so .0 нужен для mc-4.5.30-12 libc.so.6(GLIBC_2.1) нужен для mc-4.5.30-12 libc.so.6(GLIBC_2.0) нужен для mc-4.5.30-12 Это и не удивительно, если Вы вспомните, что и при первоначальной установке Linux программа инсталляции тоже проверяла взаимозависимости пакетов и предлагала установить недостающие. Однако в случае инсталляции все необходимые пакеты находятся на том же диске, а здесь мне пришлось вначале поискать нужные пакеты. Два пакета (redhat-logos-1.0.5-1.noarch.rpm и glibc-2.1.1-6.i386.rpm) я нашел без труда, после чего rpm перестала просить и GLIBC_2.0. А вот с libglib.so .1 вышло сложнее. Во-первых я никак не мог найти пакета с таким названием. Как оказалось, такого пакета и не существует, файл libglib.so .1 входит в состав пакета glib-1.0.6-3.i386.rpm. Пока я это выяснил, я узнал также, что чтобы выяснить, какие файлы установит тот или иной пакет, надо дать команду rpm -qpl имя_rpm-архива а для получения информации о пакете - команду rpm -qpi имя_rpm-архива Дело в том, что файлы RPM кроме собственно архива файлов содержат информацию о пакете, включая имя, версию и краткое описание. С помощью той же программы rpm Вы можете просмотреть эту дополнительную информацию. Например, для пакета glib-1.0.6-3.i386.rpm получим следующие результаты: rpm -qpi glib-1.0.6-3.i386.rpm Вывод будет примерно таким: Name: glib Relocations: (not relocateable) Version: 1.0.6 Vendor: Red Hat Software Release: 3 Build Date: Суб 10 Окт 1998 04:49:03 Install date: (not installed) Build Host: porky.redhat.com Group: Libraries Source RPM: glib-1.0.6-3.i386.rpm Size: 55305 Packager: Red Hat Software < [email protected] > Summary: Handy library of utility functions Description: Handy library of utility functions. Development libs and headers are in gtk+-devel. Если дать команду: rpm -qpl glib-1.0.6-3.i386.rpm будет выдан список входящих в пакет файлов с указанием того, куда они будут установлены: /usr/lib/libglib.so.1 /usr/lib/libglib.so.1.0.6 RPM также предоставляет мощную систему запросов по установленным в системе пакетам. По команде rpm -qа Вы получите перечень всех установленных в системе пакетов (перечень будет очень большим, так что лучше сразу направить вывод в фильтр more). Вы можете искать информацию об отдельном пакете или об отдельных файлах. Например, Вы можете легко найти, какому пакету принадлежит файл и откуда появился: rpm -qf /etc/bashrc bash-1.14.7-16. Если Вы беспокоитесь о том, что случайно удалили важный файл из установленного пакета, просто проверьте это: rpm -Va Вы будете оповещены об любых аномалиях. Потом можно переустановить пакет, если это необходимо. Любые конфигурационные файлы будут сохранены.

RPM это очень полезная утилита, и, как Вы видите, имеет различные опции. Я привел только несколько примеров. Всего rpm имеет 16 основных режимов работы, которые имеет смысл объединить в 6 групп (после двоеточия приводится формат команды для соответствующего режима):

Запросы: Запрос: rpm [--query] Показать метки запросов (Querytags) : rpm [--querytags] Установка и поддержка установленных пакетов: Установка: rpm [--install] + Обновление: rpm [--freshen|-F] + Деинсталляция: rpm [--uninstall|-e] + Проверка: rpm [--verify|-V] + Подписи (пакеты подписываются электронной цифровой подписью в формате PGP, с целью обеспечения неизменяемости и сохранения авторства пакетов): Проверка подписи: rpm [--verify|-V] + Переподписывание: rpm [--resign] + Добавление подписи: rpm [--addsign] + Работа с базой: Инициализация базы: rpm -i [--initdb] Rebuild Database: rpm -i [--rebuilddb] Создание rpm-пакетов: Создать пакет: rpm [-b|t] + Перекомпилировать пакет: rpm [--rebuild] + Build Package from Tarball: rpm [--tarbuild] + Разное: Показать конфигурацию программы rpm: rpm [--showrc] Задать пользователей: rpm [--setperms] + Задать группы: rpm [--setgids] + Более подробное описание команды rpm Вы можете найти в RPM-HOWTO, страницах man и info. Здесь оно не приводится, в основном потому, что в графических режимах существуют несколько более удобные и "человечные" программы для управления установленным в системе ПО и процессами его обновления, которые и будут рассмотрены в следующих подразделах.

Примечание:

Я пользовался третьей версией RPM. В настоящее время существует уже версия 4, однако в списке рассылки blackcat-list промелькнуло такое сообщение:

> Кто-либо имеет опыт установки rpm 4.x? > Хотелось бы установить пакеты из состава дистрибутива Red Hat 7.0. Сам пан Каневский;-) не советовал ставить 4.х rpm-3.0.5-9.6x понимает структуру 4.х и ставит 4.х пакеты

Установка ПО из исходных текстов

В некоторых случаях исполняемые модули приложений могут поставляться и в виде tar-gz-архивов. В таком случае установка приложения только немного сложнее, чем в случае установки из rpm-пакета: необходимо просто развернуть архив и чаще всего можно уже запускать полученное приложение. Немного сложнее установить приложение, если оно поставляется в исходных текстах. Этот случай и рассмотрим в настоящем разделе.

Необходимые сведения о программировании на языке Си

Начать стоит с того, что операционная система UNIX родилась на свет одновременно с языком программирования C (Си). Более того, язык C был создан специально для разработки этой ОС, значительная часть UNIX была написана на языке С. ОС Linux тоже написана на Си. Поэтому, а также в соответствии с принципом свободного распространения исходных кодов, многие приложения для Линукс распространяются в виде текстов на С. Естественно, что для того, чтобы такое приложение установить в систему и запустить на исполнение, его необходимо скомпилировать. Для выполнения процедур компиляции обычно используется программа gcc (хотя существуют и некоторые альтернативные разработки).

GNU-компилятор с языка С gcc, содержит в себе 4 основных компонента, соответствующие четырем этапам преобразования исходного кода в исполняемую программу. Первый компонент - это препроцессор, который модифицирует исходный код программы перед компиляцией в соответствии с командами препроцессора, содержащимися в С-программе. В соответствии с этими командами выполняются простые подстановки текста. Второй - собственно компилятор, который обрабатывает исходный код и преобразует его в код на языке ассемблера. Третий компонент - ассемблер, который генерирует объектный код. И, наконец, четвертый компонент - компоновщик, который собирает исполняемый файл из файлов объектного кода. Дело в том, что большие программы обычно пишутся по-частям, в виде множества отдельных файлов, содержащих исходный код соответствующей части. Компилятор обрабатывает каждый такой файл отдельно и создает отдельные объектные модули (файлы таких модулей обычно имеют расширение.o). Создание единой исполняемой программы из таких модулей и является задачей компоновщика. При таком подходе, если в какой-то модуль программист вносит исправление, нет необходимости заново компилировать всю программу: достаточно откомпилировать исправленный модуль и заново запустить компоновщик.

Для выполнения стандартных операций программист может использовать функции из стандартных библиотек. Самый характерный пример - это библиотека libc, которая содержит функции, выполняющие такие задачи, как управление памятью и операции ввода-вывода. Программисты могут создать свои собственные библиотеки и использовать их при написании новых программ.

Библиотеки бывают статическими, разделяемыми и динамическими. Статическая библиотека - это библиотека, код которой встраивается в программу при компиляции. Код разделяемой библиотеки не встраивается в программу, а загружается в память одновременно с программой и программа получает доступ к функциям этой библиотеки. Динамические библиотеки - разновидность разделяемых, только библиотечные функции загружаются в память только тогда, когда из программы поступит вызов соответствующей функции. В процессе выполнения программы они могут выгружаться и заменяться другими функциями из той же или другой библиотеки. Имена статических библиотек обычно имеют суффикс.a, а имена разделяемых библиотек - суффикс.so, за которым следует старший и младший номера версии. Имя может быть любой строкой, которая однозначно характеризует библиотеку. Обычно имена библиотек начинаются с lib. Примеры: libm.so.5 - общая математическая библиотека, libX11.so .6 - библиотека для работы с системой X Window. Библиотека libc.so.5 компонуется автоматически, в то время как большинство других библиотек необходимо явно указывать в командной строке при вызове программы gcc. Это делается через опцию -l за которой следует уникальная часть имени библиотеки, например, для вызова математической библиотеки достаточно указать -lm.

Многие системные библиотеки располагаются в системных каталогах, например, в /usr/lib/ и /lib/, но некоторые могут располагаться и в других каталогах. Список этих каталогов помещается в файл /etc/ld.so.conf. Каждый раз, когда разделяемая библиотека изменяется или инсталлируется вновь, нужно выполнять команду ldconfig, чтобы обновить файл /etc/ld.so.conf, а также ссылки на него. Если библиотека инсталлируется из RPM-пакета, это обычно делается автоматически, хотя и не всегда.

При компиляции больших программ, использующих фрагменты исходного кода, расположенные в разных файлах, бывает очень трудно отследить, какие файлы нужно перекомпилировать, а какие только компоновать. В таких случаях очень помогает утилита make, которая автоматически определяет, следует ли компилировать файл исходного кода, по дате его последней модификации. Утилита make оперирует файлами, исходя из их зависимости друг от друга. Эти зависимости определяются файлом с именем makefile. Строка файла makefile состоит из трех частей: имени целевого файла, списка файлов, от которых он зависит, и команды. Если какой-либо файл из списка изменился после целевого файла, то выполняется указанная в строке команда. В строке может быть указано несколько команд. Обычно команда - это вызов компилятора для компиляции файла исходного кода или компоновки файлов объектного кода. Строки, определяющие зависимости, отделяются друг от друга пустой строкой.

Инсталляция пакетов ПО из исходных текстов

Теперь, когда мы получили первое впечатление о том, как осуществляется компиляция программ на языке С, можно перейти к рассмотрению того, как обращаться с пакетами программ, распространяемыми в виде исходных кодов. Первое, что надо сказать в этой связи, это то, что для установки таких пакетов Вы, естественно, должны иметь в своей системе утилиты gcc и make.

Непосредственно процесс инсталляции пакета состоит из следующих шагов:

  1. Перейти (с помощью команды `cd") в каталог, содержащий исходные коды устанавливаемого пакета.
  2. Выполнить команду `./configure", которая осуществляет конфигурирование пакета в соответствии с Вашей системой. Процесс выполнения этой команды занимает довольно длительное время, причем команда выдает на экран сообщения, сообщающие, какие именно особенности системы испытываются.
  3. Выполнить команду `make", для того, чтобы скомпилировать пакет.
  4. После этого можно выполнить (это шаг не является обязательным) команду `make check", которая вызывает запуск процедур самотестирования, которые поставляются с пакетом.
  5. Выполнить команду `make install" для установки программ, а также файлов данных и документации.
  6. Заключительный этап состоит в выполнении команды `make clean", которая удаляет промежуточные объектные и двоичные файлы из каталога с исходными кодами. Для удаления временных файлов, которые создала команда `configure" (после чего пакет можно компилировать для другого типа компьютеров), надо выполнить команду `make distclean".
В большинстве случаев выполнение этой последовательности команд достаточно для установки нового пакета.

Сколько осталось места на диске

При установке новых пакетов очень часто возникает одна проблема, хорошо знакомая всем пользователям компьютеров: недостаток дискового пространства. Поэтому перед установкой нового пакета надо вначале ответить на вопрос о том, достаточно ли места на диске для размещения данного ПО?

Программа rpm позволяет определить, сколько места потребуется для установки пакета: для этого надо дать запрос вида rpm -qpi имя_пакета и в строке Size будет выдано, сколько байт займет пакет. Осталось узнать, есть ли столько свободного места на диске.

Для определения обьема свободного пространства на диске Вы можете воспользоваться командой df. Если дать эту команду без аргументов, то она сообщит каков объем дискового пространства во всех смонтированных файловых системах, сколько используется и сколько еще свободно. Единицей измерения при этом служит 1 килобайтный блок. Если Вы хотите получить сведения об объеме свободного пространства в более привычных мегабайтах, дайте команду с параметром -h:

Df -h Сведения о количестве свободного пространства на конкретном диске можно получить, если задать в качестве параметра имя файла устройства: df -h /dev/hda2 Если вместо имени файла устройства указать полное (с указанием пути) имя произвольного файла или каталога, то Вы получите данные о количестве используемого и свободного места в файловой системе, содержащей указанный файл (каталог).

Если место еще есть, то можно перейти к установке пакета. Хуже владельцам компьютеров с дисками маленького объема: тут каждый раз надо думать, как бы освободить место для новой программы, другими словами, что уже можно с диска удалить. Удалять можно отдельные файлы, но, конечно, с точки зрения освобождения пространства, эффективнее удалять целыми каталогами или пакетами.

Файлы (каталоги) удаляются в том случае, если они (размещенные в них файлы) Вам более не нужны. Естественно, что для удаления выбираются каталоги (или файлы) самого большого обьема и тут оказывается полезной команда du (disc usage).

Команда du позволяет узнать, сколько места занимает конкретный файл или подкаталог. Для этого надо дать команду следующего формата (в примере мы узнаем объем каталога /usr/lib)

Du -ks /usr/lib Результатом выполнения данной команды будет примерно такая строка 91418 /usr/lib которая означает, что каталог /usr/lib занимает 91418 килобайт (опция k указывает, что объем должен выдаваться в килобайтах). Опция s задана для того, чтобы выводился только суммарный объем каталога. Если Вы ее опустите, то получите данные об объеме каждого подкаталога и файла в указанном каталоге, а это очень много информации. Впрочем, последней строкой все равно будет выведен суммарный объем каталога, так что если Вас завораживает мелькание строк на экране, можете доставить себе это маленькое удовольствие.

Если маленькую s заменить на большую S, то выводиться будет только информация об объеме подкаталогов (но не файлов), что иногда тоже полезно. О других опциях указанных команд Вы можете узнать на соответствующих man-страницах или по команде info.

Теперь Вы знаете, как определить сколько места займет на диске устанавливаемый пакет и каков объем свободного пространства на диске. Рассмотрим, что можно сделать, если свободного места не достаточно. Надо заметить, что при стандартной инсталляции ОС Linux на диске образуется большое количество файлов, которые Вам вообще никогда не понадобятся. В то же время довольно трудно в огромной массе файлов найти те, которые Вам не нужны (тем более, что они спрятаны глубоко в дебрях структуры каталогов). Поэтому я расскажу вкратце о своем опыте поиска ненужных файлов, надеясь, что этот опыт окажется полезен читателю.

Освобождение дискового пространства

Однажды мне пришлось устанавливать Линукс (Black Cat 6.0) на 486-ой компьютер с жестким диском объемом 350 Мбайт. Хотя при установке я старался выбрать минимально возможную конфигурацию ПО, все равно после завершения установки диск оказался заполнен более чем на 90 %. Перечислю вкратце те действия, которые позволили мне освободить достаточно места на диске для установки новых пакетов.
  1. Первым делом стоит подумать об удалении части пакетов ПО, установленных при инсталляции системы. Для того, чтобы решить, какой пакет или пакеты можно удалить, дайте команду: >rpm -qa --queryformat "%15{SIZE} %{NAME}\n" | sort -nr %rpm -q -a > packages Полученный файл packages будет содержать список всех установленных в системе пакетов ПО. Этот список можно проанализировать с целью выявления ненужных Вам пакетов и удалить таковые с помощью команды rpm с параметром -e. При этом будут удалены все созданные при инсталляции пакета файлы и каталоги. Этот способ самый безопасный, поскольку программа rpm предварительно проверит, не используется ли данный пакет какой-либо другой программой, и при наличии такой зависимости выдаст соответствующее предупреждение, а удалять что-либо откажется.

    У меня, например, в полученном таким образом файле packages встретилось упоминание пакета AfterStep-APPS-990329-2. Выполнив команду:

    % rpm -qi AfterStep-APPS выяснил, что этот пакет содержит некие апплеты к оконному менеджеру AfterStep. Поскольку такой менеджер не использовал, удалил этот пакет, а также и сам пакет AfterStep, с помощью команд: % rpm -e AfterStep % rpm -e AfterStep-APPS Это освободило около 5800 Кбайт (отмечу только, что удаление пакетов надо выполнять с правами root-а). Воспользовавшись таким приемом Вы можете удалить все пакеты, которые не используете. Я, например, удалил такие пакеты, как gnome-core, gnome-libs, gnome-audio, поскольку в качестве графической среды использую не Gnome, а KDE. Отмечу, что когда я попытался удалить gnome-core, rpm отказалась это сделать, сообщив, что часть этого пакета используется пакетом xmms-gnome. Еще больше неудовлетворенных зависимостей образуется при попытке удалить gnome-libs. Однако поскольку все упоминавшиеся в этих сообщениях пакеты так или иначе были связаны с Gnome, я рискнул удалить их все, а также другие пакеты, которые были с ними связаны. В результате освободилось около 7800 Кбайт дискового пространства.

  2. Заглянув в каталог /usr/man, я обнаружил два подкаталога со страницами руководства man на французском и испанском языках. После их удаления освободилось около 100 Кбайт.
  3. В каталоге /usr/lib/kbd/keymaps можно, по-видимому, удалить подкаталоги, в которых хранятся таблицы раскладок клавиатуры, предназначенные для других типов микропроцессоров, а в /usr/lib/kbd/keymaps/i386 -подкаталоги для раскладок, отличных от qwerty.

    Аналогичным образом удаляются раскладки клавиатуры для различных языков, которыми Вы не пользуетесь (зачем мне китайский или тайский, я не знаю на них ни одного слова!). Эти шрифты расположены в каталоге /usr/lib/kbd/keymaps/i386/qwerty.

    Можно попробовать удалить ненужные фонты из /usr/lib/kbd/consolefonts, однако если в начале таблицы раскладки клавиатуры указывается, для какого языка она служит, то о назначении файла фонта приходиться судить по его названию.

    Поскольку по умолчанию в системе устанавливаются средства локализации для различных стран (которые Вам, по-видимому, не потребуются), то можно удалить из каталога /usr/share/locale все подкаталоги, соответствующие не нужным Вам языкам. Всего там около 16 мегабайт, так что удаление ненужного может дать около 15 мегабайт освобожденного пространства. Еще более 2 мегабайт может дать очистка каталогов /usr/share/i18n/locales и /usr/share/i18n/charmaps

  4. В каталоге /usr/share/doc/HTML/ имеются подкаталоги с документацией на разных языках, значительная часть которой Вам, по-видимому, не нужна. Я оставил в этом каталоге только три подкаталога en, ru default, причем последний является просто ссылкой на подкаталог en, так что фактически там только 2 подкаталога осталось. Удаление этой документации освободило около 500 Кбайт.


Рекомендуем почитать

Наверх