【问题标题】:Installing Bio::DB::Sam perl module安装 Bio::DB::Sam perl 模块
【发布时间】:2014-08-28 19:03:16
【问题描述】:

我正在尝试在远程服务器上的主目录上安装 perl 模块 Bio::DB::Sam

我下载了模块,提取了文件,然后运行:

perl Build.pl prefix=~/local

接下来会发生什么:

This module requires samtools 0.1.10 or higher (samtools.sourceforge.net).
Please enter the location of the bam.h and compiled libbam.a files: **/some_places/samtools-0.1.19**

Found /some_places/samtools-0.1.19/bam.h and /some_places/samtools-0.1.19/libbam.a.
Created MYMETA.yml and MYMETA.json
Creating new 'Build' script for 'Bio-SamTools' version '1.39'

接下来当我尝试运行时:

./Build

这是我得到的:

  Building Bio-SamTools
gcc -shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -o blib/arch/auto/Bio/DB/Sam/Sam.so lib/Bio/DB/Sam.o c_bin/bam2bedgraph.o -L/some_places/samtools-0.1.19 -lbam -lpthread -lz
/usr/bin/ld: /some_places/samtools-0.1.19/libbam.a(bgzf.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/some_places/samtools-0.1.19/libbam.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
error building blib/arch/auto/Bio/DB/Sam/Sam.so from lib/Bio/DB/Sam.o c_bin/bam2bedgraph.o at ~/perl5/lib/perl5/ExtUtils/CBuilder/Base.pm line 323.

我确实在谷歌上搜索了可能的解决方案并尝试了几个,但它们都不起作用,例如--enable-shared OR export CXXFLAGS="$CXXFLAGS -fPIC".

我已经在我的主目录中安装了 Bioperl。

任何帮助将不胜感激。

干杯

【问题讨论】:

  • 您是否已通过电子邮件向 samtools 的作者寻求帮助?
  • 不,我还没有。目前,我正在尝试使用 -fPIC 重新编译我们这边的 samtools 版本,看看在安装 Bio::DB::Sam 时是否仍然遇到同样的问题。
  • 根据我的经验,这很常见。您需要在 samtools 目录中 make clean,然后编辑 samtools dist 中的 Makefile 以将“-fPIC”添加到 CFLAGS。之后,您可以尝试构建 Bio-SamTools。
  • 我这样做了,但我开始收到不同的错误,这些错误显然来自 samtools 和 Bio::DB::Sam 版本中的不同。我已经下载了最新版本的 samtools,显然 Bio::DB::Sam 不再支持了。在新的 samtools bam.h 库中有一些函数被注释掉了。我打算下载并安装旧版本的 samtools,并尝试将 Bio::DB::Sam 链接到旧版本的 samtools,并将在此处发布结果。

标签: perl module installation bioinformatics bioperl


【解决方案1】:

这是一个脚本,它将获取 SAMtools 源并对其进行编译,然后获取并编译 Perl 绑定。

wget http://sourceforge.net/projects/samtools/files/samtools/0.1.18/samtools-0.1.18.tar.bz2
tar xjf samtools-0.1.18.tar.bz2 && cd samtools-0.1.18
make CFLAGS=-fPIC
export SAMTOOLS=`pwd`
cpanm Bio::DB::Sam

您可能看到的部分问题是 SAMtools 项目最近经历了一些重大的代码重组(这自然使得使用外部语言绑定变得困难)。

【讨论】:

  • 感谢 SES,我会试一试,并会及时通知您它是如何工作的。最后一个问题,如果我想将它安装在我的主目录上,除了在安装 samtools 时定义前缀=~/someplaces 之外,我还需要做任何其他事情吗?
  • @Nikleotide,在构建 Bio-SamTools 之前,您还需要确保 SAMTOOLS env 变量指向 samtools 目录的正确位置(如果不是以交互方式构建并明确指定它)。希望对您有所帮助。
  • 感谢 SES。由于出现了紧急情况,我不得不将其搁置几天。我会拿起这个,让你知道我的进步。感谢所有的帮助和你的时间。
  • @Nikleotide,上面的命令只需要几秒钟,所以你会立即知道它是否有效(即,你会在测试结束时看到“PASS”)。从那里,您可以使用 Perl 库,或运行 ./Build install,然后您可以在任何地方使用 Bio-SamTools。
  • @Nikleotide,如果测试通过并且您成功完成了./Build install,则安装了 Bio-SamTools。您可以使用命令perl -MBio::DB::Sam -e 1 来测试安装。如果它什么也没打印,则一切都已安装。
【解决方案2】:

我通过使用 -fPIC 参数重新制作 samtools 解决了这个问题

make clean
make CXXFLAGS=-fPIC CFLAGS=-fPIC CPPFLAGS=-fPIC

然后使用 cpan 安装。

cpan[2]> install Bio::DB::Sam 

【讨论】:

    【解决方案3】:

    [已解决]

    wget http://sourceforge.net/projects/samtools/files/samtools/0.1.18/samtools-0.1.18.tar.bz2
    
    tar xjf samtools-0.1.18.tar.bz2 && cd samtools-0.1.18
    
    make CFLAGS=-fPIC
    

    在终端输入cpan并输入

    install Bio::DB::Sam
    

    小心:

    你不能使用以下命令:

    perl -MCPAN -Mlocal::lib -e 'CPAN::install(Bio::DB::Sam)'

    只能使用cpan,然后使用

    install Bio::DB::Sam
    

    【讨论】:

      【解决方案4】:

      我按照 Bio-SamTools-1.43 下面的 README 文件中的说明在 samtools 0.1.17 中编辑 Makefile。然后,为了安装,我使用了

      perl -MCPAN -e 外壳 安装 Bio::DB::Sam

      自述文件:

      这是 SAMtools 序列比对的 Perl 接口 界面。它仅适用于 Samtools 最高 0.1.17 的版本。它确实 由于库中的重大更改,无法在 1.0 或更高版本上运行 结构。

      有关 samtools 文档,请参阅 http://samtools.sourceforge.net/

      • 一步安装

      在此发行版的根目录中,您将找到该脚本 安装.pl。运行此将下载此的最新版本 模块和 SamTools 到一个临时目录,编译它们,测试和 安装。只需运行:

      perl INSTALL.pl

      • 多步骤安装

      更传统的安装需要你单独下载, 将SAMtools 0.1.10 到0.1.17 解压并编译到一些可访问的版本中 目录。在 samtools 目录中键入“make”通常会 工作。 SAMtools 版本 0.1.18 及更高版本不适用于此 图书馆。

      然后设置环境变量SAMTOOLS指向这个目录。

      您还需要从 CPAN 安装 Bio::Perl。

      现在运行:

      perl 构建.PL 。/建造 ./构建测试 (sudo) ./构建安装

      疑难解答:

      如果在编译过程中遇到问题,可能需要编辑 Build.PL 以便 extra_compiler_flags 匹配 CFLAGS 和 DFLAGS Samtools Makefile 中的设置。以下是一些常见问题:

      1. 构建此模块时,您会收到如下错误: 重定位 R_X86_64_32 针对“本地符号”时不能使用 制作共享对象;用 -fPIC 重新编译

      要解决此问题,请编辑 Samtools 发行版中的 Makefile,添加 “-fPIC”到 CFLAGS 行。当您使用它时,您可能还希望 摆脱出现在下面的一堆未使用的变量警告 最新版本的 gcc。修改后的 CFLAGS 将如下所示

      CFLAGS= -g -Wall -Wno-unused -Wno-unused-result -O2 -fPIC #-m64 #-arch ppc

      然后在 Samtools 目录下执行“make clean; make”重新编译 图书馆。在此之后,您应该能够构建此模块而无需 错误。

      1. 构建此模块时,您会收到关于缺少数学的错误 图书馆。

      要解决这个问题,请按照 (1) 中的配方,除了将 -m64 添加到 CFLAGS 以便它 看起来像这样:

      CFLAGS= -g -Wall -O2 -fPIC #-m64 #-arch ppc

      测试和贡献:

      您可以通过以下方式获取此模块的最新开发版本 其 GitHub 站点为https://github.com/GMOD/GBrowse-Adaptors。请 随时通过 GitHub 提交错误报告、补丁等。

      作者:

      林肯·D·斯坦因

      版权所有 (c) 2009-2015 安大略癌症研究所

      此软件包及其随附的库是免费软件;你可以 根据艺术条款重新分发和/或修改它 许可证 2.0、Apache 2.0 许可证或 GNU 通用公共许可证 (版本 1 或更高版本)。有关完整的许可文本,请参阅 LICENSE。

      【讨论】:

        猜你喜欢
        • 2019-02-27
        • 1970-01-01
        • 1970-01-01
        • 2012-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-24
        • 1970-01-01
        相关资源
        最近更新 更多