无图形界面环境下,静默安装、激活MATLAB。R2016b的iso安装包分两份,静默安装时需要合并为一份,否则要处理换碟问题。
注意:本文的所有命令使用root权限执行。
Ubuntu 16.04
下载安装包(放置在”~/Matlab/”目录下):
1. R2016b_glnxa64_dvd1.iso
2. R2016b_glnxa64_dvd2.iso
准备激活码及激活证书。
本文使用7zip作为解压工具,分别解压两个dvd,得到R2016b_installer
和R2016b_dvd2
两个文件夹。
# 安装7-Zip准备解压
apt-get install p7zip-full -y
# 定义安装路径,准备解压两个DVD
MATLAB_HOME=/usr/local/MATLAB
# dvd1
mkdir -p "${MATLAB_HOME}/R2016b_installer"
7z x ~/Matlab/R2016b_glnxa64_dvd1.iso -r -o"${MATLAB_HOME}/R2016b_installer"
# dvd2
mkdir -p "${MATLAB_HOME}/R2016b_dvd2"
7z x ~/Matlab/R2016b_glnxa64_dvd2.iso -r -o"${MATLAB_HOME}/R2016b_dvd2"
然后将dvd2中的archives
文件夹合并到dvd1的archives
文件夹中,再将隐藏文件.dvd2
复制到dvd1的文件夹中,完成文件合并。
# 合并
rsync -a --progress "${MATLAB_HOME}/R2016b_dvd2/archives/" "${MATLAB_HOME}/R2016b_installer/archives"
mv "${MATLAB_HOME}/R2016b_dvd2/.dvd2" "${MATLAB_HOME}/R2016b_installer/"
# 清理一下dvd2
rm "${MATLAB_HOME}/R2016b_dvd2" -rf
创建${MATLAB_HOME}/etc
文件夹,将激活文件解压到里面。
### 准备激活文件 ###
apt-get install unrar -y
mkdir -p "${MATLAB_HOME}/etc"
unrar x ~/Matlab/Matlab-2016b-Linux64-Crack.rar "${MATLAB_HOME}/etc"
创建安装配置installer_input.txt
,静默安装时使用-inputFile
参数将其传给安装程序。解压出来的安装文件中有installer_input.txt
文件的模板,具体参数意义可以参照该模板的说明。这里要注意的是,很多教程里配置文件中有#
开头的“注释”,这种不合法的语句会导致静默安装失败,启动图形界面进行安装。
在下面的安装配置中,重点关注:
1. destinationFolder
(MATLAB安装路径)
2. fileInstallationKey
(激活码,和激活证书文件配对,注意别用到Matlab Production Server的)
3. activationPropertiesFile
(激活脚本,待会创建)
4. licensePath
(激活证书文件路径,和激活码配对)
### 写入安装配置 ###
MATLAB_INSTALLER_INPUT="${MATLAB_HOME}/etc/installer_input.txt"
touch "${MATLAB_INSTALLER_INPUT}"
echo "destinationFolder=${MATLAB_HOME}/R2016b" >> "${MATLAB_INSTALLER_INPUT}"
echo "fileInstallationKey=09806-07443-53955-64350-21751-41297" >> "${MATLAB_INSTALLER_INPUT}"
echo "agreeToLicense=yes" >> "${MATLAB_INSTALLER_INPUT}"
echo "outputFile=/tmp/mathwork_install.log" >> "${MATLAB_INSTALLER_INPUT}"
echo "mode=silent" >> "${MATLAB_INSTALLER_INPUT}"
echo "activationPropertiesFile=${MATLAB_HOME}/etc/activate.ini" >> "${MATLAB_INSTALLER_INPUT}"
echo "licensePath=${MATLAB_HOME}/etc/license_standalone.lic" >> "${MATLAB_INSTALLER_INPUT}"
创建激活文件activate.ini
,安装结束后,使用激活程序的-propertiesFile
参数将其传入。其中licenseFile
为激活证书文件路径。
### 写入激活配置 ###
MATLAB_INSTALLER_ACTIVATE="${MATLAB_HOME}/etc/activate.ini"
touch "${MATLAB_INSTALLER_ACTIVATE}"
echo "isSilent=true" >> "${MATLAB_INSTALLER_ACTIVATE}"
echo "activateCommand=activateOffline" >> "${MATLAB_INSTALLER_ACTIVATE}"
echo "licenseFile=${MATLAB_HOME}/etc/license_standalone.lic" >> "${MATLAB_INSTALLER_ACTIVATE}"
修改文件权限,保证安装程序顺利运行。
mkdir -p "${MATLAB_HOME}/R2016b"
chmod +x "${MATLAB_HOME}/R2016b_installer/install"
chmod +x "${MATLAB_HOME}/R2016b_installer/bin/glnxa64/install_unix"
chmod +x "${MATLAB_HOME}/R2016b_installer/sys/java/jre/glnxa64/jre/bin/java"
chmod +w "${MATLAB_INSTALLER_INPUT}"
chmod +w "${MATLAB_INSTALLER_ACTIVATE}"
启动安装程序。
# 安装!
${MATLAB_HOME}/R2016b_installer/install -inputFile "${MATLAB_INSTALLER_INPUT}"
拷贝新文件以激活。注意激活脚本的-isSilent
参数,保证该脚本不会执行图形化激活程序。
# 备份后拷贝新文件
mv "${MATLAB_HOME}/R2016b/bin/glnxa64/libmwservices.so" "${MATLAB_HOME}/R2016b/bin/glnxa64/libmwservices.so.bak"
mv "${MATLAB_HOME}/R2016b/bin/glnxa64/libinstutil.so" "${MATLAB_HOME}/R2016b/bin/glnxa64/libinstutil.so.bak"
mv "${MATLAB_HOME}/R2016b/bin/glnxa64/libmwlmgrimpl.so" "${MATLAB_HOME}/R2016b/bin/glnxa64/libmwlmgrimpl.so.bak"
cp "${MATLAB_HOME}/etc/R2016b/bin/glnxa64/libmwservices.so" "${MATLAB_HOME}/R2016b/bin/glnxa64/libmwservices.so"
cp "${MATLAB_HOME}/etc/R2016b/bin/glnxa64/libinstutil.so" "${MATLAB_HOME}/R2016b/bin/glnxa64/libinstutil.so"
cp "${MATLAB_HOME}/etc/R2016b/bin/glnxa64/libmwlmgrimpl.so" "${MATLAB_HOME}/R2016b/bin/glnxa64/libmwlmgrimpl.so"
# 激活!
${MATLAB_HOME}/R2016b/bin/activate_matlab.sh -isSilent -propertiesFile "${MATLAB_INSTALLER_ACTIVATE}"
写入PATH变量。
### 写入PATH ###
echo "export PATH=${MATLAB_HOME}/R2016b/bin:$PATH" >> /etc/profile
source /etc/profile
echo "收工!"
exit 1