This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.
Please visit our production wiki at https://wiki.gentoo.org
Репозиторий ebuild-файлов
Репозиторий ebuild-файлов, в просторечии известный как overlay, это структура файлов и каталогов, используемая для добавления пакетов, которые будут доступны для Gentoo системного пакетного менеджера. Репозитории могут содержать ebuild-файлы c одним или более EAPI.
Основной репозиторий Gentoo известен как Gentoo репозиторий ebuild-файлов. Он содержит ebuild-файлы, которые поддерживаются разработчиками Gentoo, а также другими участниками сообщества (с помощью проекта Proxy Maintainers). Системные администраторы могут добавить дополнительные репозитории ebuild-файлов с помощью разных утилит и методов, которые будут описаны ниже.
Репозитории
Репозитории ebuild-файлов являются не более (и не менее) чем наборами файлов (файлов ebuild, файлов метаданных, ...). Эти файлы можно установить из публичных репозиториев (git, CVS, SVN ...) или загрузить в виде файлов tarball и распаковать вручную. Рекомендуется использовать управляемые репозитории от доверенных третьих сторон. Любой установленный репозиторий ebuild-файлов заставит Portage просматривать "наложенные" файлы, чтобы решить, какой пакет следует установить. Если репозиторий ebuild-файлов содержит скомпрометированный код, то скомпрометированные пакеты могут быть установлены в системе.
В настоящее время, по умолчанию работа с репозиториями осуществляется посредством /etc/portage/repos.conf. Как и в других случаях при работе с Portage, это может быть файл или каталог.
Определения репозиториев в /etc/portage/repos.conf/ также сообщают Portage, следует ли обновлять тот или иной репозиторий, и если следует, то каким образом. Все репозитории, которые следует обновлять, автоматически обновляются при вызове команды emerge --sync.
Устаревший и не рекомендуемый к использованию, но все еще поддерживаемый способ работы с репозиториями — посредством переменной PORTDIR_OVERLAY в файле /etc/portage/make.conf. Эта переменная может указывать на одно или более мест в файловой системе, где расположены репозитории. Настоятельно рекомендуется использовать каталог /etc/portage/repos.conf/.
Для более подробной информации ознакомьтесь с /etc/portage/repos.conf и статью Portage/Sync.
Приоритеты
У каждого репозитория ebuild-файлов есть уникальный приоритет в пакетном менеджере. Таким образом реализуется недвусмысленное разрешение пакетов, даже если одна и та же версия пакета находится в нескольких репозиториях ebuild-файлов. Файлы ebuild из репозитория ebuild-файлов с более высоким приоритетом (например, 60) будут более предпочтительны файлам ebuild из репозитория ebuild-файлов с более низким приоритетом (например, 50).
Список репозиториев ebuild-файлов и их приоритеты можно получить из вывода следующих команд (найдите строку "Repositories"):
user $
emerge --info --verbose
user $
portageq repos_config /
Gentoo репозиторий ebuild-файлов имеет приоритет -1000. Это означает, что другие репозиториии имеют старшинство, если им присвоен более высокий приоритет. Это поведение используется по умолчанию, так как идея репозиториев ebuild-файлов заключается в том, чтобы "накладываться/перекрывать" Gentoo репозиторий.
Доступное программное обеспечение
Некоторые утилиты поддерживают или специально создавались для репозиториев ebuild-файлов.
Layman
Приложение layman облегчает управление и обновление дополнительных ebuild репозиториев. Это приложение для командной строки, с помощью которого можно выводить список, подписываться и отписываться, а также обновлять общедоступные ebuild репозитории.
Оно поддерживает как метод make.conf, так и метод repos.conf.
- При использовании метода make.conf, layman работает с отдельным конфигурационным файлом, который читается файлом make.conf
- При использовании метода repos.conf, layman работает непосредственно с файлом /etc/portage/repos.conf/layman.conf
Для более подробной информации ознакомьтесь с Layman и Project:Portage/Sync#Layman_configuration.
emaint
Смотрите статью Sync (из проекта Portage) и man 1 emaint.
eix
eix-sync — обертка, запускающая команду emerge --sync (которая в свою очередь запускает команду emaint sync --auto) и затем eix-update. Подробнее читайте в статье Eix и в man 1 eix.
eselect-repository
eselect repository обрабатывает записи в /etc/portage/repos.conf для Portage, чтобы он смог осуществлять доступ и синхронизацию. За более подробной информацией обращайтесь к статье Eselect/Repository.
Использование
Установка пакета, имеющего дубликаты
В процессе работы с репозиторием ebuild-файлов может возникнуть ситуация, когда несколько версий одного и того же пакета доступны в нескольких репозиториях ebuild-файлов. Сообщите Portage о том, что необходимо установить определенный пакет из определенного репозитория ebuild-файлов с помощью ::
нотации:
root #
emerge --ask category/atom::repository-name
Похожий синтаксис может применяться и при других вариантах использования команды emerge, включая удаление пакета через опцию --depclean
.
Лучшие практики
Создание кэша
Если в системе установлены крупные репозитории ebuild-файлов, то выполнение таких операций, как разрешение зависимостей, может занять у Portage много времени. Это происходит потому что репозитории ebuild-файлов, как правило, не содержат кэш метаданных.
Сгенерируйте локальный кэш метаданных, запустив команду emerge --regen после синхронизации репозиториев ebuild-файлов:
root #
emaint sync --allrepos
root #
( ulimit -n 4096 && emerge --regen )
Будьте осторожны, поскольку выполнение команды emerge --regen занимает много времени, и ее не рекомендуется использовать пользователям rsync, поскольку rsync обновляет кэш с помощью кэша на сервере (большинство пользователей portage являются пользователями rsync). Пользователям rsync следует просто запустить emerge --sync (или eix-sync), чтобы повторно сгенерировать кэш. Скорее всего, использовать emerge --regen следует только пользователям очень больших репозиториев ebuild-файлов.
Маскировка установленных, но небезопасных репозиториев ebuild-файлов
При использовании больших репозиториев ebuild-файлов, а также неизвестных репозиториев или низкого качества, лучше всего жестко замаскировать репозиторий ebuild-файлов, но разрешить только конкретные ebuild-файлы.
/etc/portage/package.mask
Маскировка всех пакетов в репозитории ebuild-файлов*/*::repository-name
После этого размаскируйте пакеты, которые необходимо установить.
/etc/portage/package.unmask
Размаскировка некоторых пакетов из репозитория ebuild-файловfoo/bar::repository-name
Смотрите также
- Overlays project — Официальный проект Gentoo, осуществляющий поддержу репозиториев ebuild-файлов.
- Overlays guide (Overlay project) — Руководство пользователя, составленное проектом Overlay.
- Руководство разработчика оверлеев Gentoo — Этот документ храниться только в исторических целях. Текущее руководство находиться здесь Project:Overlays/Overlays guide.
- Определение пользовательского репозитория — Раздел в Gentoo Handbook.