Контактная информация

По всем интересующим вас вопросам связывайтесь при помощи контактной информации приведенной на этой странице!

skype: metsof
email: accusser@gmail.com

В социальных сетях...

Форма обратной связи

Авторизация

Статьи об операционной системе Linux

Сайдбар

RPM. Управление пакетами программ в Linux от Red Hat.

21 янв. 2014

Команда rpm позволяет установить RPM-пакеты и управлять ими. Она помогает, в частности:
— в рамках установки автоматически вносить изменения в уже имеющиеся файлы (например, в сценарные файлы);
— заменить версию программы более новой версией (причем измененные файлы автоматически обновляются);
— снова удалить все файлы определенной программы;
— проверить, был ли изменен файл с момента установки пакета;
— определить, к какому пакету относится определенный файл.

Информация, необходимая при управлении, содержится в каждом RPM-пакете. При установке такая информация заносится в базу данных (файлы каталога /var/ lib/rpm).

Происхождение и обслуживание. Формат RPM первоначально разрабатывался для Red Hat. После того как в течение многих лет код поддерживался без энтузиазма, эта разработка раскололась на два самостоятельных проекта. Используемая в Fedora, Red Hat, SUSE и т. д. версия RPM 4.п теперь поддерживается и развивается под руководством Fedora и в кооперации с другими дистрибутивами в рамках проекта rpm.org (http://rpm.org/). Параллельно другая группа разработчиков занимается RPM 5.п (http://rpm5.org/). Однако эта версия в настоящее время применяется лишь в немногих относительно небольших дистрибутивах.

Основы



Большинство RPM-пакетов предоставляются в двух вариантах: в виде двоичного пакета и в виде пакета с исходным кодом. Двоичный пакет содержит файлы, необходимые для исполнения программы. Пакет с исходным кодом интересен для разработчиков. Он хранит тот код, который необходим для создания двоичного пакета.

Уже в названии пакета содержится немало информации: например, abc-2.0.7-l.i686. rpm означает пакет abc версии №2.0.7 выпуска 1 (если при составлении пакета возникла ошибка, была добавлена дополнительная онлайн-документация либо были внесены другие изменения, то номер выпуска больше 1 на число, равное номеру конкретной версии, то есть номер версии касается самой программы, а номер выпуска — сборки rpm).

Обозначение i686 указывает на то, что пакет содержит двоичные файлы для процессоров, совместимых с Pentium-II (разумеется, существуют версии Linux и для других процессоров). Если пакет abc содержит сценарные или текстовые файлы, не зависящие от архитектуры процессора, то вместо обозначения процессора используется сокращение noarch. Если пакет содержит исходный код, то здесь применяется сокращение src.

Кратко объясню различные сокращения х86:
— i386 = 386 и совместимые с ним процессоры;
— i486 = 486 и совместимые с ним процессоры;
— i586 = Pentium и совместимые с ним процессоры;
— i686 = Pentium II и совместимые с ним процессоры.

Пакет i386 будет работать со всеми вышеуказанными процессорами. Напротив, пакет i686 использует различные расширения Pentium II, поэтому код может выполняться немного быстрее. В любом случае программа не будет работать с другими процессорами.

Метаданные




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

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

Файлы базы данных RPM ни в коем случае нельзя изменять непосредственно! Для того чтобы база данных RPM содержательно совпадала с действительной конфигурацией установки, пакеты необходимо удалять не простым удалением файлов, а с помощью процедуры деинсталляции (rpm -e).

Пакеты Delta-RPM



Чтобы обновить пакет RPM, следует целиком загрузить новый пакет. И именно при проведении обновлений для системы безопасности, когда зачастую требуется внести незначительнейшие изменения всего в несколько файлов, такой метод неэффективен. Поэтому в SUSE были разработаны так называемые пакеты Delta-RPM, в которых хранятся изменения, видимые лишь в сравнении с определенной версией пакета. В Mandriva и Fedora (начиная с версии 11) эта идея также прижилась и теперь используется при обновлениях.

В принципе применять пакеты Delta-RPM очень просто: сначала команда applydeltarpm создает из пакета Delta-RPM и оригинального пакета (либо относящихся к нему установленных файлов) новый, обновленный RPM-пакет. Он устанавливается как обычно (rpm -U). Команда applydeltarpm входит в состав пакета deltarpm.

Однако у Delta-RPM есть и недостатки: applydeltarpm потребляет очень много ресурсов процессора, и для ее работы необходимо, чтобы была установлена совершенно конкретная версия пакета. Если это не так либо если файлы этой версии после установки были изменены, потребуется обновить оригинальный файл RPM.

Проблемы



Система RPM — совершенно великолепная вещь, но и она имеет свои слабые стороны. Перечислю самые распространенные проблемы.

— Хотя в пакетах RPM и сохраняются межпакетные взаимосвязи, команда rpm не в состоянии автоматически их отменять. Для этого используются в первую очередь такие программы, как Yum.
— Управление взаимозависимостями пакетов нарушается, если смешиваются пакеты из разных дистрибутивов, если вы устанавливаете отдельные программы с применением tar или если вы сами компилируете программы. Причина все та же: либо информация о том, какие программы установлены на компьютере, отсутствует в принципе, либо данные не стыкуются (так как в каждом дистрибутиве действуют собственные принципы формулирования межпакетных взаимосвязей).
— Новые версии RPM хотя и обладают обратной совместимостью, но не совместимы «снизу вверх». Это означает, что, например, команда rpm версии 4.4 не может работать с файлами RPM, созданными с помощью версии 4.7. Что делать? Установите новейшую версию rpm.
— Дисковое пространство, необходимое для базы данных RPM (то есть для файлов каталога /var/lib/rpm) достаточно велико. При установке программ общим объемом 5 Гбайт файлы базы данных RPM займут около 50 Мбайт.
— Иногда база данных RPM содержит противоречивую информацию. В результате становится невозможно пользоваться командой rpm либо выдаются сообщения об ошибках вроде «невозможно открыть пакеты базы данных». В таких случаях обычно помогает команда rm -f/var/lib/rpm/_db*, а потом — rpm --rebuilddb.
Когда база данных RPM создается заново. Правда, на это требуется некоторое время.

Примеры



Подробная справка по синтаксису rpm приводится в rpm --help и man rpm. В следующих примерах показаны типичные ситуации, в которых используется эта команда. О Установка программы abc:
root# rpm -i abc-2.0.7-1.i386.rpm


Загрузка файла ключа GPG с myserver.com и приведение его в форму файла ключа для RPM:

root# rpm --import http://myserver.com/RPM-myserver-GPG-KEY

Обновление программы abc, причем файл пакета скачивается прямо с указанного сервера:

root# rpm -U http://myserver.com/mypath/abc-2.1.0-2.i386.rpm

Вывод списка всех файлов, входящих в abc, которые были изменены с момента установки:

root# rpm -V abc


Удаление программы abc:

root# rpm -e abc

Составление списка всех установленных пакетов:
root# rpm -qa

Составление списка всех установленных пакетов, причем пакеты сортируются по дате установки (чем позже был установлен пакет, тем выше в списке он расположен):

root# rpm -qa --last

Составляет список всех установленных пакетов, в названии которых содержится последовательность символов mysql (в любом регистре):

root# rpm -qa | grep -i <a class="myClass" href="http://www.modx.cc/linux/mysql/">mysql</a>

Выдает информацию о пакете perl (если он установлен):

root# rpm -qi perl


Перечисляет все файлы из пакета perl:

root# rpm -ql perl
Перечисляет все файлы документации из пакета perl:

root# rpm -qd perl

Перечисляет все конфигурационные файлы пакета cups:
root# rpm -qc cups

Выдает информацию об еще не установленном пакете. Для этого на локальном компьютере должен быть доступен RPM-файл:

root# rpm -qip abc-2.0.7-1.i386.rpm

Указывает, из какого пакета взят файл /usr/lib/libz.so (результат: kdelibs):

root# rpm -qf rpm -qf /usr/lib/libkdnssd.so


Указывает, какие атрибуты предоставляет пакет php-mysql. Результат в Fedora 11:
ysql.so, mysqli.so, pdo_mysql.so, php-mysqli, php_database и php-mysql=5.2.9-2.

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

root# rpm -q --provides php-mysql


Указывает, какие условия должны выполняться для установки пакета php-mysql. В Fedora конечный список атрибутов получается очень длинным, поэтому здесь я приведу только выдержки из него:
libc.so.6, libm.so.6, libmysqlclient.so.16, php-common=5.2.9-2 и php-pdo.

root# rpm -q --requires php-mysql


Команды rpm -q --provides или rpm -q -provides также можно комбинировать с параметром -p, чтобы узнавать списки атрибутов для еще не установленных пакетов (в предыдущем примере — alien):

root# rpm -q --requires -p alien-8.56-2.i586.rpm


Указывает, какой из уже установленных пакетов предоставляет атрибут mysqli.so (результат: пакет php-mysql):

root# rpm -q --whatprovides mysqli.so


Выдает практически бесконечный список всех установленных пакетов, зависящих от атрибута libpthread.so.O (кстати, одноименная библиотека предоставляется пакетом glibc):

root# rpm -q --whatrequires libpthread.so.0

Проблемы 32/64 бит



В 64-битных дистрибутивах может случиться так, что команда rpm -qi name выдаст не название конкретного пакета, а информацию по двум пакетам. Это не ошибка — по-видимому, речь идет о двух одноименных пакетах с файлами для 32-битного и 64-битного вариантов программы или библиотеки.

SUSE старается обходиться без применения одноименных пакетов с разным содержимым, помечая 32-битные варианты пакетов окончанием 32bit. В этом дистрибутиве команда rpm -qa grep 32bit возвратит удивительно длинный список всех 32-битных пакетов — такие пакеты нужны по причинам, связанным с совместимостью (к сожалению, пока невозможно компилировать все программы в 64-битном формате).

Взаимозависимости пакетов



Вероятно, вы впервые столкнетесь со взаимозависимостями пакетов, когда при попытке установить пакет получите сообщение об ошибке, которое будет гласить: failed dependencies: attributname is needed by paketname (неверные зависимости: для работы название атрибута требуется название пакета).

Для того чтобы решить такие проблемы, при установке лучше использовать не RPM, a Yum, Zypper или другой инструмент управления пакетами, предусмотренный в вашем дистрибутиве. Если это невозможно, придется поискать пакет, предоставляющий название атрибута. Для этого можно воспользоваться поисковиком rpmfind.net, позволяющим искать файлы и атрибуты, содержащиеся в пакете RPM.
Читайте так же:
Программа Yum управление пакетами

Никакого спама, только обновления!!!

Комментарии (0)


    Услуги по MODX Revolution

    Посмотреть все услуги

    Техническая оптимизация сайта

    Подробнее & Заказать

    Создание сайта на MODX Revolution

    Подробнее & Заказать

    Перенос сайта на MODX Revolution

    Подробнее & Заказать

    Продвижение сайта на MODX

    Подробнее & Заказать