Ho visto molti thread su come liberare spazio sulla partizione / boot e questo è anche il mio obiettivo. Tuttavia, mi interessa solo l'eliminazione dei vecchi kernel e non di ognuno di essi, ma quello attuale.
Ho bisogno che la soluzione sia un one-liner poiché eseguirò la sceneggiatura di Puppet e non voglio avere file extra in giro. Finora ho avuto il seguente:
dpkg -l linux-* | awk '/^ii/{print $2}' | egrep [0-9] | sort -t- -k3,4 --version-sort -r | sed -e "1,/$(uname -r | cut -f1,2 -d"-")/d" | grep -v -e 'uname -r | cut -f1,2 -d"-"' | xargs sudo apt-get -y purge
Per essere più precisi, ciò che fa al momento è il seguente:
- Elenca tutti i pacchetti linux- * e stampa i loro nomi.
- Elenca solo quelli che hanno numeri e li ordina, restituendo il risultato inverso. In questo modo, i kernel più vecchi sono elencati per ultimi.
- Stampa solo i risultati che seguono il kernel corrente
- Dato che ci sono alcuni risultati di linux- {image, headers}, assicurati che non eliminerò nulla relativo al mio attuale kernel
- Chiama apt per eliminare
Funziona, ma sono sicuro che la soluzione può essere più elegante e sicura per un ambiente di produzione, dal momento che almeno 20 dei nostri server eseguono Ubuntu.
Grazie per il tuo tempo, Alejandro.