Paludis

Paludis
Paludis.png
Процесс работы Paludis
Тип Менеджер пакетов
Разработчик Ciaran McCreesh
Написана на С++
Операционная система кроссплатформенный
Последняя версия 2.6.0 (2 мая 2016)
Лицензия 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?[ | ]

В е portage слишком много дефектов, чтобы его можно было ис. Это огромное мессиво спагетти-образного процедурного а без какого-либо дизайна. Он повсеместно и везде опирается на нестандартные трюки, поэтому любое его изменение способно сильно нарушить работоспособность в, казалось бы, никак несвязных областях. Он практически целиком недокументирован, внутренние переменные нелепы и часто уже не отражают реалии, которые выполняет в настоящее время.[3]

— 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 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)

См. также[ | ]

Примечания[ | ]

Ссылки[ | ]