Репозиторий ebuild-файлов

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Ebuild repository and the translation is 100% complete.
Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎polski • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어
Resources

Репозиторий 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 должны остаться недоступными.

Смотрите также

Внешние ресурсы