'apt' kaç tane eski çekirdeğin korunacağına nasıl karar verir?

20

Çekirdek hizmetler (NTP, DNS, vb.) için birkaç sunucuyu yönetiyorum ve sunuculardan birinin diğerlerine 2 yerine 3 son çekirdeği koruduğu görülüyordu:

[email protected]:~$ sudo apt-get autoremove --purge
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
[email protected]:~$ dpkg -l |grep linux-image
ii  linux-image-3.13.0-51-generic       3.13.0-51.84                     amd64        Linux kernel image for version 3.13.0 on 64 bit x86 SMP
ii  linux-image-3.13.0-52-generic       3.13.0-52.85                     amd64        Linux kernel image for version 3.13.0 on 64 bit x86 SMP
ii  linux-image-3.16.0-37-generic       3.16.0-37.49~14.04.1             amd64        Linux kernel image for version 3.16.0 on 64 bit x86 SMP
ii  linux-image-extra-3.13.0-51-generic 3.13.0-51.84                     amd64        Linux kernel extra modules for version 3.13.0 on 64 bit x86 SMP
ii  linux-image-extra-3.13.0-52-generic 3.13.0-52.85                     amd64        Linux kernel extra modules for version 3.13.0 on 64 bit x86 SMP
ii  linux-image-extra-3.16.0-37-generic 3.16.0-37.49~14.04.1             amd64        Linux kernel extra modules for version 3.16.0 on 64 bit x86 SMP
ii  linux-image-generic                 3.13.0.52.59                     amd64        Generic Linux kernel image
ii  linux-image-generic-lts-utopic      3.16.0.37.29                     amd64        Generic Linux kernel image

...

[email protected]:~$ sudo apt-get autoremove --purge
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
[email protected]:~$ dpkg -l |grep linux-image
ii  linux-image-3.13.0-52-generic       3.13.0-52.85                     amd64        Linux kernel image for version 3.13.0 on 64 bit x86 SMP
ii  linux-image-3.16.0-37-generic       3.16.0-37.49~14.04.1             amd64        Linux kernel image for version 3.16.0 on 64 bit x86 SMP
ii  linux-image-extra-3.13.0-52-generic 3.13.0-52.85                     amd64        Linux kernel extra modules for version 3.13.0 on 64 bit x86 SMP
ii  linux-image-extra-3.16.0-37-generic 3.16.0-37.49~14.04.1             amd64        Linux kernel extra modules for version 3.16.0 on 64 bit x86 SMP
ii  linux-image-generic                 3.13.0.52.59                     amd64        Generic Linux kernel image
ii  linux-image-generic-lts-utopic      3.16.0.37.29                     amd64        Generic Linux kernel image

Tüm sunucular aynı şekilde korunur, ne yapabilirdim bilmiyorum, bir yerde bir parametre olmalı ama bulamıyor!

Lütfen merakımı besle! Teşekkür ederim

    
sordu ionreflex 06.05.2015 22:05

1 cevap

27

Otomatik olarak oluşturulmuş, otomatik olarak oluşturulacak dosyalara ve hangi karakterlerin saklanacağına apt-get söyleyen bir dosya var. İçerdikleri apt-get değerini söyleyen dosya /etc/apt/apt.conf.d/01autoremove-kernels 'sinden /etc/kernel/postinst.d/apt-auto-removal üretilir.

Genellikle, çekirdek güncellemelerini aldığınızda, çekirdek sürümü değiştiğinde, 3.13 ile 3.16 arasında, /etc/apt/apt.conf.d/01autoremove-kernels 'si ise 3.16* kerneli tutmak için güncelleştirilir ve sonra kaldırılacak şekilde ayarlanır. Oluşturma komut dosyası tarafından belirtilmemişse, 3.13 kernels'in tümü silinmez.

apt-auto-removal komut dosyasından:

