URPMI

Материал из Mageia Russian Community Wiki
Перейти к: навигация, поиск

Как океан отличает Землю от других планет солнечной системы, так URPMI отличает Mageia от других дистрибутивов операционной системы GNU/Linux.

К "другим" мы конечно же не относим ближайших родственников Магии - маму Мандриву и сестрёнку Росу.

Труднопроизносимое название urpmi расшифровывается довольно прозаично - User RedHat Package Manager Installer, то есть, пользовательский установщик файлов формата Менеджера пакетов компании Red Hat. urpmi был разработан Паскалем Риго (Pascal Rigaux) для снятия обнаруженных в программе RPM ограничений на установку пакетов. В настоящее время (2013 год) поддержку этой программы в Mageia осуществляет Тьери Виньо (Thierry Vignaud), ранее курировавший в Mandriva такие программы как rpmdrake, drakx и др.

Основные понятия

  • ПО - программное обеспечение
  • RPM - файлы пакетов ПО в формате .rpm
  • Репозиторий - хранилище источников ПО

Пакеты и источники ПО

Основная задача набора утилит urpmi - простая и ясная загрузка и установка RPM пакетов.

Часто пакеты программ зависят друг от друга; urpmi способен распознать эти зависимости, загрузить недостающие пакеты, если это необходимо, и удалить конфликтующие пакеты, если такие обнаружатся.

urpmi получает список доступных RPM и сами RPM из источников ПО. Можно сказать, что источник ПО идентифицируется именем и адресом URL. В настоящее время поддерживаются источники ПО следующих типов:

  1. Локальные диски и приравниваемые к ним подмонтированные каталоги сетевых дисков NFS
  2. Съёмные диски (такие, как CD)
  3. ISO-образы
  4. Сетевые источники различных протоколов (http, ftp, ssh и rsync)

Установка и обновление пакетов

Утилитой установки RPM является urpmi. Его базовый синтаксис таков:

          urpmi <список имён пакетов>

Эта команда предлагает urpmi найти и установить перечисленные пакеты, а также их не упомянутые зависимости, из ранее подключённых к системе источников ПО. В процессе работы urpmi может задать несколько вопросов. А именно: требуется ли обновление каких-то пакетов или можно ли установить какие-то новые (не упомянутые) пакеты и попросит подтверждения. Кроме того, urpmi попросит подтверждения, если какие-то пакеты необходимо удалить из-за конфликтов с запрашиваемыми пакетами. В некоторых случаях urpmi может предложить выбрать из нескольких альтернативных пакетов, обозначив по умолчанию "лучший" из них.

Очень полезная функция urpmi - обновление до последней версии всех установленных в системе и имеющихся в источнике ПО пакетов. Это достигается следующей командой:

          urpmi --auto-update

urpmi может также помочь в непосредственной установке файлов RPM. Вместо команды "rpm -i foobar.rpm", можно передать утилите urpmi полный путь к rpm-файлу и она постарается учесть все необходимые зависимости.

Полезные параметры:

--auto
автоматический режим - urpmi не будет задавать вопросов и будет сам выбирать из альтернатив те, что заданы по умолчанию.
--test
проверяет возможность установки пакетов, но реально ничего не устанавливает и ничего не меняет в системе.
--media источник1,...,источникN
использует только указанные источники ПО вместо всех ранее подключённых к системе.

Кроме того, можно указать часть имени источника и urpmi выберет все источники, содержащие эту подстроку. Например,

          urpmi --auto-update --media updates

будет искать во всех источниках, имена которых содержат "updates".

Полный перечень поддерживаемых urpmi параметров см. в man urpmi(8).

Удаление пакетов

Утилита удаления RPM - urpme. Команда

          urpme <список имён пакетов>

попытается удалить указанные пакеты и пакеты, зависимые от них. Она откажется удалять только "важные" пакеты (например, составляющие основу системы).

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

      urpme --auto-orphans

