- Paludis
-
Paludis
Процесс работы PaludisТип Менеджер пакетов
Разработчик Ciaran McCreesh
Написана на Операционная система кроссплатформенный
Последняя версия 0.76 (16 Июня 2012)
Лицензия Сайт Paludis - менеджер программных пакетов, подхода "построение из исходных кодов" (source-based). Применяется в ОС Exherbo и, в качестве альтернативы portage, на Gentoo (оба применяют ядро Linux). В активном развитии с января 2006 года[1].
Содержание
Происхождение
Изначально Paludis представлял собой инструмент для разрешения проблем с зависимостями и использовался в дополнение к системе portage в Gentoo GNU/Linux.
Однако позже, не в последнюю очередь ввиду разногласий между разработчиком и комитетом Gentoo, превратился в самостоятельную систему управления пакетами. В качестве причин фигурируют: бюрократия Gentoo, ошибки в дизайне, неполноценность/избыточность и запутанность исходных кодов emerge, личный эгоизм некоторых участников комитета Gentoo, страх перед изменениями.[2]
После долгой разработки, начиная с версии Paludis 0.60.0 клиент paludis и все поставляемые с ним утилиты были заменены на значительно более понятный клиент cave. Сave можно кратко охарактеризовать как: "Клиент доступа ко всем возможностям системы paludis, схожий по дизайну с aptitude, а синтаксисом с git". Система по прежнему носит название "Paludis", но клиент paludis и все утилиты были убраны.
Почему бы не исправить portage?
Код portage слишком сломан, чтобы его можно было исправить. Это огромное мессиво спагетти-образного процедурного кода без какого-либо дизайна. Он повсеместно и везде опирается на нестандартные уловки, поэтому любое изменение способно вызвать огромные нарушения работоспособности в, казалось бы, никак несвязных областях. Он практически целиком недокументирован, внутренние переменные нелепы и часто уже не отражают реалии, которые код выполняет в настоящее время.[3]
Оригинальный текст (англ.)The Portage codebase is too broken to be fixed. It is a huge mess of spaghetti procedural code with no underlying design. It relies upon weird quirks in its own behaviour all over the place, so any change is liable to cause huge breakage in seemingly unrelated areas. It is almost entirely undocumented, and the internal names are perverse and often do not reflect what the code now does.
— Ciaran McCreesh
Особенности
Следует заметить, что с момента появления paludis прошло много времени и, несмотря на то, что paludis был новатором, часть функциональности свойственной paludis на текущий момент уже реализовано в portage. Однако большинство проблем (с точки зрения paludis) в portage не может быть исправлено, так как они заложены в саму основу portage(defective by design). Также, большинство отсутствующей функциональности (против portage), является намеренной, так как она была бы или излишней, или ошибочной ("Нет PORTAGE_NICENESS, учите man nice и bashrc. Нет же GCC_NICENESS и тд").
Для пользователя
- Предсказуемость и конфигурация "заранее", а не "во время".
- Производительность. Написан на C++.
- Высокая скорость разработки и отсутствие задержек связанных с бюрократией.
- Небольшие собственные зависимости и грамотная интеграция всех инструментов, в том числе GLSA.
- Изначально поддерживает грамотное обращение с множественными репозиториями.
- Профили связанные с репозиториями.
- Документированность и четкость кода.
- Многочисленные хуки для запуска кода.
- Определяемые пользователем наборы пакетов.
- Возможность продолжить установку коллекции пакетов после сбоя или продолжать прерванную компиляцию гораздо более гибко, чем это существует в Portage.
- Способность понять, почему пакет действительно требуется в зависимостях, а не основываясь на довольно грубом выводе опции "--tree" в Portage.
- Более логично построенные механизмы "--query" и "--pretend".
- Безопасная установка/удаление пакетов выставляющих *id-флаги на файлах, чтобы в вашей системе не оставались уязвимости даже после того, как уязвимое приложение было заменено.
- Возможность указывать и использовать SLOT-, USE-, репозиторно- и версионно-основанные зависимости в ebuild'ах.
- Возможность автоматически обновлять живые пакеты (SCM, *-9999) через заданный период времени.
- Управление пакетами, даже если ebuild(ы) уже не доступен/ны.
Для разработчиков Ebuild
- Полное и правильное разрешение круговой зависимости.
- Глубокая резолюции зависимости, даже если обновлено не все.
- Поддержка "experimental" (читай: 'still not implemented in Portage') EAPI предложения (use dependencies, ranged version specs, -scm and -try version specs, src_uri arrows etc).
- Возможность доставки новостей до конечного потребителя.
- Более полезная диагностика.
Для программистов
- Независимые API, библиотеки и клиенты. К качестве подтверждения преимуществ такого подхода - срок в полгода на написание, тест и миграцию на клиент cave.
- Здравомыслящий OO API документация и примеры кода.
- Соответствующие интерфейсы для различных видов repository.
- Наборы тестов и обширный статический анализ, чтобы проверить влияние изменений.
- Тип безопасных интерфейсов, для отлова ошибок программирования, во время компиляции.
- Выбор языка программирования для внешних инструментов.[4]
Использование
Paludis на данный момент имеет только один клиент - cave (лат.). Список всех клиентов можно найти здесь.
Обновление базы данных (синхронизация):
cave sync
Вывод списка установленных пакетов:
cave resolve installed-packages
Установка пакетов:
cave resolve пакет -x
Вывод наборов (sets):
# cave print-sets insecurity insecurity::gentoo installed-packages installed-packages::installed installed-slots installed-slots::installed security security::gentoo system system::gentoo world world::environment
Пример
Пример работы клиента cave пакетного менеждера paludis:
# cave show paludis * sys-apps/paludis ::arbor 0.60.4(~) 0.62.2(~) 0.64.1(~)* (scm)R(~) {:0} ::installed 0.64.1 {:0} sys-apps/paludis-0.64.1:0::installed (system) Homepage http://paludis.pioto.org/ Summary Paludis, the one true package mangler From repositories arbor Installed time Thu Jun 23 21:57:59 UTC 2011 Installed using paludis-0.64.0 Licences GPL-2 vim-syntax? ( vim ) Options OPTIONS (bash-completion) Enable bash-completion support (-doc) Adds extra documentation (API, Javadoc, etc) (-gemcutter) Enable Gemcutter-based support for ruby gems (pbin) Experimental binary package support (-pink) Use an obnoxious girly colour scheme (-prebuilt-documentation) Use prebuilt documentation (-python) Adds support/bindings for the Python language (-ruby) Adds support/bindings for the Ruby language (-search-index) Enable cave search --index (vim-syntax) Pulls in related vim syntax scripts. (xml) Enable parsing of xml files, for GLSA and metadata.xml support, only useful with Gentoo repositories (-zsh-completion) Install completion files for the Z shell Build Options -trace Trace actions executed by the package (very noisy, for debugging broken builds only)
Примечания
См. также
Ссылки
- Официальный сайт. (англ.)
- Блог главного разработчика paludis. (англ.)
- Установка и настройка paludis. (рус.)
- Установка и настройка paludis. (англ.)
Категории:- Программное обеспечение по алфавиту
- Gentoo
- Системы управления пакетами
Wikimedia Foundation. 2010.