APT-RPM

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 05:21, 17 января 2019.
APT-RPM
Apt-rpm.png
Создатели: Альфредо Коджима
Разработчики: Пану Метилейнен, Густаво Нимейер
Выпущена: January 31, 2006 (2006-01-31)
Постоянный выпуск: 0.5.15lorg3.2 / 22 June 2006 года; 13 years ago (2006-06-22)
Предыдущий выпуск: 0.5.15lorg3.94a / 12 January 2008 года; 11 years ago (2008-01-12)
Написана на: C, C++ and Python
Операционная система: Linux
Тип ПО: Package manager
Веб-сайт www.apt-rpm.org

APT-RPM - менеджер пакетов и производных инструментов, версия Advanced Packaging Tool, измененная для работы с диспетчером пакетов RPM. Первоначально была перенесена на RPM Альфредо Коджима, а затем был доработана и улучшена Густаво Нимейером. В марте 2005 года Густаво Нимейер объявил, что не будет продолжать развивать APT-RPM, и вместо этого он сосредоточится на Smart Package Manager, который был запланирован как преемник APT-RPM. В марте 2006 года разработка была возобновлена Пану Метилейненом из Red Hat, который дополнил версию базовыми функции multilib и поддержкой общих метаданных репозитория.

Обзор

APT-RPM - порт Debian APT инструментов для дистрибутива на основе RPM (Conectiva, Red Hat, SUSE, ALT Linux, etc). APT - это расширенная утилита управления пакетами, которая позволяет легко выполнять установку, обновление и удаление пакетов. Зависимости обрабатываются автоматически, поэтому при попытке установить пакет, требующий установки других пакетов, он загрузит все необходимые пакеты и установит их.

Во многих отношениях реализация APT в Debian очень похожа на функциональность, предоставляемую продуктами RedHat Up2date / Red Hat Network или программным обеспечением Mandrake urpmi. В системах Debian APT - это клиентский инструмент, используемый для выбора и установки новых пакетов программного обеспечения или для обновления существующих пакетов, уже установленных в системе. Для этого он получает доступ к настроенному пользователем списку ресурсов, которые предоставляют новые пакеты. Этими ресурсами являются FTP или веб-серверы проекта Debian, хотя они также могут быть компакт-дисками или локальными или удаленными файловыми системами. Чтобы иметь возможность загружать пакеты с ресурса, такого как CD-ROM или FTP-сервер, этот ресурс должен иметь две вещи: загружаемые пакеты программного обеспечения и базу данных, предоставляющую метаданные обо всех пакетах в хранилище. Эти базы данных ресурсов необходимы для работы. По этой причине Apt можно использовать только для обновления систем из репозиториев, которые его поддерживают. [Источник 1]

Работа с локальными пакетами

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

# apt-get install rpmver-2.0-13498cl.i386.rpm

Чтение списков пакетов ... Готово
Дерево зависимостей строительства ... Готово
Выбор rpmver для представления rpmver-2.0-13498cl.i386.rpm
Будут установлены следующие пакеты NEW: rpmver
0 обновлено, 1 вновь установлен, 0 удален и 8 не обновлено.
Нужно получить 0B / 6404B архивов.
После распаковки будет использовано 5552B дополнительного дискового пространства.
Выполнение изменений ...
Подготовка ... ############################################ [100% ]
   1: rpmver ############################################ [100%]
Готово.

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

# apt-get build-dep apt-listchanges-1.49-11104cl.src.rpm

Чтение списков пакетов ... Готово
Дерево зависимостей строительства ... Готово
Будут установлены следующие пакеты NEW:
  rpmver
0 обновлено, 1 вновь установлен, 0 удален и 8 не обновлено.
Необходимо получить 6404B архивов.
Необходимо получить 6404B архивов.
После распаковки будет использовано 5552B дополнительного дискового пространства.
Вы хотите продолжить? [Y / N]

Получить: 1 ftp: //mapi8.distro.conectiva последняя / conectiva / all rpmver 2.0-13498cl [6404B]
Выбрано 6404B в 8 с (798B / s)
Выполнение изменений ...
Подготовка ... ############################################ [100% ]
   1: rpmver ############################################ [100%]
Готово.

Локальные репозитории

Работа с файлами пакетов напрямую - это всего лишь один из способов использования APT-RPM. Еще один простой способ - создать локальный репозиторий. Традиционно локальные репозитории всегда доступны, но они требуют обслуживания метаинформации, которую APT-RPM ожидает найти в базовом / подкаталоге. Теперь APT-RPM научился работать с особым видом локального репозитория, который не требует обслуживания метаинформации. Вместо этого информация извлекается непосредственно из пакетов, а новые пакеты, упавшие в эти каталоги, автоматически распознаются.

