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

редактировать

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

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

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

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

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

СОДЕРЖАНИЕ
  • 1 Функции
    • 1.1 Проблемы с разделяемыми библиотеками
    • 1.2 Интерфейсы для локально скомпилированных пакетов
    • 1.3 Поддержание конфигурации
    • 1.4 Репозитории
    • 1.5 Подавление обновлений
    • 1.6 Каскадное удаление пакетов
    • 1.7 Сравнение команд
  • 2 Распространенность
  • 3 Сравнение с установщиками
  • 4 Сравнение с утилитой автоматизации сборки
  • 5 Общие менеджеры пакетов и форматы
    • 5.1 Универсальный менеджер пакетов
    • 5.2 Форматы пакетов
    • 5.3 Системы бесплатного программного обеспечения и программного обеспечения с открытым исходным кодом
    • 5.4 менеджеры пакетов на уровне приложения
  • 6 Удар
  • 7 См. Также
  • 8 ссылки
  • 9 Внешние ссылки
Функции
Иллюстрация менеджера пакетов, используемого для загрузки нового программного обеспечения. Действия, выполняемые вручную, могут включать принятие лицензионного соглашения или выбор некоторых параметров конфигурации для конкретного пакета.

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

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

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

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

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

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

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

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

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

Репозитории

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

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

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

Например:

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

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

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

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

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

Действие зиппер Пакман подходящий dnf ( ням ) перевозка Nix Домашнее пиво
установить пакет zypper in PKG pacman -S PACKAGE apt install PACKAGE dnf install PACKAGE emerge PACKAGE
nix-env -i PACKAGE
brew install PACKAGE
удалить пакет zypper rm -RU PKG pacman -R PACKAGE apt remove PACKAGE dnf remove --nodeps PACKAGE emerge -C PACKAGE или emerge --unmerge PACKAGE
nix-env -e PACKAGE
brew uninstall PACKAGE
удалить пакет + сироты zypper rm -u --force-resolution PKG pacman -Rs PACKAGE apt autoremove PACKAGE dnf remove PACKAGE emerge -c PACKAGE или emerge --depclean PACKAGE
nix-env -e PACKAGE amp;amp; nix-env -u
brew uninstall PACKAGE amp;amp; brew autoremove
обновить базу данных программного обеспечения zypper ref pacman -Sy apt update dnf check-update emerge --sync
nix-channel --upgrade
brew update
показать обновляемые пакеты zypper lu pacman -Qu apt list --upgradable dnf check-update emerge -avtuDN --with-bdeps=y @world или emerge --update --pretend @world
nix-channel --upgrade amp;amp; nix-env -u amp;amp; nix-collect-garbage
brew outdated
удалить сирот + конфиг zypper rm -u pacman -Rsn $(pacman -Qdtq) apt autoremove dnf erase PKG emerge --depclean
nix-collect-garbage -d
brew unlink PACKAGE amp;amp; brew clean
показать сирот zypper pa --orphaned --unneeded pacman -Qdt package-cleanup --quiet --leaves --exclude-bin emerge -caD или emerge --depclean --pretend
обновить все zypper up pacman -Syu apt upgrade dnf update emerge --update --deep --with-bdeps=y @world
nix-env -u amp;amp; nix-collect-garbage
brew upgrade

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Основные статьи: Формат пакета и файловый архив

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

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

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

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

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

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

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

См. Также: Список систем управления пакетами программного обеспечения § Менеджеры пакетов на уровне приложений.

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

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

Влияние

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

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

Смотрите также
использованная литература
внешние ссылки
Последняя правка сделана 2023-03-21 08:15:09
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте