Paludis (Paludis, the Other Package Mangler)

Sabayon, Calculate, Funtoo, Exherbo

Модератор: /dev/random

Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 7721
Статус: Маньяк
ОС: Android, GNU/Linux, Windows

Paludis

Сообщение serzh-z » 02.03.2009 16:34

v. 0.99 DRAFT

Введение

Итак, что же такое Paludis? Если вы подумали о чём-нибудь, связанном с растениями, то, не смотря на логотип на официальном сайте, уверяю, попали пальцем в небо.

Paludis - это альтернативный (так же как и нерассматриваемый здесь pkgcore) пакетный менеджер, написанный для дистрибутива Gentoo Linux и его производных, но, теоретически, не ограниченный только лишь этими дистрибутивами.

Хотя Paludis разрабатывается на протяжении нескольких лет одним из разработчиков Gentoo, данный пакетный менеджер не является проектом Gentoo Foundation, так же как и не является официальным пакетным менеджером в этой системе. Paludis, the Other Package Mangler Paludis не является ни надстройкой, ни дополнением к Portage. Хотя его функции сходны с функциями стандартного пакетного менеджера Gentoo, он не преследует цель воспроизвести все функции Portage. Он просто идёт своим путём, и этот путь очень похож на пути любых других пакетных менеджеров и подвержен влиянию философии Gentoo. "Paludis, the Other Package Mangler" - так звучит описание на официальном сайте.

С момента начала разработки (так же начатой одним из бывших разработчиков Gentoo) Exherbo, Paludis является основным пакетным менеджером этого дистрибутива и многие возможности Paludis написаны специально под Exherbo.

Ниже будут рассмотрены основные отличия Paludis от Portage, его плюсы и минусы, а также будет произведена попытка написать некое подобие краткого руководства по его базовой установке и настройке, а также переходу от использования Portage к использованию Paludis.

Соглашение по оформлению

Идея

Paludis следует PMS (это совсем не медицинский термин, а всего лишь Package Manager Specification) - спецификации пакетного менеджера и использует EAPI - прикладной программный интерфейс файла сборки пакетов. PMS призван обеспечить совместимость между различными пакетными менеджерами, используемых в Gentoo Linux, его производных, и, возможно, прочих дистрибутивах. Это означает, что он полностью совместим с базой доступных, базой установленных и форматом пакетов, используемых Portage. Из чего следует, что данные пакетные менеджеры являются вполне взаимозаменяемыми и могут использовать в системе одновремено. При условии, что пакеты не используют более новую версию EAPI, неподдерживаемую Portage или некоторые расширения к EAPI, предоставляемые Paludis, которые могут быть несовместимыми с Portage. В противном случае пакет откажется устанавливаться, или же, если используется очень старая версия Portage, не поддерживающая спецификацию PMS, может работать непредсказуемо.

Несмотря на то, что авторы Paludis ссылаются на Portage, как на "предшественник" - с недавних пор последние версии Portage не сильно отстают, как по базовым, так и по расширенным, возможностям от Paludis. По-крайней мере современные версии Portage так же поддерживают PMS/EAPI (EAPI-2), Git и т.д.

Дополнительную информацию о EAPI можно найти здесь: http://www.gentoo-wiki.info/EAPI.

О PMS - здесь: http://www.gentoo.org/proj/en/qa/pms.xml.

Текущая спецификация PMS: http://dev.gentoo.org/~ferdy/pms/pms-head.pdf.

Блог главного разработчика Paludis: http://ciaranm.wordpress.com/.

Реализация

В отличии от Portage, написанного на языке программирования Python, Paludis написан на C++. Это даёт ему определённый выигрыш в скорости, по сравнению с Portage. Хотя за скорость работы придётся расплачиваться большим временем сборки самого менеджера. Надо заметить, что последние версии Portage проигрывают в скорости Paludis очень незначительно.

Paludis имеет достаточно строгий, хотя и недостаточно прозрачный API, позволяющий писать приложения, работающие поверх пакетного менеджера. Данный API доступен для нескольких языков: прежде всего для C++, Ruby и Python.

Фактически основной консольный клиент Paludis, позволяющий выполнять основные операции, такие как - установка и удаление пакетов, обновление репозиториев, вывод информации о конфигурации Paludis - это лишь небольшое приложение, использующее возможности ядра Paludis через его API. В стандартную поставку Paludis входят дополнительные клиенты - такие как importare, inquisitio, reconcilio и другие.

То есть, одним из основных отличий Paludis от других пакетных менеджеров, и, в частности, от Portage, является: наличие конфигурации, репозиториев, ядра, имеющему доступ к конфигурации и репозиториям, и различных клиентов, которые взаимодействуют с ядром менеджера и не взаимодействуют с конфигурацией, репозиориями и друг с другом напрямую.

Возможности

Отличия

Достоинства

- хорошая производительность
- гибкая система конфигурирования
- хорошо продуманная раздельная архитектура, позволяющая, при желании, легко расширять пакетный менеджер и изменять формат пакетов, не затрагивая при этом клиентов
- масштабируемая и гибкая система репозиториев: можно иметь как один единственный репозиторий, так и их сотню, нет привязки к "официальному" или "основному" репозиторию - каждому репозиторию можно присвоить собственный приоритет
- возможность работать в режиме совместимости с другими пакетными менеджерами, в частности Portage, в случае сборки с USE-флагом portage
- теоретическую возможность работать в других дистрибутивах систем POSIX (Portage так же способен на это, но при больших усилиях, Paludis изначально штатно предусматривает такую возможность)

Недостатки

- недостаточная простота использования неподготовленным пользователем
- официально относится к "неподдерживаемому программному обеспечению" в силу идеологических разногласий с ведущими разработчиками Gentoo и Portage
- документация, написанная разработчиками, недостаточно подробна
- отсутствие удобного и быстрого клиента для индексирования и поиска пакетов

Установка

Paludis поставляется без каких либо умолчальных конфигурационных файлов. В подобной коплектации он даже неспособен запуститься.

Режим совместимости

Существует возможность собрать Paludis с флагом portage - в этом случае он будет использовать существующую среду Portage, не требуя собственных конфигурационных файлов. Но в этом случае невозможно будет использовать расширенные возможности Paludis.

Автоматическая

Можно использовать официальный скрипт http://git.pioto.org/?p=paludis-scripts.gi...ge2paludis.bash. Он пытается анализировать конфигурационные файлы Portage и создаёт на их основе конфигурациюнные файлы Paludis. Результат работы этого скрипта обязательно следует проверить.

Ручная

Все конфигурационные файлы Paludis, по умолчанию, должны быть размещены в /etc/paludis.

Paludis поддерживает следующие форматы конфигурационных файлов:

