01、写在前面
大家拿到自己的服务器(趁开学| 入手足够完成硕博生涯的生信环境)后可能需要安装很多的软件与包,Linux中许多包的安装依赖过多、安装复杂。而conda作为一个能够直接安装超过90%软件的"管家",能够像Windows和手机中的应用商店那样一键为你解决安装软件的烦恼。conda 是一个开源的软件包管理和环境管理系统,用于简化在不同平台上安装、运行和管理软件包。该工具用于支持 Python 语言,但也能够管理非 Python 的软件。conda的特点介绍、安装使用可见教程:生信软件管家——conda的安装、使用、卸载。
本教程基于Linux环境演示,计算资源不足的同学可参考:
足够支持你完成硕博生涯的生信环境
忘记宣传了,独享用户连技术支持都是独享的
RTX5090、4080S、5070显卡上机
如果你对下面的教程比较迷茫,那么你可以先行学习编程教程:
十小时学会Linux
生信Linux及服务器使用技巧
5.5h入门R语言
02、利用conda分享/复刻生信环境
大家除了能按部就班的利用conda安装生信软件外,还能够通过yml文件打包/复刻生信环境(如下图所示),其中能够收录完整的配置(包括 Python 版本、所有依赖库及其精确版本、甚至操作系统相关的依赖),通过这样一个几kb的文件就能直接收录成百上千个依赖信息。这样任何人都能在自己的电脑或服务器上快速复现与原环境完全一致的配置,彻底解决 “我这能跑,你那报错” 的依赖冲突问题。让环境从 “隐性经验” 变成 “显性文件”。
具体使用起来也很简单,例如我这里存在一些conda虚拟环境:
大家按照这个语法即可完成环境打包与再安装的流程:
# 激活环境:
conda activate your_env_name
# 打包环境为yml文件:
conda env export > my_env.yml
# 在新机器上复刻环境:
conda env create -f my_env.yml
例如我现在需要用到一文学会scFAST-seq数据分析中用到的seeksoul环境,对应的代码就是:
# 激活环境:
conda activate seeksoultools
# 打包环境为yml文件:
conda env export > seeksoultools.yml
# 在新机器上复刻环境:
conda env create -f seeksoultools.yml
本质上是一个文本文件,打开后内容如下:
name: /data2/analysis/xunyin/seeksoultools
channels:- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main- http://mirrors.ustc.edu.cn/anaconda/pkgs/free- bioconda- https://mirror.nju.edu.cn/anaconda/cloud/pytorch- https://mirror.nju.edu.cn/anaconda/cloud/conda-forge- https://mirror.nju.edu.cn/anaconda/pkgs/msys2- https://mirror.nju.edu.cn/anaconda/pkgs/r- https://mirror.nju.edu.cn/anaconda/pkgs/free- https://mirror.nju.edu.cn/anaconda/pkgs/main- conda-forge
dependencies:- _libgcc_mutex=0.1=conda_forge- _openmp_mutex=4.5=2_gnu- _r-mutex=1.0.1=anacondar_1- alsa-lib=1.2.8=h166bdaf_0- binutils_impl_linux-64=2.40=hf600244_0- bioconductor-beachmat=2.10.0=r41hc247a5b_2- bioconductor-biobase=2.54.0=r41hc0cfd56_2- bioconductor-biocgenerics=0.40.0=r41hdfd78af_0- bioconductor-biocio=1.4.0=r41hdfd78af_0- bioconductor-biocparallel=1.28.3=r41hc247a5b_1- bioconductor-biostrings=2.62.0=r41hc0cfd56_2- bioconductor-delayedarray=0.20.0=r41hc0cfd56_2- bioconductor-delayedmatrixstats=1.16.0=r41hdfd78af_0- bioconductor-dropletutils=1.14.2=r41hc247a5b_1- bioconductor-edger=3.36.0=r41hc247a5b_2- bioconductor-genomeinfodb=1.30.1=r41hdfd78af_0- bioconductor-genomeinfodbdata=1.2.7=r41hdfd78af_2- bioconductor-genomicalignments=1.30.0=r41hc0cfd56_2- bioconductor-genomicranges=1.46.1=r41hc0cfd56_1- bioconductor-hdf5array=1.22.1=r41hc0cfd56_1- bioconductor-iranges=2.28.0=r41hc0cfd56_2- bioconductor-limma=3.50.3=r41hc0cfd56_0- bioconductor-matrixgenerics=1.6.0=r41hdfd78af_0- bioconductor-noiseq=2.38.0=r41hdfd78af_0- bioconductor-rhdf5=2.38.1=r41hbe1951d_0- bioconductor-rhdf5filters=1.6.0=r41hc247a5b_2- bioconductor-rhdf5lib=1.16.0=r41hc0cfd56_2- bioconductor-rhtslib=1.26.0=r41hc0cfd56_2- bioconductor-rsamtools=2.10.0=r41hc247a5b_2- bioconductor-rtracklayer=1.54.0=r41h171f361_4- bioconductor-s4vectors=0.32.4=r41hc0cfd56_0- bioconductor-scuttle=1.4.0=r41hc247a5b_2- bioconductor-singlecellexperiment=1.16.0=r41hdfd78af_0- bioconductor-sparsematrixstats=1.6.0=r41hc247a5b_2- bioconductor-summarizedexperiment=1.24.0=r41hdfd78af_0- bioconductor-xvector=0.34.0=r41hc0cfd56_2- bioconductor-zlibbioc=1.40.0=r41hc0cfd56_2- bwidget=1.9.14=ha770c72_1- bx-python=0.9.0=py39h6471ffd_0- bzip2=1.0.8=h7f98852_4- c-ares=1.18.1=h7f98852_0- ca-certificates=2022.12.7=ha878542_0- cairo=1.16.0=ha61ee94_1014- cffi=1.15.1=py39he91dace_3- click=8.1.3=unix_pyhd8ed1ab_2- curl=7.26.0=1- cutadapt=4.1=py39hbf8eff0_1- dnaio=0.10.0=py39hbf8eff0_0- expat=2.5.0=hcb278e6_1- font-ttf-dejavu-sans-mono=2.37=hab24e00_0- font-ttf-inconsolata=3.000=h77eed37_0- font-ttf-source-code-pro=2.038=h77eed37_0- font-ttf-ubuntu=0.83=hab24e00_0- fontconfig=2.14.2=h14ed4e7_0- fonts-conda-ecosystem=1=0- fonts-conda-forge=1=0- freetype=2.12.1=hca18f0e_1- fribidi=1.0.10=h36c2ea0_0- future=0.18.3=pyhd8ed1ab_0- gcc_impl_linux-64=12.2.0=hcc96c02_19- geos=3.11.2=hcb278e6_0- gettext=0.21.1=h27087fc_0- gfortran_impl_linux-64=12.2.0=h55be85b_19- giflib=5.2.1=h0b41bf4_3- glpk=5.0=h445213a_0- gmp=6.2.1=h58526e2_0- graphite2=1.3.13=h58526e2_1001- gsl=2.7=he838d99_0- gxx_impl_linux-64=12.2.0=hcc96c02_19- harfbuzz=6.0.0=h8e241bc_0- htslib=1.17=h6bc39ce_0- icu=70.1=h27087fc_0- isa-l=2.30.0=ha770c72_4- jinja2=3.1.2=pyhd8ed1ab_1- jpeg=9e=h0b41bf4_3- kernel-headers_linux-64=2.6.32=he073ed8_15- keyutils=1.6.1=h166bdaf_0- krb5=1.19.3=h3790be6_0- lcms2=2.14=h6ed2654_0- ld_impl_linux-64=2.40=h41732ed_0- lerc=4.0.0=h27087fc_0- libblas=3.9.0=16_linux64_openblas- libcblas=3.9.0=16_linux64_openblas- libcups=2.3.3=h3e49a29_2- libcurl=7.87.0=h91b91d3_0- libdeflate=1.13=h166bdaf_0- libedit=3.1.20191231=he28a2e2_2- libev=4.33=h516909a_1- libexpat=2.5.0=hcb278e6_1- libffi=3.4.2=h7f98852_5- libgcc-devel_linux-64=12.2.0=h3b97bd3_19- libgcc-ng=12.2.0=h65d4601_19- libgfortran-ng=12.2.0=h69a702a_19- libgfortran5=12.2.0=h337968e_19- libglib=2.74.1=h606061b_1- libgomp=12.2.0=h65d4601_19- libiconv=1.17=h166bdaf_0- liblapack=3.9.0=16_linux64_openblas- libnghttp2=1.51.0=hdcd2b5c_0- libnsl=2.0.0=h7f98852_0- libopenblas=0.3.21=pthreads_h78a6416_3- libpng=1.6.39=h753d276_0- libsanitizer=12.2.0=h46fd767_19- libsqlite=3.40.0=h753d276_0- libssh2=1.10.0=haa6b8db_3- libstdcxx-devel_linux-64=12.2.0=h3b97bd3_19- libstdcxx-ng=12.2.0=h46fd767_19- libtiff=4.4.0=h0e0dad5_3- libuuid=2.38.1=h0b41bf4_0- libwebp-base=1.3.0=h0b41bf4_0- libxcb=1.13=h7f98852_1004- libxml2=2.10.3=hca2bb57_4- libzlib=1.2.13=h166bdaf_4- loguru=0.6.0=py39hf3d152e_2- lzo=2.10=h516909a_1000- lzstring=1.0.4=py_1001- make=4.3=hd18ef5c_1- markupsafe=2.1.2=py39h72bdee0_0- ncurses=6.3=h27087fc_1- numpy=1.23.3=py39hba7629e_0- openjdk=17.0.3=h58dac75_5- openssl=1.1.1t=h0b41bf4_0- pandas=1.5.0=py39h4661b88_0- pandoc=2.19.2=h32600fe_2- pango=1.50.14=hd33c08f_0- pbzip2=1.1.13=0- pcre2=10.40=hc3806b6_0- perl=5.32.1=2_h7f98852_perl5- picard=2.27.5=hdfd78af_0- pigz=2.6=h27826a3_0- pip=22.2.2=pyhd8ed1ab_0- pixman=0.40.0=h36c2ea0_0- plotly=5.10.0=pyhd8ed1ab_0- pthread-stubs=0.4=h36c2ea0_1001- pybigwig=0.3.18=py39h792ddb7_2- pycparser=2.21=pyhd8ed1ab_0- pysam=0.19.1=py39h9abd093_1- python=3.9.13=h9a8a25e_0_cpython- python-dateutil=2.8.2=pyhd8ed1ab_0- python-isal=1.1.0=py39hb9d737c_1- python-lzo=1.14=py39h388aed1_2- python_abi=3.9=3_cp39- pytz=2023.3=pyhd8ed1ab_0- qualimap=2.2.2d=hdfd78af_2- r-abind=1.4_5=r41hc72bb7e_1004- r-argparse=2.1.6=r41hc72bb7e_1- r-askpass=1.1=r41h06615bd_3- r-assertthat=0.2.1=r41hc72bb7e_3- r-backports=1.4.1=r41h06615bd_1- r-base=4.1.3=hb87df5d_4- r-base64enc=0.1_3=r41h06615bd_1005- r-bh=1.81.0_1=r41hc72bb7e_0- r-bit=4.0.5=r41h06615bd_0- r-bit64=4.0.5=r41h06615bd_1- r-bitops=1.0_7=r41h06615bd_1- r-blob=1.2.4=r41hc72bb7e_0- r-broom=1.0.4=r41hc72bb7e_0- r-bslib=0.4.2=r41hc72bb7e_0- r-cachem=1.0.7=r41h133d619_0- r-callr=3.7.3=r41hc72bb7e_0- r-catools=1.18.2=r41h7525677_1- r-cellranger=1.1.0=r41hc72bb7e_1005- r-cli=3.6.1=r41h38f115c_0- r-clipr=0.8.0=r41hc72bb7e_1- r-cluster=2.1.4=r41h8da6f51_0- r-codetools=0.2_19=r41hc72bb7e_0- r-colorspace=2.1_0=r41h133d619_0- r-commonmark=1.9.0=r41h133d619_0- r-cowplot=1.1.1=r41hc72bb7e_1- r-cpp11=0.4.3=r41hc72bb7e_0- r-crayon=1.5.2=r41hc72bb7e_1- r-crosstalk=1.2.0=r41hc72bb7e_1- r-curl=4.3.3=r41h06615bd_1- r-data.table=1.14.8=r41h133d619_0- r-dbi=1.1.3=r41hc72bb7e_1- r-dbplyr=2.3.2=r41hc72bb7e_0- r-deldir=1.0_6=r41h8da6f51_1- r-digest=0.6.31=r41h38f115c_0- r-dplyr=1.1.1=r41h38f115c_0- r-dqrng=0.3.0=r41h7525677_1- r-dtplyr=1.3.1=r41hc72bb7e_0- r-ellipsis=0.3.2=r41h06615bd_1- r-evaluate=0.20=r41hc72bb7e_0- r-fansi=1.0.4=r41h133d619_0- r-farver=2.1.1=r41h7525677_1- r-fastmap=1.1.1=r41h38f115c_0- r-findpython=1.0.8=r41hc72bb7e_0- r-fitdistrplus=1.1_8=r41hc72bb7e_1- r-fnn=1.1.3.2=r41h38f115c_0- r-fontawesome=0.5.0=r41hc72bb7e_0- r-forcats=1.0.0=r41hc72bb7e_0- r-formatr=1.14=r41hc72bb7e_0- r-fs=1.6.1=r41h38f115c_0- r-futile.logger=1.4.3=r41hc72bb7e_1004- r-futile.options=1.0.1=r41hc72bb7e_1003- r-future=1.32.0=r41hc72bb7e_0- r-future.apply=1.10.0=r41hc72bb7e_0- r-gargle=1.3.0=r41h785f33e_0- r-generics=0.1.3=r41hc72bb7e_1- r-getopt=1.20.3=r41ha770c72_3- r-ggplot2=3.4.2=r41hc72bb7e_0- r-ggrepel=0.9.3=r41h38f115c_0- r-ggridges=0.5.4=r41hc72bb7e_1- r-globals=0.16.2=r41hc72bb7e_0- r-glue=1.6.2=r41h06615bd_1- r-goftest=1.2_3=r41h06615bd_1- r-googledrive=2.1.0=r41hc72bb7e_0- r-googlesheets4=1.1.0=r41h785f33e_0- r-gplots=3.1.3=r41hc72bb7e_1- r-gridextra=2.3=r41hc72bb7e_1004- r-gtable=0.3.3=r41hc72bb7e_0- r-gtools=3.9.4=r41h06615bd_0- r-haven=2.5.2=r41h38f115c_0- r-here=1.0.1=r41hc72bb7e_1- r-hexbin=1.28.3=r41hac0b197_0- r-highr=0.10=r41hc72bb7e_0- r-hms=1.1.3=r41hc72bb7e_0- r-htmltools=0.5.5=r41h38f115c_0- r-htmlwidgets=1.6.2=r41hc72bb7e_0- r-httpuv=1.6.9=r41h38f115c_0- r-httr=1.4.5=r41hc72bb7e_0- r-ica=1.0_3=r41hc72bb7e_1- r-ids=1.0.1=r41hc72bb7e_2- r-igraph=1.4.2=r41h65ed38e_0- r-irlba=2.3.5.1=r41h5f7b363_0- r-isoband=0.2.7=r41h38f115c_1- r-jquerylib=0.1.4=r41hc72bb7e_1- r-jsonlite=1.8.4=r41h133d619_0- r-kernsmooth=2.23_20=r41hd009a43_1- r-knitr=1.42=r41hc72bb7e_1- r-labeling=0.4.2=r41hc72bb7e_2- r-lambda.r=1.2.4=r41hc72bb7e_2- r-later=1.3.0=r41h7525677_1- r-lattice=0.21_8=r41h133d619_0- r-lazyeval=0.2.2=r41h06615bd_3- r-leiden=0.4.3=r41hc72bb7e_1- r-lifecycle=1.0.3=r41hc72bb7e_1- r-listenv=0.9.0=r41hc72bb7e_0- r-lmtest=0.9_40=r41h8da6f51_1- r-locfit=1.5_9.7=r41h133d619_0- r-lsei=1.3_0=r41hc3ea6d6_2- r-lubridate=1.9.2=r41h133d619_1- r-magrittr=2.0.3=r41h06615bd_1- r-mass=7.3_58.3=r41h133d619_0- r-matrix=1.5_4=r41he1ae0d6_0- r-matrixstats=0.63.0=r41h06615bd_0- r-memoise=2.0.1=r41hc72bb7e_1- r-mgcv=1.8_42=r41he1ae0d6_0- r-mime=0.12=r41h06615bd_1- r-miniui=0.1.1.1=r41hc72bb7e_1003- r-modelr=0.1.11=r41hc72bb7e_0- r-munsell=0.5.0=r41hc72bb7e_1005- r-nlme=3.1_162=r41hac0b197_0- r-npsurv=0.5_0=r41hc72bb7e_1- r-openssl=2.0.5=r41hb1dc35e_0- r-optparse=1.7.3=r41hc72bb7e_1- r-parallelly=1.35.0=r41hc72bb7e_0- r-patchwork=1.1.2=r41hc72bb7e_1- r-pbapply=1.7_0=r41hc72bb7e_0- r-pillar=1.9.0=r41hc72bb7e_0- r-pkgconfig=2.0.3=r41hc72bb7e_2- r-plotly=4.10.1=r41hc72bb7e_0- r-plyr=1.8.8=r41h7525677_0- r-png=0.1_8=r41h10cf519_0- r-polyclip=1.10_4=r41h7525677_0- r-prettyunits=1.1.1=r41hc72bb7e_2- r-processx=3.8.0=r41h06615bd_0- r-progress=1.2.2=r41hc72bb7e_3- r-progressr=0.13.0=r41hc72bb7e_0- r-promises=1.2.0.1=r41h7525677_1- r-ps=1.7.4=r41h133d619_0- r-purrr=1.0.1=r41h133d619_0- r-r.methodss3=1.8.2=r41hc72bb7e_1- r-r.oo=1.25.0=r41hc72bb7e_1- r-r.utils=2.12.2=r41hc72bb7e_0- r-r6=2.5.1=r41hc72bb7e_1- r-rann=2.6.1=r41h7525677_3- r-rappdirs=0.3.3=r41h06615bd_1- r-rcolorbrewer=1.1_3=r41h785f33e_1- r-rcpp=1.0.10=r41h38f115c_0- r-rcppannoy=0.0.20=r41h7525677_0- r-rcpparmadillo=0.12.2.0.0=r41h358215d_0- r-rcppeigen=0.3.3.9.3=r41h9f5de39_0- r-rcppparallel=5.1.6=r41h38f115c_0- r-rcppprogress=0.4.2=r41hc72bb7e_2- r-rcpptoml=0.1.7=r41h7525677_2- r-rcurl=1.98_1.12=r41h133d619_0- r-readr=2.1.4=r41h38f115c_0- r-readxl=1.4.2=r41h81ef4d7_0- r-rematch=1.0.1=r41hc72bb7e_1005- r-rematch2=2.1.2=r41hc72bb7e_2- r-reprex=2.0.2=r41hc72bb7e_1- r-reshape2=1.4.4=r41h7525677_2- r-restfulr=0.0.15=r41h73dbb54_0- r-reticulate=1.28=r41h38f115c_0- r-rgeos=0.6_2=r41h0d5128d_1- r-rjson=0.2.21=r41h7525677_2- r-rlang=1.1.0=r41h38f115c_0- r-rmarkdown=2.21=r41hc72bb7e_0- r-rocr=1.0_11=r41hc72bb7e_2- r-rpart=4.1.19=r41h06615bd_0- r-rprojroot=2.0.3=r41hc72bb7e_1- r-rspectra=0.16_1=r41h9f5de39_1- r-rstudioapi=0.14=r41hc72bb7e_1- r-rtsne=0.16=r41h37cf8d7_1- r-rvest=1.0.3=r41hc72bb7e_1- r-sass=0.4.5=r41h38f115c_0- r-scales=1.2.1=r41hc72bb7e_1- r-scattermore=0.8=r41h06615bd_1- r-sctransform=0.3.5=r41h9f5de39_1- r-selectr=0.4_2=r41hc72bb7e_2- r-seurat=4.1.1=r41h7525677_1- r-seuratobject=4.1.3=r41h38f115c_0- r-shiny=1.7.4=r41h785f33e_0- r-sitmo=2.0.2=r41h7525677_1- r-snow=0.4_4=r41hc72bb7e_1- r-sourcetools=0.1.7_1=r41h38f115c_0- r-sp=1.6_0=r41h133d619_0- r-spatstat.core=2.4_4=r41h7525677_1- r-spatstat.data=3.0_1=r41hc72bb7e_0- r-spatstat.geom=3.1_0=r41h133d619_0- r-spatstat.random=3.1_4=r41h38f115c_0- r-spatstat.sparse=3.0_1=r41h133d619_0- r-spatstat.utils=3.0_2=r41h133d619_0- r-stringi=1.7.12=r41h1ae9187_0- r-stringr=1.5.0=r41h785f33e_0- r-survival=3.5_5=r41h133d619_0- r-sys=3.4.1=r41h06615bd_0- r-tensor=1.5=r41hc72bb7e_1004- r-tibble=3.2.1=r41h133d619_1- r-tidyr=1.3.0=r41h38f115c_0- r-tidyselect=1.2.0=r41hc72bb7e_0- r-tidyverse=1.3.2=r41hc72bb7e_1- r-timechange=0.2.0=r41h38f115c_0- r-tinytex=0.44=r41hc72bb7e_0- r-tzdb=0.3.0=r41h7525677_1- r-utf8=1.2.3=r41h133d619_0- r-uuid=1.1_0=r41h06615bd_1- r-uwot=0.1.14=r41h7525677_1- r-vctrs=0.6.1=r41h38f115c_0- r-viridislite=0.4.1=r41hc72bb7e_1- r-vroom=1.6.1=r41h38f115c_0- r-withr=2.5.0=r41hc72bb7e_1- r-xfun=0.38=r41h38f115c_0- r-xml=3.99_0.14=r41hb43fdd4_0- r-xml2=1.3.3=r41h044e5c7_2- r-xtable=1.8_4=r41hc72bb7e_4- r-yaml=2.3.7=r41h133d619_0- r-zoo=1.8_11=r41h06615bd_1- readline=8.2=h8228510_1- rseqc=3.0.0=py_3- samtools=1.16.1=h00cdaf9_2- scipy=1.9.1=py39h8ba3f38_0- sed=4.8=he412f7d_0- setuptools=67.6.1=pyhd8ed1ab_0- six=1.16.0=pyh6c4a22f_0- sqlite=3.40.0=h4ff8645_0- star=2.7.10a=h9ee0642_0- subread=2.0.1=h7132678_2- sysroot_linux-64=2.12=he073ed8_15- tenacity=8.2.2=pyhd8ed1ab_0- tk=8.6.12=h27826a3_0- tktable=2.10=hb7b940f_3- tzdata=2023c=h71feb2d_0- varscan=2.4.4=hdfd78af_1- wheel=0.40.0=pyhd8ed1ab_0- xopen=1.7.0=py39hf3d152e_1- xorg-fixesproto=5.0=h7f98852_1002- xorg-inputproto=2.3.2=h7f98852_1002- xorg-kbproto=1.0.7=h7f98852_1002- xorg-libice=1.0.10=h7f98852_0- xorg-libsm=1.2.3=hd9c2040_1000- xorg-libx11=1.8.4=h0b41bf4_0- xorg-libxau=1.0.9=h7f98852_0- xorg-libxdmcp=1.1.3=h7f98852_0- xorg-libxext=1.3.4=h0b41bf4_2- xorg-libxfixes=5.0.3=h7f98852_1004- xorg-libxi=1.7.10=h7f98852_0- xorg-libxrender=0.9.10=h7f98852_1003- xorg-libxt=1.2.1=h7f98852_2- xorg-libxtst=1.2.3=h7f98852_1002- xorg-recordproto=1.14.2=h7f98852_1002- xorg-renderproto=0.11.1=h7f98852_1002- xorg-xextproto=7.3.0=h0b41bf4_1003- xorg-xproto=7.0.31=h7f98852_1007- xz=5.2.6=h166bdaf_0- zlib=1.2.13=h166bdaf_4- zstandard=0.19.0=py39h29414ee_1- zstd=1.5.2=h3eb15da_6- pip:- opencv-contrib-python==4.8.1.78- openslide-python==1.3.1- pillow==10.1.0- pycv2==0.0.1- seeksoultools==1.2.0
prefix: /data2/analysis/xunyin/seeksoultools
好啦,大家尝试一下自己打包conda镜像并分发给小伙伴们吧~