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

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

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

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

По умолчанию в установленной системе Gentoo доступен только один репозиторий ebuild-файлов. Этот "main" (основной) репозиторий известен как 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 репозиторий имеет приоритет -1000. Это означает, что другие репозиториии ebuild-файлов имеют старшинство, поскольку им присвоен более высокий приоритет. Это поведение используется по умолчанию, так как идея репозиториев 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.

Использование

Установка пакета, имеющего дубликаты

В процессе работы с репозиторием 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-файлов жесткой маской.

Файл /etc/portage/package.maskМаскировка всех пакетов в репозитории ebuild-файлов
*/*::repository-name

После этого размаскируйте пакеты, которые необходимо установить.

Файл /etc/portage/package.unmaskРазмаскировка некоторых пакетов из репозитория ebuild-файлов
foo/bar::repository-name

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

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