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


Из Википедии, свободной энциклопедии
  (Перенаправлено из систем управления пакетами )
Перейти к навигации Перейти к поиску

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

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

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

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

История

Ранние менеджеры пакетов, выпущенные примерно в 1994 году, не имели автоматического разрешения зависимостей [3] , но уже могли значительно упростить процесс добавления и удаления программного обеспечения из работающей системы. [4]

Примерно к 1995 году, начиная с CPAN , менеджеры пакетов начали выполнять работу по загрузке пакетов из репозитория, автоматически разрешая его зависимости и устанавливая их по мере необходимости, что значительно упростило установку, удаление и обновление программного обеспечения из системы. [5]

Функции

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

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

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

  • Работа с файловыми архиваторами для извлечения архивов пакетов
  • Обеспечение целостности и подлинности пакета путем проверки их контрольных сумм и цифровых сертификатов соответственно
  • Поиск, загрузка, установка или обновление существующего программного обеспечения из репозитория программного обеспечения или магазина приложений .
  • Группировка пакетов по функциям, чтобы уменьшить путаницу пользователей
  • Управление зависимостями, чтобы убедиться, что пакет установлен со всеми необходимыми пакетами, что позволяет избежать « ада зависимостей » .

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

Компьютерные системы, которые полагаются на динамическое связывание библиотек, а не на статическое связывание библиотек, совместно используют исполняемые библиотеки машинных инструкций для пакетов и приложений. В этих системах сложные отношения между различными пакетами, требующими разных версий библиотек, приводят к проблеме, в просторечии известной как « ад зависимостей ». В системах Microsoft Windows это также называется « ад DLL » при работе с динамически подключаемыми библиотеками. Хорошее управление пакетами жизненно важно для этих систем. [7] Система Framework от OPENSTEPбыла попыткой решить эту проблему, разрешив одновременную установку нескольких версий библиотек, а для пакетов программного обеспечения указать, с какой версией они связаны.

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

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

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

Обслуживание конфигурации

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

Репозитории

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

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

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

Например:

  • yum поддерживает это с помощью синтаксиса exclude=openoffice* [9]
  • pacman с IgnorePkg= openoffice [10] (для подавления обновления openoffice в обоих случаях)
  • dpkg и dselect частично поддерживают это с помощью флага удержания в выборе пакетов.
  • APT расширяет флаг удержания с помощью сложного механизма «закрепления» [11] (пользователи также могут занести пакет в черный список [12] )
  • aptitude имеет флаги «удержать» и «запретить»
  • Portage поддерживает это через конфигурационный файл package.mask.

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

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

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

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

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

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

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

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

  • apt-get, утилита CLI , устанавливающая MediaWiki

  • Aptitude также имеет TUI

  • Synaptic — графический интерфейс для многих менеджеров пакетов Linux.

  • pacman, утилита CLI для дистрибутивов на основе Arch

  • Octopi, графический интерфейс Qt для менеджера пакетов Pacman

  • Pamac, графический интерфейс GTK+ для менеджера пакетов Pacman

  • Apper , графический интерфейс Qt для PackageKit

  • Программное обеспечение GNOME , графический интерфейс GTK для PackageKit и Flatpak

  • winget, утилита командной строки диспетчера пакетов Windows для Windows 10 .

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

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

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

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

Тем не менее, оба вида инструментов имеют много общего:

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

Некоторые инструменты, такие как Maak и AAP , предназначены как для сборки, так и для развертывания, и могут использоваться либо как утилита автоматизации сборки, либо как менеджер пакетов, либо и то, и другое. [16]

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

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

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

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

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

Например, yum полагается на rpm как на серверную часть. Yum расширяет функциональность серверной части, добавляя такие функции, как простая настройка для обслуживания сети систем. В качестве другого примера Synaptic Package Manager предоставляет графический пользовательский интерфейс с помощью библиотеки Advanced Packaging Tool (apt) , которая, в свою очередь, использует dpkg для основных функций.

Alien — это программа, которая выполняет преобразование между различными форматами пакетов Linux , поддерживая преобразование между пакетами .rpm , совместимыми со стандартной базой Linux (LSB) , .deb , Stampede (.slp), Solaris (.pkg) и Slackware ( .tgz , .txz , . tbz, .tlz) пакеты.

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

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

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

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

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

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

