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

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

Exception: Could not find a default OpenFlow controller in Mininet

v4l2: open /dev/video0: Permission denied