Система портежей. Руководство пользователя

Авторы:
Daniel Robbins
Thomas Flavel
John P. Davis

Перевод:
Алексей Федорчук

Редактор:
Иван Зенков

Это руководство кратко охватывает принцип установки новых пакетов и поддержания вашей системы в должном виде.

1.3 17 Dec 2002

Быстрый старт

Загрузка дерева Portage

После установки Gentoo Linux и игр с системой вы можете обнаружить некоторые баги в некоторых пакетах, или захотеть установить более поздние версии некоторых пакетов, или обновить существующие пакеты. Для этого вам потребуется скачать наше Portage дерево. Мы поддерживаем анонимный rsync-сервер, с которого можно получить последнюю версию этого дерева. И здесь рассказывается, как это сделать.

Следующую команду используйте для синхронизации системы Portage:

Получение нового Portage дерева

$ emerge rsync

Пожалуйста обратите внимание, что emerge rsync автоматически вызывает опцию /--clean/, которая удалит любое из ваших личных изменений или дополнений к дереву /usr/portage, если Вы желаете держать ваши собственные ebuilds скрипты отдельно от главного дерева Portage, пожалуйста используйте функцию PORTDIR_OVERLAY.

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

Добавьте эту строку в /etc/make.conf

PORTDIR_OVERLAY="/каталог/где/находятся/ваши/ebuilds"

Если вы вносите регулярные изменения, устраняя ошибки и некоторые дефекты в своем дереве Portage, то возможно вы бы хотели стать членом группы разработчиков Gentoo Linux. Для дополнительно информации, свяжитесь пожалуйста с Daniel Robbins или Seemant Kulleen.

Обновление Portage

Прежде чем использовать дерево Portage, весьма важно было бы обновить его. Для этого сделайте следующее:

Это покажет вам какие пакеты необходимо обновить

$ emerge -up system

Это обновит необходимые пакеты

$ emerge -u system

После этого вы получаете более современную версию Protage, и готовы к тому, чтобы использовать нашу ebuild-систему для обновления вашего установленного программного обеспечения.

Введение в emerge

emerge --pretend

Перед установкой пакета, было бы хорошей идеей посмотреть какие зависимости требуются для установки, какие пакеты необходимо обновить и т.д. emerge --pretend или emerge -p сделает это для вас.

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

$ emerge -p xchat

These are the packages that I would merge, in order.

Calculating dependencies......... done!
[ebuild   U] sys-libs/zlib-1.1.3-r2 to /
[ebuild   U] dev-libs/glib-1.2.10 to /
[ebuild N  ] media-libs/jpeg-6b-r2 to /
[ebuild N  ] x11-base/xfree-4.0.3-r3 to /
[ebuild N  ] x11-libs/gtk+-1.2.10-r1 to /
[ebuild N  ] media-libs/giflib-4.1.0-r3 to /
[ebuild N  ] media-libs/tiff-3.5.6_beta to /
[ebuild N  ] media-libs/imlib-1.9.10 to /
[ebuild N  ] net-irc/xchat-1.4.3 to /

В данном случае мы принимаем, что /xchat/ будет устанавливаться на машине без XFree. То есть emerge --pretend правильно устанавливает, что многие зависимости должны быть удовлетворены в первую очередь. В частности, что sys-libs/zlib и dev-libs/glib должны быть обновлены, и что остальные (включая, разумеется, x11-base/xfree) должны быть собраны.

USE и emerge

Выше команда emerge --pretend была выполнена в системе, в которой значение gnome не было определено в переменной USE файла /etc/make.conf. Это означает, что опциональная поддержка GNOME, если эта среда установлена, не будет доступна. Однако для xchat такую поддержку включить можно, если выполнить команду emerge --pretend после добавления значения gnome в переменную окружения USE файла /etc/make.conf. В этом случае вывод команды:

Использование emerge c USE переменными

$ emerge -p xchat

These are the packages that I would merge, in order.