- файл bashrc, представляет из себя bash-скрипт, который выполняется Paludis перед выполнением каких-либо операций. Используется для установки переменных среды, подобхных CFLAGS и PATH. Файл bashrc выполняется в песочнице
- текстовые файлы с суффиксом .conf, статические конфигурационные файлы, каждая строка которого содержит один параметр в формате имя=значение. Значение параметра может ссылаться на имя другого параметра в стиле bash - $имя или ${имя}. Имена параметров чувствительны к регистру. Пустые строки игнорируются. Строки, начинающиеся с решётки # игнорируются. Проблемы в начале и конце строки игнорируются. Перенос строк осуществляется с помощью обратного слеша \
- текстовые файлы с суффиксом .conf, статические конфигурационные файлы, каждая строка которого содержит список токенов (см. ниже), разделённых пробелами. Пустые строки игнорируются. Строки, начинающиеся с решётки # игнорируются. Проблемы в начале и конце строки игнорируются. Перенос строк осуществляется с помощью обратного слеша \
- скрипты с суффиксом .bash, динамические конфигурационные файл, представляющие из себя bash-скрипты, вывод которых будет интерпретироваться так же как содержимое конфигурационного файла .conf
- каталоги с суффиксом .conf.d, Paludis будет ожидать в подобных каталогах файлы .conf и .bash

Второй тип файлов .conf содержит список токенов, разделённых пробелами. Данный тип конфигурационных файлов позволяет связать с определёнными пакетами, или другими сущностями Paludis, некоторые значения.

Первый токен - это спецификация пакета, зеркала и т.д., которая представляет собой совокупность категории, имени пакета, имени набора, имени зеркала и имени репозитория, и имеет следующий формат:

- [оператор]категория/пакет-[версия][суффикс], более полную информацию о спецификации пакета можно найти ниже
- набор, набор - это определённый конфигурацией набор пакетов, примерами наборов являются встроенные наборы: everything, insecurity, security, system, world
- зеркало, зеркало - это набор сетевых ресурсов (ftp, http и т.д.), содержащих в себе набор определённых файлов, которые требуются для сборки пакета. Большинство пакетов содержат в себе ссылку на то или иное зеркало, вместо прямой ссылки на ресурс. Пакеты могут ссылаться просто на зеркала, без указания имени конкретного зеркала, в этом случае будет использовано зеркало с именем репозитория, которому принадлежит пакет, либо зеркало, специфицированное шаблоном *.

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

В спецификации пакета могут быть использованы следующие необязательные компоненты:

Операторы:

- =, равно
- <=, меньше или равно
- <, меньше
- >=, больше или равно
- >, больше
- ~, равно, исключая ревизию пакета. Если указана ревизия пакета, то, так же, больше или равно этой ревизии
- =*, начинается со строки. Символ *, должен следовать за версией, например: =sys-apps/paludis-2.* или sys-apps/paludis-[=2.*]
- ~>, больше или равно и меньше следующей наименьшей значащей версии (~>1.2.3 подразумевает выборку пакетов >=1.2.3 и <1.3)

Суффиксы:

- :слот, номер слота, например: sys-devel/gcc:4.2
- ::репозиторий->репозиторий, параметры репозитория, см. ниже
- [флаг] и [-флаг], включенный или отключенный USE-флаг. Может быть указан несколько раз для разным флагов
- [=1.23], частично соответствует указанной версии. Любой другой поддерживаемый оператор, кроме =, может быть использован. Операторы | или & могут быть использованы, чтобы указать несколько версий. Например, для того, чтобы установить GRUB 2, но исключить версию из Subversion, можно задать следующий критерий: sys-boot/grub[>=1&<9999]
- [.ключ=значение], значение ключа метаданных. Поддерживаются только простые ключи метаданных

Параметры репозитория:

- репозиторий, находится в указанном репозитории
- репозиторий?, может быть установлен в указанной репозиторий
- репозиторий??, то же самое, но игнорировать маскирование
- /путь, установлен в корень /путь
- /путь?, может быть установлен в репозиторий формата VDB с корнем /путь
- /путь??, то же самое, но игнорировать маскирование

В качестве значения обычно может быть использован шаблон *, который имеет более высокий приоритет нежели все остальные значения.

Все последующие токены в строке - это набор, связанных со спецификацией значений. Среди токенов может встречатся метка вида метка:, которая определяет подгруппу значений, и после которой все оставшиеся в строке значения будут включены в подгруппу с именем метка. Например:

Код: Выделить всё

x11-base/xorg-server::gentoo xcb VIDEO_CARD: -* nvidia radeonhd

Означает, что с пакетом x11-base/xorg-server из репозитория gentoo нужно связать значения xcb, nvidia и radeonhd, последние два значения нужно включить в подгруппу значений VIDEO_CARD. В настоящий момент подгруппы значений применяются для задания дополнительных USE-флагов. В данном случае список значения представляет собою список USE-флагов.

Для работы Paludis необходимы, по-меньшей мере, следующие файлы (для дистрибутива Gentoo Linux, в соответствии с /usr/share/paludis/distributions/gentoo и /usr/share/paludis/distributions/gentoo.conf):

- bashrc
- environment.conf
- keywords.conf
- licenses.conf
- repositories/

Для большинства систем потребуется следующий набор файлов:

- bashrc
- environment.conf
- keywords.conf
- licenses.conf
- mirrors.conf
- package_mask.conf
- package_unmask.conf
- repositories/
- repositories/playman.tmpl
- repository_defaults.conf
- use.conf

bashrc

В простейшем случае может иметь следующий вид:

Код: Выделить всё

CHOST="x86_64-pc-linux-gnu"
CFLAGS="-O2 -pipe"

Аналогичный умолчальному make.conf из Portage.

Либо:

Код: Выделить всё

CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=native -O2 -pipe -msse4"
MAKEOPTS="-j17"

if expr $(date +%w) = 7; then
    CFLAGS="${CFLAGS} -g -ggdb3"
fi

if [[ "${CATEGORY}" != "sys-apps" ]]; then
    CCACHE_DIR="/var/tmp/ccache"
    PATH="/usr/lib64/ccache/bin:${PATH}"
fi

Позволяющему указать дополнительные параметры компилятора и то, что в Воскресенье все собираемые пакеты должны быть собраны с отладочной информацией. А так же то, что все пакеты, кроме пакетов из категории sys-apps, должны быть собраны с использованием ccache.

environment.conf

Данный конфигурационный файл описывает среду окружения Paludis.

В простейшей ситуации будет достаточно параметра world, описывающего путь к файлу world, содержащему список пакетов набора world (пакетов, явно установленных пользователем). В большинстве систем, основанных на Gentoo Linux, - это /var/lib/portage/world.

Код: Выделить всё

world = /var/lib/portage/world

Информацию об остальных параметрах можно найти здесь: http://paludis.pioto.org/configuration/environment.html.

keywords.conf

Данный конфигурационный файл служит для отбора пакетов по ключевым словам архитектуры. Первый токен - спецификация пакета, второй и последующие - список ключевых слов.

Ключевые слова представляют собой список следующих значений:

- архитектура, отобрать все пакеты содержащие ключевое слово архитектура. Например: amd64, x86
- ~архитектура, отобрать все пакеты содержащие ключевое слово ~архитектура. Например: ~amd64, ~x86
- *, отобрать все пакеты, даже те, которые не содержат никакого ключевого слова
- -*, сбросить все ключевые слова, применённые ранее к подобной спецификации пакета

Пример:

Код: Выделить всё

# Отобрать все пакеты с ключевым словом amd64 из всех репозиториев
*/* amd64

# Выбрать нестабильный пакет sys-apps/paludis с ключевым словом ~amd64 из репозитория gentoo
sys-apps/paludis::gentoo ~amd64

# Заблокировать все пакеты из репозитория sunrise
*/*::sunrise -*