Перечень всех поддерживаемых параметров urpme см. в man urpme(8).

Источники ПО

Подключение источника ПО

urpmi не будет работать, если предварительно не подключить какой-либо источник ПО. Обычно, стандартная процедура установки Mageia предусматривает подключение заранее заданного набора источников ПО, который соответствует выбранному вами методу установки: это может быть установочный CD, или сервер HTTP или FTP, если вы выбрали установку с сетевого зеркала, и так далее. Но вы можете пожелать подключить свой собственный набор источников ПО. Для этого предназначена программа urpmi.addmedia. Её синтаксис таков:

          urpmi.addmedia [параметры] <имя источника> <url>

Поддерживаются следующие URL:

  1. http://
  2. ftp://
  3. rsync://
  4. ssh:// (с использованием rsync)
  5. file://
  6. cdrom://

Если источник ПО требует идентификации, следует использовать обычный синтаксис URL:

          <scheme>://<login>:<pass>@host/path

Введённые параметры не сохраняются ни в каком текстовом файле. В некоторых случаях, если ваш источник ПО находится на внешнем HTTP или FTP сервере, можно подключаться к нему через proxy. Для этого предназначены параметры --proxy и --proxy-user; последний на случай, если ваш proxy требует идентификации.

Отключение источника ПО

Это совсем просто:

          urpmi.removemedia <источник ПО>

Обновление источников ПО

Некоторые источники ПО никогда не меняются, например, CD-ROM и подобные. Но большая их часть постоянно обновляется и увеличивается в размерах; добавляются новые RPM и удаляются устаревшие. Поэтому, перед их использованием, время от времени надо как-то указывать urpmi, что содержимое источников ПО возможно изменилось. Таким указанием служит утилита urpmi.update. С её помощью можно обновить все источники ПО:

          urpmi.update -a

или только указанные:

          urpmi.update <источник1> <источник2>

Создание собственного источника ПО

Простейший способ создать собственный источник ПО - воспользоваться утилитой urpmi.addmedia. Учтите, что она предназначена для небольшого количества файлов RPM, находящихся на диске или на подмонтированном коллективном сетевом диске NFS. Если ваши RPM-файлы находятся в каталоге /var/my-rpms, просто введите команду:

          urpmi.addmedia my-media /var/my-rpms

Если же необходимо создать источник ПО, содержащий большое количество RPM или он должен быть размещён на коллективном сервере, необходимо воспользоваться утилитой gendistrib из пакета rpmtools. Эта утилита способна сгенерировать зеркальное дерево для одного или нескольких источников ПО.