Конфигурация этого нового типа локального репозитория проста. Нужно только заменить исходный тип rpm типом источника rpm-dir в файле конфигурации репозитория sources.list . Например, чтобы поддерживать репозиторий в /repos/conectiva/RPMS.local и чтобы каждый упавший пакет в этом каталоге автоматически распознавался APT-RPM, в файл sources.list следует включить следующую строку :

rpm-dir файл: /// repos conectiva local

Никакой дополнительной конфигурации не требуется.

Те же правила применяются и к исходным репозиториям, используя rpm-src-dir вместо rpm-src в файле конфигурации репозитория sources.list . Расширив приведенный выше пример, следующая строка позволит поддерживать SRPM-пакеты в /repos/conectiva/SRPMS.local без дальнейшей работы:

rpm-src-dir файл: /// repos conectiva local

Установка пакетов по именам файлов

Одна из функций, которая кажется логичной для большинства пользователей пакета, - это возможность устанавливать пакеты, предоставляя имена файлов вместо имен пакетов. Эта функция доступна только в APT-RPM через внешнее расширение Lua, до недавнего времени. Теперь это доступно внутри APT-RPM, которое может переводить любое имя файла, включенное в метаинформацию удаленного репозитория.

В следующем примере показана работающая функция. Имя файла переводится в имя пакета, и с подтверждением пользователя пакет загружается и устанавливается.

# apt-get install / usr / bin / rpmver

Чтение списков пакетов ... Готово
Дерево зависимостей строительства ... Готово
Будут установлены следующие дополнительные пакеты:
  rpmver
Будут установлены следующие пакеты NEW:
  rpmver
0 обновлено, 1 вновь установлен, 0 удален и 8 не обновлено.
Необходимо получить 6404B архивов.
После распаковки будет использовано 5552B дополнительного дискового пространства.
Вы хотите продолжить? [Y / N]

Получить: 1 ftp: //mapi8.distro.conectiva последняя / conectiva / all rpmver 2.0-13498cl [6404B]
Выбрано 6404B в 17s (376B / s)
Выполнение изменений ...
Подготовка ... ############################################ [100% ]
   1: rpmver ############################################ [100%]
Готово.

Обратите внимание, что можно исключить некоторые файлы из метаинформации для экономии места.

APT Shell

Еще одна интересная особенность, разработанная недавно, - это apt-shell . Это инструмент, который предлагает оболочку, чтобы пользователю было проще устанавливать, удалять и обновлять пакеты. Список основных функций:

  • Статический кэш. Пометьте пакеты, как вы хотите, и, если вас устраивает текущий выбор, зафиксируйте систему.
  • Каждый раз при выборе пакета, который будет включать больше изменений в кеше, чем было запрошено, shell будет уведомлять о том, какие изменения будут внесены.
  • При удалении будут завершены только установленные пакеты. При сохранении будут выполнены только пакеты, выбранные для изменения.
  • Новая команда list / ls, позволяющая удобно выводить список пакетов, включая символы подстановки оболочки. Кроме того, параметры для отображения только установленных пакетов, только обновляемые пакеты, список установленных и потенциальных версий, а также список-резюме.
  • Широкий набор команд, включая большинство функций apt-get и apt-cache.
  • Встроенная помощь.

Пример:

Чтение списков пакетов ... Готово
Дерево зависимостей строительства ... Готово
Добро пожаловать в оболочку APT. Введите «help» для получения дополнительной информации.

apt> install dum [TAB нажата]
макет  

apt> install dummy = [TAB нажата]
0.1-1cl 1.0-1cl 1: 1.0-1cl 1: 1.5-1cl 

apt> установить dummy = 1: 1.0-1cl

apt> установить alsa-lib-devel
Для выполнения этой операции необходимы незапрашиваемые изменения.
Следующие пакеты будут обновлены
  alsa-lib-devel libalsa2
(...)
Вы хотите продолжить? [Y / n] n
Прервать.

apt> commit
Будут установлены следующие пакеты NEW:
  фиктивный
(...)
Выполнение RPM (-Uvh) ...
Подготовка ... ############################################ [100% ]
   1: манекен ############################################# [100%]
(...)

apt> ls dum *
макет 

apt> ls -v dum *
Имя Установленный кандидат
---- --------- ---------
dummy 1: 1.0-1cl 1: 1.5-1cl
дамп - 0.4b28-11400cl

apt> ls -s dum *
манекен - пакет Dummy делает странные вещи.
dump - Программы для резервного копирования и восстановления файловых систем.

Программы gnorpm, kpackage