# Выбрать нестабильный пакет media-sound/mpd из репозитория с более высоким приоритетом
media-sound/mpd ~amd64

licenses.conf

Данный конфигурационный файл служит для отбора пакетов по типам лицензий. Первый токен - спецификация пакета, второй и последующие - список токенов лицензий.

Токены лицензий представляют собой список следующих значений:

- лицензия, разрешить лицензию
- -лицензия, запретить лицензию
- -*, запретить все лицензии
- *, разрешить все лицензии

Пример:

Код: Выделить всё

*/* GPL-2 GPL-3 LGPL-2 LGPL-2.1
x11-drivers/* NVIDIA

В большинcтве случаев это файл будет выглядеть так:


mirrors.conf

Данный конфигурационный файл указывает Paludis - где искать файлы для скачивания при сборке ебидов. Первый токен - спецификация зеркала, второй и последующие - список URL. В стандартной поставке Paludis поддерживаются следующие схемы URL:

- file
- ftp
- http
- https

Список поддерживаемых схем может быть сравнительно просто расширен пользователем через механизм создания собственных фетчеров (fetchers).

В качестве списка URL можно использовать тот же самый список, используемый Portage. Но стоит иметь в виду, что Portage неявно подставляет суффикс distfiles/ к каждому URL. То есть, фактически, требует, чтобы каждый URL оканчивался суффиксом distfiles/. В случае с Paludis этот суффикс, если он на самом деле нужен, следует добавить самостоятельно. Например список зеркал и URL из конфигурации Portage:

Код: Выделить всё

* http://myserver/
gentoo http://distfiles.gentoo.org/

В конфигурации Paludis может выглядеть так:

Код: Выделить всё

* http://myserver/distfiles/
gentoo http://distfiles.gentoo.org/distfiles/

Пример:

Код: Выделить всё

* file://mnt/distfiles/ ftp://192.168.1.1/gentoo/
mpd http://sourceforge/distfiles/
my file:///media/usbdrive/
sunrise http://gentoo.local/distfiles/sunrise/

package_mask.conf

Данный конфигурационный файл служит для безусловной маскировки пакетов. Каждая строка - это спецификация пакета.

Файл package_unmask.conf имеет более высокий приоритет нежели package_mask.conf. Если пакет попадает под спецификацю, как в package_mask.conf, так и в package_unmask.conf, то он будет расмаскирован.

Пример:

Код: Выделить всё

<dev-lang/perl-5.10.0
=media-sound/mpd-9999

package_unmask.conf

Данный конфигурационный файл служит для безусловной маскировки пакетов. Каждая строка - это спецификация пакета.

Файл package_unmask.conf имеет более высокий приоритет нежели package_mask.conf. Если пакет попадает под спецификацю, как в package_mask.conf, так и в package_unmask.conf, то он будет расмаскирован.

Пример:

Код: Выделить всё

media-plugins/*::mpd
media-sound/mpd::mpd

repositories/

Каждый файл в каталоге repositories определяет репозитории Paludis. Репозитории бывают разных типов - есть репозитории, в которых выполняется поиск устанавливаемых пакетов, есть репозитории, в которых выполняется поиск установленных пакетов, есть репозитории, в которых выполняется поиск существующих пакетов, но которые не могут быть установленны без предварительного создания дополнительных репозиториев. Общее количество репозиториев неограниченно.

Любой, существующий в системе, пакет всегда присутствует в одном или нескольких репозиториях. Так, он может присутствовать в одном из репоизитории формата ebuild и в репозитории формата VDB. Или только в ebuild, или только в VDB. В репозиторий формата installed_unpackaged пакеты попадают из "ниоткуда".

У Paludis нет такого понятия, как оверлеи - все репозитория, по умолчанию, являются равными между собою. Различие и отношения между ними определяет пользователь с помощью параметров format, importance и master_repository. То есть никто не запрещает определить репозиторий local, с более высоким приоритетом, чем, например, funtoo и gentoo, последним можно выставить в качестве master_repository репозиторий local.

У каждого из этих репозиториев может быть установлен различный формат, разный приоритет, и различные типы и источники их синхронизации. Для клиентов Paludis это не будет иметь никакого значения - они будут работать с пакетами через Paludis API и использовать различные спецификации пакетов, для отбора различных пакетов.

Bмя репозитория никак не связано с именем конфигурационного файла репозитория. Для репозиториев формата ebuild имя хранится в файле repo_name, находящимся в каталоге профиля. До первичной синхронизации репозитория этот файл обычно недоступен и Paludis использует имя конфигурационного файла с префиксом x- и без постфикса .conf или .bash. Например: x-gentoo для репозитория, описанного файлом gentoo.conf.

Формат репозитория определяет его структуру и тип поддерживаемых пакетов. Форматы репозиториев:

- unavailable, репозиторий содержащий информацию о пакетах, которые недоступны. Такой репозиторий содержит лишь описание пакетов
- installed_unpackaged, репозиторий, содержащий пакеты, установленные с помощью клиента importare. Репозиторий installed_unpackaged позволяет сохранить информацию о приложениях, которые не принадлежат дереву пакетов Gentoo
- ebuild, репозитоий, содержащий стандартные пакеты Gentoo
- VDB, репозиторий, содержащий пакеты, установленные из стандартных пакетов Gentoo
- virtuals, виртуальный репозиторий, содержащий информацию о доступных пакетах, которые предоставляют виртуальные
- installed-virtuals, виртуальный репозиторий, содержащий информацию о установленных пакетах, которые предоставляют виртуальные
- exndbam
- accounts
- installed_accounts
- unwritten

Последние пять форматов предназначены для использования только в дистрибутиве Exherbo и в данной статье рассмотрены не будут.

Для каждого формата репозитория существует как общий, так и собственный набор параметров.

Некоторые из репозиториев имеют источник синхронизации. По-умолчанию поддерживаются следующие протоколы синхронизации:

- bzr
- bzr+aftp
- bzr+file
- bzr+ftp
- bzr+http
- bzr+https
- bzr+sftp
- bzr+ssh
- cvs+ext
- cvs+pserver
- cvs+ssh
- darcs+file
- darcs+http
- darcs+https
- darcs+ssh
- file
- git
- git+file
- git+http
- git+https
- git+rsync
- git+ssh
- hg+file
- hg+http
- hg+https
- hg+ssh
- hg+static-http
- rsync
- rsync+ssh
- svn
- svn+file
- svn+http
- svn+https
- svn+ssh
- tar+file
- tar+ftp
- tar+http
- tar+https
- dummy

Общие параметры таковы:

- root, предопопределённый параметр, задаваемый в specpath.conf
- format, формат репозитория, обязателен
- importance, целое, задающее приоритет репозитория. Пакет из репозитория с более высоким приоритетом, при отборе пакетов будет иметь преимущество перед таким же (категория, имя, версия) пакетом из репозитория с более низким приоритетом. По молчанию importance имеет значение 0, если установлен параметр master_repository, то - 10

Параметры репозитория unavailable:

- location, путь к репозиторию, обязателен
- name, имя репозитория, по умолчанию - unavailable
- sync, источник синхронизации репозитория
- sync_options, необязательные параметры для синхронизатора

Пример:

Код: Выделить всё

format = unavailable
location = /var/db/paludis/repositories/unavailable
sync = tar+http://git.exherbo.org/layman_repositories.tar.bz2
importance = -1

Параметры репозитория installed_unpackaged:

- location, путь к репозиторию, обязателен

Пример:

Код: Выделить всё

format = installed_unpackaged
location = /var/db/paludis/repositories/installed_unpackaged

Параметры репозитория ebuild:

- location, путь к репозиторию, обязателен
- master_repository, необязательное имя другого репозитория, имеющего формат ebuild. Установлено, то указанный репозиторий будет является главным по отношению к текущему, все отсутствующие параметры текущего репозитория будут наследоваться от главного. В случае, если параметр master_repository установлен, то приоритет текущего репозитория по умолчанию будет 10
- profiles, обязательный список каталогов, которые должны быть использованы в качестве профилей
- eclassdirs, необязательный список каталогов, в которых нужно искать еклассы
- distdir, необязательный параметр, указывающий каталог, в котором искать и куда сохранять дистфайлы, по умолчанию ${location}/distfiles
- setsdir, необязательный параметр, указывающий каталог, в котором искать описание наборов, по умолчанию ${location}/sets
- securitydir, необязательный параметр, указывающий каталог, в котором искать описание GLSA, по умолчанию ${location}/metadata/glsa
- newsdir, необязательный параметр, указывающий каталог, в котором искать новости GLEP 42, по умолчанию ${location}/metadata/news
- cache, необязательный параметр, указывающий каталог, в котором хранится кеш пакетов только для чтения. По умолчанию ${location}/metadata/cache. Если установлен в /var/empty, то кеш не будет использован
- write_cache, необязательный параметр, указывающий каталог, который Paludis будет записывать или из которого будет читать созданный кеш пакетов. По умолчанию ${location}/metadata/cache. Если установлен в /var/empty, то кеш не будет использован. По умолчанию /var/empty. Рекомендуется использовать в том случае, если репозиторий не имеет своего, предварительно созданного, кеша только для чтения, задаваемого параметром cache. Официальный репозиторий Gentoo такой кеш имеет
- append_repository_name_to_write_cache, необязательный параметр, содержащий булево значение, указывающий на необходимость создания в каталоге, задаваемом параметром write_cache, подкатала с именем репозитория. По умолчанию true. Для внутренних нудж
- ignore_deprecated_profiles, необязательный параметр, содержащий булево значение, указывающий на необходимость игнорирования устаревшийх профилей. Для внутренних нудж
- eapi_when_unknown, версия EAPI, которую следует использовать, если версия EAPI пакета неизвестна. Необязательный параметр, обычно устаналиваемый дистрибутивом
- eapi_when_unspecified, версия EAPI, которую следует использовать, если в пакете не указана версия EAPI. Необязательный параметр, обычно устаналиваемый дистрибутивом
- profile_eapi_when_unspecified, версия EAPI, которую следует использовать для профилей, когда она не указана. Необязательный параметр, обычно устаналиваемый дистрибутивом
- names_cache, необязательный параметр, указывающий каталог, который Paludis будет записывать или из которого будет читать созданный кеш имён пакетов. Этот кеш используется для поиска имени категории по имени пакета. Если установлен в /var/empty, то кеш не будет использован. По умолчанию /var/empty. Этот кеш значительно увеличивает скорость определения категории пакета
- sync, источник синхронизации репозитория
- sync_options, необязательные параметры для синхронизатора
- builddir, временный каталог, который следует использовать для сборки пакетов. Необязательный параметр. По умолчанию ${root}/var/tmp/paludis
- layout, раскладка репозитория, может быть traditional или exheres. Необязательный параметр, обычно устаналиваемый дистрибутивом
- use_manifest, необязательный параметр, определяющий как следует использовать файлы манифестов Manifest2, может быть use, require или ignore:
- use, проверять файлы, в соответствии с манифестом, если манифест существует
- ignore, игнорировать манифест
- require, если манифест не найден, то установка пакета будет прервана

Примеры:

Код: Выделить всё

format = ebuild
location = ${root}/usr/portage
names_cache = ${root}/var/cache/paludis/names
profiles = ${root}/etc/make.profile
sync = git://github.com/funtoo/portage.git

Код: Выделить всё

format = ebuild
location = /usr/portage
names_cache = /var/cache/paludis/names
profiles = ${location}/profiles/default/linux/amd64/2008.0/desktop
sync = rsync://rsync.gentoo.org/gentoo-portage/

Код: Выделить всё

format = ebuild
location = /var/db/paludis/repositories/sunrise
master_repository = funtoo
names_cache=/var/cache/paludis/names
sync = svn+http://overlays.gentoo.org/svn/proj/sunrise/reviewed/
write_cache=/var/cache/paludis/write

Параметры репозитория VDB:

- location, путь к репозиторию, обязателен
- provides_cache, необязательный параметр, указывающий каталог, который Paludis будет записывать или из которого будет читать созданный кеш вирутальных пакетов. Если установлен в /var/empty, то кеш не будет использован. По умолчанию /var/empty
- names_cache, необязательный параметр, указывающий каталог, который Paludis будет записывать или из которого будет читать созданный кеш имён пакетов. Этот кеш используется для поиска имени категории по имени пакета. Если установлен в /var/empty, то кеш не будет использован. По умолчанию /var/empty. Этот кеш значительно увеличивает скорость определения категории пакета
- builddir, временный каталог, который следует использовать при удалении пакетов. Необязательный параметр. По умолчанию ${root}/var/tmp/paludis

Пример:

Код: Выделить всё

format = vdb
location = ${root}/var/db/pkg
provides_cache = ${root}/var/cache/paludis/provides
names_cache=/var/cache/paludis/names

repositories/playman.tmpl

Данный конфигурационный файл может использоваться в качестве шаблона утилитой playman, входящей в поставку Paludis, для создания конфигурационного файла репозитория, при добавлении нового репозитория.

Файл представляет собою текстовый конфигурационный файл, идентичный конфигурационным файлам репозиториев .conf, в котором могут использоваться следующие шаблоны:

- @NAME@, имя нового репозитория
- @SYNC@, URL синхронизации нового репозитория

Пример:

Код: Выделить всё

format = ebuild
location = ${root}/var/db/paludis/repositories/@NAME@
master_repository = gentoo
names_cache = ${root}/var/cache/paludis/repositories/names
sync = @SYNC@
write_cache=${root}//var/cache/paludis/write

repository_defaults.conf

Данный конфигурационный файл служит для задания параметров по умолчанию для всех репозиториев. Если параметр не поддерживается некоторым форматом репозитория, то он будет проигнорирован.

Пример:

Код: Выделить всё

names_cache = ${root}/var/cache/paludis/names
write_cache = ${root}/var/cache/paludis/write

use.conf

Данный конфигурационный файл описывает среду окружения Paludis.

В простейшей ситуации будет достаточно параметра world, описывающего путь к файлу world, содержащему список пакетов набора world (пакетов, явно установленных пользователем). В большинстве систем, основанных на Gentoo Linux, - это /var/lib/portage/world.

Код: Выделить всё

world=/var/lib/portage/world

Информацию об остальных параметрах можно найти здесь: http://paludis.pioto.org/configuration/environment.html.

keywords.conf

Данный конфигурационный файл служит для задания USE-флагов. Первый токен - спецификация пакета, второй и последующие - список USE-флагов и подгрупп USE-флагов.

Токены USE-флагов представляют собой список следующих значений:

- флаг, включить флаг
- -флаг, отключить флаг
- -*, отключить все флаги

Пример:

Код: Выделить всё

# Флаги, применимые для большинства пакетов
*/* -32bit -alsa -arts applet avahi -bluetooth -esound bash-completion -esd -ipv6 -kde minimal nautilus pulseaudio -qt3 -qt4 -sse3 tracker vim-syntax visibility xinetd

