Paludis

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Paludis
Скриншот программы Paludis
Процесс работы Paludis
Тип Менеджер пакетов
Разработчик Ciaran McCreesh
Написана на C++
Операционная система кроссплатформенный
Последняя версия 3.0.0 (12 февраля 2023)
Репозиторий git.exherbo.org/paludis/…
Лицензия GNU GPL
Сайт paludis.exherbo.org

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?[править | править код]

Особенности[править | править код]

Следует заметить, что с момента появления paludis прошло много времени и, несмотря на то, что paludis остается новатором, часть функциональности свойственной paludis на текущий момент уже реализовано в portage. Однако большинство проблем (с точки зрения paludis) в portage не может быть исправлено, так как они заложены в саму основу portage (defective by design).

Для пользователя[править | править код]

  • Предсказуемость и конфигурация «заранее», а не «во время».
  • Быстродействие — написан на C++.
  • Высокая скорость разработки и отсутствие задержек связанных с бюрократией.
  • Небольшие собственные зависимости и грамотная интеграция всех инструментов, в том числе GLSA.
  • Изначальная поддержка нескольких репозиториев.
  • Профили связанные с репозиториями.
  • Документированность и чистота кода.
  • Многочисленные хуки для запуска пользовательских действий.
  • Определяемые пользователем наборы пакетов.
  • Возможность продолжить установку пакетов после сбоя или продолжить прерванную компиляцию гораздо более гибко, чем это возможно в Portage.
  • Возможность понять, какие действительные зависимости у пакета, а не основываясь на довольно грубом выводе опции «--tree» в Portage.
  • Более логично построенные механизмы --query и --pretend.
  • Безопасная установка/удаление пакетов выставляющих *id-флаги на файлах, чтобы в вашей системе не оставались уязвимости даже после того, как уязвимое приложение было заменено.
  • Возможность указывать и использовать SLOT-, USE- для отдельных репозиториев, категорий и пакетов.
  • Изначальная поддержка для пакетов, устанавливаемых из систем контроля версий. Возможность автоматически обновлять их через заданный период времени.
  • Управление пакетами, даже если ebuild(ы) уже не доступен/ны.

Для разработчиков Ebuild[править | править код]

  • Полное и правильное разрешение циклических зависимостей.
  • Глубокое разрешение зависимостей, даже если обновлено не всё.
  • Поддержка «экспериментальных» (читай: 'still not implemented in Portage') EAPI (use dependencies, ranged version specs, -scm and -try version specs, src_uri arrows etc).
  • Возможность доставки новостей до конечного потребителя.
  • Более полезная диагностика.

Для программистов[править | править код]

  • Независимые API, библиотеки и клиенты. К качестве подтверждения преимуществ такого подхода — срок в полгода на написание, тест и миграцию на клиент cave.
  • Практичный ООП API, документация и примеры кода.
  • Соответствующие интерфейсы для различных видов репозиториев.
  • Наборы тестов и обширный статический анализ, чтобы проверить влияние изменений.
  • Тип безопасных интерфейсов, для отлова ошибок программирования во время компиляции.
  • Выбор языка программирования для внешних инструментов.[4]

Использование[править | править код]

Paludis на данный момент имеет только один клиент — cave (лат.). Список всех клиентов можно найти здесь.

Обновление базы данных (синхронизация):

cave sync

Вывод списка установленных пакетов:

cave show 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)

См. также[править | править код]

Примечания[править | править код]

  1. Сhangelog. Дата обращения: 22 ноября 2010. Архивировано 26 октября 2010 года.
  2. Frequently Asked Questions. Дата обращения: 11 августа 2010. Архивировано 31 июля 2010 года.
  3. Why not fix Portage?. Дата обращения: 20 октября 2010. Архивировано 31 октября 2010 года.
  4. configuration. Дата обращения: 22 ноября 2010. Архивировано 2 декабря 2010 года.

Ссылки[править | править код]