How to install gurobi in Ubuntu 18.04 out/inside an academic domain

To install gurobi, you can do it throught anaconda or tarball, secondly we need configure PATHS and  register the licence.

Anaconda option to install:

wget https://repo.continuum.io/archive/Anaconda3-5.1.0-Linux-x86_64.sh
chmod +x Anaconda3-5.1.0-Linux-x86_64.sh 
./Anaconda3-5.1.0-Linux-x86_64.sh 
conda update -n base conda
conda update -n base conda
conda config --add channels http://conda.anaconda.org/gurobi
conda install gurobi

If you want to uninstall anaconda, you can do it the following:

conda install anaconda-clean
anaconda-clean
rm -rf ~/anaconda3

Tarball option to install:

First, you need to create an account in Gurobi here and after proceed to download it:

wget http://packages.gurobi.com/7.5/gurobi7.5.2_linux64.tar.gz
tar xzvf gurobi7.5.2_linux64.tar.gz
cd gurobi752/linux64
sudo python setup.py install

Configure gurobi:

We need to add the PATH to our environment. By default, in linux, we use .bashrc
Edit ~/.bashrc and add the following lines:

export GUROBI_HOME="/path_where_you_unzip_gurobi/gurobi702/linux64"
export PATH="${PATH}:${GUROBI_HOME}/bin"

To reload paths (restart bash) you can use "bash --" command. 

Probably you will see the following issue:

gurobi_cl: error while loading shared libraries: libgurobi81.so: cannot open shared object file: No such file or directory

Also adds the following line to your bashrc file:

export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${GUROBI_HOME}/lib"

Restart bash and execute gurobi_cl again:

Warning: Failed to open log file 'gurobi.log'

ERROR 10013: Unable to write file

If you see this issue, you need to give access to your user to gurobi.log, just change them with:

chmod 777 gurobi.log

Now, execute again gurobi_cl:

ERROR 10009: No Gurobi license found (user anonymous, host anonymous, hostid b025bc03)

We need a licence to register gurobi. You can request a free-academic licence from here.
To dowload gurobi.lic you need to execute grbgetkey command with the key that the site gives you.

grbgetkey 78b0538c-4563-11e8-b039-0a45627c772a

Gurobi license key client (version 7.5.2)
Copyright (c) 2017, Gurobi Optimization, Inc.

-------------------------------
Contacting Gurobi key server...
-------------------------------

ERROR 303: hostname reverso.181.223.199.operaciones.gtdinternet.com (181.223.199.205) not recognized as belonging to an academic domain

If you are not in an academic domain, you can get it throught two ways:

First option (from public ip):

Install sshserver on your local workstation 
ssh -L 8080:apps.gurobi.com:8080 your_username@your_ip_address
grbgetkey --server=127.0.0.1 --port=8080 --verbose xxxx-xxxx-xxxxxxx-xxxx 

Second option (from private ip):

Access to your academic domain throught ssh and download the licence with your machine info.
Gurobi request the following information to generate the licence:



<key> is a valid academic key obtained freely from the Gurobi website.
<hostname> is the hostname of the computer you’d like to create a license for.
<hostid> is the last 4 bytes of your first computer’s MAC address in hexadecimal notation.
<username> is your user name on the computer for which you are requesting a license.
<platform> is a string used by Gurobi to identify the OS of your computer (e.g. linux64).
<sockets> is the number of wired network devices on the computer you are requesting a license for.
<date> is today’s date in YYYY-MM-DD notation (without zero).

You can get the partial info from grbprobe:

HOSTNAME=anonymous
HOSTID=bc25dc0d
PLATFORM=linux64
USERNAME=anonymous
CPU=Intel(R) Core(TM) i9-3337U CPU @ 4.80GHz

The others fields are:
SOCKETS=1
DATE=`date +%Y-%m-%d | sed 's/-0/-/g'`

Download the licence with the following url from your computer inside the academic domain:

wget "http://apps.gurobi.com//keyserver?id=xxxx-xxxx-xxxxxxx-xxxx &hostname=anonymous&hostid=bc25dc0d&username=anonymous&os=linux64&sockets=1&cpu=Intel%28R%29_Core%28TM%29_i9-3337U_CPU_%40_4.80GHz&localdate=2018-4-21" -O gurobi.lic

If you use this method to download gurobi.lic you must remove the following fourth first lines:

RESULT=0
LICENSEID=xxxxxx
# DO NOT EDIT THIS FILE except as noted
#

Now, download the licence to your computer (where you have gurobi):

scp user@academic_domain:/path_to_gurobi.lic .

Export the path in your ~/.bashrc to detect the licence

export GRB_LICENSE_FILE="/path_to_your_licence/gurobi.lic"

Reload bash and execute gurobi.sh

If you forget edit gurobi.lic you will probably get a segmentation fault:

gurobi.sh
Python 2.7.13 (default, Sep  4 2017, 15:40:17) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-18)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Segmentation fault (core dumped)

Enjoy it!



Comments

Popular posts from this blog

Exception: Could not find a default OpenFlow controller in Mininet

How to fix Android when developer options are not available for this user

v4l2: open /dev/video0: Permission denied