# Отключить поддержку всех видеокарт, кроме Radeon HD для всех пакетов
*/* VIDEO_CARDS: -* radeonhd

# Отключить поддержку протокола evdev для всех пакетов
*/* INPUT_DEVICES: -evdev

# Не удалять отладочную информацию из пакетов, устанавливаемых из репозитория local
*/*::local BUILD_OPTIONS: -strip

app-editors/vim -minimal
dev-lang/python sqlite
dev-libs/gmime mono
dev-libs/libcdio -minimal
media-gfx/splashutils fbcondecor
media-sound/pulseaudio alsa
net-dns/avahi mdnsresponder-compat
sys-apps/paludis inquisitio ruby-bindings
sys-apps/smartmontools -minimal
sys-libs/ncurses -minimal
x11-base/xorg-server -minimal
x11-libs/cairo glitz
x11-libs/libX11 xcb

Использование

Как было сказано выше, Paludis имеет несколько консольных клиентов в поставке. Ниже будут кратко рассмотрены основные возможности и способы использования большинства из них. Многие клиенты поддерживаются одинаковые параметры командной строки - подобные параметры будут описаны в отдельной группе.

Список всех возможностей клиентов можно найти здесь: http://paludis.pioto.org/clients/index.html

Для обычного пользователя:

- paludis, клиент для управления пакетами и выполнения основных операция пакетного менеджера
- importare, клиент для создания в системе пакетов из произвольного набора файлов
- inquisitio, клиент для индексирования и поиска пакетов
- reconcilio, клиент для поиска и пересборки испорченных пакетов

Для разработчиков пакетов и мейнтейнеров:

TDB: - accerso, клиент для управления зеркалами
- adjutrix, набор утилит для разработчиков пакетов и команд, ответственных за поддержку архитектур
- instruo, клиент для создания метаданных
- qualudis, клиент для тестировщиков
- appareo, клиент для создания манифестов

Так же имеется набор экспериментальных утилит:

- playman, утилита, позволяющая получить подключить репозитории layman

paludis

paludis позволяет выполнять основные операции пакетного менеджера, такие как:

- выводить информацию о пакетах, репозиториях и среде
- устанавливать и удалять пакеты
- синхронизировать и индексировать репозитории

paludis работает с целями. Целью может являться один или несколько спецификаций пакетов или набор.

Основные сценарии использования

Синхронизировать репозитории:

paludis {-s|--sync} репозиторий... [-p|--pretend] [--continue-on-failure {if-fetch-only|never|if-satisfied|if-independent}]

Параметры:

- -s, --sync, переключиться в режим обновления репозиториев
- -p, --pretend, тестовый режим, не производить никаких изменений в системе

Следует помнить, что имя репозитория никак не связано с именем конфигурационного файла репозитория. Для первичной синхронизации большинства репозиториев потребуется использовать условное имя, состоящее из префикса x-[i/] и имени конфигурационного файла без суффикса [i].conf или .bash.

Пример:

Код: Выделить всё

# Первичное обновление репозитория mpd
paludis -s x-mpd

# Обновить репозитории gentoo и sunrise
paludis -s gentoo sunrise

# Обновить все репозитории
paludis -s

Установить или обновить:

paludis {-i|--install} цель... [-p|--pretend] [-1|--preserve-world] [-f|--fetch] [--continue-on-failure {if-fetch-only|never|if-satisfied|if-independent}]

Параметры:

- -i, --install, переключиться в режим установки или обновления одного или нескольких пакетов или набора
- -p, --pretend, тестовый режим, не производить никаких изменений в системе
- -1, --preserve-world, не изменять набор world
- -f, --fetch, скачать исходные файлы пакетов и остановиться

Пример:

Код: Выделить всё

# Установить или обновить все пакеты в системе
paludis -i everything

# Показать информацию о пакетах, которые будут установлены, но не выполнять саму установку
paludis -ip everything

# Скачать исходные файлы для пакета gnome и его зависимостей и остановиться // TODO: добавить пример с категорией gnome/*
paludis -if gnome

# Скачать исходные файлы app-editors/vim и его зависимостей, и установить их
paludis -i app-editors/vim

# Скачать исходные файлы sys-apps/paludis и его зависимостей, и установить их, но не записывать их в набор world
paludis -i1 sys-apps/paludis

Удалить:

paludis {-u|--uninstall} цель... [-p|--pretend] [-1|--preserve-world] [--continue-on-failure {if-fetch-only|never|if-satisfied|if-independent}]

Параметры:

- -u, --uninstall, переключиться в режим удаления одного или нескольких пакетов или набора
- -p, --pretend, тестовый режим, не производить никаких изменений в системе
- -1, --preserve-world, не изменять набор world

Пример:

Код: Выделить всё

# Удалить gnome
paludis -i gnome

Более полную информацию о клиенте можно найти в странице man или на сайте Paludis: http://paludis.pioto.org/clients/paludis.html.

importare

Клиент для установки пакетов в репозиторий формата installed_unpackaged. Позволяет установить и зарегистрировать в системе произвольный набор файлов под видом установленного пакета. В дальнейшем этот пакет будет подчиняться тем же правилам, что и пакеты в репозитории формата VDB. Это означает, что к с ним смогут работать такие клиенты, как paludis, inquisitio и т.д.

Очень мощное и удобное средство для установки приложений, собранных из исходных файлов вручную, для которых создание ебилда невозможно или неоправдано. Фактически, это аналог stow, XStow или checkinstall, интегрированный в Paludis. Можно распаковать какой-нибудь RPM-пакет из другого дистрибутива, и установить его с помощью importare в Gentoo Linux, не создавая при этом в системе мусора, в виде бесхозных файлов и не написав ни строки кода в ебилде.

Основные сценарии использования

Установить и зарегистрировать набор файлов:

importare [-i|--install] [-p|--pretend] [-1|--preserve-world] [--location путь] [-u|--install-under] категория/пакет [версия] [слот]

Параметры:

- -i, --install, переключиться в режим установки или обновления
- -p, --pretend, тестовый режим, не производить никаких изменений в системе
- -1, --preserve-world, не изменять набор world
- -l, --location, установить файлы из каталога путь, по умолчанию используется текущий каталог
- -u, --install-under, использовать каталог в качестве корня. Аналогично использованию --prefix для скрипта configure, созданного с помощью autoconf
- категория/пакет, версия, слов, категория и имя пакета, версия и слот, которые следует использовать при регистрации пакета в системе

Пример:

Код: Выделить всё

# Установить GRUB2
importare -l /tmp/grub-1.97/img sys-boot/grub 1.97 2

# Установить набор скриптов в /usr/local
importare -l /home/user/src/bash -u /usr/local unpackaged/utils 0.99

inquisitio

inquisitio позволяет выполнить поиск пакетов, используя в качестве критериев поиска множество параметров, такие как: имя или категория пакета, описание, домашняя страница. inquisitio поддерживает регулярные выражения.

inquisitio работает с шаблонами. Шаблоном может являться текст или регулярное выражение.

Основной сценарий использования

Поиск:

inquisitio шаблон

Пример:

Код: Выделить всё

# inquisitio ccache
* dev-util/ccache
    gentoo:                  2.4-r6 2.4-r7 (2.4-r8)K* {:0}
    installed:               2.4-r7 {:0}
    Homepage:                http://ccache.samba.org/
    Description:             fast compiler cache
    Use flags:               Build Options: -optional_tests split strip
    Masked by keyword:       ~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd

reconcilio

reconcilio может найти все пакеты, которые связаны с несуществующими библиотеками, и пересобрать их.

Основной сценарий использования

Поиск и пересборка:

reconcilio [-p|--pretend]

- -p, --pretend, тестовый режим, не производить никаких изменений в системе

Пример:

Код: Выделить всё

# reconcilio -p
Searching for broken packages...
No broken packages found

adjutrix

TODO

TODO: Техническое примечание: не смотря на то, что adjutrix для своей работы требует указания пути к пакетам (или используют текущий каталог) - он всё равно работает через ядро Paludis и не сканирует пакеты напрямую, как это делают большинство утилит Portage. adjutrix создаёт временный виртуальный репозитирий для указанного пути и выполняет поиск информации через ядро.

instruo

TODO

qualudis

TODO

appareo

TODO

playman

playman показывает список оверлеев layman и подключает их как репозитории Paludis.

Основные сценарии использования

Отображение списка:

playman [-l|--list]

- -l, --list, отобразить список оверлеев

Пример:

Код: Выделить всё

# playman -l
TODO

Подключение оверлея как репозитория:

playman [-a|--add] оверлей

- -a, --add, создать файл с описанием репозитория

Пример:

Код: Выделить всё

# playman -a sunrise

Приложения

Шпаргалка

Ниже приведены типичные шаги, которые позволят получить рабочий пакетный менеджер Paludis в дистрибутиве Gentoo Linux, в котором установлен Portage.

Автоматическая миграция с Portage на Paludis не рассматривается.

Предполагается, что используется архитектура x86_64, стандартное расположение каталогов и предпочитаемые автором флаги и настройки. Не забывайте, что головою можно не только есть и используйте значения, применимые для конкретной системы. Благо имена переменных (CFLAGS, CHOST и т.д.), ключевых слов (amd64) и семантика конфигурационных файлов (keywords.conf и package.keywords, use.conf и package.use) либо идентичны либо похожи, и при наличии некоторых навыков использования Portage, а также информации, предоставленной в предшествующих разделах, перенос аналогичных настроек Portage в Paludis становится тривиален.

Установка

Если используется стабильная ветка пакетов, то Paludis нужно размаскировать:

Код: Выделить всё

# mkdir -p /etc/portage
# echo "sys-apps/paludis" >> /etc/portage/package.keywords
# emerge paludis

Создание базовой конфигурации

Создание каталогов:

Код: Выделить всё

# mkdir -p /etc/paludis/repositories
# mkdir /var/cache/paludis

Создание конфигурационных файлов:

Код: Выделить всё

# cat > /etc/paludis/bashrc << BASHRC
> CFLAGS="-O2 -pipe -march=native"
> CXXFLAGS="${CFLAGS}"
> CHOST="x86_64-pc-linux-gnu"
> MAKEOPTS="-j17"
> BASHRC

# echo "world = /var/lib/portage/world" > /etc/paludis/environment.conf

# echo "*/* amd64" > /etc/paludis/keywords.conf
# echo "sys-apps/paludis ~amd64" >> /etc/paludis/keywords.conf
# echo "*/* *" > /etc/paludis/licenses.conf

