由于archlinux 并不在matlab 官方支持的系统之列,之前使用不完整的matlab(无法使用实时脚本,帮助页面显示不正常),一直觉得理所当然,居然是有解决办法的。

linux 上安装 matlab

不同于windows,在linux安装iso封装的软件可能需要使用命令(mount)挂载先,然后运行安装程序,后面就是熟悉的点点点了。大体步骤如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
mkdir /tmp/matlab

sudo mount  -o loop /mnt/data/MATLAB_R2018b_Linux/R2018b_glnxa64_dvd1.iso  /tmp/matlab

# 新开一个 terminal
# 使用普通账户运行!
sudo /tmp/matlab/install  # 如果安装到自己的家目录,不需要使用 sudo。

# 后面会弹出一个安装界面,

# 若全部安装,50% 时提示弹出 dvd1 插入 dvd2

# 使用 df 查看挂在的所有设备
sudo umount -f /dev/loop0  # 如果提示设备忙,可以稍微等几分钟,再试。

sudo mount  -o loop /mnt/data/MATLAB_R2018b_Linux/R2018b_glnxa64_dvd2.iso  /tmp/matlab

# 点击安装界面的继续

# 最后  umount ,以及 rmdir /tmp/matlab

和windows的安装一样(挂载相同的盘符),dvd2 的挂载点(路径)应与dvd1 一致。理论上相当于将两dvd解压到一个文件夹(挂载相当于允许你分两次解压)。

matlab 支持的系统

如下图: install-matlab-on-archlinux-1.jpg

https://ww2.mathworks.cn/support/sysreq.html

并没有 archlinux。archlinux wiki上如是说: install-matlab-on-archlinux-2.jpg

https://wiki.archlinux.org/index.php/MATLAB

所以但我安装后遇到 matlab 无法使用试试脚本以及帮助文档不正常时,以为这就是不支持的代价。

我甚至已经使用systemd-nspawn 构建 ubuntu容器运行 matlab,但是容器中的matlab仍然有如上问题。 同样的matlab 版本,我在 ubuntu 系的linux上安装所有功能均表现正常。这甚至逼迫我更换系统发行版。

无意中发现通过下面的办法是可以解决archlinux 中matlab 部分功能受限的问题。

解决办法

  1. 通过 dvd 安装好matlab 2018b后,
  2. 使用yaourt matlab-r2017b (这个时候最高只有2017b)安装依赖。 推荐使用 yay,yaourt已经没有继续维护了,现在(2019.7)已经有 matlab-r2018b了。
  3. 构建肯定是会失败的,但是依赖会被安装。

也可以自己安装 如下图片中所示的依赖,使用 yaourt 比较省事。

install-matlab-on-archlinux-3.jpg

下面是matlab安装依赖前的报错情况。

install-matlab-on-archlinux-4.jpg

实时脚本、帮助文档正常图。

install-matlab-on-archlinux-5.jpg

最后

通过最近频繁更换linux 发行版,得出的结论就是,home 和系统分开,大软件安装到 home下user 外面,比如 matlab comsol crossover pycharm anaconda 等。

.desktop 文件使用绝对路径,添加到 ~/.local/share/applications/ 里面。 下面是我的 matlab.desktop。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
[Desktop Entry] 
Categories=Application;Development;
Comment=Scientific computing environment
Encoding=UTF-8
Exec=/home/program/MATLAB/R2018b/bin/matlab -desktop
Icon=/home/program/MATLAB/R2018b/toolbox/shared/dastudio/resources/MatlabIcon.png
Name=MATLAB R2018b
StartupNotify=true 
Terminal=false
Type=Application

如果 命令行窗口 出现方块,只需要修改使用的字体以显示中文字符。