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

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Ebuild repository and the translation is 82% complete.

Outdated translations are marked like this.
Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎polski • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어
Resources
Resources

Репозиторий ebuild-файлов, в просторечии известный как overlay, это структура файлов и каталогов, используемая для добавления пакетов, которые будут доступны для Gentoo системного пакетного менеджера. Репозитории могут содержать ebuild-файлы c одним или более EAPI.

Основной репозиторий Gentoo известен как Gentoo репозиторий ebuild-файлов. Он содержит ebuild-файлы, которые поддерживаются разработчиками Gentoo, а также другими участниками сообщества (с помощью проекта Proxy Maintainers). Системные администраторы могут добавить дополнительные репозитории ebuild-файлов с помощью разных утилит и методов, которые будут описаны ниже.

Gentoo system administrators can add additional ebuild repositories by using various utilities and methods described below.

Репозитории

Репозитории ebuild-файлов являются не более (и не менее) чем наборами файлов (файлов ebuild, файлов метаданных, ...). Эти файлы можно установить из публичных репозиториев (git, CVS, SVN ...) или загрузить в виде файлов tarball и распаковать вручную. Рекомендуется использовать управляемые репозитории от доверенных третьих сторон. Любой установленный репозиторий ebuild-файлов заставит Portage просматривать "наложенные" файлы, чтобы решить, какой пакет следует установить. Если репозиторий ebuild-файлов содержит скомпрометированный код, то скомпрометированные пакеты могут быть установлены в системе.

Важно
It is advised to use managed repositories by trusted third parties; any installed ebuild repository will cause Portage to look through the overlaid files when deciding which software to install. If compromised code is in the ebuild repository, then compromised packages could be installed on the system.

В настоящее время, по умолчанию работа с репозиториями осуществляется посредством /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

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

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