# cat > /etc/paludis/repository_defaults.conf << CONF
> names_cache = /var/cache/paludis/names
> write_cache = /var/cache/paludis/write
> CONF

# cat > /etc/paludis/repositories/gentoo.conf << CONF
> format = ebuild
> location = /usr/portage
> profiles = /etc/make.profile
> sync = rsync://rsync.gentoo.org/gentoo-portage
> CONF

# cat > /etc/paludis/repositories/installed.conf << CONF
> format = vdb
> location = /var/db/pkg
> provides_cache = /var/cache/paludis/provides
> CONF

В отличии от Portage Paludis более осторожно подходит к созданию каталогов и установке режима доступа к ним. Он редко создаёт рабочие каталоги и никогда не меняет владельца и режим доступа к файлам и каталогам. Поэтому пользователю требует задать режим доступа явно. Следует помнить, что при запуске emerge владелец каталога, если для Portage те же самые каталоги, что и Paludis, будет неявно сброшен на пользователя portage:

Код: Выделить всё

# chgrp paludisbuild /usr/portage/distfiles
# chgrp paludisbuild /var/tmp/paludis
# chmod g+w /var/tmp/paludis

Проверка

Индексирование пакетов:

Код: Выделить всё

# paludis --regenerate-installable-cache
Regenerating cache for virtuals...
Regenerating cache for gentoo...

