apt komutları: Ubuntu ve Debian'da paket kurma, güncelleme ve silme
apt, Ubuntu ve Debian'ın paket yöneticisidir: sudo apt update paket listelerini günceller, sudo apt upgrade güncellemeleri kurar, sudo apt install ad paketi kurar, sudo apt remove onu siler (purge ile yapılandırma dosyalarıyla birlikte), apt autoremove ise gereksiz bağımlılıkları temizler. Paket aramak için apt search ve apt show, bozuk bağımlılıkları onarmak için sudo apt --fix-broken install kullanılır.
apt, Ubuntu, Debian ve bunların türevlerinin (Linux Mint, Pop!_OS) standart paket yöneticisidir. Programları depolardan indirir, bağımlılıklarını kendisi getirir ve sistemi tek komutla günceller. Aşağıda günlük işte ihtiyaç duyulan tüm apt komutları görevlere göre gruplanmış, bunlara tipik hatalar ve çözümleri eklenmiştir.
apt nasıl çalışır
Paket, programı, meta verilerini ve bağımlılık listesini içeren .deb arşividir. Depolar, paketlerin bulunduğu sunuculardır; adresleri /etc/apt/sources.list ve /etc/apt/sources.list.d/ dizininde yazılıdır. apt, kullanılabilir paketlerin listesinin yerel bir kopyasını tutar ve kurulumda bu kopyaya bakar; bu yüzden onu düzenli olarak güncellemek gerekir.
apt, paketleri açan ve kaydeden ama bağımlılıkları çözemeyen düşük seviyeli dpkg'yi çağırır. apt-get ve apt-cache aynı işlevselliğe sahip eski arayüzdür: çıktısı sabittir, betiklerde kullanışlıdır. apt ise insanlar için daha yeni bir sarmalayıcıdır: ilerleme çubuğu, renk ve daha kısa komutlar sunar.
Sistemi değiştiren komutların neredeyse hepsi yönetici hakları gerektirir, bu yüzden sudo ile çalıştırılır. Arama ve bilgi görüntüleme ise bu olmadan da çalışır.
Özet: temel apt komutları
| Komut | Ne yapar |
|---|---|
sudo apt update | depolardaki paket listelerini günceller |
sudo apt upgrade | güncellemeleri kurar, paket silmeden |
sudo apt full-upgrade | gerekirse paketleri silerek veya değiştirerek günceller |
sudo apt install paket | paketi bağımlılıklarıyla birlikte kurar |
sudo apt reinstall paket | paketi yeniden kurar |
sudo apt remove paket | paketi siler, yapılandırmayı bırakır |
sudo apt purge paket | paketi sistem yapılandırmalarıyla birlikte siler |
sudo apt autoremove | artık gereksiz olan bağımlılıkları siler |
apt search kelime | adı ve açıklamasına göre paket arar |
apt show paket | açıklama, sürüm, bağımlılıklar, boyut |
apt list --installed | kurulu paketlerin listesi |
apt list --upgradable | güncellenebilir olanlar |
apt policy paket | kurulu ve mevcut sürümler, kaynaklar |
sudo apt clean | indirilen .deb önbelleğini temizler |
sudo apt --fix-broken install | bozuk bağımlılıkları onarır |
apt update ve apt upgrade: sistem nasıl güncellenir
Bunlar iki farklı işlemdir ve sık karıştırılır. apt update hiçbir şey kurmaz: yalnızca paket listelerinin güncel halini indirir. apt upgrade ise bu listelere dayanarak kurulu programların yeni sürümlerini kurar.
$ sudo apt update
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Get:2 http://security.ubuntu.com/ubuntu noble-security InRelease [126 kB]
...
12 packages can be upgraded. Run 'apt list --upgradable' to see them.
$ apt list --upgradable
$ sudo apt upgrade
Sunucu için olağan kullanım, tek satırda ve onayı otomatik vererek:
sudo apt update && sudo apt upgrade -y
upgrade ile full-upgrade arasındaki fark
apt upgrade yeni bağımlılıklar kurabilir ama kurulu paketleri asla silmez. Güncelleme bir şeyin silinmesini gerektiriyorsa (örneğin çekirdek veya bir kütüphanenin sürüm değişiminde), bu paketler "ertelenir" — çıktıda The following packages have been kept back satırı görünür. apt full-upgrade (apt-get dist-upgrade'in karşılığı) silmelere izin verir ve güncellemeyi tamamlar. Çalıştırmadan önce apt'nin neyi sileceğini dikkatle okuyun.
Yalnızca bir paketi güncellemek
sudo apt install --only-upgrade nginx
Paket kurulu değilse --only-upgrade ile komut onu kurmaz; bu, yanlışlıkla kurulmasını önler.
apt install: paket kurma
sudo apt install nginx # tek paket
sudo apt install git curl htop # birkaç paket birden
sudo apt install -y docker.io # Y/n sorusu olmadan
sudo apt install nginx=1.24.0-2ubuntu7 # belirli bir sürüm
sudo apt install --no-install-recommends ffmpeg # önerilen paketler olmadan
sudo apt install ./google-chrome-stable_current_amd64.deb # yerel .deb
Kurulumda apt, hangi paketlerin ekleneceğini ve ne kadar yer kaplayacağını gösterir, onay ister. -y bayrağı otomatik "evet" verir — betiklerde ve Dockerfile'larda kullanışlıdır, ama etkileşimli çalışmada listeyi okumak daha iyidir.
apt varsayılan olarak yalnızca zorunlu bağımlılıkları (Depends) değil, önerilen paketleri de (Recommends) kurar. Sunucularda ve konteynerlerde --no-install-recommends boyutu belirgin biçimde küçültür.
.deb dosyasını kurmak: apt mi dpkg -i mi
İndirilen .deb dosyasını apt install ./dosya.deb ile kurmak daha iyidir — yol mutlaka ./ ile başlamalı ya da tam yol olmalıdır; aksi halde apt aynı adlı paketi depoda arar. dpkg -i'den farklı olarak apt eksik bağımlılıkları kendisi indirir. Paketi dpkg ile kurup bağımlılık hatası aldıysanız, bunu sudo apt --fix-broken install düzeltir.
sudo dpkg -i package.deb
sudo apt --fix-broken install
apt remove, purge ve autoremove: paket silme
| Komut | Program | /etc içindeki yapılandırmalar | Bağımlılıklar |
|---|---|---|---|
apt remove | silinir | kalır | kalır |
apt purge | silinir | silinir | kalır |
apt autoremove | — | — | gereksizler silinir |
sudo apt remove nginx
sudo apt purge nginx # aynısı + yapılandırmalar
sudo apt autoremove # bağımlılıkların artıkları
sudo apt autoremove --purge # artıklar, yapılandırmalarıyla birlikte
remove, programı geri getirmeyi planlıyorsanız ve ayarlarını korumak istiyorsanız uygundur. purge ise sıfırdan tam yeniden kurulum için kullanılır. Dikkat: kullanıcının ev dizinindeki dosyaları (örneğin ~/.config) hiçbir komut silmez.
Silinmiş ama yapılandırma dosyaları kalmış paketleri bulmak için — durumları rc olanlar:
dpkg -l | grep '^rc'
Paket arama ve bilgi alma
apt search postgresql # ad ve açıklamaya göre arama
apt search --names-only '^php8' # yalnızca ada göre, düzenli ifadeyle
apt show htop # sürüm, boyut, bağımlılıklar, açıklama
apt policy docker.io # hangi sürümler var ve nereden
apt list --installed | grep python3
apt-cache depends curl # paket neye bağlı
apt-cache rdepends libssl3 # paketi kimler kullanıyor
Bir dosya hangi pakete ait
$ dpkg -S /usr/bin/curl
curl: /usr/bin/curl
$ dpkg -L curl # paketin kurduğu dosyalar
Komut sistemde yoksa, Ubuntu onu çalıştırmaya çalıştığınızda gerekli paketi kendisi önerir (Command 'tree' not found, but can be installed with: sudo apt install tree). Kurulu olmayan paketlerin dosyalarında arama için apt-file aracı vardır: sudo apt-file update sonrasında apt-file search bin/dig.
Sürüm sabitleme: apt-mark hold
Bazen bir paketin güncellenmemesi gerekir — örneğin üretimdeki bir DBMS veya çekirdek sürümü yalnızca elle değiştirilir. Bunun için paket "dondurulur":
sudo apt-mark hold postgresql-16
apt-mark showhold
sudo apt-mark unhold postgresql-16
Bir diğer faydalı çift apt-mark manual ve apt-mark auto'dur. Bağımlılık olarak kurulan paketler otomatik olarak işaretlenir ve gereksiz kaldıklarında autoremove kapsamına girer. manual işareti paketi bu durumdan korur.
Depolar: nasıl eklenir ve nerede durur
Kaynak listesi /etc/apt/sources.list ve /etc/apt/sources.list.d/*.list dosyalarındadır. Ubuntu 24.04 ve Debian 12+ sürümlerinde giderek daha çok deb822 biçimi kullanılır: .sources uzantılı dosyalar (örneğin /etc/apt/sources.list.d/ubuntu.sources).
Anahtarlı üçüncü taraf deposu
Modern yöntem, depo anahtarını ayrı tutmak ve signed-by ile bağlamaktır. apt-key komutu eskidir ve yeni sürümlerde kaldırılmıştır.
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update
sudo apt install docker-ce
Ubuntu'da PPA
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo add-apt-repository --remove ppa:deadsnakes/ppa
PPA'lar Launchpad üzerindeki kişisel depolardır. Yalnızca güvendiklerinizi ekleyin: bu paketler root haklarıyla kurulur.
Önbellek ve disk alanı
İndirilen paketler /var/cache/apt/archives/ dizininde kalır. Küçük disklerde ve Docker imajlarında önbelleği temizlemek gerekir.
du -sh /var/cache/apt/archives
sudo apt clean # tüm .deb önbelleğini sil
sudo apt autoclean # yalnızca eski sürümleri sil
Dockerfile'da kurulum tek katmanda yazılır ve paket listeleri hemen silinir:
RUN apt-get update \
&& apt-get install -y --no-install-recommends curl ca-certificates \
&& rm -rf /var/lib/apt/lists/*
Betiklerde apt yerine apt-get kullanılır: apt'nin arayüzü kararlı değildir ve bunu açıkça uyarır (WARNING: apt does not have a stable CLI interface). Kurulum sırasında soru sorulmaması için DEBIAN_FRONTEND=noninteractive eklenir.
Tipik apt hataları ve çözümleri
Could not get lock /var/lib/dpkg/lock-frontend
Paketlerle başka bir süreç çalışıyor: ikinci bir terminalde apt, "Uygulama Merkezi" veya arka plandaki unattended-upgrades otomatik güncellemeleri. Birkaç dakika bekleyin ve kilidi kimin tuttuğunu kontrol edin:
ps aux | grep -E 'apt|dpkg'
Süreç hâlâ çalışırken kilit dosyalarını elle silmeyin: yarıda kalan bir kurulum sistemi tutarsız bırakabilir. Süreç takılmış veya öldürülmüşse, bittikten sonra sudo dpkg --configure -a çalıştırın.
Unable to locate package
apt paketi bulamadı. En sık nedenler: taze bir sistemde sudo apt update yapılmamış, ad yanlış yazılmış veya paket kapalı bir bileşendedir (Ubuntu'da universe). Bileşeni etkinleştirmek için: sudo add-apt-repository universe.
Unmet dependencies / held broken packages
Bağımlılıklar uyuşmuyor — genellikle elle kurulmuş bir .deb dosyasından veya farklı dağıtım sürümlerinin depolarını karıştırmaktan sonra.
sudo apt --fix-broken install
sudo dpkg --configure -a
apt policy sorunlu-paket
dpkg was interrupted
Kurulum yarıda kesildi (terminal kapandı, elektrik gitti). Mesaj çözümü açıkça söyler: sudo dpkg --configure -a.
apt update sırasında NO_PUBKEY
Üçüncü taraf deposunun imza anahtarı yok veya eski. Anahtarı projenin sitesinden /etc/apt/keyrings/ dizinine indirin ve yukarıdaki Docker örneğinde olduğu gibi signed-by ile bağlayın.
Otomatik güvenlik güncellemeleri
Ubuntu Server'da varsayılan olarak unattended-upgrades paketi bulunur; güvenlik güncellemelerini kendisi kurar. Kontrol edip etkinleştirmek için:
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
cat /var/log/unattended-upgrades/unattended-upgrades.log
Güncellemeden sonra yeniden başlatma gerekip gerekmediğini /var/run/reboot-required dosyası gösterir: varsa, çekirdek veya önemli kütüphaneler güncellenmiştir.
Sonuç
Temel apt komutları kısa bir döngüye sığar: her işlemden önce update, kurmak için install, güncellemek için upgrade, silmek için remove veya purge, temizlik için autoremove. Sürümler için apt policy ve apt-mark hold, bozulmalar için --fix-broken install ve dpkg --configure -a vardır; betiklerde apt-get kullanın. Paket yönetimi kurstaki Linux uygulamalarında ele alınır.
Sık sorulan sorular
apt ile apt-get arasındaki fark nedir?
Her ikisi de aynı paket sistemine ait arayüzlerdir. apt terminalde çalışmak için daha kullanışlıdır (ilerleme, renk, kısa komutlar); apt-get kararlı çıktısı nedeniyle betiklerde ve Dockerfile'larda önerilir.
Her kurulumdan önce apt update çalıştırmak gerekir mi?
Listeler uzun süredir güncellenmediyse evet: aksi halde apt paketi bulamayabilir ya da artık aynada bulunmayan bir sürümü indirmeye çalışıp 404 hatası verebilir.
apt kurulum ve silme geçmişini nerede görürüm?
Geçmiş /var/log/apt/history.log dosyasına yazılır (eski kayıtlar history.log.N.gz arşivlerinde), ayrıntılı dpkg günlüğü ise /var/log/dpkg.log dosyasındadır.
Bir paketi önceki sürüme nasıl geri alırım?
Mevcut sürümleri apt policy paket ile görün, istediğinizi sudo apt install paket=sürüm ile kurun ve bir sonraki güncellemenin yeni sürümü geri getirmemesi için apt-mark hold ile sabitleyin.
apt, CentOS veya Fedora'da kullanılabilir mi?
Hayır, orada farklı bir paket biçimi (rpm) ve kendi yöneticileri vardır: dnf ve yum. apt yalnızca Debian, Ubuntu ve bunlardan türeyen dağıtımlarda çalışır.
Bu konu “Linux: с нуля до уверенного администрирования” kursunda uygulamalı olarak ayrıntılı işleniyor.
Kursa git