Главная

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

После выхода анонса о контрактах Инго и Оливера, которые занимаются менеджером пакетов 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 и соответствует ее принципам. Забудьте о компиляции программ из исходников, просто установите их в качестве пакетов. После установки большого количества приложений ваша система не будет замусорена различным шлаком, сопутствующим установке программного обеспечения. Все просто работает.

не читал,

не читал, но осуждаю

Вот и славно,

Вот и славно, спасибо за ваше ценное мнение.

Если

Если ты что–то не понимаешь, это не значит, что текст — чушь. Расширение ФС package_fs делает возможным доступ к содержимому пакета–архива без извлечения. Автоматическая установка происходит из интернета (репозитории) или из пакета на диске, который подцепляет менеджер–пакетник. Зависимости складываются туда, куда надо, чтобы не копировать их по сто раз во все папки. Если желаешь углубиться в детали и знаешь английский — вот ссылка. Публикация называлась «Краткий обзор», а не «Исчерпывающее изложение», надо знать разницу.

Ссылка работает.

>Спасибо, слово

>Спасибо, слово «репозитории» упомянуть можно было.
>, возможно с помощью удобного системного приложения «Каталог Программ» или используя «умный» вебсайт с репозиториями

Научись читать внимательнее, дражайший анонимус.

>И кому придёт в голову «копировать их по сто раз»
Разработчикам виндового и маковского софта, например. Редко используются общие либы, как правило я вижу раздутые инсталлеры со всеми нужными библиотеками чуть ли не для каждого приложения.

Я отвечаю «Гостям» только из врожденной вежливости и жизнерадостного настроения, в другой раз комментарий с вопросами незарегистрированного пользователя не указавшего своего имени будет удален.

Редко

Редко используются общие либы

И понятно, почему. Нет никаких шансов угадать, какие библиотеки уже стоят у пользователя. Именно поэтому так популярен ·NET–фреймворк: уж он–то почти наверняка будет стоять, а если нет, то его можно потребовать установить отдельно, не включая в инсталлятор. И тогда останется только решить свистопляску с версией этого фреймворка :)

Да уж…

Да уж… разумно.
Мне всегда не нравилась и не нравится вся эта чехарда в пакетами и зависимостями. В попытке сэкономить на спичках, теряешь гораздо больше. В Windows все очень просто несмотря на обратные утверждения сторонников «пакетизма»: поставил. NET, DirectX (если графика и игры нужны) ну C++ redistributable или как там его… Все. Система больше ничего не требует. В Линуксе ни один менеджер пакетов не справляется на 100% со своими задачами. Углубляться не буду, а то придется ненормативную лексику привлекать.
Но к сожалению, переубедить Гайковцев не представляется возможным ;(
Ну почему бы тогда не взять на вооружение подход FreeBSD? В ней есть два типа пакетов — с зависимостями и полный самодостаточный архив со всеми библиотеками. Ставь, качай что хочешь.

Да ладно,

Да ладно, нынешний подход представляется достаточно разумным. В конце концов, с GCC2/GCC4 как–то справились, так что можно будет надеяться, что и с этой проблемой разберутся. На крайний случай, ничто не помешает разработчику запихнуть нужные библиотеки в дистрибутив и распространять прямо зазипованную папку.

Кто помешает

Кто помешает вложить все зависимости в «толстый» пакет? Никто, просто сторонники юниксоидного подхода будут пальцем показывать — «только посмотрите на этого нехорошего человека, наверное пришел с маков или виндузов», а это все–таки можно пережить. Главное, чтобы программа установилась и работала как надо.

А собственно

А собственно зачем переубеждать? Сама задумка весьма интересна. Пока не совсем понятно, что за чем там будет следить и кому нах это нужно, а вот монтирование пакетов очень оригинально. Я сомневаюсь в необходимости плюшек, типа «кинул пакет в папку и ога», как и в самой необходимости этих спец–папок. На мой взгляд логичнее было бы монтирование по клику, а'ля монтирование имиджей.
Рассуждать о зависимостях, куче библиотек и пр, дак и вовсе смысла нету. Фактически сейчас идет речь не о «пакетнике», в том виде к какому привыкли жители разных Инуксов(aptitude install samba и тд.) А о том как система будет с пакетами взаимодействовать.
Как будут собираться пакеты с ПО, — бандлами, слинкованные статикой или с кучей зависимостей, зависит от системы сборки пакетов, ну и рук тех, кто эти пакеты будет собирать. Так что предлагаю не обсасывать, а немножко подождать, пока система будет готова с новыми пакетами работать.

Тогда, когда

Тогда, когда будет готова.

В описании

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

У меня, например, при работе с любой ОС возникают следующие вопросы:

1. Поиск ПО решающего проблемы.
а) У меня есть проблема P что нужно для ее решения? В ОС уже есть средства для решения P, читай доки ленивая скотина!
б) Я узнал из интернета что программа X имеет функцию F1, программа Y функцию F2, а Z функцию F3, кто из них поможет мне решить мою проблему P?
в) Я совсем запутался, компьютер почему–то выполняет действие A1, это потому что у меня проблема P или R? Компьютер почему–то выполняет действие A2, это делает программа X или Y?
г) Оказалось, что для работы функции F1 из программы X нужно решать еще проблемы P2 и P3, на форуме об этом никто не писал! Я установил X но решить P все равно не получается, на форуме все пидарасы!