# paludis --regenerate-installed-cache
Regenerating cache for installed-virtuals...
Regenerating cache for installed...

Код: Выделить всё

# paludis -I
paludis 0.36.0
Paludis build information:
    Compiler:
        CXX:                   x86_64-pc-linux-gnu-g++ 4.3.2
        CXXFLAGS:               -O2 -pipe -march=native
        LDFLAGS:               -Wl,-O1
        DATE:                  2009-04-07T23:35:09+0400

    Libraries:
        C++ Library:           GNU libstdc++ 20080827

    Reduced Privs:
        reduced_uid:           101
        reduced_uid->name:     paludisbuild
        reduced_uid->dir:      /var/tmp/paludis
        reduced_gid:           1000
        reduced_gid->name:     paludisbuild

    Paths:
        DATADIR:               /usr/share
        LIBDIR:                /usr/lib64
        LIBEXECDIR:            /usr/libexec
        SYSCONFDIR:            /etc
        PYTHONINSTALLDIR:
        RUBYINSTALLDIR:        /usr/lib64/ruby/site_ruby/1.8/x86_64-linux

Environment:
    Format:                    paludis
    Config dir:                /etc/paludis
    World file:                /var/lib/portage/world

Repository installed-virtuals:
    format:                    installed_virtuals
    root:                      /

Repository virtuals:
    format:                    virtuals

Repository gentoo:
    format:                    ebuild
    location:                  /usr/portage
    append_repository_name_to_write_cache: true
    binary_destination:        false
    binary_keywords:
    binary_uri_prefix:
    builddir:                  /var/tmp/paludis
    cache:                     /usr/portage/metadata/cache
    distdir:                   /usr/portage/distfiles
    eapi_when_unknown:         0
    eapi_when_unspecified:     0
    eclassdirs:                /usr/portage/eclass
    ignore_deprecated_profiles: false
    layout:                    traditional
    names_cache:               /var/cache/paludis/names
    newsdir:                   /usr/portage/metadata/news
    profile_eapi_when_unspecified: 0
    profiles:                  /etc/make.profile
    securitydir:               /usr/portage/metadata/glsa
    setsdir:                   /usr/portage/sets
    sync:                      rsync://rsync.gentoo.org/gentoo-portage
    sync_options:
    use_manifest:              use
    write_cache:               /var/cache/paludis/write