Менеджер пакетов RPM является мощным средством для произведения операций над пакетами — создания, установкя, обновления, удаления. Однако интерфейс командной строки может понравиться далеко не всем, а особенно начинающему администратору. Существуют и графические (под X Window) реализации менеджера пакетов — например, kpackage из KDE, gnorpm и другие. Я рекомендую использовать программу gnorpm, которая обладает интуитивным графическим интерфейсом. RPM больше подходит для создания новых пакетов, а также для обновления большого числа пакетов. Для установки одного-двух пакетов лучше и удобнее использовать gnorpm.

Функции программы gnorpm:

  • Установка пакетов.
  • Удаление пакетов.
  • Получения сведений о пакете.
  • Проверка пакета.
  • Поиск пакета в базе RPM.

Для установки какого-либо пакета нажмите на кнопку «Установить». Если в приводе CD-ROM находится инсталляционный CD, то в появившемся окне вы увидите список еще не установленных в системе пакетов. Если пакета нет в списке или вы хотите установить пакет, который не входит в состав дистрибутива, нажмите на кнопку «Добавить» и добавьте в список пакеты, которые вы хотите установить. Нажмите на кнопку «Запрос» для получения сведений о пакете. Если пакет еще не установлен и у вас достаточно места на диске для его установки, нажмите на кнопку «Установка». После этого будет выполнена проверка пакета на предмет удовлетворения зависимостей: не требует ли этот пакет наличия какого-нибудь неустановленного пакета и не конфликтует ли он с уже установленными пакетами. Если все в порядке, вы увидите окно состояния установки пакета. Найти пакет вы можете с помощью операции Поиск. Для этого нажмите на кнопку «Поиск» на панели инструментов gnorpm или выполните команду меню Операции -> Поиск. В открывшемся окне вы можете установить критерии поиска и нажать на кнопку «Поиск». В состав KDE входит программа с графическим интерфейсом пользователя, управляющая пакетами — kpackage. По своим функциям она аналогична программе gnorpm. Какую из этих программ использовать — дело вкуса и привычки.

Первоначально система APT была разработана для Debian Linux. Сейчас входит в состав некоторых Red Hat совместимых дистрибутивов (например, apt-get и входит в состав AltLinux, но ее вы не найдете в Red Hat Linux). Для управления пакетами используется программа apt-get. Формат вызова программы apt-get такой:

apt-get [опции] [команды] [пакет . . .]

В дистрибутив Linux Mandrake входит собственное средство управления пакетами - rpmdrake. К десятой версии дистрибутива оно немного видоизменилось. Теперь оно состоит из трех частей:

  • /usr/sbin/edit-urpm-media — менеджер источников пакетов (что такое источники, я уже сказал, поэтому останавливаться на этом не будем);
  • rpmdrake — менеджер установки пакетов;
  • rpmdrake-remove — менеджер удаления пакетов.

Запустить любую из частей можно из меню К: Система| Настройка | Пакеты. [Источник 2]

Мета-компоненты

В отличие от стратегии Debian по поддержанию основных , вкладных и нескольких других основных компонентов, некоторые пользователи APT-RPM, такие как Conectiva Linux, решили разделить компоненты более тонко, используя, например, devel , doc , audio , и многие другие. Это вводит некоторые интересные возможности, так как пользователи могут «подписаться» только на те компоненты, которые им действительно интересны. С другой стороны, разделение таких компонентов также вызывает некоторую досаду для тех, кто хочет просто подписаться на каждый доступный компонент. Это также создает проблемы при создании нового компонента, поскольку в настоящее время никто не подписывается на него, и потребуется некоторое время, чтобы обнаружить, что новый компонент доступен.

Мета-компонент был создан для решения этих проблем. Используя метакомпоненты, вы можете создавать компоненты, содержащие информацию других реальных компонентов. Для пользователей APT-RPM нет никакой разницы между метакомпонентом и реальным компонентом. Для поддерживающих репозитариев, которые хотят создать мета-компонент, это просто вопрос использования соответствующих вариантов genbasedir .

Например, предположим , что компоненты основной , дополнительный , KDE и GNOME доступны, можно создать дополнительный все мета-компонент , который включает в себя информацию из всех из них с помощью следующей команды:

genbasedir --meta = all / repos / path main extra kde gnome

При этом пользователи могут включать любую комбинацию отдельных компонентов в свой файл конфигурации sources.list хранилища или использовать метакомпонент.

Интерфейс Lua

Одной из захватывающих новых возможностей, недавно введенных в APT-RPM, является внедрение интерпретатора Lua . Это позволяет настраивать и расширять APT-RPM в любом направлении, ограничиваясь в основном возможностями воображения и создания сценариев для всех, кому нужны обширные функции упаковки.

