GNU/Linux >> Belajar Linux >  >> Ubuntu

Mengapa Apt-get Autoremove Tidak Menghapus Kernel Lama?

Partisi boot saya menggunakan SSD, sehingga tidak memiliki ruang untuk lebih dari sekitar 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 cara mengotomatiskan proses), tetapi pertanyaan saya hanyalah ini:Mengapa tidak apt-get autoremove mendeteksi dan menghapusnya secara otomatis, dan apakah ada cara agar saya dapat melakukannya ? Maksudku, apt-get apa yang menginstalnya, jadi ia tahu tentang mereka, jadi mengapa ia memilih untuk meninggalkan semua versi lama?

Jawaban Terbaik

Untuk menjawab alasannya, lihat file /etc/apt/apt.conf.d/01autoremove-kernels

Seperti yang Anda lihat, apt diberitahu untuk tidak pernah menghapus kernel secara otomatis , seperti yang diperintahkan oleh file (skrip) 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, jadi Anda akan selalu memiliki 2 opsi tersebut ditambah apa pun yang terbaru.

Pembaruan:

Dalam /etc/kernel/postinst.d/apt-auto-removal ada bagian ini:

if [ "$latest_version" != "$installed_version" ] 
   || [ "$latest_version" != "$running_version" ] 
   || [ "$installed_version" != "$running_version" ]
then
        # We have at least two kernels that we have reason to think the
        # user wants, so don't save the second-newest version.
        previous_version=
fi

Jadi jika Anda membandingkan output dari 01autoremove-kernels file dan uname -r Anda akan menyadari bahwa kernel yang sedang berjalan dan yang terbaru sebelumnya, disimpan agar tidak pernah dihapus oleh skrip itu. Ternyata ada file lain /etc/apt/apt.conf.d/01autoremove , di mana ada garis:

    APT
    {
      NeverAutoRemove
      {
            "^firmware-linux.*";
            "^linux-firmware$";
      };
  VersionedKernelPackages
  {
        # linux kernels
        "linux-image";
        "linux-headers";
        "linux-image-extra";
        "linux-signed-image";
        # kfreebsd kernels
        "kfreebsd-image";
        "kfreebsd-headers";
        # hurd kernels
        "gnumach-image";
        # (out-of-tree) modules
        ".*-modules";
        ".*-kernel";
        "linux-backports-modules-.*";
        # tools
        "linux-tools";
  };

Jadi Anda dapat mengomentari ini, dan itu akan memungkinkan Anda untuk menghapus kernel secara otomatis dengan apt-autoremove , meskipun ingat – lakukan ini dengan risiko Anda sendiri


Ubuntu
  1. Mengapa The Tilde (~) Tidak Memperluas Di Dalam Kutipan Ganda?

  2. Mengapa Skrip Bash Tidak Mengenal Alias?

  3. Mengapa ~/.bash_profile Tidak Berfungsi?

  1. Grep – Mengapa Kurung Dalam Pola Grep Menghapus Proses Grep Dari Hasil Ps?

  2. Saya Menjalankan `Sudo Apt-get Remove Python2.7`, Bisakah Saya Mengembalikan Ubuntu Sekarang?

  3. Mengapa Pemisahan Update Dan Upgrade Bahkan Ada?

  1. Linux – Mengapa Apt Autoremove Tidak Menghapus Semua Paket Kernel Lama Sekaligus?

  2. Apt-get Setara dengan "aptitude Mengapa"?

  3. Mengapa Ubuntu Membutuhkan Dua Kernel?