Repository installed:
    format:                    vdb
    location:                  /var/db/pkg
    builddir:                  /var/tmp/paludis
    names_cache:               /var/cache/paludis/names
    provides_cache:            /var/cache/paludis/provides
    root:                      /

No packages were specified on the command line, so detailed information is not
available (Paludis can display detailed information for both installed and
installable packages).

So if you're reporting a bug in cat/pkg, use 'paludis --info cat/pkg' instead.

Синхронизация

Код: Выделить всё

# paludis -s
Sync installed-virtuals
Sync installed-virtuals skipped
Sync virtuals
Sync virtuals skipped
Sync gentoo
Welcome to boobie.gentoo.org

Server Address : 91.186.30.235
Contact Name   : mirror-admin@gentoo.org
Hardware       : 2 x Intel(R) Xeon(R) CPU            3050  @ 2.13GHz, 3965MB RAM

Please note: common gentoo-netiquette says you should not sync more
than once a day.  Users who abuse the rsync.gentoo.org rotation
may be added to a temporary ban list.

MOTD autogenerated by update-rsync-motd on Mon Mar  9 08:33:41 UTC 2009

gentoo-x86-portage    Gentoo Linux Portage tree
gentoo-portage     Gentoo Linux Portage tree mirror
gentoo-sec         Gentoo Linux Security tree mirror
Sync gentoo completed
Sync installed
Sync installed skipped


 * Regenerating cache for installable repositories...
Regenerating cache for virtuals...
Regenerating cache for gentoo...
 * Done regenerating cache for installable repositories

 * Cleaning write cache for ebuild format repositories...
 * Done cleaning write cache for ebuild format repositories

 * No unread news items found

Обновление

Теперь имеет смысл задать наиболее общие USE-флаги, задать некоторые дополнительные возможности Paludis, если они не были включены при первоначальной сборке и пересобрать Paludis, а также, поскольку у Portage и Paludis существуют свои, различные критерии блокировки пакетов (например, по EAPI), обновить устаревшие или вернуться к более старым пакетам:

Код: Выделить всё

# echo "*/* bash-completion vim-syntax visibility" > /etc/paludis/use.conf
echo "sys-apps/paludis inquisitio ruby-bindings" >> /etc/paludis/use.conf

Код: Выделить всё

# paludis -i everything --dl-reinstall if-use-changed

Кто-то захочет использовать вариант безусловной пересборки всех установленных пакетов:

Код: Выделить всё

# paludis -i everything --dl-reinstall always

Но для начала стоит посмотреть на список пакетов, которые будут обновлены или установлены:

Код: Выделить всё

# paludis -i everything --dl-reinstall if-use-changed --log-level silent -p
Building target list...
Building dependency list...

These packages will be installed:

* dev-libs/pcre++ [N 0.9.5-r1]
    Reasons: *sys-apps/paludis-0.36.0:0::gentoo
    build_options: -optional_tests split strip
    "A C++ support library for libpcre"
    376.29 kBytes to download
* dev-ruby/ruby-config [N 0.3.2]
    Reasons: *dev-lang/ruby-1.8.6_p287-r5:1.8::gentoo
    build_options: -optional_tests split strip
    "Utility to switch the ruby interpreter being used"
* dev-lang/ruby :1.8 [N 1.8.6_p287-r5]
    Reasons: *sys-apps/paludis-0.36.0:0::gentoo
    berkdb -debug -doc -emacs -examples gdbm ipv6 -rubytests -socks5 ssl -threads -tk -xemacs build_options: -optional_tests split strip
    "An object-oriented scripting language"
    3.77 MBytes to download
    * virtual/ruby::virtuals :1.8 [D 1.8.7_p72-r11 (for dev-lang/ruby:1.8::gentoo) -> 1.8.6_p287-r5 (for dev-lang/ruby:1.8::gentoo)]
    Reasons: *dev-ruby/ruby-config-0.3.2:0::gentoo
* sys-apps/paludis [R 0.36.0] <everything>
    bash-completion -doc inquisitio* -pink -portage -python-bindings -qa ruby-bindings* vim-syntax visibility -xml -zsh-completion build_options: -optional_tests split strip
    * virtual/portage::virtuals [D 2.2_rc28 (for sys-apps/portage:0::gentoo) -> 0.36.0 (for sys-apps/paludis:0::gentoo)] <system>

Total: 6 packages (3 new, 2 downgrades, 1 rebuild), 4.14 MBytes to download

General sets:

* everything:      All installed packages
* system:          Packages that are part of the base system

USE:

* berkdb:          Adds support for sys-libs/db (Berkeley DB for MySQL)
* debug:           Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see http://www.gentoo.org/proj/en/qa/backtraces.xml
* doc:             Adds extra documentation (API, Javadoc, etc)
* emacs:           Adds support for GNU Emacs
* examples:        Install examples, usually source code
* gdbm:            Adds support for sys-libs/gdbm (GNU database libraries)
* inquisitio:      Enable inquisitio, the search client
* ipv6:            Adds support for IP version 6
* ruby-bindings:   Enable Ruby bindings.
* rubytests:       Install ruby tests that can only be run after ruby is installed
* socks5:          Adds support for the socks5 proxy
* ssl:             Adds support for Secure Socket Layer connections
* threads:         Adds threads support for various packages. Usually pthreads
* tk:              Adds support for Tk GUI toolkit
* xemacs:          Add support for XEmacs

Checking for possible errors......

 * No unread news items found

А тем, у кого имееются проблемы с сетью, имеет смысл сначала убедиться, что все нужные для сборки файлы, скачены:

Код: Выделить всё

# paludis -i everything --dl-reinstall if-use-changed --log-level silent -f
Building target list...
Building dependency list...

These packages will be installed:

* dev-libs/pcre++ [N 0.9.5-r1]
    build_options: -optional_tests split strip
    "A C++ support library for libpcre"
    376.29 kBytes to download
* dev-ruby/ruby-config [N 0.3.2]
    build_options: -optional_tests split strip
    "Utility to switch the ruby interpreter being used"
* dev-lang/ruby :1.8 [N 1.8.6_p287-r5]
    berkdb -debug -doc -emacs -examples gdbm ipv6 -rubytests -socks5 ssl -threads -tk -xemacs build_options: -optional_tests split strip
    "An object-oriented scripting language"
    3.77 MBytes to download
    * virtual/ruby::virtuals :1.8 [D 1.8.7_p72-r11 (for dev-lang/ruby:1.8::gentoo) -> 1.8.6_p287-r5 (for dev-lang/ruby:1.8::gentoo)]
* sys-apps/paludis [R 0.36.0] <everything>
    bash-completion -doc inquisitio* -pink -portage -python-bindings -qa ruby-bindings* vim-syntax visibility -xml -zsh-completion build_options: -optional_tests split strip
    * virtual/portage::virtuals [D 2.2_rc28 (for sys-apps/portage:0::gentoo) -> 0.36.0 (for sys-apps/paludis:0::gentoo)] <system>

