Для большинства пользователей полученной до сих пор информации будет достаточно для всех операций в системе Linux. Но Portage способен на гораздо большее. Многие из его возможностей для более продвинутых пользователей, или применимы только в некоторых исключительных случаях. Но все же будет недопустимо их не документировать.
Конечно, из-за большой гибкости, может появиться огромный список потенциальных случаев.
Невозможно рассмотреть здесь все. Вместо этого мы планируем сфокусироваться на некоторых
общих случаях, которые вы можете использовать, чтобы справиться с вашими задачами.
Если вам нужны более специфически подсказки, вы можете найти их в
Большинство (а может и все) из этих дополнительных возможностей можно легко найти, прочитав страницу man, которая идет с Portage:
$ man portage $ man make.conf
И, в конце концов, знайте, что эти расширенные возможности, если их применять неправильно, могут сильно затруднить отладку и решение проблем. Удостоверьтесь, что вы приняли это во внимание, прежде чем вы налетите на ошибку и захотите написать нам о ней отчет.
По умолчанию, package использует при сборке переменные окружения,
определенные в
Файл
Как пример, мы включим отладку для пакета
Прежде всего, мы настроим переменные для отладки в файле, называемом
CFLAGS="-O2 -ggdb -pipe" FEATURES="${FEATURES} nostrip"
Затем мы помечаем пакет
media-video/mplayer debug-cflags
Когда Portage работает с файлами ebuild, он использует окружение bash, в котором он вызывает различные функции компиляции (например, src_prepare, src_configure, pkg_postinst, и т. д.). Но Portage также позволяет вам настроить окружение bash самому.
Преимущество использования своего собственного окружения bash в том, что вы
можете вклиниться в процесс установки на любом его шаге. Это может быть
сделано для каждой установки (через
Чтобы вмешаться в процесс, окружение bash может слушать переменные
В данном примере мы используем файл
Чтобы в данном случае использовать
if [ "${EBUILD_PHASE}" == "postinst"] || [ "${EBUILD_PHASE}" == "postrm" ]; then echo ":: Calling aide --update to update its database"; aide --update; echo ":: Calling updatedb to update its database"; updatedb; fi
До этого момента мы говорили о вмешательстве в процесс компиляции. Однако
Portage имеет также еще одну важную функцию — обновление дерева Portage.
Чтобы выполнять задачи после обновления дерева Portage, поместите скрипт
в
Если вы не используете
# ln -s /usr/bin/eix /etc/portage/postsync.d/eix-update
По умолчанию, Gentoo использует настройки, находящиеся в профиле, на который
указывает
Используя
Если вы используете файловые системы, основанные на NFS, и они для
вас являются критичными, вы можете захотеть добавить
Чтобы достичь этой цели, мы добавим пакет в
*net-fs/nfs-utils
Чтобы работать с несколькими файлами ebuild похожим образом, разработчики
ebuild-файлов используют eclasses (что-то вроде библиотек оболочки), в которых
определены частоиспользуемые функции. Один из этих eclass'ов это
Функция
К счастью, с информацией, приведенной выше, вы можете вызывать эту функцию,
вмешавшись, например, в фазу
Пакет
Если вам нужно пропатчить firefox (например потому что разработчик
попросил вас помочь ему протестировать патч для ошибки, которую вы нашли),
поместите патч в