2. Установка ПО.
а) На сайте разработчика находится несколько версий программы X какая из них мне нужна? Чем отличается версия release от stable?
б) Разработчик хочет чтобы я ему заплатил 11 рублей, ему их почтой послать?
в) Я скачал и распаковал архив что дальше? В инструкции по установке 53 пункта, я счастлив!
г) Для работы программе Y нужна библиотека L версии 1.1, а у меня уже есть она же но версии 1.2, она будет работать?
д) Компьютер перестал решать проблему P, это потому что я установил программу X?

3. Удаление ПО.
а) Программу X я больше не использую как ее удалить? А что поместить ярлык в корзину не достаточно?
б) Компьютер перестал решать проблему P, это потому что я удалил программу X?
в) Я удалил программу X но недавно нашел папку с ее названием, я ее точно удалил?
г) Я удалил программу Y, которая использовала библиотеку L, ее тоже удалить?

4. Настройка ПО.
а) Иногда, если я подаю команду C программа Z выполняет действие A1, а иногда действие A2, почему так?
б) Для работы программе Y нужна библиотека L, я точно знаю что программа Z тоже ее использует, почему же Y не видит L?

Ответы на эти

Ответы на эти вопросы мне известны, они риторические если вы не заметили. Более того, ответы у меня такие же какие вы привели. Но, как вы заметили обсуждается новый продукт. А раз он новый почему бы не делать в нем тех же ошибок что допускаются в других системах. Да, я считаю что Хайку новая не смотря на ее возраст.

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

Посмотрите на успех АппСтор. Почему он оказался успешным? Да потому что он решает некоторые из указанных мной проблем обычного обывателя! Не админа, не программиста которым по долгу положено разбираться в кишках ОС, а обывателя.

Согласен

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

Обновления

Обновления обязательно должна устанавливать автоматически, если пользователь выбрал такое поведение пакетника в настройках. Скайнет — это уже скорее к Яблоку и Мокрософту. Достаточно посмотреть на Ubuntu App Store, чтобы примерно понимать как именно можно искать, устанавливать и обновлять программы. Для любителей олдскула можно отключить всю автоматику и перетаскивать папочки вручную «как в старое время».

Предупреждение:

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

Данная

Данная архитектура уже опробована на линуксе пару лет назад. Есть такие Live дистрибутивы как Puppy linux и Slax linux, в которых используется слоеная фс (UnionFS), образы (назовем их пакетами) этой фс можно монтировать друг к другу слоями, тогда файлы и каталоги из всех пакетов выстраивают одну плоскую структуру каталогов. Когда на такой файловой системе ищется файл, то драйвер поочередно проверяет наличие этого файла в каждом пакете и только если ни в одном не находит, тогда выдает сообщение что такого файла нет. Но правда есть и две ложки дегтя: если в нескольких пакетах есть файл с одноименным названием, то доступен только один из них, который имеет больший приоритет (который определяется примерно так — чем позже примонтирован пакет, тем больше у него приоритет). И вторая ложка — это что сами пакеты доступны только для чтения, если необходима возможность менять содержимое файлов или создавать новые, то для этого есть один выделенный слой, который имеет всегда наивысший приоритет, и все изменения собираются именно в нем.

Что

Что там добавлено или изменено по сравнению с ванилью? Огласите весь список пожалуйста!

iDrive тоже дает

iDrive тоже дает отлуп.

Скачалось.

Скачалось. Раздаю торрент. Софта можно еще добавить — офис TFO 4 и файлменеджеры, dc++ клиент, например.

> Нормально

> Нормально работающий Keymapswitcher.

Список улучшений увидеть можно?

Новые

Новые контракты и призыв поддержать Haiku
Мы рады, наконец, обнародовать новость о грядущих контрактах для разработчиков. Haiku inc. собирается финансово обеспечить как минимум 800 часов разработки Haiku и если вы нам поможете, то гораздо больше! Для того, чтобы вы могли сами убедиться в прогрессе по части Управления Пакетами, мы сделали доступными предварительные тестовые сборки Haiku на основе новой пакетной системы.

Как вы уже знаете, Инго и Оливер за прошедшие месяцы занимались менеджером пакетов за очень маленькую зарплату – около 12 евро в час. Нам очень повезло найти разработчиков, которые были бы готовы посвятить Haiku такое количество своего времени за столь крошечную ставку. На этот раз мы попробуем новые модели контрактов для каждого из них на более длительные сроки.

( Читать далее )

Пакетная

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

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

Ждем беты, как соловей уходящего лета.

Видимо таки

Видимо таки остается попытаться пережить. Коняшку загнали в уравнение со многими неизвестными и посмотрим теперь как они оттуда выберутся. К концу недели крепчает ощущение что ловлю себя на мыслях -"Неудобно!" -"Не нравится!" -"Некомфортно!" Оно, конечно, софтверный разработчик — суть алиенная форма жизни — но так усложнить мне жизнь нужно было постараться.

Пакеты можно

Пакеты можно ставить вручную, если верить документации Эффективного Паркетного Менеджера. Что мешает софтопомойке «ХайкуВарез» класть у себя какой–нибудь «неофицоз» и беты для нетерпеливых, которые в официальную репку не примут? Если сделают как надо, то юзверь сможет устанавливать из сети как руками, так и через репуху (пофиг веб–интерфейс или HaikuDepot).

beos@jabber.org

beos@jabber.org или в асько 230784210 -–- можем пообщаться по поводу либ и прочего

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Allowed HTML tags: <a> <em> <i> <img> <strong> <b> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Подробнее о форматировании

CAPTCHA
Введите перечисленные символы, чтобы мы убедились, что вы не робот. Не требуется для зарегистрированных пользователей.
R
P
6
E
z
z
Enter the code without spaces and pay attention to upper/lower case.