Login page

Ripulire Debian

Debian GNU/Linux è il sistema operativo che uso tutti i giorni per lavorare, ma anche per provare nuovi programmi.
Al contrario dei sistemi Windows o Mac OS, la installazione e rimozione di un software sui sistemi GNU/Linux è un procedimento molto più controllato, in particolar modo per il software presente nei repository, non serve infatti ripulire nessun registro o andare in giro per il filesystem a rimuovere file di configurazione, come è anche vero che grazie al concetto di dipendenze se un programma dipende da un altro non è necessario andare a scaricare anche quest'ultimo. Inoltre il procedimento di installazione e rimozione è automatizzato al 99% (sono pochi i software che necessitano di configurare qualche parametro prima di funzionare), mentre su Windows, ad esempio, è una sequenza di click su avanti, accetto e OK.
Inoltre, altre grande vantaggio, anche gli aggiornamenti vengono eseguiti tutto allo stesso modo, senza dover controllare un programma alla volta, o far eseguire servizi diversi, ognuno intento ad aggiornare un singolo programma.

Sono diversi gli strumenti che permettono di gestire i pacchetti, quelli a linea i comando di Debian sono apt e aptitude, ambedue permettono di installare e aggiornare dai repository nuovi pacchetti da linea di comando, una interfaccia grafica è fornita da synpatic. Altri strumenti sono dpkg, che gestisce i pacchetti nel caso si volesse fare qualche operazione particolare, ad esempio installare un pacchetto all'infuori dai repository, oppure gdebi, che al contrario del software precedente si occupa di risolvere anche le dipendenze. I programmi gdebi-gtk e gdebi-kde sono le relative interfacce grafiche.

Questo articolo non mira a spiegare il funzionamento dei singoli programmi elencati precedentemente, ma a fornire dei comandi per ripulire il proprio sistema. Infatti strumenti come apt e aptitude fanno un ottimo lavoro, ma può capitare che aggiungendo e rimuovendo pacchetti, nel sistema si accumulino pacchetti che erano stati installati come dipendenza di un altro, e che oramai non servono più.
Inoltre a volte è necessario pulire anche la cache del sistema, come anche i vecchi file di configurazione, una azione che giustamente non viene effettuata in automatico durante la rimozione di un pacchetto.
È sottinteso che i comandi a seguire funzionino solamente sui sistemi basati su Debian, come ad esempio Debian stesso, Ubuntu, oppure Linux Mint. Inoltre tali comandi devono essere eseguiti da amministratore, in quando le modifiche che si intendono apportare riguardano l'intero sistema.

Pulizia della cache

Il comando apt-get clean permette di rimuovere i pacchetti scaricati dalla cache. Questi servono ad esempio quando si vuole reinstallare un programma, in modo da non dover riscaricare tutto il pacchetto. Ogni tanto è quindi buona norma ripulire la cache, in quanto può crescere in dimensioni in modo considerevole.
apt-get autoclean rimuove dal sistema solamente alcuni pacchetti dalla cache, ovvero quelli obsoleti, dal man di apt-get:
Come clean, autoclean ripulisce il repository locale dei file di pacchetto recuperati. La differenza sta nel fatto che rimuove solo i file di pacchetto che non possono più essere scaricati e sono per lo più inutili.

Pacchetti di transizione e development

Spesso, ad esempio quando un programma cambia nome, nei repository appaiono dei pacchetti di transizione, per evitare che chi usasse il vecchio pacchetto si ritrovi all'improvviso senza il programma che stava usando. Una volta aggiornato il sistema, i pacchetti di transizione possono essere rimossi senza problemi. Solitamente i pacchetti che vogliamo quindi rimuovere, contengono una delle seguenti parole nella descrizione: dummy, transitional, obsolete.
Per cercare tali pacchetti basta dare uno dei seguenti comandi
dpkg -l|grep dummy
dpkg -l|grep transitional
dpkg -l|grep obsolete
Non è sempre sicuro rimuovere uno dei pacchetti riportati, in particolare se un pacchetto non di transizione dovesse ancora dipendere da uno di questi.
Questa informazione la si scopre quando si tenta di rimuovere un pacchetto, dando ad esempio aptitude remove foo, che si suppone sia un pacchetto transitional e dummy per foo2, se altri programmi dipendono da esso, si ottiene l'output I seguenti pacchetti hanno dipendenze non soddisfatte:, e aptitude propone di rimuovere altri pacchetti, installarne alcuni o lasciare dipendenze non soddisfatte. Ovviamente conviene lasciar perdere digitando q sulla tastiera, in modo da interrompere in maniera pulita il programma aptitude. Altri pacchetti che spesso mi ritrovo installati nel sistema e che poi di fatto non gli voglio avere sono quelli di development, che magari sono serviti una volta che dovevo compilare un programma. Anche in questo usando dpkg: dpkg -l|grep dev, è possibile vedere quali sono i pacchetti che si potrebbe tentare di rimuovere.

Vecchie dipendenze

Come già accennato prima, quando si installa un programma si installano i pacchetti da cui esso dipende, quando si rimuove il programma, se gli altri pacchetti installati non servono a nessun'altro pacchetto, li si vorrebbe rimuovere in quanto rubano risorse inutilmente.
Un modo veloce e sicuro per effettuare questo tipo di pulizia è usando il comando apt-get autoremove, che serve a rimuovere i pacchetti che sono stati installati automaticamente per soddisfare delle dipendenze per altri pacchetti e che non sono più necessari, ma è in grado di gestire le dipendenze più sicure, vi sono in genere molti altri pacchetti che si possono rimuovere senza problemi.
Per controllare uno ad uno i pacchetti che si potrebbero rimuovere, si può dare da terminale
for pkg in $(aptitude search ~i | grep -v "i A" | cut -d " " -f 4); do
   echo "-- markauto $pkg --";
   aptitude markauto $pkg;
done
tale comando viene descritto dettagliatamente su debian-administration.
Questa procedura è più impegnativa in quanto si devono controllare i pacchetti uno ad uno, ma permette di liberare molto sazio sul disco se, come me, si installano e rimuovono tanti programmi.

File di configurazione

A questo punto non rimane che rimuovere i file di configurazione di tutti i pacchetti che sono stati rimossi. Per fare questo basta dare il comando aptitude purge ~c

Altre procedure

Altre procedure che possono servire per ridurre lo spazio su disco è l'uso di deborphan, altro programma che si occupa di trovare pacchetti che non servono più, oppure localepurge, che si occupa, ogni volta che viene installato un pacchetto, di rimuovere tutti i file di lingua dei quali non siamo interessati, ad esempio dalla documentazione o dal programma stesso se possibile. Quest'ultimo programma non interagisce nessun modo con i pacchetti, cancella brutalmente dei file, ma non dovrebbe causare nessun problema e personalmente non ne ho mai avuti. Forse in futuro verrà integrata la possibilità di scegliere le lingue interessate nella gestione dei pacchetti, ma al momento ci si deve accontentare di questo programma.
Un altro programma, che personalmente non ho mai provato, è debfoster, che permette di tenere un elenco di programmi a cui si è realmente interessati, per facilitare in futuro la pulizia del sistema

Questo è l'elenco degli articoli di questa categoria:

Ripulire Debian: Ripulire Debian da linea di comando
Come recuperare dati persi: come recuperare dati persi o cancellati