Debian stable kullanmanın en büyük avantajı kararlılıktır. Ama bu kararlılık bazen bir bedel getirir: eski yazılım sürümleri. Production ortamında Debian 12 Bookworm çalıştırıyorsunuz, her şey güzel gidiyor, ta ki bir geliştirici gelip “Bizim uygulama PostgreSQL 16 istiyor ama repoda 15 var” diyene kadar. İşte tam bu noktada Debian Backports devreye giriyor.
Backport Nedir, Neden Var?
Debian’ın release döngüsü oldukça yavaştır. Stable bir sürüm çıktığında paketler dondurulur ve yalnızca güvenlik güncellemeleri gelir. Bu yaklaşım sunucu stabilitesi için mükemmeldir. Ancak gerçek dünyada zaman zaman daha yeni bir yazılım sürümüne ihtiyaç duyarsınız ve sisteminizin geri kalanını riske atmadan bunu yapmak istersiniz.
Backport tam olarak bunu sağlar. Yeni Debian sürümünden (testing veya unstable) alınan paket, mevcut stable ortamına uygun şekilde yeniden derlenir. Yani Debian Bookworm üzerinde çalışan bir kernel, libc ve kütüphanelerle uyumlu hale getirilen daha yeni bir yazılım elde edersiniz. Resmi bir Debian projesidir, topluluk tarafından yönetilir ve çoğu durumda production ortamında güvenle kullanılabilir.
Backports’u şöyle düşünebilirsiniz: eski evinizde yaşıyorsunuz ama mutfağınızı yenileduniz. Evin temel yapısı değişmedi, sadece mutfak modernleşti.
Backports Reposunu Aktifleştirmek
Önce mevcut Debian sürümünüzü kontrol edin:
cat /etc/os-release
lsb_release -cs
Bookworm için backports reposunu eklemek oldukça basittir. /etc/apt/sources.list.d/ dizinine ayrı bir dosya oluşturmanızı öneririm, bu sayede yönetimi çok daha kolay olur:
echo "deb http://deb.debian.org/debian bookworm-backports main contrib non-free" |
sudo tee /etc/apt/sources.list.d/backports.list
Eğer Bullseye kullanıyorsanız bookworm-backports yerine bullseye-backports yazmanız yeterli. Repoyu ekledikten sonra paket listesini güncelleyin:
sudo apt update
Hata almadan geçtiyseniz artık backports kullanabilirsiniz. GPG anahtarı konusunda endişelenmenize gerek yok çünkü debian.org alan adını kullandığınızda zaten sisteminizde kayıtlı olan Debian GPG anahtarları geçerliliğini korur.
Backports Paketlerini Listeleme ve Arama
Backports reposunda hangi paketlerin bulunduğunu görmek için:
apt-cache policy | grep backports
apt list -t bookworm-backports 2>/dev/null | head -50
Belirli bir paketi backports’ta aramak için:
apt-cache policy postgresql
apt-cache search -t bookworm-backports nginx
apt-cache policy komutu size çok değerli bilgi verir. Paketin hangi versiyonunun hangi repodan geldiğini, öncelik değerlerini (pin priority) gösterir. Örnek bir çıktı şöyle görünür:
apt-cache policy nginx
# nginx:
# Installed: 1.22.1-9
# Candidate: 1.22.1-9
# Version table:
# *** 1.22.1-9 500
# 500 http://deb.debian.org/debian bookworm/main amd64
# 1.24.0-1~bpo12+1 100
# 100 http://deb.debian.org/debian bookworm-backports/main amd64
Burada dikkat etmeniz gereken şey pin priority değerleri. Standart stable repo 500 önceliğe sahipken, backports 100 önceliğe sahiptir. Bu kasıtlıdır. APT, backports paketini otomatik olarak seçmez, siz açıkça belirtmediğiniz sürece stable versiyonu kullanır. Böylece bir apt upgrade yaptığınızda tüm paketleriniz birden backports versiyonuna geçmez.
Paket Kurulumu: Doğru Sözdizimi
Backports’tan bir paket kurmak için -t parametresini kullanmanız gerekir:
sudo apt install -t bookworm-backports paket-adi
Birden fazla paketi aynı anda kurabilirsiniz:
sudo apt install -t bookworm-backports postgresql-16 postgresql-client-16 postgresql-contrib-16
Peki sadece belirli bir paketi backports’tan kurup bağımlılıklarını stable’dan almak isterseniz? APT bunu genellikle otomatik halleder ama bazen çakışmalar çıkabilir. Bu durumda ne olacağını önce simüle etmek iyi bir alışkanlıktır:
sudo apt install -t bookworm-backports --simulate postgresql-16
--simulate veya -s parametresi paketi kurmaz, sadece ne yapılacağını gösterir. Bağımlılık çakışmalarını önceden görmek için son derece faydalıdır.
Gerçek Dünya Senaryosu 1: PostgreSQL Güncellemesi
Diyelim ki Debian Bookworm üzerinde PostgreSQL 15 çalışıyor ve uygulamanız PostgreSQL 16’nın bazı özelliklerini gerektiriyor. Bu çok sık karşılaşılan bir durum.
Mevcut durumu kontrol edin:
psql --version
pg_lsclusters
Backports’ta PostgreSQL 16 olup olmadığına bakın:
apt-cache policy postgresql-16
Kuruluma geçmeden önce mevcut veritabanınızı yedekleyin. Bu adımı atlamayın:
sudo -u postgres pg_dumpall > /tmp/postgres_backup_$(date +%Y%m%d).sql
Şimdi PostgreSQL 16’yı backports’tan kurun:
sudo apt install -t bookworm-backports postgresql-16 postgresql-client-16
Kurulum tamamlandığında iki PostgreSQL kümesi yan yana çalışıyor olacak. Mevcut veritabanınızı yeni versiyona geçirmek için:
sudo pg_dropcluster 16 main --stop
sudo pg_upgradecluster 15 main
sudo pg_dropcluster 15 main
Bu senaryo gerçek hayatta o kadar sık yaşanır ki bazı sysadminler backports’u sadece PostgreSQL için bile olsa aktif tutar.
Gerçek Dünya Senaryosu 2: Daha Yeni Kernel Kullanımı
Donanım uyumsuzluğu yaşayan sunucularda daha yeni bir kernel büyük fark yaratabilir. Özellikle yeni nesil NVMe diskler, özel ağ kartları veya ARM tabanlı sunucularda bu ihtiyaç sıkça ortaya çıkar.
Mevcut kernel versiyonunuzu görün:
uname -r
Backports’taki kernel paketlerini listeleyin:
apt-cache search -t bookworm-backports linux-image
Backports kernelini kurun:
sudo apt install -t bookworm-backports linux-image-amd64 linux-headers-amd64
Kurulum sonrası GRUB otomatik güncellenir. Sunucuyu yeniden başlatın ve yeni kernel ile açılıp açılmadığını kontrol edin:
sudo reboot
# Sistem ayağa kalktıktan sonra:
uname -r
Eğer yeni kernel sorun çıkarırsa GRUB menüsünden eski kerneli seçerek geri dönebilirsiniz. Bu yüzden eski kernel paketini hemen silmeyin, birkaç gün bekleyin.
APT Pinning ile İnce Ayar
Backports’un gerçek gücü APT pinning ile ortaya çıkar. Pin sistemi sayesinde hangi paketin hangi repodan geleceğini çok hassas bir şekilde kontrol edebilirsiniz.
Backports için global bir pin oluşturmak istemiyorsanız, sadece belirli paketler için pin tanımlayabilirsiniz. /etc/apt/preferences.d/ dizinine yeni bir dosya oluşturun:
sudo nano /etc/apt/preferences.d/backports-pins
Dosya içeriği:
# PostgreSQL her zaman backports'tan gelsin
Package: postgresql* libpq*
Pin: release a=bookworm-backports
Pin-Priority: 900
# Kernel backports'tan gelsin ama otomatik yükseltme yapmasın
Package: linux-image* linux-headers*
Pin: release a=bookworm-backports
Pin-Priority: 600
Pin priority değerlerinin ne anlama geldiğini bilmek önemlidir:
- 1000 ve üzeri: Paketin sürümü düşürülse bile bu repoyu kullan
- 990: Hedef release uyuşsa bile bu repoyu tercih et
- 500: Normal öncelik (stable bu değere sahip)
- 100: Backports’un varsayılan değeri, yalnızca açıkça belirtilince kullan
- 1’den küçük: Otomatik kurulumu engelle
- 0 ve altı: Hiç kurma
Mevcut pin durumunu görmek için:
apt-cache policy
apt-cache policy postgresql
Backports Güncellemelerini Yönetmek
Backports reposunu ekledikten sonra apt upgrade çalıştırdığınızda backports paketleri otomatik olarak güncellenmez, çünkü pin priority 100’dür. Ancak açıkça backports’tan kurduğunuz paketler güncellenecektir.
Sadece backports paketlerinizi güncellemek isterseniz:
sudo apt upgrade -t bookworm-backports
Bu komut dikkatli kullanılmalıdır. Backports’ta bulunan tüm paketlerin yeni versiyonunu kurmaya çalışabilir. Daha güvenli bir yaklaşım spesifik paketleri güncellemektir:
sudo apt install -t bookworm-backports postgresql-16
APT zaten kurulu olan paketi görünce güncelleyecektir.
Hangi paketlerin backports’tan geldiğini takip etmek için:
apt list --installed 2>/dev/null | grep bookworm-backports
Bu çıktıyı cron job ile bir log dosyasına yazdırıp zaman zaman gözden geçirmek iyi bir alışkanlıktır. Özellikle birden fazla sysadmin’in çalıştığı ortamlarda kimin ne kurduğunu takip etmek kritik önem taşır.
Gerçek Dünya Senaryosu 3: Certbot ve Let’s Encrypt
Certbot’un stable Debian reposundaki versiyonu bazen Let’s Encrypt’in yeni özelliklerini desteklemeyebilir. Backports burada da kurtarıcı olabilir.
Mevcut certbot durumunu kontrol edin:
certbot --version
Backports’taki versiyonla karşılaştırın:
apt-cache policy certbot
Güncelleme yapmadan önce mevcut sertifika durumunu kaydedin:
sudo certbot certificates
Backports’tan certbot kurulumu:
sudo apt install -t bookworm-backports certbot python3-certbot-nginx
Kurulum sonrası sertifikalarınızın hala yerinde olduğunu doğrulayın:
sudo certbot certificates
sudo nginx -t
Backports Kullanırken Dikkat Edilmesi Gerekenler
Backports harika bir araçtır ama her araç gibi doğru kullanılması gerekir.
Bağımlılık Zinciri: Backports’tan kurduğunuz bir paket, beraberinde diğer backport paketlerini de getirebilir. Bu genellikle sorun çıkarmaz ama dikkat etmezseniz fark etmeden sisteminizin büyük bir kısmını backports’a taşımış olabilirsiniz. Her kurulum öncesi --simulate kullanın.
Test Etme: Backports paketleri stable kadar kapsamlı test edilmez. Production’a almadan önce mutlaka staging ortamında deneyin. Bir Docker container veya VM üzerinde test etmek iki saatinizi alır ama olası bir production arızasını önler.
Dönüş Yolu: Bir paketi backports versiyonundan stable versiyonuna geri almak (downgrade) her zaman kolay değildir. Özellikle veritabanı paketleri için bu neredeyse imkansızdır. Bu yüzden backports paketini kurmadan önce “geri dönmem gerekirse ne yaparım?” sorusunu sormanız gerekir.
Tümünü Backports Yapmayın: Bazı sysadminler “backports varsa neden kullanmayalım?” diye düşünür ve tüm sistemi backports’a taşır. Bu yaklaşım Debian stable kullanmanın temel amacını ortadan kaldırır. Backports’u sadece gerçekten ihtiyaç duyduğunuzda kullanın.
Paket Kombinasyonları: Farklı kütüphanelerin farklı versiyonları çakışabilir. Özellikle Python, Ruby veya Node.js bağımlılıklarında bu tür sorunlar sık yaşanır. Bu konuda çok dikkatli olun.
Paket Bağımlılık Sorunlarını Gidermek
Bazen backports paketi kurmaya çalıştığınızda şöyle bir hata alırsınız:
The following packages have unmet dependencies:
paket-adi : Depends: libsomething (>= 2.0) but 1.8 is to be installed
Bu durumda birkaç yaklaşım deneyebilirsiniz. Önce bağımlılığın da backports’ta olup olmadığını kontrol edin:
apt-cache policy libsomething
Eğer bağımlılık da backports’ta varsa ve uyumlu versiyon mevcutsa:
sudo apt install -t bookworm-backports paket-adi libsomething
Eğer hala çözüm bulamıyorsanız aptitude aracı daha detaylı çözüm önerileri sunar:
sudo apt install aptitude
sudo aptitude install -t bookworm-backports paket-adi
Aptitude interaktif olarak çeşitli çözüm alternatifleri sunar ve seçim yapmanıza imkan tanır.
Monitoring ve Logging
Backports paketlerini içeren bir sistemi izlemek için birkaç basit araç kullanabilirsiniz.
Haftalık olarak çalışacak bir script ile backports paketlerini kayıt altına alın:
#!/bin/bash
# /usr/local/bin/check-backports.sh
LOG_FILE="/var/log/backports-audit.log"
DATE=$(date '+%Y-%m-%d %H:%M:%S')
echo "=== Backports Audit: $DATE ===" >> "$LOG_FILE"
apt list --installed 2>/dev/null | grep backports >> "$LOG_FILE"
echo "" >> "$LOG_FILE"
Bu scripti cron’a ekleyin:
sudo chmod +x /usr/local/bin/check-backports.sh
echo "0 9 * * 1 root /usr/local/bin/check-backports.sh" | sudo tee /etc/cron.d/backports-audit
Ayrıca unattended-upgrades kullanıyorsanız backports paketleri için ayrı bir kural tanımlayabilirsiniz. /etc/apt/apt.conf.d/50unattended-upgrades dosyasına ekleyin:
Unattended-Upgrade::Origins-Pattern {
"origin=Debian,codename=${distro_codename}-backports,label=Debian Backports";
};
Bu satırı eklemezseniz backports paketleri otomatik güncellenmez. Eklerseniz güvenlik güncellemeleri gibi otomatik uygulanır. Bu tercihi ortamınıza göre yapın.
Backports ile Çalışırken Günlük Kullanım İpuçları
Sistem genelinde backports durumunu hızlıca görmek için bir alias tanımlayabilirsiniz. ~/.bashrc veya /etc/bash.bashrc dosyasına ekleyin:
alias bp-list='apt list --installed 2>/dev/null | grep backports'
alias bp-search='apt-cache policy'
alias bp-install='apt install -t bookworm-backports'
Bu alias’ları ekledikten sonra:
source ~/.bashrc
bp-list # kurulu backports paketlerini göster
bp-search nginx # nginx'in repo durumunu göster
Ayrıca bir paketin tam olarak hangi repodan geldiğini görmek için:
dpkg -l paket-adi
apt-cache show paket-adi | grep -E "Version|Filename"
Backports vs Diğer Alternatifler
Daha yeni yazılım sürümlerine ulaşmak için backports dışında başka yollar da var. Bu alternatifleri değerlendirmek sizi doğru kararı vermeye yönlendirir.
- Snap paketleri: Sandbox içinde çalışır, bağımlılık sorunu yaşatmaz ama performans kaybı ve disk kullanımı konusunda dezavantajları var
- Flatpak: Masaüstü uygulamaları için iyidir ama sunucu ortamında pek kullanılmaz
- Docker: Servisi container içinde çalıştırmak bazen backports’tan daha temiz bir çözümdür
- Kaynak koddan derleme: Tam kontrol sağlar ama bakım yükü ağırdır
- Üçüncü parti repolar (backports olmayan): PostgreSQL.org, nginx.org gibi resmi vendor repoları genellikle güvenlidir ama Debian reposu değildir
Backports’un avantajı Debian’ın resmi altyapısını kullanmasıdır. Güvenlik güncellemeleri takip edilir, paketler Debian standartlarına göre hazırlanır ve GPG ile imzalanır.
Sonuç
Debian Backports, stable ortamın kararlılığından ödün vermeden daha yeni yazılımlara erişmenin en güvenli ve resmi yoludur. Doğru kullanıldığında inanılmaz değer katar: PostgreSQL sürüm geçişleri, yeni kernel özellikleri, güncel certbot, daha yeni nginx versiyonları. Bunların hepsini sisteminizin geri kalanını sarsmadan elde edebilirsiniz.
Ama “backports var, kullanalım” yaklaşımından kaçının. Her backports kararı bilinçli olmalı. Neden bu paketi backports’tan kuruyorum? Stable’daki version neden yetmiyor? Geri dönmem gerekirse planım ne? Bu soruları kendinize sorduğunuzda backports’u çok daha etkili kullanırsınız.
Production sistemlerde backports kullanırken mutlaka staging’de test edin, --simulate ile ne yapılacağını görün, kurulu backports paketlerini düzenli olarak denetleyin ve mümkün olduğunca az sayıda paketi backports’tan alın. Bu prensipleri takip ettiğinizde Debian’ın kararlılığından faydalanırken modern yazılımların özelliklerini de kullanabilirsiniz.
Backports, deneyimli bir sysadmin’in araç kutusunda mutlaka bulunması gereken bir çözümdür. Doğru anda, doğru paket için kullanıldığında sisteminize gerçek bir değer katar.