You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法安装Bioconductor的ShortRead包,求fastq.gz转fasta解决方案

ShortRead包安装失败排查及fastq.gz转fasta替代方案

问题背景

在R 4.1.1(对应Bioconductor 3.14)环境中,尝试安装并加载ShortRead包以使用readFastq函数时,遭遇多类错误,无法正常完成操作,需排查故障或寻求更简便的fastq.gz转fasta方法。

错误信息

1. 包加载失败

> library(ShortRead)
Error in library(Shortread) : there is no package called 'ShortRead'

2. 依赖包编译失败(核心错误)

ln: failed to create symbolic link 'libhts.so.2': Operation not supported
make: *** [Makevars:28: populate-usrlib-dir] Error 1
ERROR: compilation failed for package ‘Rhtslib’
* removing ‘/home/jovyan/work/__dag_config__/R/libs/Rhtslib’
ERROR: dependency ‘Rhtslib’ is not available for package ‘Rsamtools’
* removing ‘/home/jovyan/work/__dag_config__/R/libs/Rsamtools’
ERROR: dependency ‘Rsamtools’ is not available for package ‘GenomicAlignments’
* removing ‘/home/jovyan/work/__dag_config__/R/libs/GenomicAlignments’
ERROR: dependencies ‘Rsamtools’, ‘GenomicAlignments’, ‘Rhtslib’ are not available for package ‘ShortRead’
* removing ‘/home/jovyan/work/__dag_config__/R/libs/ShortRead’

3. textshaping/ragg包配置失败

ERROR: configuration failed for package ‘textshaping’
* removing ‘/opt/conda/envs/r/lib/R/library/textshaping’
* restoring previous ‘/opt/conda/envs/r/lib/R/library/textshaping’
* installing *source* package ‘ragg’ ...
** package ‘ragg’ successfully unpacked and MD5 sums checked
** using staged installation
ERROR: configuration failed for package ‘ragg’
* removing ‘/opt/conda/envs/r/lib/R/library/ragg’
* restoring previous ‘/opt/conda/envs/r/lib/R/library/ragg’

The downloaded source packages are in
    ‘/tmp/RtmpgByRyT/downloaded_packages’ 

已执行的安装命令

#Installing ShortRead package containing the readFastq function
if (!require("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

BiocManager::install(version="3.14")
BiocManager::install("GenomeInfoDbData")
BiocManager::install("GenomeInfoDb")
BiocManager::install("ShortRead")


#Loading the library
library(ShortRead)

当前会话信息

> sessionInfo()
R version 4.1.1 (2021-08-10)
Platform: x86_64-conda-linux-gnu (64-bit)
Running under: Ubuntu 22.04.1 LTS

Matrix products: default
BLAS/LAPACK: /opt/conda/envs/r/lib/libopenblasp-r0.3.21.so

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8       
 [4] LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                  LC_ADDRESS=C              
[10] LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C        

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base      

other attached packages:
[1] BiocManager_1.30.19

loaded via a namespace (and not attached):
 [1] compiler_4.1.1  fastmap_1.1.0   cli_3.4.1       htmltools_0.5.3 tools_4.1.1    
 [6] rstudioapi_0.14 yaml_2.3.6      rmarkdown_2.17  knitr_1.40      xfun_0.34      
[11] digest_0.6.30   rlang_1.0.6     evaluate_0.17 

故障排查建议

1. 解决Rhtslib编译失败问题(核心)

错误提示ln: failed to create symbolic link 'libhts.so.2': Operation not supported,通常因安装目录无软链接权限或文件系统不支持软链接导致:

  • 切换可写安装目录:修改R包安装路径到本地有完整权限的目录,再重新安装:
    .libPaths(c("/home/jovyan/R/libs", .libPaths()))
    BiocManager::install("ShortRead")
    
  • 用conda安装预编译包:conda环境下直接安装二进制包,跳过源码编译:
    conda install -c bioconda bioconductor-shortread
    
  • 手动修改Rhtslib源码:下载对应版本的Rhtslib源码包,将Makevars文件中的ln -s命令替换为cp(复制文件替代软链接),再本地安装:
    install.packages("path/to/Rhtslib.tar.gz", repos = NULL, type = "source")
    

2. 解决textshaping/ragg配置失败问题

这两个包依赖系统图形库,conda环境下直接用conda安装:

conda install -c conda-forge r-textshaping r-ragg

3. 验证Bioconductor版本匹配

确认当前Bioconductor版本为3.14,若不匹配则更新并重启R:

BiocManager::install(version = "3.14", update = TRUE, ask = FALSE)

替代方案:fastq.gz转fasta

若不想安装ShortRead,可选用以下更简便的方法:

1. Linux命令行工具(最快)

直接用zcat+awk处理压缩文件,无需启动R:

zcat input.fastq.gz | awk 'NR%4==1{print ">"substr($0,2)}NR%4==2{print}' > output.fasta

解释:提取fastq文件的第1行(替换@为>作为fasta标题)和第2行(序列内容)

2. R基础包实现

无需额外安装包,用R基础函数完成转换:

# 读取压缩的fastq文件
fastq_lines <- readLines(gzfile("input.fastq.gz"))
# 提取fasta格式的行
fasta_lines <- c(
  paste0(">", substr(fastq_lines[seq(1, length(fastq_lines), 4)], 2)),
  fastq_lines[seq(2, length(fastq_lines), 4)]
)
# 写入fasta文件
writeLines(fasta_lines, "output.fasta")

内容的提问来源于stack exchange,提问作者Anna Keisha Boateng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 02:40:40