Основы использования RPM
RPM ( Red Hat Package Manager — менеджер пакетов Red Hat) обозначает две вещи: формат пакетов программного обеспечения и программное обеспечение, созданное для управления этими пакетами. Изначально разрабатываясь компанией Red Hat для Red Hat Linux, RPM стал использоваться во многих дистрибутивах GNU/Linux и был портирован на другие операционные системы: Novell NetWare (с версии 6.5 SP3), IBM AIX (с версии 5) и прочие. И конечно RPM используется в Fedora на которой базируется Red Hat Enterprise Linux. #Достоинства RPM: ##Обновляемость:## C помощью RPM вы можете обновлять как индивидуальные компоненты вашей системы, так и всю систему без переустановки. RPM обеспечивает интеллектуальный, полностью автоматический способ обновления вашей системы и установки пакетов. RPM остлеживает отдельно конфигурационные файлы и документацию в пакетах и предоставляет возможности по установке/обновлению всех частей пакета отдельно. ##Мощное средство запросов:## RPM создан с мощным интерфейсом для обработки запросов. Вы можете искать во всей базе пакетов или в некоторых файлах. Вы можете легко найти какому пакету принадлежит какой файл и откуда взялся этот пакет. Вы можете запрашивать как базу установленных пакетов так и отдельный .rpm файл, поскольку его заголовок содержит всю необходимую информацию о его содержимом. ##Проверка системы:## RPM предоставляет возможности для проверки целостности всей системы и отдельных пакетов. Если у вас возникли любые сомнения касательно любого пакета (например вы сомневаетесь, не удалили ли вы нужный файл) - вы можете проверить целостность пакета. RPM позволяет производить проверку зависимостей, контрольных сумм файлов, прав доступа, размера и т.д. для всех установленных в системе пакетов. ##Сохранение исходников:## Одно из достоинств RPM - сохранение оригинальных исходников распространяемых создателями программы. Исходники RPM пакета (.src.rpm) содержат исходные тексты программы, все патчи плюс полную инструкцию по сборке пакета. Для обновления RPM пакета, после выхода новой версии програмного обеспечения, вам достаточно заменить исходные коды и, возможно, исправить инструкции по сборке и указать RPM пересобрать данный пакет. #Использование RPM:# Пример обычного названия файла RPM пакета - foo-1.0-1.i386.rpm. Имя файла включает: имя программы (foo), версию (1.0), релиз пакета (1) и архитектуру (i386). Для установки/обновления пакета наберите следующую команду в командном интерпретаторе: rpm -Uvh foo-1.0-1.i386.rpm В случае если такой пакет такой-же (или младше) версии уже установлен то RPM сообщит об этом и отменит установку пакета. Далее у вас есть два пути: * Принудительный откат версии пакета (или перустановка текущей) осуществляется с опцией --oldpackage rpm -Uvh --oldpackage foo-1.0-1.i386.rpm * Переустановка пакета с заменой конфигурационных файлов осуществляется с опцией --replacefiles rpm -ivh --replacefiles foo-1.0-1.i386.rpm В случае наличия неразрешенных зависимостей rpm сообщит об этом: error: Failed dependencies: bar.so.2 is needed by foo-1.0-1 Suggested resolutions: bar-2.0.20-3.i386.rpm Для удаления пакетов используется ключ -e (erase): rpm -e foo Если от этого пакета зависят другие - RPM сообщит об этом и отменит удаление error: Failed dependencies: foo is needed by (installed) bar-2.0.20-3.i386.rpm Для принудительного удаления без контроля зависимостей используется опция --nodeps ##Запросы:## RPM хранит информацию о всех RPM пакетах установленных в вашей системе. Вся информация хранится в базе данных в /var/lib/rpm/. Для запроса к базе используйте ключ -q. Запрос rpm -q имя_пакета выведет название, версию и релиз установленного пакета, например: rpm -q foo foo-2.0-1 В запросе вы можете использовать опции выбора пакетов: * -a запрашивает все установленные пакеты * -f имяфайла - запрашивает пакет которому принадлежит файл. * -p имяпакета запрос к .rpm пакету (возможно не установленному) более подробный список смотрите в man rpm. Существует несколько способов настроить отображение выводимой информации о пакетах удовлетворяющих запросу, одним из них являются опции запроса * -i отображает информацию о пакете включая имя, описание, релиз, размер, дату сборки и прочую информацию. * -l отображает список файлов содержащихся в данном пакете * -s отображает состояние файлов в данном пакете * -d отображает список файлов помеченных как "документация" * -c отображает список файлов помеченных как "конфигурационные файлы" более подробный список смотрите в man rpm. Еще одним способом выбора отображаемой информации является опция --queryformat (--qf). После этой опции можно явно указать необходимый формат вывода содержащий произвольный формат и теги. Каждый тег указывает информацию которую необходимо извлечь из базы RPM и подставить на место тега при выводе результатов запроса. В следующем примере используются теги NAME, VERSION и RELEASE: rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}n' rpm rpm-2.3-1 Строку запроса рекомендуется оканчивать символом новой строки (n), иначе информация обо всех пакетах удовлетворяющих запросу будет выведена одной строкой. Полный список тегов (163 на момент написания статьи) поддерживаемых RPM доступен по rpm --querytagas. #Проверка целостности# При проверке целостности rpm сравнивает информацию о установленном пакете хранящуюся в базе данных с реальной информацией в системе. Помимо всего прочего проверка предусматривает сравнение размера, MD5 суммы, типа, владельца, и прав для каждого файла, а также зависимостей для каждого пакета. Команда rpm -V проверяет пакет. Для выбора пакетов вы можете использовать опции выбора пакетов: * -a проверяет все установленные пакеты * -f имя_файла - проверяет пакет которому принадлежит файл. * -p имя_пакета сравнивает установленный пакет и RPM пакет более подробный список смотрите в man rpm. Если проверка прошла успешно на экран ничего не выводится. Если обнаружены какие-либо несоответствия они будут отображены. Формат вывода состоит из 9 символов обозначающих разницу между существующим файлом и записью в RPM базе, пометки "c" для конфигурационных файлов и имени файла. Каждый из 9 символов обозначает результат сравнения атрибута с атрибутом хранящемся в базе RPM. Одиночная точка (.) обозначает, что тест прошел успешно. Следующие символы обозначают разницу в атрибутах: * 5 — MD5 сумма * S — размер файла * L — симлинк * T — время модификации файла * D — устройство * U — пользователь * G — группа * M — режим (включает права и тип файла) * ? — нечитаемый файл Если вы видите вывод у команды rpm -V вы можете решить, следует ли удалить или переустановить пакет для решения проблемы. Пример вывода rpm -V httpd S.5....T c /etc/httpd/conf/httpd.conf обозначает, что изменился размер, MD5 сумма и время модификации у конфигурационного файла httpd.conf с момента установки. Существуют различные опции проверки о которых можно узнать из man rpm. #Примеры использования RPM:# Предположим, вы случайно удалили некоторые файлы, или файлы оказались повреждены после ошибки файловой системы, для поиска удаленных файлов и проверки целостности вы можете использовать следующую команду: rpm -Va Узнать какому пакету принадлежит данный файл можно с помощью rpm -qf . rpm -qf /usr/bin/ggv ggv-2.6.0-2 Допустим у вас имеются проблемы с использованием /usr/bin/paste. Чтобы проверить пакет который владеет этим файлом и наличие зависимостей для него: rpm -Vf /usr/bin/paste Если вы хотите найти всю документацию по программе /usr/bin/free но не помните как называется пакет: rpm -qdf /usr/bin/free У вас есть .rpm файл но вы хотите подробнее узнать о его содержимом: rpm -qip crontabs-1.10-7.noarch.rpm Если вы хотите получить список файлов которые установит данный пакет: rpm -qip crontabs-1.10-7.noarch.rpm
Комментарии:
Нет комментариев.
Пожалуйста войдите или зарегистрируйтесь чтобы оставлять комментарии.