Понадобилось мне однажды установить perl-модуль DBD::ODBC. Хотя в перле я разбираюсь как свинья в апельсинах, тем не менее я знаю о существовании единого репозитория CPAN. В то же время я понимаю боль управления зависимостями и плюшки, которые нам приносят системы управления пакетами. В портах gentoo DBD-ODBC не оказалось. Гугление по данному вопросу наводит на проекты g-cpan и cpanplus.
Будем использовать g-cpan.
Ставим.
sudo emerge -av --quiet g-cpan
Создаём оверлей, в который g-cpan будет класть генерируемые ebuild.
sudo mkdir -p /usr/local/portage-overlays/gcpan/metadata
echo 'masters = gentoo' | sudo tee -a /usr/local/portage-overlays/gcpan/metadata/layout.conf
Добавляем переменные окружения:
echo 'PORTDIR_OVERLAY="/usr/local/portage-overlays/gcpan ${PORTDIR_OVERLAY}"' | sudo tee -a /etc/portage/make.conf
echo 'GCPAN_OVERLAY=/usr/local/portage-overlays/gcpan' | sudo tee -a /etc/portage/make.conf
Не знаю уж почему, но мой g-cpan не захотел выгребать эти переменные из make.conf, пришлось указать через переменные окружения:
sudo PORTDIR=/usr/portage PORTDIR_OVERLAY=/usr/local/portage-overlays/gcpan GCPAN_OVERLAY=/usr/local/portage-overlays/gcpan g-cpan -gv DBD::ODBC
Как водится с первого раза не получилось. Сказав, что есть зависимость от DBI, который должен быть собран, g-cpan остановился. Ок, поставим DBI вручную:
sudo emerge -av --quiet -1 DBI
Вот теперь получилось. В оверлее gcpan появились perl-gcpan/DBD-ODBC
и
perl-gcpan/Test-Version
.
Добавляем в /etc/portage/package.keywords.
# required by perl-gcpan/Test-Version-1.004001::x-gcpan
# required by perl-gcpan/DBD-ODBC-1.50::x-gcpan
# required by DBD-ODBC (argument)
=dev-lang/io-2011.09.12-r2 ~amd64
# required by perl-gcpan/Test-Version-1.004001::x-gcpan
# required by perl-gcpan/DBD-ODBC-1.50::x-gcpan
# required by DBD-ODBC (argument)
=dev-perl/File-Find-Rule-Perl-1.130.0 ~amd64
Устанавливаем DBD-ODBC.
sudo einstall -av --quiet DBD-ODBC
Стойте! Нам же нужна версия с Юникодом. Для этого Makefile.PL должен
быть передан параметр -u. Генерируемый G-CPAN ebuild наследует eclass
perl-module. В исходнике видна переменная myconf, значение которой
передаётся прямо Makefile.PL на этапе src_configure()
. Таким образом в
полученном достаточно немножечко поменять полученный ebuild, чтобы
передать параметр -u - добавить строчку
myconf="-u"
- ???
- ???
- PROFIT!!!
Comments
comments powered by Disqus