No root
In laboratorio avrete solo un utente normale, senza i permessi di amministrazione. Ma questo non vi impedirà di poter fare comunque un sacco di cose!
Programmi in C
Vediamo come impostare le variabili d’ambiente per poter compilare
i programmi C in modo che vengano poi installati in ~/opt
, all’interno
della nostra area utente.
Innanzitutto sarà necessario aggiungere alla propria configurazione
in ~/.bashrc
una serie di linee:
## Local C environment under ~/opt
# Configure time
export PKG_CONFIG_PATH="$HOME/opt/lib/pkgconfig:$PKG_CONFIG_PATH"
# Compile time
export CFLAGS="-L$HOME/opt/lib -I$HOME/opt/include"
# Link time
#export LOADLIBES="-l$HOME/opt/lib"
# Run time
if [ -z $LD_LIBRARY_PATH ]; then
# Do not leave a trailing ':' otherwise you'll load libraries from the cwd too!
export LD_LIBRARY_PATH="$HOME/opt/lib"
else
export LD_LIBRARY_PATH="$HOME/opt/lib:$LD_LIBRARY_PATH"
fi
# Man path
export MANPATH="$MANPATH:$HOME/opt/share/man"
# PATH
#export PATH="$HOME/opt/bin:$PATH"
export PATH="$PATH:$HOME/opt/bin"
# CMake default path will be `/opt too:
export CMAKE_INSTALL_PREFIX=~/opt
Dopodiché in fase di configurazione sarà necessario specificare come prefix
la directory ~/opt
. Ad esempio:
./configure --prefix=~/opt
make
make install
Grazie alle variabili d’ambiente che abbiamo impostato, il sistema sarà in
grado di gestire le librerie in ~/opt/lib
, e i file include in
~/opt/include
.
Attenzione: se si vuole ricompilare qualche programma già presente nella distribuzione, per far sì che la nostra versione abbia la precedenza su quella di sistema, è necessario utilizzare la prima versione del comando che ridefinisce il PATH, in modo da mettere il nostro percorso locale prima dei percorsi di sistema. Normalmente è quello che desideriamo, ma, quando il laboratorio verrà reinstallato con una nuova distribuzione, potremmo ritrovarci con una versione più vecchia rispetto ai programmi della distribuzione.
Se il programma non è stato configurato con autoconf / automake, e non
ha un file configure
, bisognerà seguire le indicazioni dell’autore,
solitamente presenti con i sorgenti. Sovente si tratta di impostare
una variabile d’ambiente, prima di richiamare il comando make
.
Python
Per installare un pacchetto Python dal repository PyPi è possibile utilizzare
il comando pip
.
Ad esempio:
pip --user install NOME_DEL_PACCHETTO_PYTHON
Se nel pacchetto sono presenti degli eseguibili, per poterli lanciare è
necessario aggiungere nel proprio file ~/.bashrc
queste linee:
# pip --user install
export PATH="$PATH:~/.local/bin"
Questa è la via più semplice se la versione di Python presente nella distribuzione è compatibile con la libreria che si vuole utilizzare.
Conda
Con conda
è possibile installare dei pacchetti da dei repository
online. In laboratorio è utilizzato per Anaconda, una distribuzione
di tool e pacchetti per Machine Learning e Data Science.
In particolare, molte librerie Python sono disponibili anche tramite
conda
.
Ma, a differenza di pip
, con conda
è anche possibile installare
una versione di Python differente da quella di sistema.
Questo può essere necessario per utilizzare alcune versioni di alcune librerie.
Attenzione però agli effetti negativi. Leggere con attenzione la pagina con le indicazioni, linkata qui sotto.
Per avere le indicazioni operative, leggere la parte relativa agli ambienti, nella pagina relativa ad Anaconda.
NodeJS
La configurazione di default in NPM è per una installazione locale delle
dipendenze, all’interno della directory node_modules
.
Quindi è importante non utilizzare il flag -g, che si usa per richiedere una installazione globale, perché quello è riservato all’amministratore di sistema (o a un utente a cui sono assegnati esplicitamente i permessi necessari).
Di solito il comando viene lanciato nella directory del progetto, alla
radice, in modo che la directory node_modules
sia una sottodirectory
di primo livello della directory del progetto stesso.
Esempio:
mkdir ghost-proj && cd ghost-proj
npm install ghost-cli
mkdir site && cd site
../node_modules/ghost-cli/bin/ghost install local
Ruby
Con gem
è possibile utilizzare l’opzione --user-install
.
Sarà necessario configurare il PATH utilizzato per gli eseguibili
delle gemme nel proprio file .bashrc
.
Ad esempio, se lanciamo:
gem install --user-install yekyll
Il sistema ci avverte che gli eseguibili finiranno in una directory che non è inclusa nel PATH:
WARNING: You don't have /home/USER/.gem/ruby/2.7.0/bin in your PATH,
gem executables will not run.
Per poter richiamare eventuali eseguibili, bisogna quindi aggiungere
il path indicato nel file .bashrc
. Ad esempio:
# gem --user-install
export PATH="$PATH:$HOME/.gem/ruby/2.7.0/bin"
Nota: il percorso dipende dalla versione di Ruby, e quindi potrebbe cambiare a seguito di aggiornamenti.
Con il PATH impostato correttamente, il comando gem install --user-install
non genererà più alcun warning. Seguendo l’esempio precedente, è possibile
vedere che il comando jekyll
è ora disponibile, proprio nella directory
che abbiamo configurato:
which jekyll
Per configurare bundle
per installare in una directory locale si può
utilizzare l’opzione --path
, ma è deprecata. Un modo alternativo è quello
di inserire il path desiderato nella configurazione. Ad esempio:
bundle config set path $HOME/.gem
Nota: questa impostazione viene salvata in
~/.bundle/config
, e non è limitata al progetto attuale, ma è globale.
Dopodiché è possibile fare:
bundle install
E le gemme dovrebbero finire nella stessa directory che abbiamo utilizzato
in precedenza con gem
. In questo modo saranno anche visibili con
gem list
.
Rust / Cargo
Aggiungere nel proprio file ~/.bashrc
queste linee:
# RUST/Cargo
export PATH="$PATH:$HOME/.cargo/bin"
Go Lang
Attenzione: vecchie note, non testate di recente. Il loro contenuto potrebbe non essere più applicabile.
Aggiungere nel proprio file ~/.bashrc
queste linee:
# Go
export GOPATH="$HOME/golang"
export PATH="$PATH:$HOME/golang/bin"
APT, YUM, DNF, docker, minikube, etc
Per tutto il resto, è sempre possibile creare una macchina virtuale in VirtualBox, installare la propria distribuzione Linux preferita, e poi installare tutti i tool desiderati.
Attenzione però alla quota disco! Conviene partire da una versione server, senza ambiente grafico, aggiungere solo quello che è effettivamente necessario, e collegarsi poi alla macchina virtuale in SSH.
Ad esempio, l’immagine Fedora Cloud è perfetta per molte attività!
Se è per un attività legata alla tesi, parlatene con il vostro relatore; probabilmente vi verrà fornita una macchina virtuale che gira su un server, senza doverla lanciare in laboratorio con VirtualBox.