Kopya kâğıdı

apt komutları: Ubuntu ve Debian'da paket kurma, güncelleme ve silme

Güncellendi: · Skillaria.Top

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ı

KomutNe yapar
sudo apt updatedepolardaki paket listelerini günceller
sudo apt upgradegüncellemeleri kurar, paket silmeden
sudo apt full-upgradegerekirse paketleri silerek veya değiştirerek günceller
sudo apt install paketpaketi bağımlılıklarıyla birlikte kurar
sudo apt reinstall paketpaketi yeniden kurar
sudo apt remove paketpaketi siler, yapılandırmayı bırakır
sudo apt purge paketpaketi sistem yapılandırmalarıyla birlikte siler
sudo apt autoremoveartık gereksiz olan bağımlılıkları siler
apt search kelimeadı ve açıklamasına göre paket arar
apt show paketaçıklama, sürüm, bağımlılıklar, boyut
apt list --installedkurulu paketlerin listesi
apt list --upgradablegüncellenebilir olanlar
apt policy paketkurulu ve mevcut sürümler, kaynaklar
sudo apt cleanindirilen .deb önbelleğini temizler
sudo apt --fix-broken installbozuk 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

KomutProgram/etc içindeki yapılandırmalarBağımlılıklar
apt removesilinirkalırkalır
apt purgesilinirsilinirkalı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 konuyu videoyla öğrenin

Bu konu “Linux: с нуля до уверенного администрирования” kursunda uygulamalı olarak ayrıntılı işleniyor.

Kursa git