Менеджер пакетов - Package manager

Синаптический, пример полнофункционального менеджера пакетов

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

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

Диспетчеры пакетов разработаны, чтобы исключить необходимость установки и обновления вручную. Это может быть особенно полезно для крупных предприятий, операционные системы которых обычно состоят из сотен или даже десятков тысяч отдельных программных пакетов.[2]

Функции

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

Программный комплекс - это архивный файл содержащий компьютерную программу, а также необходимые метаданные для ее развертывания. Компьютерная программа может быть в исходный код который нужно сначала скомпилировать и построить.[3] Метаданные пакета включают описание пакета, версию пакета и зависимости (другие пакеты, которые необходимо установить заранее).

На менеджеров пакетов возложена задача поиска, установки, обслуживания или удаления пакетов программного обеспечения по команде пользователя. Типичные функции системы управления пакетами включают:

Проблемы с общими библиотеками

Компьютерные системы, которые полагаются на динамическая библиотека связывание вместо статическая библиотека связывание, совместное использование исполняемых библиотек машинных инструкций между пакетами и приложениями. В этих системах сложные отношения между разными пакетами, требующими разных версий библиотек, приводят к проблеме, в просторечии известной как "ад зависимости ". На Майкрософт Виндоус систем, это также называется "DLL ад "при работе с динамически подключаемыми библиотеками. Хорошее управление пакетами жизненно важно в этих системах.[4] Система Framework от ОТКРЫТЬ была попыткой решить эту проблему, позволив одновременно установить несколько версий библиотек, а для пакетов программного обеспечения указать, с какой версией они связаны.

Интерфейсы для локально скомпилированных пакетов

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

Существуют инструменты, позволяющие обеспечить интеграцию скомпилированных локально пакетов с системой управления пакетами. Для дистрибутивов на основе .deb и .rpm файлов, а также Slackware Linux, есть Проверить Установить, а также для систем на основе рецептов, таких как Gentoo Linux и гибридные системы, такие как Arch Linux, можно сначала написать рецепт, который затем гарантирует, что пакет помещается в локальную базу данных пакетов.[нужна цитата ]

Сопровождение конфигурации

Особенно хлопотно с программным обеспечением обновления являются обновлениями файлов конфигурации. Поскольку менеджеры пакетов, по крайней мере, в системах Unix, возникли как расширения утилиты для архивирования файлов, они обычно могут либо перезаписывать, либо сохранять файлы конфигурации, а не применять к ним правила. Есть исключения из этого, которые обычно применяются к конфигурации ядра (которая, если она сломана, сделает компьютер непригодным для использования после перезапуска). Проблемы могут быть вызваны изменением формата файлов конфигурации; например, если старый файл конфигурации не отключает явно новые параметры, которые должны быть отключены. Некоторые менеджеры пакетов, такие как Debian с dpkg, разрешите настройку во время установки. В других ситуациях желательно установить пакеты с конфигурацией по умолчанию, а затем перезаписать эту конфигурацию, например, в Обезглавленный установки на большое количество компьютеров. Этот тип предварительно настроенной установки также поддерживается dpkg.

Репозитории

Чтобы предоставить пользователям больший контроль над видами программного обеспечения, которое они разрешают устанавливать в своей системе (а иногда и по юридическим причинам или по соображениям удобства со стороны дистрибьюторов), программное обеспечение часто загружается с нескольких программные репозитории.[5]

Подавление обновлений

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

Например:

  • ням поддерживает это с помощью синтаксиса exclude = openoffice *[6]
  • Пакман с участием IgnorePkg = openoffice[7] (чтобы запретить обновление openoffice в обоих случаях)
  • dpkg и dselect частично поддержать это держать отметка в выборе пакетов
  • APT расширяет держать флаг через сложный механизм "закрепления"[8] (Пользователи также могут занести пакет в черный список[9])
  • способность имеет флаги "удерживать" и "запрещать"
  • перевозка поддерживает это через файл конфигурации package.mask

Каскадное удаление пакетов

Некоторые из более продвинутых функций управления пакетами предлагают «каскадное удаление пакетов»,[7] в котором также удаляются все пакеты, зависящие от целевого пакета, и все пакеты, от которых зависит только целевой пакет.

Сравнение команд

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

