Portage Overlay
Материал из Gentoo Linux Wiki
- Вернуться в раздел руководства
Содержание |
[править] Введение
Это руководство расскажет о том как установить ebuild который не включен в официальное дерево портежей.
[править] Установка Portage Overlay
Первым делом мы должны указать PORTAGE_OVERLAY директорию, для этого необходимо отредактировать файл /etc/make.conf
| Файл: /etc/make.conf |
|
PORTDIR_OVERLAY="/usr/local/portage" |
Таким образом мы позволяем устанавливать дополнительные ebuild'ы при этом не нарушая процесс синхронизации основного дерева портежей.
[править] Месторасположение ebuild
Проверьте наличие директории /usr/local/portage, и если ее нет создайте ее install -d /usr/local/portage
Когда помещаете новый ebuild в /usr/local/portage, вы должны использовать такую же схему как в /usr/portage (category/program/program.ebuild)
[править] Создание digest-файлов
digest-файлы -- это файлы, которые содержат md5 суммы файлов, необходимых для установки пакетов. После того, как Portage скачает необходимые файлы, будет сделана проверка на соответствие файлов их md5-суммам (это дает возможность убедиться в целостности файлов). Для того, чтобы Portage мог устанавливать пакеты, необходим digest-файл. Digest-файл можно создать с помощью команды ebuild /usr/local/portage/category/program/program.ebuild digest Вручную редактировать созданные этой командой файлы не следует.
При этом надо учитывать требования к имени ebuild-а. При переименовании ebuild-а в произвольное имя, команда
ebuild /usr/local/portage/category/program/program.ebuild digest выдаст ошибку:
!!! /usr/local/portage does not seem to have a valid PORTDIR structure.
Чтобы этого не произошло необходимо переименовывать ebuild в то же самое имя, но с приставкой номера релиза.
Пример:
В портежах имеется ebuild:
/usr/portage/media-sound/ncmpc/ncmpc-0.11.1-r1.ebuild
И архив исходных кодов:
/usr/portage/distfiles/ncmpc-0.11.1.tar.gz для этого ebuild-а.
Вы хотите наложить свой патч и добавить ebuild вашего пропатченного пакета в систему. Для этого вы должны скопировать исходный ebuld в ваш новый, но добавить к нему приставку '-rN', где N - номер релиза. Если такая приставка уже есть - изменить её номер:
cp /usr/portage/media-sound/ncmpc/ncmpc-0.11.1-r1.ebuild /usr/local/portage/media-sound/ncmpc/ncmpc-0.11.1-r2.ebuild
После этого пропатчите исходные коды пакета, на который ссылается исходный ebuild /usr/portage/distfiles/ncmpc-0.11.1.tar.gz и сохраните его в /usr/portage/distfiles/ncmpc-0.11.1-r2.tar.gz
Далее, нам нужно будет поправить наш новый ebuild:
vi /usr/local/portage/media-sound/ncmpc/ncmpc-0.11.1-r2.ebuild И изменить строку: SRC_URI="http://mercury.chem.pitt.edu/~shank/${P}.tar.gz mirror://sourceforge/musicpd/${P}.tar.gz"
На строку: SRC_URI="http://mercury.chem.pitt.edu/~shank/${P}-r2.tar.gz mirror://sourceforge/musicpd/${P}-r2.tar.gz"
Т.е. добавив наш префикс '-r2', чтобы система знала, какой именно файл с исходными кодами ей необходимо прописать. Также в данном случае можно использовать вместо переменной ${P} переменную ${PF}, которая вернет полное имя атома, включая ревизию исходя из названия самого скрипта ebuild. В данном случае скачать с сайта этот пакет конечно же не удастся, но нам этого и не требуется - нам необходимо установить нами поправленный пакет.
После этого даём команду ebuild /usr/local/portage/media-sound/ncmpc/ncmpc-0.11.1-r2.ebuild digest, после чего emerge будет знать о вашем пакете.
[править] Установка нового ebuild
Когда вы будете устанавливать пакет используя новый ebuild, скорее всего он будет masked, поэтому надо добавить имя пакета в /etc/portage/package.keywords
- Создайте директорию /etc/portage/, если она еще не создана, и затем выполните команду:
echo "<category>/<package> ~x86" >>/etc/portage/package.keywords
Теперь этот пакет можно установить как и любой другой: emerge -p package
emerge package
[править] Дополнительно
Unofficial ebuilds содержит список с коротким описанием сайтов где можно найти неофициальные пакеты
Многие, написанные юзерами ebuild'ы, которые еще не попали в официальное дерево, находятся в Bugzill'е Gentoo. Найти нужные ebuild'ы можно с помощью поиска