Calculating dependencies............................ done!
[ebuild N  ] media-libs/jpeg-6b-r2 to /
[ebuild N  ] gnome-base/libghttp-1.0.9 to /
[ebuild N  ] media-libs/audiofile-0.2.1 to /
[ebuild N  ] media-sound/esound-0.2.22-r2 to /
[ebuild N  ] gnome-base/gnome-env-1.0 to /
[ebuild N  ] gnome-base/libxml-1.8.11 to /
[ebuild N  ] gnome-base/ORBit-0.5.8 to /
[ebuild N  ] gnome-base/oaf-0.6.5 to /
[ebuild   U] dev-libs/glib-1.2.10 to /
[ebuild N  ] net-libs/libwww-5.3.2-r1 to /
[ebuild N  ] media-libs/giflib-4.1.0-r3 to /
[ebuild N  ] dev-util/guile-1.4-r3 to /
[ebuild   U] sys-libs/zlib-1.1.3-r2 to /
[ebuild N  ] x11-base/xfree-4.0.3-r3 to /
[ebuild N  ] x11-libs/gtk+-1.2.10-r1 to /
[ebuild N  ] media-libs/tiff-3.5.6_beta to /
[ebuild N  ] media-libs/imlib-1.9.10 to /
[ebuild N  ] gnome-base/gnome-libs-1.2.13 to /
[ebuild N  ] gnome-base/glibwww-0.2-r1 to /
[ebuild N  ] gnome-base/gdk-pixbuf-0.11.0 to /
[ebuild N  ] gnome-base/gconf-1.0.0 to /
[ebuild N  ] gnome-base/gnome-vfs-1.0.1 to /
[ebuild N  ] gnome-base/control-center-1.4.0.1 to /
[ebuild N  ] gnome-base/scrollkeeper-0.2 to /
[ebuild N  ] dev-util/xml-i18n-tools-0.8.1 to /
[ebuild N  ] gnome-base/libglade-0.16-r1 to /
[ebuild N  ] gnome-base/gnome-core-1.4.0.4 to /
[ebuild N  ] net-irc/xchat-1.4.3 to /

Как можно видеть, после добавления gnome к переменной USE, команда emerge распознает, что xchat должен включать поддержку GNOME. И конечно, для реализации этой поддержки GNOME предварительно должен быть установлен. Команда emerge показывает все это и добавляет различные пакеты, требуемые GNOME, в список кандидатов на сборку. В то же время, если переменная USE определена не вполне правильно, это может вызвать то, что emerge не распознает включения или исключения различных опциональных расширений. Вследствие этого рекомендуется всегда предварять действительное исполнение команды emerge командой emerge --pretend, особенно для новых, не очень знакомых ebuild скриптов. Тогда вы будите знать, что вам следует ожидать.:) Только после этого следует выполнять действительную сборку с пропуском опции --pretend, что делается следующим образом:

Установка xchat

$ emerge xchat

После того, как все требуемые зависимостями пакеты будут собраны (если они есть, не все пакеты могут иметься в наличии), исходники xchat будут скачаны (в каталог /usr/portage/distfiles), верифицированы на предмет контрольных сумм, распакованы, скомпилированы и установлены во временный каталог. Затем, он будет помещен в локальную файловую систему и в базе данных пакетов будет создан файл /var/db/pkg/net-irc/xchat-1.4.3/CONTENTS, содержащий список всех установленных файлов и их контрольных сумм.

Обновление пакетов

Стандартный способ обновления пакетов в Portage это использование emerge --update или emerge -u.

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

$ emerge -u xchat

В системе Portage это зовется безопасным удалением; оно распространяется только на несвязанные оригинальные файлы. Если некий файл перезаписывается или модифицируется в это самое время, это будет отражено в файловой системе (обычно такое бывает, если устанавливалась новая версия пакета).И, соответственно, если выполнить unmerge к старой версии xchat после сборки новой, то исполняемый файл xchat не будет удален из файловой системы, так как имеет другие временные атрибуты и контрольную сумму. То есть безопасность такого удаления действительно велика, потому что обеспечивает доступность какой-либо версии в любое время. Если удалить старую версию перед установкой новой, программа не будет доступна какое-то время, пока последняя скачивается, компилируется и т.д.

Система портежей имеет специальную особенность, именуемую защитой конфигурационных файлов (config file protection). Ее назначение - предотвратить изменение инсталлируемыми пакетами существующих конфигурационных файлов. По умолчанию защита конфигурационных файлов действует на файлы из каталога /etc и из конфигурационных каталогов KDE. Другие каталоги могут быть добавлены в будущем. Детали смотрите по команде emerge --help config.