Apa yang dilakukan kode berikut?
Saya menemukannya di internet jadi saya menyalinnya dan menempelkannya ke terminal tetapi ketika saya menginstal kernel baru itu hanya mendeteksi yang lama.
sudo apt-get remove --purge $(dpkg -l 'linux-image-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d')
command-line
apt
kernel
sed
medo_alouane
sumber
sumber
dpkg -l 'linux-image-*'
, yang mencantumkan semua paket kernel yang terinstal dan menyaring beberapa dari mereka untuk dihapus olehapt-get remove
.update-grub
(paket postinst) lebih lambat. Jika Anda khawatir Anda tidak benar-benar mem-boot kernel yang Anda coba tingkatkan, jalankanuname -a
, atau bahkandmesg | less
Jawaban:
Mari kita pecahkan kode satu per satu (untuk sistem saya):
Jadi ini tidak akan menghasilkan apa-apa:
Seperti yang Anda lihat , itu sangat dekat dengan menghapus paket meta kernel saya saat ini
linux-image-generic 3.13.0.32.38 amd64 Generic Linux kernel image
(terima kasih untuksed '/[0-9]/!d'
baris terakhir ini ), yang salah.Singkatnya, karya ini
sed
memiliki beberapa masalah. Anda harus menghindarinya untuk menghapus kernel lama Anda.EDIT:
Saya sudah mengatakan bahwa
sed
perintah memiliki masalah. Demi ekstensi saya akan menghapus dua baris terakhir dengan bentuk yang sebenarnya harus berfungsi dalam skenario saya saat ini.Dua baris terakhir dalam bentuk yang dimodifikasi:
Begitu:
Outpus:
Itu sangat berdarah !!
Sekarang menunjukkan apa yang akan dilakukan pada sistem saya,
--dry-run
denganapt-get remove
perintah penuh :Seperti yang Anda lihat itu akan menghapus semua kernel saya saat ini, juga perhatikan bahwa ini hanya simulasi untuk mencocokkan skenario saya saat ini dan yang asli
sed
dapat ditingkatkan.** Perhatikan bahwa kode aktual akan berfungsi jika melakukan
reboot
upgrade kernel setelah yang sudah disebutkan Oli .EDIT2:
Berikut ini adalah skrip sederhana namun tangguh yang akan mempertimbangkan semua situasi dan menghapus kernel lama yang sebenarnya:
Jika Anda memiliki versi yang lebih baru dari versi saat ini, ini akan memberi Anda peringatan untuk memulai kembali komputer Anda terlebih dahulu. Perhatikan juga bahwa kernel yang lebih lama disimpan karena alasan yang bagus yaitu jika Anda entah bagaimana mengacaukan kernel Anda saat ini membuat sistem Anda tidak stabil maka Anda harus dapat boot ke kernel yang lebih tua.
sumber
apt-get
bagian dan output apa yang Anda dapatkan?(([a-z]|-)*
, yaitu) tanpaapt-get
bagian sebelum mengkritik itu. Pada sistem saya, itu output baris berikut:linux-image-3.13-
,linux-image-3.13-
,linux-image-extra-3.13-
,linux-image-extra-3.13-
,linux-image-3.13.0.49-generic
. Apakah itu benar-benar apa yang Anda inginkan? (Juga, poin bonus jika Anda bisa mengetahui kernel mana yang sebenarnya telah saya instal.)Ini adalah upaya untuk menghapus kernel yang bukan yang sekarang.
Ada banyak bit kode di luar sana yang melakukan sesuatu seperti ini dan ini bukan contoh yang baik . Ini dapat dengan mudah menghapus kernel yang lebih baru dari saat ini dan karena itu paket meta yang menginstal (
linux-generic
et al) jika Anda memiliki upgrade dan tidak reboot.sumber