这就是我让它工作的方式,以及我可以从关于我的 Linux 机器如何工作的所有麻烦中学到的东西。我希望我没有忘记/遗漏/误会任何事情。
1. MATLAB
1.1。安装 MATLAB
将它安装在它的默认位置(您将需要 root 访问权限),不要像我想的那样固执。为什么:
1.1.1。一体化
您很可能在某个时候想要安装一些使用 MATLAB 框架的其他软件,而在现实世界中,即使您知道如何告诉它在哪里寻找,软件也并不总是能找到其他软件。
1.1.2。让您的生活更轻松
尽管在一个有大量可用空间并且可以在多台机器上使用的地方安装一个大软件似乎是个好主意(特别是在 Linux 中,它没有被称为 Registry 的可憎之处,并且有符号链接),这可能只是一个好主意——除了项目1.1.1——如果那个地方是一个带有 Linux 文件系统的分区,因为在某些时候,一些可执行文件/脚本将需要执行权限,并通过执行安装整个分区对其所有文件的权限相当不安全。因此,不要将 MATLAB 放在外部 HD 的 NTFS 分区中;也许在外部 HD 中为特定于 Linux 的东西创建一个 Linux 分区可以解决这个问题,但这有多少麻烦?
1.2. 设置 MATLAB,以便人们和其他软件可以启动它
尽管我在某处看到 MATLAB 安装程序最终显示了一个选项,以便为方便起见在系统路径中创建符号链接,但在我的情况下并没有。但这没关系,因为无论如何我都必须用/usr/local/bin/matlab
以下 shell 脚本(相同的路径,相同的文件名)替换符号链接:
#!/bin/sh
export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
exec /usr/local/MATLAB/R2013a/bin/matlab $*
OBS:这LD_LIBRARY_PATH
对于 MATLAB 以后查找 SBML 绑定并能够使用它们是必需的。此外,如果您安装了一些第三方求解器,例如 TOMLAB,您很可能需要在这个小启动器脚本中添加更多路径。OBS 2:在我的情况下,安装脚本没有自动创建任何启动器或快捷方式,但我发现了一个无图标和无扩展名的Matlab 8.01
文件和一个 matlab 图标作为 png 文件,第一个.desktop
文件是我的模板文件可以根据我的需要进行编辑并放入/usr/share/applications
以便 Unity Dash 可以找到它。这个Matlab.desktop
文件的内容是:
[Desktop Entry]
Type=Application
Icon=/usr/local/MATLAB/R2013a/Matlab.png
Name=Matlab 8.01
Comment="Start Matlab 8.01"
Exec=/usr/local/MATLAB/R2013a/bin/matlab -desktop
Categories=Development;
Name=Matlab 8.01
GenericName=Matlab 8.01
Comment="Start Matlab 8.01"
2.libSBML
2.1。安装 libSBML
libSBML 由特定于 Ubuntu(和 CentOS)的 deb 包提供,还提供了适用于多种 Windows 和 MacOSX 的版本(它们的主页:http ://sbml.org/Software/libSBML )。猜猜哪个平台的二进制文件没有使用 MATLAB 支持编译?当然,Linux。这意味着您将需要从源代码编译(因此 deb 包对您毫无用处)。编译:
2.1.1。安装依赖项
依赖项libxml2-dev
(来自软件管理器或终端):
sudo apt-get install libxml2-dev
2.1.2. 为自己节省一些未来的时间
通常,一个人会做configure
,make
然后make install
。但不建议这样做,原因与安装任何不包含在一个非常小的包中的东西相同:您将失去对哪些文件去哪里的控制,并且需要保留源代码以便在需要时能够make uninstall
运行稍后卸载它。因此,请安装checkinstall
并使用它来替换 step make install
,因为checkinstall
它会为您的系统创建一个包,以后可以像任何常规打包软件(从软件管理器或终端)一样卸载或重新安装:
sudo apt-get install checkinstall
2.1.3。配置编译过程
获取 LibSBML 源代码并将其解压缩到某个文件夹。从终端导航到该文件夹并配置编译:
./configure --with-matlab
OBS:使用该with-matlab
标志,配置脚本将失败,它找不到文件名为matlab
. 如果失败,则输出matlab
找不到文件,但它执行的测试实际上既是为了文件的存在,也是为了它是否可执行。因此,如果文件在 NTFS 分区中,即使找到该文件,configure 也会失败,但会告诉您找不到该文件。您可以强制它/path/to/matlab/root
通过传递来查找可执行文件(它将bin
在该路径中查找文件夹,并在该bin
文件夹中查找可执行文件):
./configure --with-matlab=/path/to/matlab/root
OBS:这会将 libSBML 安装在默认位置:/usr/local/lib
. 同样,让它安装在其默认位置是一个好主意,但如果您需要更改它,您可以传递带有标志的路径:--prefix=/your/installation/path
OBS 2:您可能会问为什么 libSBML 需要找到并执行 matlab 以支持它进行编译:它需要稍后启动 MATLAB 来构建 MEX 文件(编译的 MATLAB 代码),所以我推测您将无法如果您的 MATLAB 没有生成 MEX 文件的编译器,则毕竟要安装 libSBML。
2.1.4。构建和安装 libSBML
make
checkinstall
非常重要的 OBS:
I) checkinstall
要求确认它即将创建的包的元数据。在我的情况下,该version
字段的字符串默认为“Source”(不带引号),这导致checkinstall
失败,因为dpkg
(实际构建 deb 文件的系统工具)失败,抱怨版本号必须以,嗯,a数字。因此,请节省一些时间并确保version
字段中的字符串以数字开头(即“5.10”,显然没有引号)
II) checkinstall
询问您是否要从该make install
命令将放在您的主文件夹中的未来包文件中排除,并说排除它们是个好主意。LibSBML 有一个test.xml
文件,以后需要在$HOME
文件夹中,否则它不会让您与 MATLAB 集成。即使它告诉您 atest.xml
丢失了,它也不会告诉您该文件应该在哪里,或者该文件是否是库附带的文件。我只是注意到它,因为checkinstall
之前找到了一个$HOME/test.xml
参考(当然,我从包中排除了)并且我发现这很奇怪。所以,省点时间,$HOME/test.xml
从生成的包中排除checkinstall
,然后test.xml
在source-code文件夹里面搜索,复制到$HOME
一旦 libSBML 完成由checkinstall
.
2.2. 将 libSBML 集成到 MATLAB
启动 MATLAB,导航到步骤2.1.5中安装 SBML MATLAB 绑定的位置(在我的情况下:)/usr/local/lib
并运行installSBML.m
应该存在的文件。
2.2.1。共享库问题
就我而言,由于一个未解决的老问题,我遇到了一个错误:libstdc++.so.6
没有对GLIBCXX_3.4.15
. 事实证明,MATLAB 正在尝试使用一个libstdc++.so.6.0.13
(libstdc++.so.6
是指向这个文件的符号链接) 附带它/usr/local/MATLAB/R2013a/sys/os/glnxa64
,它确实没有那个引用(可以通过发出来验证:
strings /usr/local/MATLAB/R2013a/sys/os/glnxa64/libstdc++.so.6.0.13 | grep GLIBC
)。我的系统有一个包含该引用的libstdc++.so.6.0.19
位置/usr/lib/x86_64-linux-gnu
,因此我通过正确设置(请参阅步骤1.2)强制 MATLAB 使用6.0.19
一个,并将MATLAB 附带的重命名为其他名称,这样它就找不到它并继续寻找直到找到我的系统。我的一个运行 Linux Mint 的朋友不需要重命名任何东西:对他来说,设置就足够了。LD_LIBRARY_PATH
libstdc++.so.6
LD_LIBRARY_PATH
2.2.2。其他问题
installSBML.m
如果找不到$HOME/test.xml
步骤2.1.5中提到的文件,则无论该库是否实际工作,都会失败。它假定如果它无法使用它假定位于的文件来测试自己$HOME
,那么用户无论如何都不应该选择安装它。
3. COBRA / SBML 工具箱
3.1。设置眼镜蛇
在 MATLAB 中,导航到<YOUR_COBRA_ROOT_FOLDER_HERE>/external/toolboxes/SBMLToolbox-4.1.0/toolbox
该文件并在那里运行该文件install.m
。您应该已完成所有设置,以便它找到您在步骤2.2中设置的 MATLAB 绑定。
3.2. MATLAB 设置路径问题
我必须以根用户身份手动编辑文件/usr/local/MATLAB/R2013a/toolbox/local/pathdef.m
以包含文件夹/usr/local/lib
(libSBML 及其 MATLAB 绑定所在的位置)以使该设置持久化。每次我重新启动 MATLAB 时,它的 setpath 都会恢复到默认值,无论我在通过 MATLAB GUI 设置其 setpath 时是否以 root 身份启动 MATLAB。
3.3. 测试
现在,您希望已将所有点连接起来。试试看:在 MATLAB 中,导航到<YOUR_COBRA_ROOT_FOLDER_HERE>
并发出:
initCobraToolbox
testAll
如果您没有安装和配置任何第三方求解器,它应该通过19项测试中的14项,包括 SBML 测试 ( )。现在您可以将 SBML 文件加载到 MATLAB 中并使用它们。testSBML