我的发行版不再提供任何 gsl <2.6。
鉴于:
- 外星人::GSL 1.01
- /tmp/gsl-2.5.tar.gz
我如何强制它编译该 gsl 而不是从 GNU FTP 版本 2.6 下载,无论如何我已经在系统上,但对 Math::GSL 0.40 不感兴趣?
我尝试失败:
- 将 tarball 复制到解压缩的 Alien::GSL 基本目录中
- 搞乱外星人存储库
这是一个一次性项目。我同意手动安装说明和修补工具链代码。
我的发行版不再提供任何 gsl <2.6。
鉴于:
我如何强制它编译该 gsl 而不是从 GNU FTP 版本 2.6 下载,无论如何我已经在系统上,但对 Math::GSL 0.40 不感兴趣?
我尝试失败:
这是一个一次性项目。我同意手动安装说明和修补工具链代码。
看起来您可以设置本地协议以使用本地文件
经过测试的分步说明,以及一些额外的解决方法;对我来说,这两个模块的构建系统似乎有问题/测试不足:
cpanm --look Alien::GSL
补丁构建.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 配置。不保证没有这些不同选项的手动安装兼容或可用。(这不是迷信:历史上在系统 httpd 上从源代码安装 mod_perl2 和 libapreq2 时会出现类似的问题;需要先编译 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,就重新导出变量。