有一个项目需要用到matlab在linux上批量生成文件。
由于我用的是工作站,无法图形界面安装(linux远程开图像界面有多麻烦dddd)网上搜寻了很多linux安装matlab的教程,大多是先下载matlab 的linux版本的安装包,然后经过一系列的解压,挂载,安装,破解等操作。。可能中间还要经历无数的依赖缺失和关闭图形界面的配置操作。
于是我找到一篇文章,作者很用心,写了自动化安装脚本 https://zhuanlan.zhihu.com/p/394298249 ,底下评论都说有效,而且是点击即装,我那个高兴呀,二话不说就去百度网盘下载安装包和脚本,将近20G呀。。为此又买了个百度网盘会员(为什么国内没有个好一点网盘存储啊啊啊,百度网盘限速真的太伤了,其实google drive好很多 而且可以wget 下载)。总之,我吭哧吭哧下完,再吭哧吭哧上传到服务器,然后开开心心运行安装脚本,结果第一步就懵逼,MD5 check失败!
xiaojin@proj150:~/Matlab_R2020a_Linux$ ./installMatlab.sh
Checking ...
Matlab_R2020a_Lin64.tar.gz: FAILED
md5sum: WARNING: 1 computed checksum did NOT match
xiaojin@proj150:~/Matlab_R2020a_Linux$ md5sum Matlab_R2020a_Lin64.tar.gz
d5471f224a3fdaee498a7fcbcd19e5c1 Matlab_R2020a_Lin64.tar.gz
xiaojin@proj150:~/Matlab_R2020a_Linux$ cat CODE.md5
0c299e5b3a1cf3843b42e0c8e9b1375e Matlab_R2020a_Lin64.tar.gz
17G的大文件,没下载完,但百度网盘又告诉你你确实下载完了,中途一个错误都没报。重新下载吧,结果md5值又变了,你上哪说理去= =
$ md5 Matlab_R2020a_Lin64.tar.gz
MD5 (Matlab_R2020a_Lin64.tar.gz) = 8b4115556d66ee3f9573d26e6f65aa55
下载+传输已经浪费一天时间了,果断放弃寻找他法。
我是喜欢用docker的,干净,方便。
抱着试一试的心态搜 Matlab的docker版本。居然真的有,而且是官方版本!
安装了一下几乎没有费什么力气就测试成功了:
docker run -it --rm --shm-size=512M mathworks/matlab:r2022b
Running matlab
MATLAB is selecting SOFTWARE OPENGL rendering.
Please enter your MathWorks Account email address and press Enter:
<your user name>@email.xxx
Please enter your MathWorks Account password and press Enter:
<enter your password>
Starting MATLAB with license: 40821746 - MATLAB (Individual)
< M A T L A B (R) >
Copyright 1984-2022 The MathWorks, Inc.
R2022b Update 3 (9.13.0.2126072) 64-bit (glnxa64)
November 17, 2022
To get started, type doc.
For product information, visit www.mathworks.com.
>> a=[1,2,3;4,5,6;7,8,9];
>> b=[2;3;3];
>> a*b
ans =
17
41
65
>> exit
>
总结一下步骤:
需要注意的是如果在生产环境 sudo systemctl daemon-reload
谨慎使用
docker pull mathworks/matlab
$ docker run -it --rm --shm-size=512M mathworks/matlab:r2022b
注意!需要你输入有license的账户和密码哦。如果是在学校,一般会有教育账户的。我这里是直接输入了我的账号。
MLM_LICENSE_FILE
即为你的license file。rand为matlab命令,如果license file正确,下面的语句会运行然后容器自动退出。$ docker run --rm -v /path/to/local/license/file:/licenses/license.lic -e MLM_LICENSE_FILE=/licenses/license.lic mathworks/matlab:r2022b -batch rand
$ docker run -it --rm -p 8888:8888 --shm-size=512M mathworks/matlab:r2022b -browser
$ docker run -it --rm --shm-size=512M mathworks/matlab:r2022b -shell