pasa的安装与相关报错解决方案

最近在用pasa注释基因组的时候,频繁出现报错,但好在经一系列调整后最终可以成功运行。下面把我用pasa注释的流程及报错的解决方案分享给大家,希望对你有所帮助。

一. 首先是pasa软件的安装

conda create -n pasa 创建虚拟环境
conda activate pasa 激活

二. 软件安装与配置

conda install pasa -y 安装
配置需要先找到pasa_conf/文件夹下的pasa.alignAssembly.Template.txt
cp pasa.alignAssembly.Template.txt alignAssembly.config
vi alignAssembly.config 点击i进行插入状态,将需要修改的地方进行更改。
示例如下:
templated variables to be replaced exist as <var_name>
database settings**
DATABASE=/tmp/mydb.sqlite
#######################################################
Parameters to specify to specific scripts in pipeline
create a key = "script_name" + ":" + "parameter"
assign a value as done above.

script validate_alignments_in_db.dbi
validate_alignments_in_db.dbi:--MIN_PERCENT_ALIGNED=80
validate_alignments_in_db.dbi:--MIN_AVG_PER_ID=80

script subcluster_builder.dbi
subcluster_builder.dbi:-m=50
环境变量
export PATH=/home/liuxiaoyan/miniconda3/envs/pasa/bin:$PATH
export PATH=/home/liuxiaoyan/miniconda3/envs/pasa/opt/pasa-2.5.3/bin:$PATH``

更改好之后,保存这个文件退出即可

三. pasa的相关报错问题

此时,直接运行此命令开始发生报错 Launch_PASA_pipeline.pl -c /home/liuxiaoyan/miniconda3/envs/pasa/opt/pasa-2.5.3/pasa_conf/alignAssembly.config -C -R -r -g 2025.7.16.Euplotes_amieti_genome.fasta -t filter.fasta --ALIGNERS gmap,blat --GENETIC_CODE Euplotes --CPU 10
报错内容如下:
-connecting to SQLite db: /tmp/mydb.sqlite
-*** Running PASA pipeine:

  • [Thu Sep 11 15:34:06 2025] Running CMD: /home/liuxiaoyan/miniconda3/envs/pasa/opt/pasa-2.5.3/scripts/create_sqlite_cdnaassembly_db.dbi -c /home/liuxiaoyan/miniconda3/envs/pasa/opt/pasa-2.5.3/pasa_conf/alignAssembly.config -S '/home/liuxiaoyan/miniconda3/envs/pasa/opt/pasa-2.5.3/schema/cdna_alignment_sqliteschema' -r
    DBI object version 1.647 does not match bootstrap parameter 1.643 at /home/liuxiaoyan/miniconda3/envs/pasa/lib/perl5/5.32/core_perl/DynaLoader.pm line 210.
    BEGIN failed--compilation aborted at /home/liuxiaoyan/miniconda3/envs/pasa/lib/perl5/5.32/site_perl/DBI.pm line 284.
    Compilation failed in require at /home/liuxiaoyan/miniconda3/envs/pasa/opt/pasa-2.5.3/scripts/create_sqlite_cdnaassembly_db.dbi line 8.
    BEGIN failed--compilation aborted at /home/liuxiaoyan/miniconda3/envs/pasa/opt/pasa-2.5.3/scripts/create_sqlite_cdnaassembly_db.dbi line 8.
    Error, cmd: /home/liuxiaoyan/miniconda3/envs/pasa/opt/pasa-2.5.3/scripts/create_sqlite_cdnaassembly_db.dbi -c /home/liuxiaoyan/miniconda3/envs/pasa/opt/pasa-2.5.3/pasa_conf/alignAssembly.config -S '/home/liuxiaoyan/miniconda3/envs/pasa/opt/pasa-2.5.3/schema/cdna_alignment_sqliteschema' -r died with ret 512 No such file or directory at /home/liuxiaoyan/miniconda3/envs/pasa/opt/pasa-2.5.3/PerlLib/Pipeliner.pm line 187.
    Pipeliner::run(Pipeliner=HASH(0x5624c28f9b60)) called at /data_2/lxy/ribo/annotation/PASApipeline-master/Launch_PASA_pipeline.pl line 1061
    这个错误的核心仍然是 DBI 模块版本冲突(1.647 与预期的 1.643 不匹配),导致 PASA 无法正常连接 SQLite 数据库。结合具体报错信息,
    解决步骤如下:

