воскресенье, 6 июля 2014 г.

Локальный оверлей

Иногда нужно установить программу которой нет в основном дереве портежей. В большинстве случаев эта программа находится в оверлеях. Но это может быть не всегда удобно, ведь нужен всего один пакет пакет, а подключить нужно весь оверлей с кучей пакетов. Ну и бывает такое, что нужный пакет отсутствует в оверлеях тоже. В такой ситуации лучшим решением будет создание локального оверлея.

Для создания локального оверлея нам для начала нужен доступ к исходникам необходимой программы и ebuild файл. Ebuild файл представляет собой инструкции для компилятора и при должном упорстве доступен для написания сознательному линуксоиду. Но скорее всего кто-нибоудь поделится ebuild'ом. И здесь будет рассмотрен случай когда у вас есть ebuild файл для нужного приложения. Написани такого файла самостоятельно - это тема для отдельной заметки.

Для начала определимся с местом нашего оверлея. Пусть это будет /usr/local/overlay/. Создадим необходимые каталоги для служебной информации:

root # mkdir -p /usr/local/portage/{metadata,profiles}

заполним их информацией:

root # echo 'tolstiyman' > /usr/local/portage/profiles/repo_name
root # echo 'masters = gentoo' > /usr/local/portage/metadata/layout.conf

здесь tolstiyman - это имя нашего репозитория.

Чтобы наш оверлей имел приоритет перед всеми остальными нужно изменить переменную PORTDIR_OVERLAY в нашем файле make.conf. Для этого просто выполним команду:

root # echo 'PORTDIR_OVERLAY="/usr/local/portage ${PORTDIR_OVERLAY}"' >> /etc/make.conf

Допустим нам нужно установить программу steam-launcher-1.0.0.47 из категории games-util и у нас есть для этого файл steam-launcher-1.0.0.47.ebuild, который лежит в каталоге /root. Проделаем следующее:

root # mkdir -p /usr/local/portage/games-util/steam-launcher
root # cp /root/steam-launcher-1.0.0.47.ebuild /usr/local/portage/games-util/steam-launcher/steam-launcher-1.0.0.47.ebuild
root # pushd /usr/local/portage/games-util/steam-launcher

Пару слов о команде pushd. Она сохраняет имя текущего каталога для команды popd и переходит в другой каталог. Вобщем шаг не обязательный и позволяет после нужных нам манипуляций вернуться в исходный каталог одной командой (popd).

root # repoman manifest

Утилита repoman предназначена для контроля качества репозитариев ебилдов. В даноом случае она генерирует manifest файл. Более подробно об этой утилите на русском языке можно узнать здесь или здесь.

root # popd

Изменяем права доступа к каталогу с оверлеем.

root # chown -R portage:portage /usr/local/portage

Теперь можно установить пакет

root # emerge -a games-util/steam-launcher

Первоисточник на gentoo-wiki