Краткий обзор управления пакетами в Haiku

Sep 08, 2012 00:05


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

Каждое приложение существует на диске в форме сжатого архива. Здесь мы назовем этот файл "package-archive". Этот "архивпакет" содержит директорю с информацией обо всем его содержимом. К примеру о том куда должен быть помещен файл настроек, а куда исполняемый бинарник и т.д.


Архивпакет никогда не распаковывается в файловую систему. Вместо этого, Haiku делает вид, что пакет распакован. Это позволяет избежать кучи разнообразных файлов, разбросанных в самых неожиданных местах на диске (привет жителям Заполярья --прим. пер.). Другими словами - один архивпакет содержит саму программу, связанные файлы и список зависимостей. Сами же зависимости существуют в виде отдельных архивпакетов.

Есть много причин, почему следует избегать настоящих зависимостей (и зависимостей их зависимостей, а также зависимостей зависимостей зависимостей и т.д.) внутри архивпакета. Проще всего объяснить это так - BeOS и Haiku проектировались быть максимально модульными. Возьмите те же трансляторы форматов файлов. В системе находится один PNGTranslator, который может быть использован любой программой, поддерживающей Haiku API. Если в трансляторе PNGTranslator найдена критическая утечка памяти, то каждая из этих программ станет уязвимой (ShowImage, WebPositive, WonderBrush, заставка слайдшоу и т.д.). Однако, когда ошибка в трансляторе будет исправлена, то вместо того, чтобы пересобирать, переупаковывать и вновь выкладывать в сеть пакеты со всеми этими приложениями (а затем каждому пользователю скачивать и устанавливать исправления уязвимых программ), пользователю достаточно будет обновить PNGTranslator на новую версию, в которой ошибка была исправлена. Проблемы устранены. Было бы сущей ересью и гайкохульством идти наперекор всей философии BeOS и Haiku, если бы разработчики предложили каждому приложению Haiku включать в свои пакеты по копии PNGTranslator. Эта эффективная концепция "использовать повторно как можно чаще во всех нужных местах" может быть применена и к зависимостям приложений.

Вернемся к объяснению. В качестве примера установки программного обеспечения, представим, что WebPositive должен скачиваться отдельно. На текущий момент WebPositive требует Curl, LibXML2, SQLite, и WebKit. Эти зависимости в свою очередь требуют OpenSSL и XZ-Utils (Если не верите, посмотрите Зависимости Опциональных Пакетов).

В качестве архивпакетов это бы выглядело так:
  • webpositive-[version].package-archive
  • curl-[version].package-archive
  • libxml2-[version].package-archive
  • openssl-[version].package-archive
  • sqlite-[version].package-archive
  • webkit-[version].package-archive
  • xz-utils-[version].package-archive
Для установки приложения вы можете собственноручно скачать и скопировать архивпакеты в соответствующие директории, которые отслеживает Менеджер Пакетов, однако вам будет также доступен более удобный способ автоматической установки. На сегодняшний момент не ясно как этот способ будет реализован, возможно с помощью удобного системного приложения "Каталог Программ" или используя "умный" вебсайт с репозиториями (не исключено, что будут доступны оба варианта).

Чтобы установить программу, webpositive-[version].package-archive копируется в одну из директорий, сканируемых менеджером пакетов. Тогда Haiku определяет какие зависимости необходимо установить. Вас проинформируют об этом и дадут возможность выбрать способ установки (автоматически или вручную). Вот и все, программное обеспечение установлено. Для удаления программы просто переместите архивпакет из "сканируемой директории". Вы можете полностью удалить пакет или просто убрать его в другую папку, за которой Менеджер Пакетов не следит. Программа управления пакетами будет знать, когда определенные пакеты устаревают или более не нужны в системе и оповестит вас о том, что их можно удалить.

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

haiku, software

Previous post Next post
Up