Paludis

Paludis — менеджер программных пакетов, подхода «построение из исходных кодов» (source-based). Применяется в ОС Exherbo и, в качестве альтернативы portage, на Gentoo (оба применяют ядро Linux). В активном развитии с января 2006 года[1].

Paludis

Процесс работы Paludis
Тип Менеджер пакетов
Разработчик Ciaran McCreesh
Написана на C++
Операционная система кроссплатформенный
Последняя версия 2.6.0 (2 мая 2016)
Лицензия GNU GPL
Сайт paludis.exherbo.org

Происхождение

Изначально 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).

Для пользователя

  • Предсказуемость и конфигурация «заранее», а не «во время».
  • Быстродействие — написан на 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)

См. также

Примечания

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.