Ubuntu Configuration

4 minute read

basic install

This are the basic packages to install depending on the need. Depending on the availability and version update this packages in Ubuntu might installable either via apt or snap.

Since the majority of the operation are gonna take place in the terminal we set that first.

Install the fundamental apt packages

1sudo apt install ca-certificates gpg wget curl git && sudo snap install synaptic

terminal

We use dropdown terminal (guake) and auxiliary terminal (alacritty) for full desktop application. As shell we opt for zsh.

1sudo apt install zsh guake && sudo snap install alacritty

For lazy people but a bit bloated oh-my-zsh

1sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Activate Guake autostart and remove “open new tab in current directory”

monitoring & benchmark

Monitoring temperature (watch sensors) and in/out connections (netstat -lftpu)

1sudo apt install lm-sensors net-tools conky

Add conky to startup (Conky System Monitoring)

/usr/bin/conky

For Blender Benchmark check here

editing, notes & reading

1sudo apt install texlive-full && sudo snap install logseq zotero

Install Zotero Extensions

1cp user.js ~/.zotero/zotero/<randomstring>

remote control

1sudo apt install openssh-server tmux

Move your public key from the client with

1ssh-copy-id -i ~/.ssh/id_rsa user@ip

In order to control remotely a jupyter notebook

1ssh -L 8080:localhost:8080 user@ip && \
2jupyter notebook --no-browser --port=8080 &

coding tools

Add cmake updated repository

1wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null && \
2echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ jammy main' | sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null

Install coding suite

1sudo apt install cmake-curses-gui gfortran python3-pip ipython3 && sudo snap install vscode hugo #(zola)

plus some basic python packs

1pip install numpy matplotlib scipy scikit-learn notebook ipympl
1pip install web3

Add this lines to the .zshrc to make local executable reachable plus useful shortcut for ipython

1# Local bin
2export PATH=$HOME/.local/bin:$PATH
3
4# Ipython shortcut
5alias ipy="ipython3"

social & media

1sudo snap install telegram zoom discord slack thunderbird spotify gimp

Workspace Setup

Folders Creation

Create the following folders

1mkdir ~/Developments ~/Papers ~/Repositories

Your home should look like

📂~/
 ┣ 📂Developments
 ┃ ┗ 📜projects in development
 ┣ 📂Documents
 ┃ ┗ 📜radom docs
 ┣ 📂Downloads
 ┃ ┗ 📜random downs
 ┣ 📂Papers
 ┃ ┗ 📜papers in progress
 ┗ 📂Repositories
   ┗ 📜necessary repos

SSH Configuration

Generate ssh key in order to communicate with github server

1ssh-keygen -t ed25519 -C "your_email@example.com"

Add to you github the output of

1cat ~/.ssh/id_ed25519.pub

For more info check here

Machine Learning Suite

CUDA (& NVIDIA Driver)

Reference source here

1cd ~/Downloads && \
2wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb && \
3sudo dpkg --install cuda-keyring_1.1-1_all.deb

Check for updates here

1sudo apt update && sudo apt install cuda libcudnn8-dev

Add this line to .zshrc to make cuda compiler visible

1# CUDA Compiler
2export PATH=$PATH:/usr/local/cuda/bin

MKL (& other stuff)

1wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB \
2| gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null && \
3echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list && \
4sudo apt update && sudo apt install intel-basekit intel-oneapi-mkl

Add shortcut to .zshrc to activate Intel suite

1# Intel MKL
2alias intel="source /opt/intel/oneapi/setvars.sh"

PyTorch

Download and extract in Repositories the latest version of MAGAMA library from here

1cd ~/Repositories/magma && \
2mkdir build && \
3cd build && \
4cmake .. && \
5make -j16 && \
6sudo make install

The instruction to install PyTorch can be found here. Remember to activate Intel MKL.

1pip install ninja
2cd ~/Repositories && \
3git clone --recursive https://github.com/pytorch/pytorch
4cd pytorch
5pip install -r requirements.txt
6export _GLIBCXX_USE_CXX11_ABI=1
7python setup.py build --cmake-only
8ccmake build

Check that everything is ok and install it

1MAX_JOBS=16 python3 setup.py install --user

Install

1pip install gpytorch torch_geometric

FAISS

The instruction to install FAISS can be found here

 1sudo apt install swig
 2cd ~/Repositories && \
 3git clone git@github.com:facebookresearch/faiss.git
 4mkdir build && \
 5cd build && \
 6cmake .. \
 7-DFAISS_ENABLE_GPU=ON \
 8-DFAISS_ENABLE_PYTHON=ON \
 9-DCMAKE_BUILD_TYPE=Release \
10-DFAISS_OPT_LEVEL=avx512 \
11-DBLA_VENDOR=Intel10_64_dyn \
12-DCUDAToolkit_ROOT=/usr/local/cuda \
13-DCMAKE_CUDA_ARCHITECTURES="89" \
14-DBUILD_TESTING=OFF

Check that everything is ok and then install it

1sudo make install && \
2cd faiss/python && pip install .

Linear Algebra & Basic Utils

1git clone git@gitlab.com:libeigen/eigen.git
2git clone git@github.com:nash169/utils-lib.git

Graphics

1sudo apt install libgl1-mesa-dev libsdl2-dev libassimp-dev
1sudo apt install libegl1-mesa-dev libglfw3-dev libopenal-dev libdevil-dev libfaad-dev libfreetype6-dev spirv-tools glslang-dev libharfbuzz-dev libmeshoptimizer-dev libopenexr-dev libwebp-dev libglm-dev
1git clone --recursive git@github.com:mosra/corrade.git
2git clone --recursive git@github.com:mosra/magnum.git
3git clone --recursive git@github.com:mosra/magnum-plugins.git
1git clone git@github.com:nash169/graphics-lib.git

Rigid Body Physic & Control

1sudo apt install libboost-all-dev liburdfdom-dev liburdfdoom-headers-dev libyaml-cpp-dev libzmq3-dev
1sudo apt install libcppad-dev
1git clone git@github.com:bulletphysics/bullet3.git
2git clone --recursive git@github.com:mosra/magnum-integration.git
3git clone --recursive git@github.com:stack-of-tasks/eigenpy.git
4git clone --recursive git@github.com:stack-of-tasks/pinocchio.git
1git clone git@github.com:nash169/control-lib.git
2git clone git@github.com:nash169/beautiful-bullet.git
3git clone git@github.com:nash169/zmq-stream.git

Optimization

1sudo apt-get install gcc g++ gfortran git patch wget pkg-config liblapack-dev libmetis-dev
1sudo apt install linnlopt-cxx-dev coinor-libipopt-dev
2git clone git@github.com:coin-or/qpOASES.git
1git clone git@github.com:nash169/optimization-lib.git

Robotics Experiments

1git clone git@github.com:frankaemika/libfranka.git
2git clone git@github.com:nash169/optitrack-lib.git
3git clone git@github.com:nash169/franka-control.git