Total: 6 packages (3 new, 2 downgrades, 1 rebuild), 4.14 MBytes to download

USE:

* berkdb:          Adds support for sys-libs/db (Berkeley DB for MySQL)
* debug:           Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see http://www.gentoo.org/proj/en/qa/backtraces.xml
* doc:             Adds extra documentation (API, Javadoc, etc)
* emacs:           Adds support for GNU Emacs
* examples:        Install examples, usually source code
* gdbm:            Adds support for sys-libs/gdbm (GNU database libraries)
* inquisitio:      Enable inquisitio, the search client
* ipv6:            Adds support for IP version 6
* ruby-bindings:   Enable Ruby bindings.
* rubytests:       Install ruby tests that can only be run after ruby is installed
* socks5:          Adds support for the socks5 proxy
* ssl:             Adds support for Secure Socket Layer connections
* threads:         Adds threads support for various packages. Usually pthreads
* tk:              Adds support for Tk GUI toolkit
* xemacs:          Add support for XEmacs

Checking for possible errors......

(1 of 4) Fetching dev-libs/pcre++-0.9.5-r1:0::gentoo

Trying to fetch 'http://ftp.belnet.be/mirror/rsync.gentoo.org/gentoo/distfiles/pcre++-0.9.5.tar.gz' to 'pcre++-0.9.5.tar.gz'...
 * Attempting resume using /usr/portage/distfiles/pcre++-0.9.5.tar.gz.-PARTIAL-
wget -T 30 -t 1 --continue -O /usr/portage/distfiles/pcre++-0.9.5.tar.gz.-PARTIAL- http://ftp.belnet.be/mirror/rsync.gentoo.org/gentoo/distfiles/pcre++-0.9.5.tar.gz
--2009-04-06 23:40:10--  http://ftp.belnet.be/mirror/rsync.gentoo.org/gentoo/distfiles/pcre++-0.9.5.tar.gz
Resolving ftp.belnet.be... 193.190.67.15, 2001:6a8:a40::21
Connecting to ftp.belnet.be|193.190.67.15|:80... connected.
HTTP request sent, awaiting response... 206 Partial Content
Length: 381589 (373K), 136373 (133K) remaining [application/x-gzip]
Saving to: `/usr/portage/distfiles/pcre++-0.9.5.tar.gz.-PARTIAL-'

        [ skipping 200K ]
   200K ,,,,,,,,,, ,,,,,,,,,, ,,,,,,,,,, ,,,,,,,,,. .......... 67%  315K 2s
   250K .......... .......... .......... .......... .......... 80%  211K 0s
   300K .......... .......... .......... .......... .......... 93%  428K 0s
   350K .......... .......... ..                              100%  489K=0.6s

2009-04-06 23:40:11 (239 KB/s) - `/usr/portage/distfiles/pcre++-0.9.5.tar.gz.-PARTIAL-' saved [381589/381589]

mv -f /usr/portage/distfiles/pcre++-0.9.5.tar.gz.-PARTIAL- /usr/portage/distfiles/pcre++-0.9.5.tar.gz
Trying to fetch 'http://ftp.belnet.be/mirror/rsync.gentoo.org/gentoo/distfiles/pcre++-0.9.5-patches.tar.bz2' to 'pcre++-0.9.5-patches.tar.bz2'...
wget -T 30 -t 1 --continue -O /usr/portage/distfiles/pcre++-0.9.5-patches.tar.bz2.-PARTIAL- http://ftp.belnet.be/mirror/rsync.gentoo.org/gentoo/distfiles/pcre++-0.9.5-patches.tar.bz2
--2009-04-06 23:40:11--  http://ftp.belnet.be/mirror/rsync.gentoo.org/gentoo/distfiles/pcre++-0.9.5-patches.tar.bz2
Resolving ftp.belnet.be... 193.190.67.15
Connecting to ftp.belnet.be|193.190.67.15|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3733 (3.6K) [application/x-tar]
Saving to: `/usr/portage/distfiles/pcre++-0.9.5-patches.tar.bz2.-PARTIAL-'

     0K ...                                                   100% 55.8K=0.07s

2009-04-06 23:40:12 (55.8 KB/s) - `/usr/portage/distfiles/pcre++-0.9.5-patches.tar.bz2.-PARTIAL-' saved [3733/3733]

mv -f /usr/portage/distfiles/pcre++-0.9.5-patches.tar.bz2.-PARTIAL- /usr/portage/distfiles/pcre++-0.9.5-patches.tar.bz2
Checking 'pcre++-0.9.5.tar.gz'... ok
Checking 'pcre++-0.9.5-patches.tar.bz2'... ok

...

Вероятно, что большинство пользователей, почти сразу, предпочтёт установить ccache:

Код: Выделить всё

# paludis -i ccache

И подключить его к Paludis:

Код: Выделить всё

# echo 'CCACHE_DIR="/var/tmp/ccache"' >> /etc/paludis/bashrc
# echo 'PATH="/usr/lib64/ccache/bin:${PATH}"' >> /etc/paludis/bashrc

Проверка работы ccache:

Код: Выделить всё

# paludis -i1 ccache
...
CCACHE=/var/tmp/ccache ccache -s
cache directory                     /var/tmp/ccache
cache hit                              0
cache miss                            31
called for link                        1
autoconf compile/link                 14
no input file                          3
files in cache                        62
cache size                           184 Kbytes
max cache size                     976.6 Mbytes

Аналогичным образом устанавливается и подключается и distcc.

Заключение

Пакетный менеджер Paludis существует уже не первый год, и он далеко не новинка. В публичном доступе этот менеджер появился в начале 2006-го года.

Многие из оригинальных идей разработчиков Paludis вошли в современные версии Portage, среди них, например:
- поддержка PMS/EAPI
- расширенная спецификация пакетов, такие как категория/имя[флаг]
- новая система манифестов - Manifest2
- аналог bashrc
- поддержка Git, который используется по умолчанию для синхронизации дерева пакетов в Funtoo - одном из производных дистрибутивов Gentoo

Если судить по статистике на официальном форуме Gentoo Linux - http://forums.gentoo.org/, то около половины пользоватей Gentoo Linux предпочитают использовать Paludis в качестве своего основного пакетного менеджера.

Данная статья рассматривает лишь некоторую, меньшую, часть возможностей Paludis. За бортом осталось техническое описание хуков, синхронизаторов, фетчеров. Отличия в конфигурировании Paludis для других дистрибутивов, таких как Exherbo. Возможностей создания и использования множественной среды окружения Paludis. FAQ. Paludis API и многое другое. Почти всё это можно найти на официальном сайте Paludis - http://paludis.pioto.org/.

Комментарии, дополнения, информация об ошибках, замечания о неточностях и, главное, вопросы, в частности касающиеся непонятных моментов, приветствуются. Информацию о контактах можно найти в профиле автора.

Благодарности

- прежде всего Juliette, за присланное год назад сообщение с непонятным словом Paludis, ссылкой на обсуждение возможностей этого пакетного менеджера и комментарием "Это обязательно нужно попробовать!"
- некоторым постоянным участникам Jabber-конференции, которые не давали забыть про намерение написать некое краткое русскоязычное руководство по установке Paludis, в частности Dimanish
Scio me nihil scire.