请问大家一般如何配置软件环境?具体地,有些软件更新很快,如何在一台电脑上能够保持不同的软件版本?比如有些功能只有在新版本上才有,但是为了维护以前的一些项目,又需要保留旧的版本。我知道的解决方案是用虚拟机,相当于有很多台“电脑”,缺点就是虚拟机性能不如直接在电脑上跑数据。请问你的解决方案是怎样的,最好能解释一下原因?谢谢!
我一般在linux上进行处理,linux上这一点还是比较方便的。
举个例子来说,我想既用freesurfer 7.1.1,又用freesurfer 6.0.1,我会同时编译(或者是直接解压缩包,记不太清楚了)两个版本的freesurfer到机器上。
然后在系统环境(centos是在/etx/profile)设置里,按照当时的需要只写进去其中一个版本的freesurer软件的路径。这样想用别的版本只需要在环境设置里改相应的路径就可以了。
嗯嗯,就是通过设置路径变量的方式来切换使用的软件版本。谢谢!
一波data处理完后我习惯会把生产环境打包成docker镜像存在实验室硬盘里,方便后面有人(或者自己)要动这批数据,却只修改部分东西
两年过去了,我目前比较倾向而且在实践的做法是用虚拟机,在虚拟机里可以再同时用其他方法来控制软件版本。之所以用虚拟机是因为我发现,在Linux里像我这样小白水平的用户,很容易把系统搞乱。使用虚拟机就可以保证宿主系统(host OS)是稳定的,我自己随便在虚拟机折腾。如果有一天换了一台电脑,可以直接把虚拟机拷贝到新电脑上就行了,无需再次搭建软件环境。这种方式的缺点就是有资源损耗,不过我更在意可靠性。
又是一年多过去了,情况发生了一些改变,主要是因为有些软件需要GPU加速,比如一些基于深度学习的分析工具,而像VirtualBox或者VMware workstation这样的虚拟机软件无法调用GPU,会使得分析效率大大降低或者不能充分利用硬件资源。因此,我现在的分析环境就是直接在主机上(相对于在虚拟机而言),在学习一些新软件的时候,就在虚拟机环境下进行测试,等充分熟悉了再安装到主机上。能用docker就用docker。尽可能保证工作环境的稳定可靠。考虑到操作系统本身也有更新的问题,比如我现在用的是Ubuntu 22.04 LTS,官方支持时间是5年,等5年过后就升级一次系统,并更新整个分析环境。我也意识到虽然要保持分析环境的稳定性或者可重复性,但是这种稳定性只能是短期的稳定性(比如5年),从操作系统到分析工具都是在不断更新的,一劳永逸估计是很难实现的。