如何让 Alien 使用现有的 tarball 而不是下载?

达克西姆

我的发行版不再提供任何 gsl <2.6。

鉴于:

  • 外星人::GSL 1.01
  • /tmp/gsl-2.5.tar.gz

如何强制它编译该 gsl 而不是从 GNU FTP 版本 2.6 下载,无论如何我已经在系统上但对 Math::GSL 0.40 不满意

我没有成功尝试:

  • 将 tarball 复制到解压的 Alien::GSL 基本目录中
  • 搞乱Alien_repository

这是一个一次性项目。我对手动安装说明和修补工具链代码没意见。

达克西姆

池上找到了决定性的提示

看起来您可以设置本地协议以使用本地文件


经过测试的分步说明,以及一些额外的解决方法;对我来说,这两个模块的构建系统看起来有问题/测试不充分:

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,就重新导出变量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用python下载tarball?

来自分类Dev

如何从Github下载tarball

来自分类Dev

如何直接从URL下载源码包安装包tarball?

来自分类Dev

如何直接从URL下载源码包安装包tarball?

来自分类Dev

如何在Windows上使用Git存档创建Tarball?

来自分类Dev

如何解压缩使用 .xz 的 tarball?

来自分类Dev

如何在Dockerfile中使用现有的Docker Volume

来自分类Dev

如何使用现有的fork更新我的github库?

来自分类Dev

如何使用Eclipse打开现有的C ++项目?

来自分类Dev

如何快速使用现有的SQLite数据库?

来自分类Dev

随着SBT的发展,如何使用现有的Intellij项目?

来自分类Dev

如何使用现有的customerId处理Braintree付款

来自分类Dev

如何在Eclipse中使用现有的.target文件?

来自分类Dev

如何使用JMX监视现有的Java类?

来自分类Dev

如何对现有的API使用Amazon API网关?

来自分类Dev

如何使用VueJS增强现有的Laravel项目?

来自分类Dev

如何使用计算目标获取现有的AKS

来自分类Dev

如何使用AWS CDK查找现有的ApiGateway

来自分类Dev

如何使用AWS CDK查找现有的ApiGateway

来自分类Dev

如何为kafka用户使用现有的avro模式?

来自分类Dev

如何使Netcat使用现有的HTTP代理

来自分类Dev

如何使用和运行现有的yeoman项目?

来自分类Dev

如何识别和使用现有的光纤安装?

来自分类Dev

如何对现有的API使用Amazon API网关?

来自分类Dev

如何使用PowerShell更新现有的AzureRm虚拟网络?

来自分类Dev

如何使Android Studio使用现有的.idea文件?

来自分类Dev

如何使用现有的 jmeter 脚本创建 jmeter 脚本

来自分类Dev

如何使用现有的 json 文件创建 tmTheme 文件?

来自分类Dev

如何使用 Python 打包现有的 C++ 项目?

Related 相关文章

热门标签

归档