FSL6.0.3/FSL6.0.4完整安装与FSLeyes、imcp、dcm2niix等Not Found修复(centos和ubuntu)
这已经是笔者第三篇关于FSL的文章了,足以见其有多么难缠。用官网给的方法,不仅下载慢,而且失败的概率大于99%。所以笔者采用了这篇博客给出的办法,但是这个办法有一个bug,那就是安装完成之后,fsleyes、imcp、immv等缺失,即fsleyes not found,经过反复试验,最终笔者可以非常顺利的修复fsleyes等缺失的问题啦,现记录在此供大家参考。
操作系统:ubuntu20.04/centos8/centos7
使用工具:Anaconda3-2020.11-Linux
待装软件:fsl6.0.3/fsl6.0.4(链接:https://pan.baidu.com/s/17jDl-JeUY5IFviu0eKVsfw 提取码:hcbr )
FSL简易安装:FSL5.0,安装容易,但版本老旧
docker下完整安装FSL:FSL 6.0.3,部署容易,便于分享环境,但配置GUI麻烦
Linux上单独安装FSL:FSL6.0.3/FSL6.0.4,离线安装,修复FSLeyes not found,无法分享环境
VMware安装FSL等:FSL6.0.3/FSL6.0.4,离线安装,修复FSLeyes not found,并放在虚拟机上,便于分享环境
copyright ©意疏:https://blog.csdn.net/sinat_35907936/article/details/112969857
Anaconda与虚拟环境(所有操作均在root下)
先切换到root用户,避免后面反复输密码,不过操作要小心,不要误删了东西。
su
-
获取最新版Anaconda3
wget -c https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh
bash $downloaddir/Anaconda3-2020.11-Linux-x86_64.sh
# $downloaddir 为你的下载路径
长按enter
,直到出现 [yes|no],输入yes
自定义安装路径,我喜欢放在/opt
下:[/root/anaconda3] >>> /opt/anaconda3
Do you wish the installer to initialize Anaconda3? 输入yes
source
一下使得 initialize生效
source ~/.bashrc
查看.bashrc
文件,将如下所示的conda配置部分复制到/etc/bash.bashrc
末尾 (ubuntu)或者 /etc/bashrc
末尾 (centos)。重启一下终端,那样所有用户就可以使用anaconda了。
vim ~/.bashrc
conda deactivate
conda config --set auto_activate_base false
从FSL6.0.2之后,FSLeyes就独立于FSL了。如果你有观察过FSL文件中的FSLeyes,你会发现它装在一个miniconda
创建的虚拟环境fslpython
里。它要用到wxpython
,numpy
等我们非常熟悉的包。由于笔者用anaconda比较多,所以就用的它。
root
用户下创建虚拟环境,便于所有用户都可以用,其存于$AnacondaPATH/envs/
目录下。
conda create -n fslpython python=3.8
copyright ©意疏:https://blog.csdn.net/sinat_35907936/article/details/112969857
FSL与FSLeyes(所有操作均在root下)
下载fsl6.0.3或者fsl6.0.4,或者是前者大小的两倍。
解压下载文件到你想要的安装目录,笔者依旧放在/opt
下.
cp $downloaddir/fsl-6.0.3-centos6_64.tar.gz /opt
cd /opt
tar -xzvf /opt/fsl-6.0.3-centos6_64.tar.gz
# $downloaddir 为你的下载路径
添加环境变量到/etc/bash.bashrc
末尾 (ubuntu)或者 /etc/bashrc
末尾 (centos),便于所有用户都可以使用。
环境变量:
export FSLDIR=/opt/fsl
export PATH=$PATH:$FSLDIR/bin
source $FSLDIR/etc/fslconf/fsl.sh
重启终端,然后再键入fsl就可以使用fsl了,但是你会发现点击FSLeyes的时候,会出现/fsl/bin/fsleyes: not found的错,因为用上述方法下载的包,不包含fsleyes及其依赖的环境。 现在我们手动安装并修复它。
激活上面创建的虚拟环境
conda activate fslpython
通过conda-forge安装FSLeyes
conda install -c conda-forge fsleyes
安装完成之后,进入fsleyes所在目录,我的在 opt/anaconda3/envs/fslpython/bin/下,然后./fsleyes运行fsleyes,如果弹出如下界面,说明FSLeyes安装成功了。但GUI上还是不能用。
修复FSL中的FSLeyes等(所有操作均在root下)
删除fsl的bin文件的fsleyes链接
rm /opt/fsl/bin/fsleyes
建立新的软连接
ln -s /opt/anaconda3/envs/fslpython/bin/fsleyes /opt/fsl/bin/fsleyes
查看软连接
ll /opt/fsl/bin/fsleyes
# lrwxrwxrwx 1 root root 41 1月 21 00:44 /opt/fsl/bin/fsleyes -> /opt/anaconda3/envs/fslpython/bin/fsleyes*
再一次在终端键入fsl,然后再点击FSLeyes图标,FSLeyes就奇迹般的出现啦。
但上述操作之后,还有些只在fslpython虚拟环境中的FSL命令可能也找不到,如imcp
,immv
,dcm2niix
等,此时可以直接添加如下环境变量到/etc/bash.bashrc
末尾 (ubuntu)或者 /etc/bashrc
末尾 (centos),这样虚拟环境fslpython/bin
下所有的命令都可以直接使用,而无需逐一建立软连接。(这种方法废弃了,直接改用下面批量建立软连接的方式)
export PATH=$PATH:/opt/anaconda3/envs/fslpython/bin
注意:虚拟环境里面也有python,如果系统中已经安装过python,要注意区分使用。
填坑——批量建立软连接
用把fslpython的bin文件直接添加环境变量的粗暴方式,可以解决imcp
,immv
,dcm2niix
等命令的直接使用问题,但是在用GUI的时候就会遇到错误,比如/opt/fsl/bin/imcp not found、/opt/fsl/bin/immv not found等,这是因为GUI默认使用这些命令时,前面是加了fsl的bin路径的。解决方法就是用下面的脚本,粗暴的把fslpython/bin下的所有命令都软连接到/fsl/bin下。
touch softlink.sh
#! /bin/bash
for link in $(ls $1)
do
echo $link
ln -s $1/$link $2/$link
done
bash softlink.sh /opt/anaconda3/envs/fslpython/bin /opt/fsl/bin
蓝色的就是软连接
可以去掉与python相关的软连接,避免后面与base虚拟环境里的python冲突。如
rm *python*
rm *jupyter*
rm pip*
copyright ©意疏:https://blog.csdn.net/sinat_35907936/article/details/112969857
参考
https://blog.csdn.net/qq_41763734/article/details/104721471
https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/FSLeyes
更多推荐
所有评论(0)