前言:花了好久,被嫌弃惹ww,记录一下踩过的坑
至于为何没安装gurobi也能跑一段时间,直到显示需要license激活,还是未解之迷,需要教教。
首先这是官方给的gurobi license激活教程
我们一步步来复现吧!
1、进入gurobi官网 注册账号(用学校的邮箱来注册以便于获得academic license )
点击这个按钮后会自动进去注册页面
这里一定注意使用Google Chrome而不是Safari(博主用Safari遇到了非常多奇奇怪怪的问题,比如验证码输入不进去)
总结一下 这种时候可以考虑 换浏览器 换邮箱 重启 是否是翻墙的问题
注册成功后大概显示的是这个样子
2、在服务器中安装gurobi
这个时候学长直接给我了软件包(gurobi10.0.1_linux64.tar.gz)或者直接下载官网
这个时候菜菜的博主又忘了如何把本地文件传到服务器上!(
可以用termius的SFTP(这样直接有界面,比较直观)或者scp指令哇
linux下gurobi软件包直接解压就相当于安装好了
tar -zxvf data.tar.gz
可以指定一个路径 会优雅一点(更方便当然是直接把压缩包移到路径下再解压啦
3、申请license
从刚刚注册成功的页面直接选择license/request/Named-User Academic
关闭代理,打开校园vpn和网络 点击generate now!
会弹出
那么到底是在哪里使用这个指令呢?来到下一步
4、激活license
来到了博主最迷惑的一步! ps学长直言很简单x
因为实验室有很多台服务器,对于每个端口,都需要一个不同的license
这个时候我们要怎么操作呢?
我们利用环境变量来用区分不同机器的证书
step1:修改.bashrc文件
实现
vim ./bashrc
加入
export GUROBI_HOME=/home/ruanhang/tools/gurobi1001/linux64
export PATH=${PATH}:${GUROBI_HOME}/bin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GUROBI_HOME}/lib
export GRB_LICENSE_FILE=/home/ruanhang/tools/grb_lic/$HOSTNAME/gurobi.lic
你对 .bashrc 所做的任何修改将在下一次启动终端时生效。如果你想立刻生效的话,运行下面的命令:
source ~/.bashrc
或者重启终端也可以。
step2:在tools里面创建grb_lic文件专门用来存储gurobi licenses
step3:到每个端口下的tools/gurobi1001/linux64/bin 执行网站提供的license指令
grbgetkey 07f7c1e0-bf2d-4379-8660-b83342a0acd0
原因:tools/gurobi1001/linux64/bin下有这个文件(是文件吗?)
并且把每个生成的license(gurobi.lic文件)放到以HOSTNAME(对应服务器名字)命名的文件夹中。
会弹出 输入grb_lic文件下以HOSTNAME(对应服务器名字)命名的文件夹路径
(会生成文件GRB_LICENSE_FILE=/home/ruanhang/tools/grb_lic/$HOSTNAME/gurobi.lic)
step4:用gurobi.sh测试是否成功
就成功啦!
知识点:环境变量与bashrc
种草博客【精选】【Linux学习】环境变量_普通用户环境变量-CSDN博客
环境变量理解:相当于全局变量,一般是指在操作系统中用来指定操作系统运行环境的一些参数(变量),具有继承性 。
查看环境变量的方法
- env:用于查看系统中所有环境变量的命令
环境变量中path的作用
PATH变量指定命令的搜索路径。
如果在path里面定义了一个目录,你在命令行里面不用输出完整的目录名,直接输入可执行程序和文件名就可以执行了,你输入命令的时候,系统会在path定义的目录下道面去寻找你输入的命令。
例如:
从中可以看出,在当前目录下,PATH的值。它表示在当前目录下执行的每一条指令的搜索路径,每个目录以冒号隔开。当执行一条指令时,系统就会从系统文件中去寻找,找到了就执行;否则不执行。
.bashrc 是什么?( 什么是.bashrc,有什么用?-CSDN博客)
.bashrc
是home目录下的一个shell文件,用于储存用户的个性化设置。在bash每次启动时都会加载.bashrc
文件中的内容,并根据内容定制当前bash的配置和环境。
应用:路径设置
每次export路径太麻烦,把路径加入到.bashrc是一个一劳永逸的方法,常见的设置语法如下:
写法1:
PATH=$PATH:路径
export PATH
写法二:
export PATH=$PATH:路径
上述语法可以理解为,在原来PATH的后面继续添加了新的路径,在运行特定指令时,系统会逐个位置去寻找文件。 $PATH 表示原先设定的路径,不能遗漏。不同于DOS/Windows,Unix类系统的环境变量的路径用冒号:分割,而不是分号;。为避免环境变量过多产生混乱,建议所有语句都添加在文件结尾,并添加注释。
所有环境变量名都是大写,Linux区分大小写
实现
vim ./bashrc
加入
export GUROBI_HOME=/home/ruanhang/tools/gurobi1001/linux64
export PATH=${PATH}:${GUROBI_HOME}/bin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GUROBI_HOME}/lib
export GRB_LICENSE_FILE=/home/ruanhang/tools/grb_lic/$HOSTNAME/gurobi.lic
你对 .bashrc 所做的任何修改将在下一次启动终端时生效。如果你想立刻生效的话,运行下面的命令:
source ~/.bashrc
或者重启终端也可以。
理解:
不同的 IP 地址通常不会影响用户的 ~/.bashrc
文件。 ~/.bashrc
是用户的 Bash shell 配置文件,它通常用于设置用户特定的 shell 环境变量、别名、函数和其他自定义配置。这些配置是基于用户的身份而不是 IP 地址。
当用户登录时,他们的 ~/.bashrc
文件会被执行,不论他们使用哪个 IP 地址。这意味着无论用户从哪个 IP 地址登录,他们都会使用相同的 Bash shell 配置。
IP 地址通常用于网络相关的配置,如防火墙规则、网络访问控制列表等,而不会影响用户的 shell 配置文件。(在thinklab实验室只有两个不同的.bashrc
)