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-файлов

From Gentoo Wiki (test)
Jump to:navigation Jump to:search
This page is a translated version of the page Ebuild repository and the translation is 100% complete.
Resources

Репозиторий 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

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

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