Как мне заставить Alien использовать существующий тарбол вместо загрузки?
Мой дистрибутив больше не предлагает gsl <2.6.
Данный:
- Чужой:: GSL 1.01
- /tmp/gsl-2.5.tar.gz
Как мне заставить его скомпилировать этот gsl вместо загрузки из GNU FTP версии 2.6, который у меня уже есть в системе, но не подходит для Math::GSL 0.40?
Я безуспешно пробовал:
- копирование архива в распакованный базовый каталог Alien::GSL
- возиться с alien_repository
Это одноразовый проект. Я согласен с инструкциями по ручной установке и исправлением кода инструментальной цепочки.
1 ответ
Икегами нашла решающий намек:
Похоже, вы можете установить протокол local для использования локального файла
Протестированные пошаговые инструкции, а также некоторые дополнительные обходные пути; Мне кажется, что системы сборки двух модулей ошибочны / недостаточно протестированы:
cpanm --look Alien::GSL
патч Build.PL
diff --git a/Build.PL b/Build.PL
index 32f3057..6537138 100644
--- a/Build.PL
+++ b/Build.PL
@@ -20,10 +20,9 @@ my $builder = Alien::Base::ModuleBuild->new(
alien_name => 'gsl',
alien_repository => [
{
- protocol => 'ftp',
- host => 'ftp.gnu.org',
- location => '/gnu/gsl',
- pattern => qr/^gsl-([\d\.]+)\.tar\.gz$/,
+ protocol => 'local',
+ location => '/tmp',
+ pattern => 'gsl-2.5.tar.gz',
},
],
meta_merge => {
--
2.23.0
perl Build.PL
./Build
Обратите внимание на сгенерированные configure
/libtool
здесь, они соответствуют конфигурации Perl. Совместимость и применимость ручной установки без этих различных опций не гарантируется. (Это не суеверие: подобная проблема исторически возникает при установке mod_perl2 и libapreq2 из исходного кода в системе httpd; сначала нужно скомпилировать perl, затем httpd для сопоставления, затем другие пакеты, иначе это не сработает.) показывает ценность установки через Alien, поскольку он делегирует M::B, правильные параметры будут выяснены. Точно создавать их с нуля выше моего уровня знаний.
./Build test
gsl-config
в blib теперь ошибочно указаны пути сборки, а не пути установки, исправить:
perl -MConfig -i -lpe'
s|/.*(/auto/share/dist/Alien-GSL)|$Config{installsitelib}$1|
' blib/lib/auto/share/dist/Alien-GSL/bin/gsl-config
./Build install
exit # cpanm
cpanm --look Math::GSL
# let it pick up gsl-config on PATH
export PATH=$PATH:$(perl -mAlien::GSL -e'print Alien::GSL->bin_dir')
perl Build.PL
./Build
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(gsl-config --libs | perl -lne'/-L(\S+) / && print $1')
./Build test
./Build install
exit # cpanm
Наконец, повторно экспортируйте переменные, когда захотите использовать Math::GSL.