Как заставить Alien использовать существующий архив вместо загрузки? - PullRequest
1 голос
/ 29 сентября 2019

Мой дистрибутив больше не предлагает gsl <2.6. </p>

Дано:

  • Alien :: GSL 1.01
  • / tmp / gsl-2.5.tar.gz

Как заставить его скомпилировать этот gsl вместо загрузки с GNU FTP версии 2.6, которая у меня уже есть в системе в любом случае , но не подходит для Math :: GSL0,40 ?

Я безуспешно пытался:

  • скопировать архив в распакованный базовый каталог Alien :: GSL
  • возиться с alien_repository

Это для одноразового проекта.Я в порядке с инструкциями по установке вручную и исправлениями кода цепочки инструментов.

1 Ответ

2 голосов
/ 29 сентября 2019

икегами нашел решающий совет :

Похоже, вы можете установить локальный протокол для использования локального файла


Проверенные пошаговые инструкции, а также некоторые дополнительные обходные пути;мне кажется, что системы сборки двух модулей глючат / недостаточно протестированы:

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

Наконец, rëexportпеременные всякий раз, когда вы хотите использовать Math :: GSL.

...