A volte, devi installare alcuni programmi compilando manualmente dal sorgente. Perché potrebbero non essere disponibili nei repository ufficiali o di terze parti, quindi non puoi installarli usando i normali gestori di pacchetti. Come forse già saprai, quando installi i programmi dal sorgente, i file del pacchetto verranno copiati in più posizioni, come /usr/local/bin
, /usr/local/etc/
, sul filesystem. Se il programma installato dal sorgente non ha un programma di disinstallazione integrato, sarà un compito noioso rimuovere i pacchetti quando non ne avrai più bisogno. Potrebbe essere necessario dedicare un paio (o più) minuti per trovare quei file del pacchetto e rimuoverli manualmente. Questo è quello che ho fatto fino a quando non mi sono imbattuto in un'utilità chiamata "GNU Stow" . Per fortuna, Stow ha un modo semplice per gestire facilmente i programmi installati dal sorgente.
Per citare il sito ufficiale,
Per dirla semplicemente, Stow ti aiuta a mantenere i file del pacchetto organizzati in modo che siano facilmente gestibili. In questo metodo, i file non verranno copiati in più posizioni. Invece, tutti i file vengono salvati in una cartella specifica, di solito con il nome del programma stesso, e Stow crea collegamenti simbolici a tutti i file dei programmi nelle posizioni appropriate. Ad esempio, /usr/local/bin
potrebbe contenere collegamenti simbolici a file all'interno di /usr/local/stow/vim/bin
, /usr/local/stow/python/bin
ecc., e allo stesso modo ricorsivamente per qualsiasi altra sottodirectory come .../share
, .../man
, e così via. In questo tutorial ti mostrerò come gestire facilmente i programmi installati dal sorgente usando Stow con un esempio pratico. Continua a leggere.
Installa GNU Stow in Linux
GNU Stow è disponibile nei repository predefiniti dei più diffusi sistemi operativi Linux.
Su Arch Linux e le sue varianti, esegui il comando seguente per installare Stow.
$ sudo pacman -S stow
Su Debian , Ubuntu , Linux Mint , Sistema operativo pop :
$ sudo apt install stow
Su Fedora :
$ sudo dnf install stow
Su RHEL/CentOS , AlmaLinux e Rocky Linux :
$ sudo dnf install epel-release
$ sudo dnf install stow
Rimuovi i programmi installati dal sorgente utilizzando Stow in Linux
Come ho già accennato in precedenza, tutti i file di programma di un pacchetto verranno salvati in una cartella principale situata in /usr/local/stow/
. Sotto questa directory principale o principale, ogni pacchetto verrà salvato nella propria sottodirectory privata. Ad esempio, se installiamo Vim editor dal sorgente, tutti i file di programma e le directory relative a Vim verranno salvati in /usr/local/stow/vim
cartella. Se installi python dal sorgente, tutti i file relativi a python verranno mantenuti in /usr/local/stow/python
e così via.
Fammi installare un programma, ad esempio ciao , dalla fonte.
Per prima cosa scarica il tarball del programma "ciao".
$ wget http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz
Estrai il tarball scaricato usando il comando:
$ tar -zxvf hello-2.10.tar.gz
Il comando precedente creerà una directory denominata "ciao-2.10" nella directory di lavoro corrente ed estrarrà tutti i contenuti in essa contenuti.
Passa alla directory estratta:
$ cd hello-2.10/
Esegui il comando seguente con l'opzione --prefix.
$ ./configure --prefix=/usr/local/stow/hello
Il comando precedente salverà i file di build nella posizione specificata, ad esempio /usr/local/stow/hello
nel nostro caso.
Infine, compila e installa il programma hello usando i seguenti comandi:
$ make
$ sudo make install
Questo è tutto. Il programma hello è stato installato in /usr/local/stow/hello/
Posizione. Puoi verificarlo con il comando 'ls' come mostrato di seguito.
$ ls /usr/local/stow/hello/ bin share
Infine, vai su /usr/local/stow/
directory ed eseguire il comando seguente per generare i collegamenti simbolici necessari.
$ cd /usr/local/stow/
$ sudo stow hello
Tutto fatto!
Quello che è appena successo è che tutti i file e le directory contenuti nel pacchetto hello sono stati collegati simbolicamente alla directory /usr/local/
. In altre parole, /usr/local/stow/hello/bin
è stato collegato a /usr/local/bin
e /usr/local/stow/hello/share
è stato collegato a /usr/local/share
e /usr/local/stow/hello/share/man
è stato collegato a /usr/local/share/man
e così via.
Puoi verificarli usando 'ls'
comando:
$ ls /usr/local/bin/ hello
Controlliamo se il programma hello funziona o non utilizza il comando:
$ hello Hello, world!
Sì, funziona!!
Allo stesso modo, puoi installare i programmi come descritto sopra nella propria sottodirectory.
Ecco il contenuto della directory principale di Stow:
$ tree /usr/local/stow/
Vedere? Il programma hello è installato in "/usr/local/stow/hello/"
Posizione. Allo stesso modo, tutti i pacchetti verranno mantenuti nella propria directory.
Ecco la parte principale. Rimuoviamo il programma ciao. Per farlo, vai su /usr/local/stow/
directory:
$ cd /usr/local/stow/
..ed esegui il seguente comando:
$ sudo stow --delete hello
Il programma Hello è stato appena rimosso. Puoi verificare se è stato davvero rimosso o meno con il comando:
$ hello -bash: /usr/local/bin/hello: No such file or directory
Vedere? Il programma Hello è stato rimosso!
Tieni presente che Stow ha rimosso solo i collegamenti simbolici. Tutti i file di programma e le directory relative a hello program sono ancora disponibili in /usr/local/stow/hello
cartella. Quindi, puoi installare di nuovo il programma hello senza dover scaricare il file sorgente effettivo.
Se non vuoi più il programma ciao, elimina semplicemente la sua cartella.
$ sudo rm -fr /usr/local/stow/hello/
Per conoscere maggiori dettagli su Stow, fare riferimento alle pagine man.
$ man stow
Conclusione
GNU Stow ti aiuta a disinstallare i programmi con la stessa facilità con cui li installi. Se ti stai chiedendo come gestire efficacemente molti programmi installati dal sorgente, GNU Stow è uno di questi programmi per rendere questo compito molto più semplice. Provalo, non rimarrai deluso.