Интерфейс сценариев выполняется с использованием концепции слота . Слоты являются местами в выполнении APT-RPM, где любое количество скриптов может быть подключено, чтобы ввести особое поведение. Некоторые из этих слотов позволяют сценариям вводить новые команды в APT-RPM-инструментах apt-get , apt-cache и apt-shell . Кроме того, скрипты также можно вызвать с помощью подкоманды сценария .

В настоящее время хорошая часть APT API уже доступна для сценариев Lua, и полная документация доступна на AptRpm / Scripting .

Чтобы дать вам представление о том, как это работает, следующий сценарий может быть запущен с apt-get script install-devel.lua (при условии, что он имеет это имя), для установки пакетов разработки с суффиксами -devel и -devel-static , как долго поскольку основной пакет уже установлен.

функция installdevel (имя)
        pkg = pkgfind (имя .. "- devel")
        если pkg, а не pkgvercur (pkg), тогда
                markinstall (PKG)
        конец
        pkg = pkgfind (name .. "- devel-static")
        если pkg, а не pkgvercur (pkg), тогда
                markinstall (PKG)
        конец
конец

для i, pkg в парах (pkglist ()) do
        если pkgvercur (pkg), то
                installdevel (имя-пакета (PKG))
        конец
конец

Алгоритм модернизации

Некоторые изменения в APT-RPM в основном не замечаются повседневным пользователем. Одно из этих изменений произошло в период выпуска Conectiva Linux 9.0. Несколько дней было потрачено на улучшение поведения APT-RPM в сложных ситуациях, например, при обновлении целых дистрибутивов. Сегодня APT-RPM является единственным инструментом, используемым для обновления Conectiva Linux, и были проведены тяжелые тесты, даже обновляя две версии дистрибутива за один шаг. Недавно пользователи других дистрибутивов сообщили, что алгоритм обновления действительно работает более надежно, так как они также могут обновлять свои собственные дистрибутивы, а проблемы во время обновлений в основном связаны с ошибками упаковки.

Внутренняя фиксация изменений

Одно свойство, которое не понравилось многим пользователям, заключалось в том, как он совершил запрограммированные изменения в системе. До недавнего времени APT-RPM делал это, выполняя сам бит rpm . Такое поведение действительно имело несколько недостатков, таких как разделение перехода на более чем одну единицу, поскольку двоичный файл rpm в настоящее время не поддерживает установку и стирание пакетов за один шаг. К счастью, начиная с версии 0.5.15cnc3, APT-RPM поддерживает внутреннюю фиксацию изменений, используя API-интерфейс rpmlib , что оставляет указанные проблемы. Использование старого метода все еще поддерживается и конфигурируется во время выполнения.

Изменения в исходном APT

Изменения, внесенные в исходную версию APT, поддерживаемые разработчиками Debian, также постоянно интегрируются в APT-RPM. Небольшим примером этого является недавно введенный аргумент подкоманды install apt-get, который показывает, какие версии будут установлены в системе, если транзакция зафиксирована, как показано в следующем примере:

# apt-get install -V rpmver
Чтение списков пакетов ... Готово
Дерево зависимостей строительства ... Готово
Будут установлены следующие пакеты NEW:
   rpmver (2.0-13498cl)
0 обновлено, 1 вновь установлен, 0 удален и 8 не обновлено.
Необходимо получить 6404B архивов.
(...)

Команда

Основной разработчик APT-RPM - Conectiva Gustavo Niemeyer, а также Пану Матилайнен и Ричард Бос, которые всегда были постоянными APT -RPM-участниками. Майкл Фогт, разработчик Debian, который сотрудничает с Джеффом Джонсоном, разработчиком программного обеспечения RPM; ALT-Linux. Vine Linux, которая продвигает APT-RPM в восточной части мира. Разработчики Debian, которые вносят свой вклад в оригинальный проект APT, и многие другие, которые способствуют непрерывному прогрессу APT-RPM.

Дистрибутивы

Некоторые дистрибутивы с использованием APT-RPM для управления пакетами:

  • ALT Linux : APT-RPM является основным официально поддерживаемым способом обновления пакетов из репозиториев ALT Linux в дистрибутивах ALT Linux с 2001 года.
  • PCLinuxOS : APT-RPM является основой для единственного официального способа обновления пакетов в этом дистрибутиве.
  • Vine Linux: APT-RPM является основным официально поддерживаемым способом обновления пакетов в дистрибутивах Vine Linux с 2001 года.

Источники

  1. APT-RPM // fedora project. [2019-2019]. Дата обновления: 22.05.2014. URL: https://docs.fedoraproject.org/ro/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch07s03s06.html (дата обращения: 16.01.2019)
  2. Программы gnorpm, kpackage, apt. // electrosad.[2006-2012]. Дата обновления: 21.03.2008. URL: http://www.electrosad.ru/OS/RPM.htm (дата обращения: 17.01.2019)

Ссылки