Sadece linux-image-amd4 paketini buster-backports’tan kurmaya zorlamamak gerekir.
Bir paketin nereden kurulacağını incelemek için apt-cache komutunun “policy” alt komutu çok kullanışlı. Benim sistemimde hem pardus depolar, hem de buster-backports deposu tanımlı. Böyleyken:
abdullah@pardusk2:~$ apt-cache policy linux-image-amd64
linux-image-amd64:
Kurulu: 4.19+105+deb10u1
Aday: 4.19+105+deb10u1
Sürüm çizelgesi:
5.4.13-1~bpo10+1 100
100 Index of /debian buster-backports/main amd64 Packages
*** 4.19+105+deb10u1 500
500 file:/sda4-debian/data/pardusjb/archives ./ Packages
500 Index of /pardus/ ondokuz/main amd64 Packages
100 /var/lib/dpkg/status
4.19+105 500
500 Index of /pardus/ ondokuz/main amd64 Packages
4.19+104 500
500 Index of /pardus/ ondokuz/main amd64 Packages
Burada 4.19 serisi paketler pardus depolarında, 5.4 serisi paket ise backports (bpo) deposunda. Her patin yüklenebileceği adreslerin solundaki “100” , “500” gibi rakamlar o deponun önceliğini gösteriyor. En soldaki “***” ise bir kurulum veya güncelleme durumunda hangi paketin kullanılacağını gösteriyor. Görüldüğü gibi, depolarda 5.4 versiyon paket olmasına rağmen, daha geri olan 4.19+105+deb10u1 kurulum/güncellemeye aday, çünkü önceliği yüksek (500) olan paketlerin içinde en yüksek versiyon o. (4.19+104 ve 4.19+105 öncelikleri de 500, ama onların da versiyonu geri).
Bu sistemde;
~$ apt-get install linux-image-amd64
dediğiniz zaman 4.19+105+deb10u1 paketini kurar (ki zaten kurulu). Versiyon 5’i kurmak için şunu demelisiniz:
~$ apt-get -t buster-backports install linux-image-amd64
Lakin bunu asla önermem, zira o zaman sisteminiz artık Pardus çekirdeklerinin yeni versiyonlarını takip etmeyi bırakır, backports çekirdeklerinin yeni versiyonlarını takip etmeye başlar.
Neden? Çünkü linux-image-amd64 kendisi gerçek bir çekirdek paketi değil, sadece gerçek çekirdek paketine “depend” eden (onu içeri çeken) bir meta paket. Veya sanal paket de diyebiliriz.
Depolardaki mevcut tüm linux-image-amd64 paketlerine bakarsak:
~$ apt-cache show linux-image-amd64
…
Version: 5.4.13-1~bpo10+1
Depends: linux-image-5.4.0-0.bpo.3-amd64 (= 5.4.13-1~bpo10+1)
…
Version: 4.19+105+deb10u1
Depends: linux-image-4.19.0-6-amd64
…
Version: 4.19+105
Depends: linux-image-4.19.0-5-amd64
…
Version: 4.19+104
Depends: linux-image-4.19.0-4-amd64
Bende kurulu olan pakete bakarsak:
~$ dpkg -s linux-image-amd64
…
Version: 4.19+105+deb10u1
Depends: linux-image-4.19.0-6-amd64
Görülüyor ki, linux-image-amd64’ün versiyonu yükseldikçe depend ettiği gerçek çekirdek paketinin de versiyonu yükseliyor, böylece linux-image-amd64 gerçek linux çekirdek güncellemelerini takip ediyor.
Şimdi burada bir soru akla geliyor. Neden direkt kernel paketlerinin güncellemelerini takip etmek yerine linux-image-amd64 vasıtasıyla dolaylı bir takip var? Bunun sebebi, linux çekirdeklerinin versiyon numaralarının paket ismine yansıtılmış olması. Yani her yeni versiyon kernel, ayrı isme sahip ayrı bir paket olarak yayınlanıyor. linux-image-amd64 ise ismi daima aynı, versiyonu değiştikçe içeri çektiği kernel paketinin ismi değişiyor, böylece yeni kernel güncellemelerini takip edilebilir kılıyor.
Şimdi eğer bu sisteme backports’tan linux-image-amd64 kurarsam, 5.4.13-1~bpo10+1 versiyonunu kuracak ve o da daima backports depolarındaki kernel paketlerini içeri çekecek, yani sistemim Pardus çekirdeklerini takip etmeyi bırakıp backports çekirdeklerini takip etmeye başlayacak. Oysa ben onu istemiyorum.
Ben istiyormu ki, sistemim yine Pardus çekirdeklerini takip etmeye devam etsin, ama istisna olarak backports deposundan da bir adet münferit çekirdek yükleyeyim. Ben de bunu sağlamak için ne yaptım? Backports deposundan linux-image-amd64 sanal paketini değil, onun depend ettiği, içeri çektiği gerçek çekirdek paketini kurdum.
Eğer…
~$ apt-get -t buster-backports install linux-image-amd64
demiş olsaydım, linux-image-amd64 paketini zorlayarak backports’tan kurmuş olurdum (ve o da linux-image-5.4.0-0.bpo.3-amd64 gerçek çekirdeği içeri çekerdi).
Oysa ben şu komutla çekirdek yükselttim:
~$ apt-get -t buster-backports install linux-image-5.4.0-0.bpo.3-amd64
Bu sayede linux-image-amd64 yine Pardus seviyesinde kaldı (yine Pardus çekirdeklerini içeri çekmeye devam edecek), lakin bir adet münferit çekirdeği backports’tan yüklemiş oldum.
Böylece şu anki mevcut durumum:
~$ dpkg -l linux-image*
…
ii linux-image-amd64 4.19+105+deb10u1 amd64 Linux for 64-bit PCs (meta-package)
ii linux-image-4.19.0-6-amd64 4.19.67-2+deb10u2 amd64 Linux 4.19 for 64-bit PCs (signed)
ii linux-image-5.4.0-0.bpo.3-amd64 5.4.13-1~bpo10+1 amd64 Linux 5.4 for 64-bit PCs (signed)
İlki sanal paket (Pardus), ikincisi bu sanal paketin içeri çektiği gerçek çekirdek paketi (Pardus), üçüncüsü ise benim münferit olarak yüklediğim gerçek çekirdek paketi (buster-backports). Üçüncü paket, ben manuel olarak bir üst versiyonu backports’tan kurmadığım müddetçe otomatik güncellenmeyecek (alt seviye hata düzeltmeler hariç).
Eğer buster-backports deposunun öntanımlı önceliği 100 olmasaydı, ben kendim /etc/apt/preferences dosyasını editleyerek o deponun önceliğini 100’e çekecektim. Ama mevcut halde buna lüzum yok.
Konuyla alakalı olarak şu iki belgenin çok faydasını gördüm:
man apt-cache
man apt_preferences