Влияние

Ян Мердок заметил, что управление пакетами — это «самое большое достижение , которое Linux привнес в индустрию», что оно стирает границы между операционной системой и приложениями и упрощает внедрение инноваций [...] marketplace и [...] развивать ОС». [20]

Существует также конференция для разработчиков менеджеров пакетов, известная как PackagingCon. Он был создан в 2021 году с целью понять различные подходы к управлению пакетами. [21]

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

  • Ад зависимостей
  • Установка (компьютерные программы)
  • Список систем управления программными пакетами
  • Файл манифеста
  • Формат пакета

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

  1. ^ "Что такое менеджер пакетов?" . Архивировано из оригинала 17 октября 2017 года . Проверено 19 декабря 2018 г.
  2. ^ «Распространение программного обеспечения» . Делл КАСЕ. Архивировано из оригинала 3 октября 2015 года . Проверено 11 июля 2012 г.
  3. ^ «История управления пакетами * nix» . Проверено 12 октября 2021 г.
  4. ^ «Обзор выпуска InfoMagic за декабрь 1994 г.» . Проверено 12 октября 2021 г.
  5. ^ «Хронология Perl и его культуры» .
  6. ↑ Людовик Куртес, Управление функциональными пакетами с помощью Guix , июнь 2013 г., Мадрид, Европейский симпозиум по Лиспу, 2013 г.
  7. Такер, Крис (15 марта 2007 г.). «OPIUM: Оптимальный менеджер установки/удаления пакетов» (PDF) . Материалы 29-й Международной конференции по программной инженерии — ACM Conferences . Калифорнийский университет в Сан-Диего: 1. doi : 10.1109/ICSE.2007.59 . ISBN  978-0-7695-2828-1. S2CID  1279451 . Проверено 14 сентября 2011 г.
  8. ^ «Схемы классификации репозиториев Linux» . www.brainticle.blogspot.com . Проверено 1 марта 2008 г.
  9. Викискладе есть медиафайлы по теме CentOS yum . Centos.org. Архивировано из оригинала 2 ноября 2007 года . Проверено 1 марта 2008 г.{{cite web}}: CS1 maint: неподходящий URL ( ссылка )
  10. ^ a b "Страница руководства pacman(8)" . Archlinux.org . Проверено 1 марта 2008 г.
  11. ^ «Как сохранить установленными определенные версии пакетов (сложных)» . debian.org . Проверено 1 марта 2008 г.
  12. ^ «Подходит для закрепления пакета в черном списке» . Архивировано из оригинала 22 июля 2011 года . Проверено 19 августа 2010 г.
  13. ^ "документация/sles11" . en.opensuse.org .
  14. Викискладе есть медиафайлы по теме Pacman / Rosetta . wiki.archlinux.org . Проверено 17 сентября 2017 г.
  15. ^ «Исходный код версии 0.93.15 dpkg» . Архивировано из оригинала 2 апреля 2015 года . Проверено 19 декабря 2018 г.
  16. ^ Eelco Dolstra, «Интеграция создания и развертывания программного обеспечения» .
  17. Уотерс, Джон К. (8 сентября 2015 г.). «JFrog выпускает« универсальный »репозиторий артефактов» . АДТ Маг . Журнал тенденций разработки приложений.
  18. ↑ Декостер , Ксавьер (18 августа 2013 г.). «Обзор экосистемы NuGet» . CodeProject.com .
  19. Викискладе есть медиафайлы по теме Финка . www.finkproject.org . Проверено 2 сентября 2021 г. .
  20. ^ «Как управление пакетами изменило все» . ianmurdock.com. Архивировано из оригинала 23 февраля 2009 года . Проверено 1 марта 2008 г.
  21. ^ «PackagingCon 2021 — конференция для разработчиков менеджеров пакетов и упаковщиков» . упаковка-con.org . Проверено 2 сентября 2021 г. .

внешняя ссылка

  • Памятка по управлению пакетами от Distrowatch
  • ArchLinux Rosetta Stone — сравнение командной строки для менеджеров пакетов
  • Универсальный менеджер пакетов upkg — оболочка с одинаковым синтаксисом для всех разновидностей Linux.
Получено с " https://en.wikipedia.org/w/index.php?title=Package_manager&oldid=1067582888 "