Ubuntu kullanıyorsan güncelleme yapmak genelde sorunsuzdur. Ama bazen öyle bir an gelir ki, “bu paket şu haliyle gayet iyi, sakın dokunma” dersin. Yeni sürüm çıkar ama senin için risklidir. İşte tam bu noktada paketi hold etmek, yani güncellemeden bilerek geri tutmak devreye girer.
Ben bunu özellikle canlı sistemlerde, sunucularda ya da “çalışıyorsa kurcalama” dediğim paketlerde sıkça kullanıyorum.
Neden Bir Paketi Hold Edersin?
Şu senaryolar tanıdık olabilir:
- Yeni sürüm çıktı ama eski sürüm taş gibi çalışıyor
- Güncelleme sonrası konfigürasyon bozulmasın istiyorsun
- Bağımlı bir uygulama sadece belirli sürümle uyumlu
- Test ortamında denemeden prod’a almak istemiyorsun
Böyle durumlarda pakete küçük bir “yerinde say” demek çok işe yarıyor.
En Pratik Yöntem: apt-mark
Ubuntu’da bu işin en temiz yolu apt-mark.
Paketi Güncellemeden Alıkoymak
sudo apt-mark hold paket-adi
Örnek:
sudo apt-mark hold nginx
Bundan sonra sistem güncellemesi yapsan bile nginx olduğu yerde kalır.
Hold’u Kaldırmak
Fikrini değiştirdin diyelim:
sudo apt-mark unhold paket-adi
Hold’lu Paketleri Görmek
Sistemde hangi paketleri tutmuşum diye bakmak için:
apt-mark showhold
Uzun liste varsa grep ile süzebilirsin:
apt-mark showhold | grep nginx
Alternatif Yol: dpkg ile
Biraz daha “eski usul” ama hâlâ çalışır.
Hold Etmek
echo "paket-adi hold" | sudo dpkg --set-selections
Hold’dan Çıkarmak
echo "paket-adi install" | sudo dpkg --set-selections
Kontrol etmek için:
dpkg --get-selections | grep paket-adi
Ben şahsen günlük kullanımda apt-mark tercih ediyorum; daha net ve temiz.
Daha İnce Ayar: Belirli Sürüme Sabitleme (APT Pinning)
Bazen tamamen kilitlemek yerine “şu sürüm aralığının dışına çıkma” demek istersin.
Bunun için /etc/apt/preferences.d/ altına küçük bir dosya bırakıp şöyle bir tanım yapabilirsin:
Package: nginx Pin: version 1.18.* Pin-Priority: 1001
Bu ayarla paket sadece 1.18 serisinde kalır, üstüne çıkmaz. Biraz daha teknik ama kontrol sende olur.
Küçük Ama İşe Yarar Notlar
apt upgradesırasında “geri tutulan paketler” uyarısı görüyorsan, sebebi büyük ihtimalle hold’dur- Hold, otomatik güncellemeyi durdurur ama istersen manuel güncelleme hâlâ mümkün
- Güvenlik güncellemeleri için arada bir hold’lu paketleri gözden geçirmek iyi fikir
Kapanış
Benim için paket hold etmek, özellikle sunucularda beklenmedik sürprizleri önleyen küçük ama etkili bir alışkanlık.
Ama unutma: Hold bir “geçici çözüm”. Ara sıra kontrol edip neyi neden tuttuğunu hatırlamak her zaman faydalı.