Действиезиппер[10]Пакманподходящийdnf (ням )перевозка
установить пакетzypper в PKGПАКЕТ pacman -Sapt install ПАКЕТdnf install ПАКЕТemerge ПАКЕТ
удалить пакетzypper rm -RU ПКГПАКЕТ pacman -Rapt удалить ПАКЕТdnf remove --nodeps ПАКЕТemerge -C ПАКЕТ или
emerge --unmerge ПАКЕТ
удалить пакет + сиротыzypper rm -u --force-разрешение PKGПАКЕТ pacman -Rsapt autoremove ПАКЕТdnf удалить ПАКЕТemerge -c ПАКЕТ или
emerge --depclean ПАКЕТ
обновить базу данных программного обеспеченияzypper refpacman -Syподходящее обновлениепроверка-обновление dnfвозникать --sync
показать обновляемые пакетыЗиппер Луpacman -Quсписок подходящих - обновляемыйпроверка-обновление dnfemerge -avtuDN --with-bdeps = y @world или
emerge --update --pretend @world
удалить сирот + конфигzypper rm -upacman -Rsn $ (pacman -Qdtq)подходящее автоудалениеdnf стереть PKGвозникать --depclean
показать сиротzypper pa --orphaned --unneededpacman -Qdtпакет-очистка --quiet --leaves --exclude-binвозникать -caD или
Emerge --depclean --pretend
обновить всезиппер вверхpacman -Syuподходящее обновлениеобновление dnfemerge --update --deep --with-bdeps = y @world

В Arch Linux Pacman / Rosetta wiki предлагает обширный обзор.[11]

Распространенность

Менеджеры пакетов вроде dpkg существовали еще в 1994 году.[12]

Дистрибутивы Linux ориентированные на двоичные пакеты, в значительной степени полагаются на системы управления пакетами как на основное средство управления и поддержки программного обеспечения. Мобильные операционные системы, такие как Android (На базе Linux), iOS (Unix-подобный ), и Windows Phone полагаются почти исключительно на своих поставщиков магазины приложений и поэтому используют свои собственные специализированные системы управления пакетами.

Сравнение с установщиками

Диспетчер пакетов часто называют «диспетчером установки», что может привести к путанице между диспетчерами пакетов и установщики. Отличия включают:

КритерийМенеджер пакетовУстановщик
Поставляется сОбычно операционная системаКаждая компьютерная программа
Расположение информации об установкеЕдиная центральная база данных установкиЭто полностью на усмотрение установщика. Это может быть файл в папке приложения или среди файлов и папок операционной системы. В лучшем случае они могут зарегистрироваться в списке деинсталляторов, не раскрывая информацию об установке.
Объем обслуживанияПотенциально все пакеты в системеТолько товар, с которым он был в комплекте
РазработанОдин поставщик диспетчера пакетовНесколько поставщиков установщиков
Формат упаковкиГорстка известных форматовМожет быть столько форматов, сколько приложений
Совместимость формата пакетаМожет использоваться, если его поддерживает диспетчер пакетов. Либо новые версии диспетчера пакетов продолжают поддерживать его, либо пользователь не обновляет диспетчер пакетов.Установщик всегда совместим со своим формат архива, если он использует. Однако на установщики, как и на все компьютерные программы, могут влиять программная гниль.

Сравнение с утилитой автоматизации сборки

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

Однако у обоих инструментов есть много общего:

  • Например, граф зависимостей топологическая сортировка используется в диспетчере пакетов для обработки зависимостей между двоичными компонентами, также используется в диспетчере сборки для обработки зависимости между исходными компонентами.
  • Например, многие make-файлы поддерживает не только сборку исполняемых файлов, но и их установку с сделать установку.
  • Например, каждый менеджер пакетов для распространение на основе исходного кода – Portage, Колдовство, Домашнее пиво и т. д. - поддерживает преобразование удобочитаемого исходного кода в двоичные исполняемые файлы и его установку.

Несколько инструментов, например Маак и А-А-П, предназначены для обработки как сборки, так и развертывания, и могут использоваться либо как утилита автоматизации сборки, либо как менеджер пакетов, либо и то, и другое.[13]

Общие менеджеры пакетов и форматы

Универсальный менеджер пакетов

Также известен как менеджер двоичного репозитория, это программный инструмент, предназначенный для оптимизации загрузки и хранения двоичных файлов, артефактов и пакетов, используемых и созданных в процесс разработки программного обеспечения.[14] Эти менеджеры пакетов стремятся стандартизировать способ, которым предприятия обрабатывают все типы пакетов. Они дают пользователям возможность применять показатели безопасности и соответствия для всех типов артефактов. Универсальные менеджеры пакетов считаются центральным звеном Набор инструментов DevOps.[15]

Форматы пакетов

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

Например, ням полагается на об / мин как бэкэнд. Yum расширяет функциональность серверной части, добавляя такие функции, как простая конфигурация для обслуживания сети систем. Другой пример: Менеджер пакетов Synaptic предоставляет графический пользовательский интерфейс с помощью Расширенный инструмент упаковки (APT) библиотека, которая, в свою очередь, полагается на dpkg для основных функций.

Иностранец это программа, которая конвертирует между разными Форматы пакетов Linux, поддерживающий преобразование между Стандартная база Linux (LSB) совместимый .rpm пакеты, .deb, Stampede (.slp), Солярис (.pkg) и Slackware (.tgz, .txz, .tbz, .tlz) пакеты.