步骤 1:彻底清理并重新安装指定版本的 DBI

  1. 激活环境并强制卸载 DBI
    conda activate pasa
    cpanm --force --uninstall DBI # 强制卸载所有版本的 DBI
补充:若这一步报错 ! DBI is not found in the following directories and can't be uninstalled.

/home/liuxiaoyan/miniconda3/envs/pasa/lib/perl5/5.32/site_perl
/home/liuxiaoyan/miniconda3/envs/pasa/lib/perl5/site_perl
从报错信息来看,cpanm 无法找到 DBI 模块的安装路径,可能是因为 DBI 是通过 conda 而非 cpanm 安装的(属于 conda 管理的系统包)。这种情况下,需要用 conda 命令来卸载并清理 DBI 模块。
步骤如下
步骤 1:用 conda 卸载 DBI 相关包
conda activate pasa 激活环境
conda list | grep -i dbi 查找conda安装的DBI相关包(perl-dbi是conda中的标准包名)
conda remove --force perl-dbi -y 卸载conda管理的DBI包
若输出中有 perl-dbi 包,说明是通过 conda 安装的,卸载后可清除核心文件。
2. 手动删除残留文件(关键)--即使 conda 卸载后,仍可能有残留文件导致版本冲突,需手动删除,确保旧版本的 DBI 文件被完全清除:
find /home/liuxiaoyan/miniconda3/envs/pasa -name "DBI.pm" -o -name "DBI" | xargs rm -rf 搜索并删除环境中所有 DBI 相关文件
这个命令会递归查找环境中所有与 DBI 相关的文件 / 文件夹并删除,确保彻底清理。
3. 安装与预期版本匹配的 DBI(1.643)
cpanm DBI@1.643 明确指定版本

步骤 2:验证 DBI 版本是否匹配

