Репозиторий ebuild-файлов
Репозиторий ebuild–файлов, в просторечии известный как overlay, это структура файлов и каталогов, используемая для добавления и дополнения пакетов программ в системах на основе Gentoo. Такие репозитории содержат ebuild–, eclasses и другие подобные описательные файлы. Эти файлы информируют пакетный менеджер о доступном для установки ПО. Репозиторий должен соответствовать одному или более Ebuild API, как указано в спецификации пакетного менеджера Gentoo.
Основной репозиторий Gentoo известен как Gentoo репозиторий ebuild-файлов. Его также называют репозиторий Gentoo, ::gentoo, gentoo.git, или просто "репозиторий". Он был исторически известен в сообществе Gentoo как дерево Portage, rsync дерево, или просто "дерево". Он содержит ebuild-файлы, которые поддерживаются разработчиками Gentoo, а также другими участниками сообщества (с помощью проекта Proxy Maintainers).
Системные администраторы могут добавить дополнительные репозитории ebuild-файлов с помощью разных утилит и методов, которые будут описаны ниже.
Репозитории
Репозитории ebuild-файлов являются не более (и не менее) чем наборами файлов (файлов ebuild, файлов метаданных, ...). Эти файлы можно установить из публичных репозиториев (git, CVS, SVN ...) или загрузить в виде файлов tarball и распаковать вручную.
Рекомендуется использовать управляемые репозитории от доверенных третьих сторон. Любой установленный репозиторий ebuild-файлов заставит Portage просматривать "наложенные" файлы, чтобы решить, какой пакет следует установить. Если репозиторий ebuild-файлов содержит скомпрометированный код, то скомпрометированные пакеты могут быть установлены в системе.
В настоящее время, по умолчанию работа с репозиториями осуществляется посредством /etc/portage/repos.conf, который, как и другие места конфигурации Portage, может быть файлом или каталогом.
Определения репозиториев в /etc/portage/repos.conf/ также сообщают Portage, следует ли обновлять тот или иной репозиторий, и если следует, то каким образом. Все репозитории, которые следует обновлять, автоматически обновляются при вызове команды emaint sync --auto.
Устаревший и не рекомендуемый к использованию, но всё ещё поддерживаемый способ работы с репозиториями — посредством переменной 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 репозиторий. Чтобы установить приоритет других репозиториев, отредактируйте нужный файл в каталоге (или секцию в файле) repos.conf и выставите priority = на нужное значение. Например:
/etc/portage/repos.conf/eselect-repo.conf
Установка приоритета для репозитория# created by eselect-repo [guru] location = /var/db/repos/guru sync-type = git sync-uri = https://github.com/gentoo-mirror/guru.git priority = 100
Приоритет по умолчанию для репозиториев — 0.
Доступное программное обеспечение
Некоторые утилиты поддерживают или специально создавались для репозиториев 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-файлы. Например, для репозитория "repository-foobar":
/etc/portage/package.mask
Маскировка всех пакетов в репозитории ebuild-файлов*/*::repository-foobar
Затем добавьте отдельный пакет (отдельные пакеты) из репозитория repository-foobar, чтобы они стали видимыми для установки Portage:
/etc/portage/package.unmask
Размаскировка конкретного пакета из репозитория ebuild-файловfoo-category/bar::repository-foobar
После такой размаскировки пакет "foo-category/bar" должен стать доступным, в то время, как остальные пакеты из репозитория repository-foobar должны остаться недоступными.
Смотрите также
- Overlays project — Официальный проект Gentoo, осуществляющий поддержу репозиториев ebuild-файлов.
- Overlays guide (Overlay project) — Руководство пользователя, составленное проектом Overlay.
- Руководство разработчика оверлеев Gentoo — Этот документ хранится только в исторических целях. Текущее руководство находиться здесь Project:Overlays/Overlays guide.
- Определение пользовательского репозитория ebuild-файлов — Раздел в Gentoo Handbook.