Partisi boot saya menggunakan SSD, sehingga tidak memiliki ruang untuk lebih dari 8 versi kernel yang diinstal, dan akhirnya beberapa pembaruan kernel akan gagal diinstal karena partisi boot saya penuh dengan versi lama. Ada banyak pertanyaan di luar sana tentang cara menghapus versi lama (bahkan bagaimana mengotomatiskan proses), tetapi pertanyaan saya hanyalah ini: Mengapa tidak apt-get autoremove
mendeteksi dan menghapusnya secara otomatis, dan adakah cara saya dapat membuatnya melakukannya ? Maksud saya, apt-get
apakah yang menginstalnya, jadi ia tahu tentang mereka, jadi mengapa ia memilih untuk meninggalkan semua versi lama?
53
Jawaban:
Untuk menjawab alasannya, lihat file tersebut
/etc/apt/apt.conf.d/01autoremove-kernels
Seperti yang Anda lihat, apt dikatakan untuk tidak pernah autoremove kernel, seperti yang diceritakan oleh file (script) lain
/etc/kernel/postinst.d/apt-auto-removal
,. Dan ini dia:Jika Anda menginstal 2 kernel yang dipilih secara manual, yaitu yang pertama dan yang sekarang, maka apt-autoremove hanya akan menghapus versi lama yang tidak Anda instal secara manual, sehingga Anda akan selalu memiliki 2 opsi tersebut ditambah apa pun yang terbaru.
Memperbarui:
Di
/etc/kernel/postinst.d/apt-auto-removal
sana ada bagian ini:Jadi jika Anda membandingkan output
01autoremove-kernels
file danuname -r
Anda akan menyadari bahwa kernel yang saat ini berjalan dan yang terbaru sebelum itu, disimpan untuk tidak pernah dihapus oleh skrip itu. Ternyata ada file lain/etc/apt/apt.conf.d/01autoremove
, di mana ada baris:Jadi Anda bisa mengomentari ini, dan itu akan memungkinkan Anda untuk menghapus kernel secara otomatis
apt-autoremove
, meskipun ingat - lakukan ini dengan risiko Anda sendirisumber
/etc/apt/apt.conf.d/01autoremove-kernels
memiliki banyak baris, tetapi hanya dua versi di antara semuanya: 3.13.0. {39,43}. Tetapidpkg -l linux-*
daftarkan empat versi, 3.13.0. {39,40,41,43}, jadi sesuatu selain/etc/apt/apt.conf.d/01autoremove-kernels
menjaga agar versi-versi menengah tersebut ada, bukan?01autoremove
adalah file yang Anda inginkan,01autoremove-kernels
mungkin hanya perlindungan, sehingga apt tidak menghapus kernel yang saat ini terinstal dan yang terbaru (untuk berjaga-jaga jika sekrup terbaru up)01autoremove
, itu hanya melindungi dari penghapusan otomatis paket dependensi, sepertilinux-image-extra
. Mengubahnya seharusnya tidak memengaruhi apakahlinux-image-3.16.0-31-generic
akan autoremoved atau tidak . Tidak ada pola di dalamnya yang cocok dengan nama paket yang ingin kami hapus secara otomatis./etc/apt/apt.conf.d/01autoremove
. Itu tidak membantu Anda dalam autoremoving paket kernel versi lama, tetapi mungkin memiliki efek yang tidak diinginkan. File tidak melindungi dari autoremovinglinux-image-extra
tetapi paket yang cocok dengan ekspresi reguler diNeverAutoRemove
bagian ini.apt-get autoremove
tidak menghapus kernel yang tidak terdaftar/etc/apt/apt.conf.d/01autoremove-kernels
adalah bahwa kernel tersebut ditandai sebagai diinstal secara manual; lihat jawaban saya .Bagi saya itu membantu menginstal ubuntu (X) terbaru (15.10). Dalam rilis sebelumnya, paket kernel dapat ditandai sebagai yang diinstal secara manual, setidaknya, jika diinstal dengan menggunakan Pembaruan Perangkat Lunak, sehingga
sudo apt-get autoremove --purge
tidak dapat menghapusnya. Ada laporan bug mengenai masalah ini: Bug # 1175637 , Bug # 1439769Dalam rilis sebelumnya, Anda dapat mencoba menandai paket-paket kernel yang diinstal secara otomatis oleh
sudo apt-mark auto $(apt-mark showmanual | grep -E "^linux-([[:alpha:]]+-)+[[:digit:].]+-[^-]+(|-.+)$")
dan dijalankansudo apt-get autoremove --purge
setelahnya untuk melihat, jika itu membuat perbedaan. Perintah tersebut seharusnya tidak menghapus paket kernel yang ditunjukkan pada /etc/apt/apt.conf.d/01autoremove-kernels, tetapi lebih aman untuk dijalankanapt-get autoremove
dengan--dry-run
opsi terlebih dahulu.sumber
apt-mark
melakukan trik untuk saya, berharap saya bisa mengungguli 10 kali: P