В мобильных операционных системах Гугл игры потребляет Пакет приложений для Android (APK) формат пакета, а Магазин Windows использует APPX и XAP форматы. (И в Google Play, и в Windows Store есть одноименные менеджеры пакетов.)

Бесплатное программное обеспечение с открытым исходным кодом

По характеру бесплатное программное обеспечение с открытым исходным кодом, пакеты под аналогичными и совместимыми лицензиями доступны для использования в ряде операционных систем. Эти пакеты можно объединять и распространять с помощью конфигурируемых и внутренних сложных систем упаковки для обработки множества изменений программного обеспечения и управления зависимостями и конфликтами, зависящими от версии. Некоторые системы упаковки бесплатного программного обеспечения с открытым исходным кодом также выпускаются как бесплатное программное обеспечение с открытым исходным кодом. Одно из типичных различий между управлением пакетами в проприетарных операционных системах, таких как Mac OS X и Windows, и в бесплатном программном обеспечении с открытым исходным кодом, таком как Linux, заключается в том, что бесплатные программные системы с открытым исходным кодом позволяют также устанавливать сторонние пакеты и обновляется с помощью того же механизма, тогда как менеджеры пакетов Mac OS X и Windows будут обновлять только программное обеспечение, предоставленное Apple и Microsoft, соответственно (за исключением некоторых сторонних драйверов в Windows). Возможность постоянно обновлять стороннее программное обеспечение обычно добавляется путем добавления URL соответствующего репозитория в файл конфигурации управления пакетами.

Менеджеры пакетов на уровне приложения

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

В отличие от менеджеров пакетов системного уровня, менеджеры пакетов прикладного уровня сосредоточены на небольшой части системы программного обеспечения. Обычно они находятся в дереве каталогов, которое не поддерживается менеджером пакетов системного уровня, например c: cygwin или / USR / местные / финк. Однако это может быть не так для менеджеров пакетов, которые имеют дело с библиотеками программирования, что может привести к конфликту, поскольку оба менеджера пакетов могут заявить, что они «владеют» файлом, и могут нарушить обновления.

Влияние

Ян Мердок прокомментировал, что управление пакетами является "самым большим достижением Linux принес в отрасль ", что он стирает границы между операционной системой и приложениями, и что он облегчает" продвижение новых [...] инноваций на рынок и [...] развитие ОС ".[16]

Смотрите также

использованная литература

  1. ^ "Что такое менеджер пакетов?". Архивировано из оригинал 17 октября 2017 г.. Получено 19 декабря 2018.
  2. ^ «Распространение программного обеспечения». Dell KACE. Архивировано из оригинал 3 октября 2015 г.. Получено 11 июля 2012.
  3. ^ Людовик Куртес, Функциональное управление пакетами с помощью Guix, Июнь 2013 г., Мадрид, European Lisp Symposium 2013
  4. ^ Такер, Крис (15 марта 2007 г.). "OPIUM: Оптимальный менеджер установки / удаления пакетов" (PDF). Материалы 29-й международной конференции по программной инженерии - ACM Conferences. Калифорнийский университет в Сан-Диего: 1. Дои:10.1109 / ICSE.2007.59. Получено 14 сентября 2011.
  5. ^ «Схемы классификации репозиториев Linux». braintickle.blogspot.com. Получено 1 марта 2008.
  6. ^ "CentOS yum pinning rpms". centos.org. Архивировано 2 ноября 2007 года.. Получено 1 марта 2008.CS1 maint: неподходящий URL (ссылка на сайт)
  7. ^ а б "Страница руководства pacman (8)". archlinux.org. Получено 1 марта 2008.
  8. ^ «Как оставить определенные версии пакетов установленными (комплекс)». debian.org. Получено 1 марта 2008.
  9. ^ «Возможность закрепления пакета в черном списке». Архивировано из оригинал 22 июля 2011 г.. Получено 19 августа 2010.
  10. ^ "документация / слес11". en.opensuse.org.
  11. ^ "Pacman / Rosetta - ArchWiki". wiki.archlinux.org. Получено 17 сентября 2017.
  12. ^ "исходный код dpkg версии 0.93.15". Архивировано из оригинал 2 апреля 2015 г.. Получено 19 декабря 2018.
  13. ^ Элко Долстра, «Интеграция создания программного обеспечения и развертывания программного обеспечения».
  14. ^ Уотерс, Джон К. (8 сентября 2015 г.). "JFrog выпускает универсальный репозиторий артефактов". ADT Mag. Журнал «Тенденции разработки приложений».
  15. ^ Декостер, Ксавьер (18 августа 2013 г.). «Обзор экосистемы NuGet». CodeProject.com.
  16. ^ «Как управление пакетами изменило все». ianmurdock.com. Архивировано из оригинал 23 февраля 2009 г.. Получено 1 марта 2008.

внешние ссылки