Типичный репозиторий в каталоге суперпользователя /ROOT/ имеет следующую структуру (здесь два источника ПО обозначены именами "first" и "second"):

          ROOT/ - media/
                  |- first/
                  |   `- media_info/
                  |- second/
                  |   `- media_info/
                  `- media_info/

RPM-файлы размещаются в подкаталогах first и second. Метаданные репозитория находятся в каталоге media_info верхнего уровня. Метаданные источников ПО находятся в подкаталогах first/media_info и second/media_info.

Метаданные источника ПО состоят из сжатого программой gzip файла hdlist.cz со списком заголовков RPM-файлов источника ПО; из файла synthesis.hdlist.cz, намного меньшего, чем hdlist, в котором содержится информация, нужная только urpmi для разрешения зависимостей и иногда, если RPM-файлы подписаны, из файла pubkey (таким образом urpmi может проверить, имеет ли загружаемый RPM ключ к этому источнику ПО).

Перед использованием gendistrib, необходимо создать файл media_info/media.cfg, в котором дать описание этого репозитория. Синтакс этого файла знаком вам по файлам .ini. Он содержит по одной секции на каждый источник ПО. Например,

          [first]
          hdlist=hdlist_first.cz
          name=First supplementary media

Здесь

  • first - имя каталога
  • hdlist_first.cz - имя файла hdlist, который будет в результате создан (имя должно заканчиваться на ".cz")
  • "name=" описание источника ПО в произвольной форме

После этого можно запускать gendistrib с /ROOT/ каталогом в качестве параметра. Программа сгенерирует все необходимые файлы для полной функциональности репозитория.

Более полную информацию см. man gendistrib(1).

Поиск пакетов

urpmf

Утилита urpmf похожа по функциям на grep, только применительно к базе данных urpmi (коллекции RPM в источнике ПО). По умолчанию поиск установлен на имена файлов внутри пакетов, но различные параметры позволяют переключать поиск на имена пакетов, на зависимые и зависящие пакеты, на описания RPM и так далее (или на несколько из них вместе). Например, найти все пакеты, начинающиеся с "apache-":

          urpmf --name '^apache-'

Знак ^ в стандартном регулярном выражении означает начало строки.

Найти все пакеты для каталога /etc/httpd.conf.d :

          urpmf /etc/httpd.conf.d

Найти все пакеты, зависящие от "mail-server" той же версии и номера релиза (-f) :

          urpmf --provides -f mail-server

Перечень всех параметров и дополнительные примеры см. в man urpmf(8).

urpmq

Утилита urpmq предназначена для запросов к базе данных urpmi. Она работает в различных режимах. Вот несколько примеров:

          urpmq -i package

покажет описание пакета (как rpm -qi делает то же для установленных пакетов). Параметр "--summary" покажет ту же информацию, но в сокращённом виде не длиннее одной строки.

          urpmq --sources package

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

          urpmq --requires-recursive package

покажет перечень RPM, которые требуются для этого пакета (рекурсивно).

И наоборот, команда

          urpmq --whatrequires package

покажет список всех RPM, для которых требуется этот пакет.

Все параметры см. в man urpmq(8).

urpmi-parallel

Утилита urpmi-parallel - полезное дополнение к urpmi для установки пакетов по сети: она позволяет urpmi работать с заданном количестве машин-клиентов параллельно. Точнее, машина, на которой вы запускаете команду (сервер), проверяет её результаты по очереди на каждой машине заданной группы (клиентах), загружает необходимые всей группе пакеты, раздаёт соответствующие пакеты на каждую машину, затем вызывает urpmi каждой машины для окончательной установки.

Разумеется, urpmi должен быть установлен на всех клиентских машинах, но подключать источники ПО к каждой из них не обязательно.

Эта утилита требует выполнения следующих шагов:

  1. Убедиться, что возможно ssh-подключение сервера к каждой клиентской машине с правами root'а (чтобы избежать многократного ввода пароля, можно воспользоваться командой ssh-add на сервере).
  2. Установить на сервере urpmi-parallel-ssh и urpmi-parallel-ka-run или одну из них. Первый плагин использует простой ssh для передачи команд на другие машины, второй использует ka-run, адаптированный для кластеров эффективный метод параллелизации поверх удалённой оболочки (rsh или ssh).
  3. Отредактировать файл /etc/urpmi/parallel.cfg, чтобы он выглядел примерно так: "mynetwork:ssh:host1:host2:host3". В этой строке "mynetwork" - название сетевого соединения, "ssh" - режим установки (для режима "ka-run" см. установки файла /etc/urpmi/parallel.cfg в man urpmi.files(5)), "hostN" - имена всех клиентских машин в вашей сети. В этот список можете добавить "localhost".
  4. Запустить urpmi:
              urpmi --parallel mynetwork package_name

Ограниченный urpmi

Программа urpmi имеет ограниченный вариант - rurpmi с урезанным набором функций. Он предназначен для пользователей, лишённых привилегий root'а (но с правом на команду 'su'), чтобы не допустить малейшую возможность повреждения системы. Синтакс этой программы подобен синтаксису urpmi, но он не позволяет устанавливать произвольные RPM - загрузка возможна только из зарегистрированных источников ПО. Также запрещены некоторые опасные параметры, перечисленные в man rurpmi(8).