1.安装后必须确认版本正确:
perl -MDBI -e 'print "DBI version: " . $DBI::VERSION . "\n";' 检查 DBI实际版本
若输出 DBI version: 1.643,则版本匹配;
若仍显示 1.647,说明残留文件未清理干净,需重复步骤 1。
2.手动删除残留文件(关键)--即使 conda卸载后,仍可能有残留文件导致版本冲突,需手动删除,确保旧版本的DBI文件被完全清除:
find /home/liuxiaoyan/miniconda3/envs/pasa -name "DBI.pm" -o -name "DBI" | xargs rm -rf 搜索并删除环境中所有 DBI 相关文件
这个命令会递归查找环境中所有与DBI相关的文件/文件夹并删除,确保彻底清理。
3.安装与预期版本匹配的 DBI(1.643)
cpanm DBI@1.643 # 明确指定版本
步骤 2:验证 DBI 版本是否匹配
安装后必须确认版本正确:
perl -MDBI -e 'print "DBI version: " . $DBI::VERSION . "\n";' 检查DBI实际版本
若输出 DBI version: 1.643,则版本匹配;
若仍显示 1.647,说明残留文件未清理干净,需重复步骤 1。
conda create -n pasa -c bioconda -c conda-forge perl=5.32 pasa -y
conda activate pasa
cpanm DBI@1.643 DBD::SQLite@1.76 手动安装指定版本的 DBI 和 DBD::SQLite
此时,又出现了报错,如下:cpanm DBI@1.643
--> Working on DBI
Fetching http://backpan.perl.org/authors/id/T/TI/TIMB/DBI-1.643.tar.gz ... OK
Configuring DBI-1.643 ... OK
Building and testing DBI-1.643 ... FAIL
! Installing DBI failed. See /home/liuxiaoyan/.cpanm/work/1757576235.4768/build.log for details. Retry with --force to force install it.
安装 DBI@1.643 失败通常是由于缺少系统依赖或编译工具导致的。根据报错信息,可按以下步骤解决:
步骤 1:安装必要的系统编译工具和依赖
DBI 模块需要 Perl 开发库和编译工具才能编译安装,执行以下命令补充依赖(以 Ubuntu/Debian 为例):
1.下载并解压源码:(这里我将这个压缩包下载到了上面我创建的/tmp/文件夹下面进行下面的操作)
wget http://backpan.perl.org/authors/id/T/TI/TIMB/DBI-1.643.tar.gz
tar -zxvf DBI-1.643.tar.gz
cd DBI-1.643
2.配置并编译:
perl Makefile.PL PREFIX=/home/liuxiaoyan/miniconda3/envs/pasa 指定安装到当前conda 环境
make
make test # 可选,测试编译是否通过
make install
3.检查版本是否正确
perl -MDBI -e 'print "DBI version: " . $DBI::VERSION . "\n";'
若输出 DBI version: 1.643,则安装成功。
继续运行命令Launch_PASA_pipeline.pl -c /home/liuxiaoyan/miniconda3/envs/pasa/opt/pasa-2.5.3/pasa_conf/alignAssembly.config -C -R -r -g 2025.7.16.Euplotes_amieti_genome.fasta -t filter.fasta --ALIGNERS gmap,blat --GENETIC_CODE Euplotes --CPU 10发现又开始报错,
具体如下:
Launch_PASA_pipeline.pl -c /home/liuxiaoyan/miniconda3/envs/pasa/opt/pasa-2.5.3/pasa_conf/alignAssembly.config -C -R -r -g 2025.7.16.Euplotes_amieti_genome.fasta -t filter.fasta --ALIGNERS gmap,blat --GENETIC_CODE Euplotes --CPU 10
-connecting to SQLite db: /tmp/mydb.sqlite
-*** Running PASA pipeine:

  • [Thu Sep 11 15:47:07 2025] Running CMD: /home/liuxiaoyan/miniconda3/envs/pasa/opt/pasa-2.5.3/scripts/create_sqlite_cdnaassembly_db.dbi -c /home/liuxiaoyan/miniconda3/envs/pasa/opt/pasa-2.5.3/pasa_conf/alignAssembly.config -S '/home/liuxiaoyan/miniconda3/envs/pasa/opt/pasa-2.5.3/schema/cdna_alignment_sqliteschema' -r
    Can't locate DBI.pm in @INC (you may need to install the DBI module) (@INC contains: /home/liuxiaoyan/miniconda3/envs/pasa/opt/pasa-2.5.3/PerlLib/ /home/liuxiaoyan/miniconda3/envs/pasa/opt/pasa-2.5.3 /home/liuxiaoyan/miniconda3/envs/pasa/opt/pasa-2.5.3/scripts/../PerlLib /home/liuxiaoyan/perl5/lib/site_perl/5.32.1/x86_64-linux-thread-multi/ /home/liuxiaoyan/perl5/lib/site_perl/5.32.1/x86_64-linux-thread-multi /home/liuxiaoyan/perl5/lib/perl5 /home/liuxiaoyan/miniconda3/envs/pasa/lib/perl5/5.32/site_perl /home/liuxiaoyan/miniconda3/envs/pasa/lib/perl5/site_perl /home/liuxiaoyan/miniconda3/envs/pasa/lib/perl5/5.32/vendor_perl /home/liuxiaoyan/miniconda3/envs/pasa/lib/perl5/vendor_perl /home/liuxiaoyan/miniconda3/envs/pasa/lib/perl5/5.32/core_perl /home/liuxiaoyan/miniconda3/envs/pasa/lib/perl5/core_perl .) at /home/liuxiaoyan/miniconda3/envs/pasa/opt/pasa-2.5.3/scripts/create_sqlite_cdnaassembly_db.dbi line 8.
    BEGIN failed--compilation aborted at /home/liuxiaoyan/miniconda3/envs/pasa/opt/pasa-2.5.3/scripts/create_sqlite_cdnaassembly_db.dbi line 8.
    Error, cmd: /home/liuxiaoyan/miniconda3/envs/pasa/opt/pasa-2.5.3/scripts/create_sqlite_cdnaassembly_db.dbi -c /home/liuxiaoyan/miniconda3/envs/pasa/opt/pasa-2.5.3/pasa_conf/alignAssembly.config -S '/home/liuxiaoyan/miniconda3/envs/pasa/opt/pasa-2.5.3/schema/cdna_alignment_sqliteschema' -r died with ret 512 No such file or directory at /home/liuxiaoyan/miniconda3/envs/pasa/opt/pasa-2.5.3/PerlLib/Pipeliner.pm line 187.
    Pipeliner::run(Pipeliner=HASH(0x557e2db87290)) called at /data_2/lxy/ribo/annotation/PASApipeline-master/Launch_PASA_pipeline.pl line 1061
    现在报错的核心问题是:Perl 无法在指定的路径(@INC)中找到 DBI.pm 模块,说明 DBI 模块没有被正确安装到当前 conda 环境的 Perl 搜索路径中。结合之前的操作,可能是手动清理残留文件后安装路径未正确配置,或权限问题导致模块未实际安装成功。
    解决步骤:重新安装 DBI 并确保路径正确
    步骤 1:确认当前 Perl 解释器和模块搜索路径
    先明确当前使用的 Perl 是 conda 环境中的版本,避免与系统 Perl 混淆:
    conda activate pasa
    which perl 查看当前Perl路径(应指向conda环境)
    输出应类似:/home/liuxiaoyan/miniconda3/envs/pasa/bin/perl
    perl -e 'print join("\n", @INC), "\n";' 查看 Perl 模块搜索路径(@INC)
    记录输出的路径列表(后续需确保 DBI 安装到这些路径中)。
    步骤 2:无权限下手动安装 DBI 到用户目录(关键)
    由于没有 sudo 权限,无法安装系统级依赖,可直接将 DBI 安装到当前用户的 Perl 路径(无需管理员权限):
    cpanm --local-lib=~/perl5 DBI@1.643 安装 DBI 1.643 到用户目录(自动加入 Perl 搜索路径)
    find ~/perl5 -name "DBI.pm" 确认安装路径(应在用户目录下)
    预期输出:~/perl5/lib/perl5/DBI.pm
    步骤 3:配置环境变量,确保Perl能找到模块
    手动将用户目录下的Perl模块路径添加到环境变量,确保Perl能识别:
    export PERL5LIB=~/perl5/lib/perl5:$PERL5LIB 临时生效(当前终端)
    echo 'export PERL5LIB=~/perl5/lib/perl5:$PERL5LIB' >> ~/.bashrc 永久生效(添加到 .bashrc)
    source ~/.bashrc 立即生效
    步骤 4:验证 DBI 模块是否可被找到
    perl -MDBI -e 'print "DBI loaded successfully!\n";' 检查 Perl 是否能加载 DBI 模块
    若输出 DBI loaded successfully!,说明模块已被正确识别;
    若仍提示 Can't locate DBI.pm,则需检查步骤 2 的安装是否成功,或路径是否正确添加。
    步骤 5:补充 SQLite 依赖(避免后续报错)
    PASA 需要 DBD::SQLite 模块连接 SQLite 数据库,同样安装到用户目录:
    cpanm --local-lib=~/perl5 DBD::SQLite@1.76
    运行这个命令find /home/liuxiaoyan/perl5 /home/liuxiaoyan/miniconda3/envs/pasa -name "DBI.pm"
    /home/liuxiaoyan/perl5/lib/site_perl/5.32.1/x86_64-linux-thread-multi/Bundle/DBI.pm
    /home/liuxiaoyan/miniconda3/envs/pasa/lib/site_perl/5.32.1/x86_64-linux-thread-multi/Bundle/DBI.pm
    /home/liuxiaoyan/miniconda3/envs/pasa/lib/site_perl/5.32.1/x86_64-linux-thread-multi/DBI.pm)时报错
    从搜索结果来看,DBI.pm已经存在于pasa环境的Perl搜索路径中(/home/liuxiaoyan/miniconda3/envs/pasa/lib/site_perl/5.32.1/x86_64-linux-thread-multi/DBI.pm),但Perl仍提示 “找不到模块”,核心原因是 当前 Perl 的搜索路径(@INC)未包含这个实际安装路径,导致模块无法被识别。
    解决步骤:手动添加DBI.pm所在路径到 PERL5LIB
    步骤 1:确认DBI.pm的实际路径
    根据搜索结果,DBI.pm位于:
    /home/liuxiaoyan/miniconda3/envs/pasa/lib/site_perl/5.32.1/x86_64-linux-thread-multi/
    但你的 Perl 搜索路径(@INC)中只有 .../5.32/site_perl(无 5.32.1 子目录),路径不匹配导致无法找到。
    步骤 2:临时添加路径到环境变量(当前终端生效)
    执行以下命令,将 DBI.pm 所在路径手动加入 PERL5LIB:
    conda activate pasa
    export PERL5LIB=/home/liuxiaoyan/miniconda3/envs/pasa/lib/site_perl/5.32.1/x86_64-linux-thread-multi/:$PERL5LIB 临时添加路径(替换为你搜索到的实际路径)
    步骤 3:验证模块是否可加载
    perl -MDBI -e 'print "DBI loaded! Version: " . $DBI::VERSION . "\n";' 再次检查 DBI 是否能被找到
    若输出 DBI loaded! Version: 1.643(或对应版本),说明路径已生效,模块可正常识别。
    若仍报错,确认路径是否完全匹配(注意 5.32.1 和 x86_64-linux-thread-multi 需与搜索结果一致)。
    步骤 4:永久添加路径(避免每次终端重启重复操作)
    将路径写入 ~/.bashrc,确保每次激活环境都能生效:
    echo 'export PERL5LIB=/home/liuxiaoyan/miniconda3/envs/pasa/lib/site_perl/5.32.1/x86_64-linux-thread-multi/:$PERL5LIB' >> ~/.bashrc 追加路径到 .bashrc
    source ~/.bashrc 立即生效
    conda deactivate 重新激活环境验证
    conda activate pasa
    perl -MDBI -e 'print "DBI version: " . $DBI::VERSION . "\n";'
    步骤 5:补充 DBD::SQLite 路径(避免后续报错)
    同理,确认DBD::SQLite所在路径是否在@INC中,若不在则一并添加:
    搜索 DBD::SQLite路径
    find /home/liuxiaoyan/miniconda3/envs/pasa -name "SQLite.pm"
    假设结果为:/home/liuxiaoyan/miniconda3/envs/pasa/lib/site_perl/5.32.1/x86_64-linux-thread-multi/DBD/SQLite.pm
    若路径未在 @INC 中,同样添加到 PERL5LIB(已在步骤4中添加父目录,通常无需额外操作)
    现在 DBI 模块已经成功加载,且版本是所需的 1.643,说明核心依赖问题已解决。接下来可以重新运行 PASA 命令,应该能正常执行:
    Launch_PASA_pipeline.pl -c /home/liuxiaoyan/miniconda3/envs/pasa/opt/pasa-2.5.3/pasa_conf/alignAssembly.config -C -R -r -g 2025.7.16.Euplotes_amieti_genome.fasta -t filter.fasta --ALIGNERS gmap,blat --GENETIC_CODE Euplotes --CPU 10
    可能的后续问题及解决方向:
    1.若提示缺少 DBD::SQLite
    按之前的方法安装并确认路径:
    cpanm --local-lib=~/perl5 DBD::SQLite@1.76
    perl -MDBD::SQLite -e 'print "DBD::SQLite loaded! Version: " . $DBD::SQLite::VERSION . "\n";' 验证
    2.若出现 gmap 或 blat 未找到
    确保这两个比对工具已安装并在环境变量中:
    conda install -c bioconda gmap blat -y 安装(若未安装)
    which gmap && which blat 验证
    3.若提示数据库文件权限问题
    PASA 默认使用 /tmp/mydb.sqlite,若临时目录权限不足,可手动指定数据库路径:
    Launch_PASA_pipeline.pl ... --sqlite_db ./mydb.sqlite 在命令中添加 --sqlite_db /path/to/your/db.sqlite(使用有权限的目录)
posted @ 2025-09-11 21:19  生信小小白(起步版)  阅读(141)  评论(0)    收藏  举报