# Author: Steve Langasek 
#
# Mark as not-for-autoremoval those kernel packages that are:
#  - the currently booted version
#  - the kernel version we've been called for
#  - the latest kernel version (determined using rules copied from the grub
#    package for deciding which kernel to boot)
#  - the second-latest kernel version, if the booted kernel version is
#    already the latest and this script is called for that same version,
#    to ensure a fallback remains available in the event the newly-installed
#    kernel at this ABI fails to boot
# In the common case, this results in exactly two kernels saved, but it can
# result in three kernels being saved.  It's better to err on the side of
# saving too many kernels than saving too few.
#
# We generate this list and save it to /etc/apt/apt.conf.d instead of marking
# packages in the database because this runs from a postinst script, and apt
# will overwrite the db when it exits.

Ancak, bu bazen onları otomatik kaldırma için işaretlemeyecektir, çünkü kodlamanın bir kısmı, bu durumun gerçekleşmesini engellemek için bazı versiyonlarda değişmiştir.

Eğer önceki kernelleri betiklere dayalı gerekli çekirdekler hariç autoremove için işaretlemek isterseniz, terminal penceresinden aşağıdaki komutu çalıştırın:

sudo apt-mark auto ^linux-image-

Ardından, apt-get autoremove komutunu çalıştırdığınızda yalnızca eski ve artık gerekmeyenler kaldırılabilir. Aşağıda örnekler verdim:

Bu birincisi, sistemdeki tüm çekirdekleri geçerli çalışan çekirdekten çıkarır.

[email protected]:/home/share# dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)//")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*//;/[0-9]/!d'
linux-headers-3.16.0-34
linux-headers-3.16.0-34-generic
linux-headers-3.16.0-36
linux-headers-3.16.0-36-generic
linux-headers-3.16.0-37
linux-headers-3.16.0-37-generic
linux-headers-4.0.0-040000
linux-headers-4.0.0-040000-generic
linux-image-3.16.0-34-generic
linux-image-3.16.0-36-generic
linux-image-3.16.0-37-generic
linux-image-4.0.0-040000-generic
linux-image-extra-3.16.0-34-generic
linux-image-extra-3.16.0-36-generic
linux-image-extra-3.16.0-37-generic

Bu, geçerli çalışan çekirdeği gösterir.

[email protected]:~$ uname -r
4.0.1-040001-generic
[email protected]:~$ sudo apt-get autoremove
[sudo] password for terrance: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
[email protected]:~$ sudo apt-mark auto ^linux-image-
linux-image-extra-3.16.0-33-generic can not be marked as it is not installed.
linux-image-extra-3.13.0-27-generic can not be marked as it is not installed.
linux-image-3.13.0-44-lowlatency can not be marked as it is not installed.
linux-image-3.13.0-27-generic can not be marked as it is not installed.
linux-image-3.16.0-31-lowlatency can not be marked as it is not installed.
linux-image-3.16.0-36-generic set to automatically installed.
linux-image-lowlatency-lts-utopic can not be marked as it is not installed.
linux-image-extra-3.13.0-36-generic can not be marked as it is not installed.
linux-image-3.13.0-36-generic can not be marked as it is not installed.
linux-image-4.0.0-040000-generic set to automatically installed.
linux-image-extra-3.13.0-45-generic can not be marked as it is not installed.
linux-image-3.16.0-25-generic can not be marked as it is not installed.

NOT: Yukarıdaki liste çok uzun oldu, bu yüzden biraz kırptım.

[email protected]:~$ sudo apt-get autoremove
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  linux-image-3.16.0-34-generic linux-image-3.16.0-36-generic
  linux-image-4.0.0-040000-generic linux-image-extra-3.16.0-34-generic
  linux-image-extra-3.16.0-36-generic
0 upgraded, 0 newly installed, 5 to remove and 0 not upgraded.
After this operation, 613 MB disk space will be freed.
Do you want to continue? [Y/n] 

Yani, bu komutları çalıştırdıktan sonra, şimdi tüm eski ama geçerli çekirdeği (4.0.1-040001-jenerik) ve bir sonraki en yeni (3.16.0-37-genel) otomatik olarak kaldırabildiğimi görebilirsiniz. .

Umarım bu yardımcı olur.

    
verilen cevap Terrance 06.05.2015 22:31

Etiketlerdeki diğer soruları oku