Highs是一款开源求解器,因此可以在任意平台上通过源码直接进行编译部署。
最近使用到了银河麒麟V10桌面版操作系统,并需要将Highs离线部署到这个系统上去,写下此篇博客记录并总结经验。
银河麒麟系统
银河麒麟V10桌面版系统Unbutu系统,基于Dibian的linux系统,是国产化系统。它还有服务器版本Centos系统,基于的是redhat的linux系统。Unbutu系统的优点是对用户更友好,Centos系统的优点是安全性更好。
由于桌面版和服务器版的操作命令不同,希望大家在下载的时候看清楚版本。另外,本人是linux小白。
1.离线包准备
使用apt命令在线安装实属非常方便,但有时则需要我们掌握离线安装的能力。那么首先我们就需要在一台可联网的机器上使用apt download 命令下载所需的离线包。
$ apt download some package
我们需要以下几个安装包来编译Highs。
1.1 Cmake离线包&依赖项
首先下载cmake离线包,在cmake&依赖项文件夹中打开终端,并输入:
$ apt download cmake
此时就会发现cmake的deb安装包已经被下载下来了,其中.deb文件只能用于Ubuntu系统,并使用dpkg进行安装和包管理。
运行dpkg命令安装cmake:
$ sudo dpkg -i *
然后我们会发现报错,这是因为cmake还有其他依赖项,cmake-data、libjsoncpp1和librhash0.
那么我们将这三个也一起下载了,输入命令:
$ apt download cmake-data libjsoncpp1 librhash0
然后在此使用dpkg命令安装所有包,安装完成。
1.2 g++离线包&依赖项
对于GCC离线包和依赖项一共由43个,一个一个下载过于麻烦,因此我们可以下载apt-rdepends来获取依赖项的递归关系,如果没有apt-rdepends,可以使用apt命令下载一个。
$ sudo apt install apt-rdepends
下载g++:
$ apt download g++
离线安装g++:
$ sudo dpkg -i *
缺少依赖项报错:
我们可以看到是缺少的是g++-9和g++-10。
那么运行以下命令将其所有依赖项都安装到当前目录。
$ apt download $(apt-rdepends g+++-9 g++-10 | grep -v "^ " )
共计下载了43个包,使用以下命令离线安装:
$ sudo dpkg -i *
2.离线安装
在离线系统上在各个文件夹中运行以下命令即可,也可以把安装包放到一个文件夹中运行一次命令。
$ sudo dpkg -i *
3.编译并安装HiGHS
使用cmake命令编译HiGHS,首先从github上下载HiGHS源码。进入文件夹执行以下命令:
$ mkdir build
$ cd build
$ cmake ..
此时完成了HiGHS项目文件的生成,然后执行以下命令进行编译。
$ cmake --build .
完成项目编译后,执行以下命令安装HiGHS。
$sudo cmake --install .
完成项目安装。
想要运行HiGHS,首先需要配置环境变量。执行以下命令:
$ export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
其中,/usr/local/lib为安装的默认位置,也可自行指定安装路径,HiGHS编译详情可参考HiGHS手册。
然后运行:
$ highs
当输出以下结果时,表明HiGHS已经成功安装。