pacman

Arch Linux Türkiye Belgeleri sitesinden
Şuraya atla: kullan, ara

Internet.png Bu yazı ArchWiki üzerinde bulunan Pacman yazısının çevirisi temel alınarak hazırlanmıştır. Son güncelleme tarihi 15.05.2012
İngilizce olan ArchWiki sayfasında çeviri tarihinden sonra yapılan değişiklikler için bu bağlantıyı takip edin.

Sayfa özgün sayfaya göre güncelliğini yitirmişse, bu sayfayı düzenleyerek güncelleştirmeye yardım edin!

Tüm çeviri yazıları Özel:SayfayaBağlantılar/Şablon:çeviri_durumu sayfasında görüntüleyebilirsiniz.
Internet.png



SUNUM:

Pacman paket yöneticisi Arch Linux' un en büyük özelliklerinden biridir. Tek bir ikili paket biçimi ile kullanımı kolay bir derleme sistemini birleştirmektedir. (bkz makepkg ve ABS). Pacman resmi Arch depolarından veya kişisel derlemelerden gelen paketler olup olmadığına bakmaksızın kolayca paketlerinizi yönetmenizi sağlar .

Pacman paket listelerinizi ana sunucu ile eş zamanlı güncelleyerek sisteminizi güncel tutar. Bu sunucu/araç modeli ayrıca, tüm bağımlılıklarıyla birlikte paketleri yükleme ve kaldırmanıza imkan sunar.

Pacman C programlama diliyle yazıldığı için hızlı, hafif ve beceriklidir. Hızlı çalışmasını sağlayan .pkg.tar.xz paket biçimini kullanır.



Lamba.png
İpucu:
Resmi pacman paketi kullanışlı başka araçları da içerir. Mesela makepkg, pactree, vercomp ve daha fazlası. Şu komutu çalıştırarak bu araçların tam listesini görebilirsiniz :pacman -Ql pacman | grep bin


Özet
pacman Arch Linux paket yöneticisidir. Paket yöneticileri yazılımları kurmak, kaldırmak veya güncellemek için kullanılırlar. Bu yazı, temel kullanım ve sorun giderme ipuçları konularını kapsamaktadır.


Genel Bakış
Arch Linux' ta paketler makepkg aracı ve PKGBUILD olara bilinen kişisel bir derleme betiği kullanılarak oluşturulur. Bir yazılım paketlendiğinde kolayca pacman yardımıyla sisteme kurulabilirler.


İlgili konular
paket sürümünü düşürmek
pacman verimini arttırmak
pacman Önyüzleri
pacman ipuçları
pacman paket imzaları
Sss#Paket Yönetimi
Pacnew ve Pacsave Dosyaları


Kaynaklar
libalpm(3) Manual Page
pacman(8) Manual Page
pacman.conf(5) Manual Page
repo-add(8) Manual Page


Yapılandırma

Pacman yapılandırması /etc/pacman.conf dosyasında bulunur. Derinlemesine daha ayrıntılı bilgi man pacman.conf belgesinde bulunabilir.

Genel Seçenekler

Genel seçenekler [options] kısmında bulunmaktadır. Burada neler yapılabileceğini öğrenmek için el kitabını okuyun veya ön tanımlı pacman.conf dosyasına bakın.

Paketlerin yükseltilmesinin önlenmesi

Bir paketin yükseltilmesinin önüne geçmek için şu şekilde düzenleme yapın:

IgnorePkg=paket_adı

Birden çok paketin yükseltilmesini önlemek için ya aralarında bir boşluk bırakarak ya da IgnorePkg satırlarını yineleyerek düzenleme yapın.

Paket gruplarının yükseltilmesinin önlenmesi

Bir paket grubunun yükseltilmesinin önüne geçmek için şu şekilde düzenleme yapın:

IgnoreGroup=paket_grubu

Dosyaların sisteme kurulmasını atlamak

Belirli dizinlerin kurulumunu atlamak için bunları NoExtract seçeneği altında listeleyin. Örneğin systemd unit dosyalarının kurulumun atlamak için: <pre<noinclude></noinclude> style="overflow: auto;">NoExtract=usr/lib/systemd/system/*</pre<noinclude></noinclude>>

Paket güvenliği

Pacman 4 paket yönetimine ek bir güvenli katmanı sunan paket imzalarını desteklemektedir. Bu imza doğrulama işlevini etkinleştirmek için pacman paket imzaları makalesine bakın.

Depolar

Bu kısımda /etc/pacman.conf dosyasınca kullanılacak depoları tanımlarsınız. Depolar ya burada tanımlanır ya da bir başka dosyada tanımlanarak kullanılır. Bütün resmi depolar $repo değişkenini içeren aynı /etc/pacman.d/mirrorlist dosyasını kullanırlar. Böylece sadece tek bir listeyle ilgilenirsiniz Aşağıdaki, bir çok yansı içeren resmi depolara basit bir örnektir. ftp.archlinux.org adresini çok fazla yüklendiği için kullanmaktan kaçınınız.

#[testing]
#SigLevel = PackageRequired	
#Include = /etc/pacman.d/mirrorlist

[core]
# Add your preferred servers here, they will be used first
#SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist

[extra]
# Add your preferred servers here, they will be used first
#SigLevel = PackageOptional
Include = /etc/pacman.d/mirrorlist

#[community-testing]
# Add your preferred servers here, they will be used first
#SigLevel = PackageRequired
#Include = /etc/pacman.d/mirrorlist

[community]
#SigLevel = PackageOptional	
Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system,	
# enable the multilib repositories as required here.
	
#[multilib-testing]
#SigLevel = PackageRequired	
#Include = /etc/pacman.d/mirrorlist	
	
[multilib]	
#SigLevel = PackageOptional	
Include = /etc/pacman.d/mirrorlist	
	
# An example of a custom package repository.  See the pacman manpage for
# tips on creating your own repositories.	
#[custom]	
#SigLevel = Optional TrustAll	
#Server = file:///home/custompkgs


Kalem.png
ÖNEMLİ:
"testing" deposu dikkatli kullanılmalıdır

Kullanım

Pacman' ın gerçekten neler yapabileceğini öğrenmek için pacman el kitabını okuyunuz. Aşağıdakiler gerçekleştirebileceği işlemlerin sadece küçük bir kısmıdır

Paket Yükleme

Tek bir paketi veya bir paket listesini (bağımlılıkları da içerecek şekilde) yüklemek veya yükseltmek için şu komutu uygulayın:

pacman -S paket_adı1 paket_adı2

Bazen farklı depolarda bir paketin birden çok sürümü yer alabilir. (örneğin. extra ve testing). Hangisinin kurulacağını şu şekilde belirleyebilirsiniz:

pacman -S extra/paket_adı
pacman -S testing/paket_adı

Bazı paketler ise bir grup içerisindedir ve hepsi birlikte tek bir komutla kurulabilir:

pacman -S gnome

Yukarıdaki komut gnome grubundaki tüm paketleri kuracaktır. Bir grupta hangi paketlerin bulunduğuna bakmak için:

pacman -Sg gnome

Ayrıca hangi paket gruplarının var olduğunu görmek için [1] adresini ziyaret edebilirsiniz.



Kalem.png
ÖNEMLİ:
Listedeki bir paket sisteminizde önceden kuruluysa, --needed seçeneği kullanmadığınız takdirde o paket güncel olsa bile yeniden kurulacaktır.


Tango-dialog-warning.png
Uyarı:
Paketleri kurmadan önce paket listesini sakın güncellemeyin. (pacman -Sy package_name) Çünkü bu şekildeki bir paket kurulumu bağımlılık sorunlarına yol açabilir. [2] Yeni paketleri kurmadan önce sistemi yükseltin

Paket Kaldırma

Bir paketi, bağımlılıklarını sistemden kaldırmadan, kaldırmak için:

pacman -R paket_adı

Bir paketin başka paketlerce kullanılmayan bağımlılıklarıyla birlikte kaldırmak için:

pacman -Rs paket_adı

Bir paketi, onun bağımlılıklarını ve o pakete bağımlı olan diğer tüm paketleri kaldırmak için:


Tango-dialog-warning.png
Uyarı:
Bu işlem yinelemeli bir işlemdir ve gereksinim duyulan bir paketi kaldırma olasılığı olduğu için dikkatle kullanılmalıdır.
pacman -Rsc package_name

Pacman, bir uygulamayı kaldırırken önemli yapılandırma dosyalarını .pacsave soneki ile sistemde bırakır. Bu şekilde yedek dosyaların sistemde kalmasının önüne geçmek isterseniz -n seçeneğini kullanın:

pacman -Rn package_name


Bir paket tarafından ihtiyaç duyulan bir paketi, öteki paketi kaldırmadan sistemden kaldırmak için:

  1. pacman -Rdd package_name



Kalem.png
ÖNEMLİ:
pacman, uygulamanın kendisinin oluşturduğu yapılandırma dosyalarını (mesela ev dizinindeki"önü noktalı dosyalar") kaldırmaz.

Sistemi Yükseltmek

Pacman sistemdeki tüm paketleri tek bir komutla güncelleyebilir. Bu işlem sistemin ne kadar güncel olduğuna göre biraz zaman alıcı olabilir.

pacman -Su

Bununla birlikte en iyi yöntem, öncelikle depo veritabanlarını eş zamanlı olarak güncellemek VE SONRA sistemi tek bir komutla yükseltmektir:

pacman -Syu


Tango-dialog-warning.png
Uyarı:
Bir güncelleme yayınlandığında gözü kapalı yükseltme yapmak yerine; Arch'ın yapısı gereği bir güncellemenin önceden tahmin edilemeyen sorunlara neden olabileceğini göz önünde tutun. Öncelikle Arch Linux ana sayfasındaki haberlere göz atın. Orada, güncelleme öncesi yapılması gerekenler belirtilmiş olabilir. Ayrıca, güncellemeleri mümkün olduğunca olası sorunları çözebileceğiniz bir boş vaktinizde yapmanızda fayda vardır.

Pacman çok güçlü bir paket yöneticisi olmakla birlikte her türlü olasılığa çözüm getirmez. Bu açıklama kafanızı karıştırdıysa Arch Tarzı makalesini okumanız önerilir. Kullanıcılar kendi sistemlerinin sorumluluğunu üzerilerine alabilmelidir. Bir yükseltme yapılırken kullanıcı tüm pacman çıktılarını dikkatle gözden geçirmeli ve ona göre hareket etmelidir. Bir kullanıcı tarafından değiştirilmiş dosya yeni bir paket yükseltmesinden dolayı güncellenecekse pacman bir .pacnew uzantılı dosya oluşturur. Bunun amacı kullanıcının o dosyadaki değişikliklerini yok etmekten kaçınmaktır. Pacman kullanıcı tarafından değiştirilmiş olan ile .pacnew uzantılı yeni dosyanın bileştirilmesi için kullanıcıyı uyaracaktır. Burada kullanıcının elle müdahalesi gereklidir ve her paket yükseltme/kaldırma işleminde dikkat edilmelidir.



Lamba.png
İpucu:
Pacman çıktı günlüğünün /var/log/pacman.log dosyasında tutulduğunu unutmayın.


Paket Veritabanını Sorgulamak

Pacman veritabanında paket ismi ve açıklamaları içinde arama yapabilir.

pacman -Ss paket_adı

Kurulu paketlerde arama yapmak için:

pacman -Qs paket_adı

Adını bildiğiniz bir paket hakkında bilgi almak için:

pacman -Si paket_adı
pacman -Qi paket_adı

İki kez -i seçeneğini kullanmak yedekleme dosyaları ile bunların değiştirilme tarihlerini de görüntülemenizi sağlar:

pacman -Qii paket_adı

Kurulu paketlerin bir listesini almak için:

pacman -Ql paket_adı

Kurulu olmayan paketler için, pkgtools paketindeki pkgfile aracını veya AUR üzerindeki nosr-git paketinden nosr aracını kullanın.

Sisteminizdeki bir dosyanın hangi pakete ait olduğunu öğrenmek için:

pacman -Qo /dosyanın/yeri

Sistemdeki gereksiz, hiç bir bağımlılığı olmayan paketleri listelemek için:

pacman -Qdt

Bir paketin bağımlılık ağacını listelemek için:

$ pactree package_name

Bir paket tarafından gereksinim duyulan tüm paketleri listelemek için, pkgtools paketindeki whoneeds aracını kullanın :

$ whoneeds package_name

Bütün gereksiz paketleri kaldırmak için: (önce pacman -Qdt çıktısına bakınız)

pacman -Rsn $(pacman -Qdtq)


Pacman -Q işaretçisi kullanılarak yerel veritabanında arama ve sorgulama yapabilir.

pacman -Q --help

veya daha fazla bilgi için pacman(8) el kitabına bakınız. Eşleştirilen veritabanlarında da -S işaretçisi ile arama ve sorgulama yapılabilir. . Daha fazla bilgi için üstteki el kitabına veya

pacman -S --help

komutu çıktılarına bakınız

Diğer Kullanım Biçimleri

Pacman oldukça geniş kapsamlı bir paket yöneticisidir. Diğer bazı özellikleri burada listelenmiştir:

  • Bir paketi yüklemeksizin sadece indirmek:
pacman -Sw paket_adı
  • Yerel bir paketi yüklemek (bir depodan gelmeyen):
pacman -U /paketin/bulunduğu/dizin/paket_adı-sürümü.pkg.tar.xz

Ayrıca bir bağlantı adresi de girebilirsiniz:

pacman -U http://www.examplepackage/repo/examplepkg.tar.xz
  • Ön bellekteki (/var/cache/pacman/pkg) sistemde kurulu olmayan paketleri silmek için:
pacman -Sc
  • Ön belleğin tamamen temizlenmesi için (/var/cache/pacman/pkg):
pacman -Scc
  • Gereksiz paketlerin temizlenmesi için (yinelemeli):
pacman -Rs $(pacman -Qtdq)
  • Bütün paketleri yeniden yüklemek için (en azından depoda bulunanlar):
pacman -S $(pacman -Qq | grep -v "$(pacman -Qmq)")

Daha fazla komut seçeneği için: bkz pacman --help or man pacman.

Kısmi yükseltme desteklenmemektedir

Arch Linux sürekli güncellenen bir dağıtımdır ve yeni kütüphane sürümleri depolara yüklenmektedir. Geliştiriciler ve güvenilir kullanıcılar yeni kütüphanelere göre yeniden derlenmesi gereken paketleri yeniden oluşturmaktadırlar. Sistemde yerel olarak kurulmuş (mesela AUR üzerinden kurulmuş) bir paket varsa, bunların bağımlılığı olan kütüphane paketi güncellenmişse kullanıcılar bu paketleri yeniden derlemelidirler.

Bunun anlamı, kısmi yükselmelerin desteklenmemesidir. pacman -Sy package komutunu veya benzeri iş yapan pacman -Sy ve akabinde pacman -S package komutlarını kullanmayın. Bir paketi kurmadan önce her zaman tüm yükseltme (pacman -Syu) yapın. Aynı nedenle IgnorePkg ve IgnoreGroup kullanırken dikkatli olun.

Kısmi bir güncelleme yaptığınızda ve çalıştırmaya çalıştığınız uygulama gerekli kütüphaneyi (mesela libx.so.149) bulamadığında acelecilik ederek symlink oluşturmak suretiyle (ln -sf libx.so.148 libx.so.149 gibi) sorunu çözmeye çalışmayın. Pacman çökmüş değilse basitçe pacman -Syu komutunu çalıştırarak güncel kütüphane paketinin yüklenmesini sağlayın.

Hatalar

SORU : XYZ paketi güncellemesi sistemimi çökertti!

CEVAP : Arch Linux sürekli güncellenen ve en yeni sürümleri kullanan bir dağıtımdır. Paket güncellemeleri, genel kullanım için yeterince kararlı oldukları takdirde sunulur. Ancak, güncellemeler bazen kullanıcı müdahalesi gerektirebilir: yapılandırma dosyaları elle güncelleme gerektirebilir, isteğe bağlı bağımlılıklar değişebilir v.b.

En önemli ipucu Arch sistemleri "körlemesine" güncellememektir. Her zaman güncellenecek paketlerin listesini okuyun. Güncellenecek "önemli" paketleri ((linux, xorg-server gibi) bir kenara not edin. Genellikle https://www.archlinux.org/ adresinde İngilizce ve Haberler sayfamızda Türkçe olarak güncellemeler ile ilgili duyuruları okumak ve forumlarda başkalarının bu güncellemeler nedeniyle sorun yaşayıp yaşamadıklarını araştırmak iyi bir fikirdir.

Bir paket güncellemesinin soruna yol açması bekleniyorsa veya biliniyorsa, paketleyiciler pacman'in paket güncellendiğinde buna dair bir ileti görüntülemesini sağlarlar. Güncelleme sonrasında sorun yaşıyorsanız pacman günlük kayıtlarını (/var/log/pacman.log) iki kez okuyun.

Bu noktada, sadece pacman üzerinden bir bilgi alamıyorsanız, https://www.archlinux.org/ adresinde İngilizce ve Haberler sayfamızda Türkçe olarak buna dair bir duyuru yoksa ve güncelleme ile ilgili bir forum iletisi bulunmuyorsa , forumda, IRC üzerinde sorun veya sorun yaratan paketi eski sürümüne döndürün.


SORU : ABC paketi için bir güncellemenin yayınlandığını biliyorum ama pacman sistemimin güncel olduğunu söylüyor!

CEVAP : pacman yansıları anında eşleştirilmezler. Bir güncellemenin size ulaşması 24 saatten fazla sürebilir. Sadece iki seçeneğiniz vardır. Sabırlı olmak veya bir başka yansı kullanmak. Yansı Durumu güncel bir yansı bulmanıza yardımcı olabilir.


SORU : Güncellerken hata ile karşılaşıyorum: "dosya, dosya sisteminde mevcut"!

CEVAP : Misfit138 adlı kullanıcının forum iletisinden alınmıştır:
hata: işlem hazırlığı başarısız oldu
hata: işlem gerçekleştirilemedi (çakışan dosyalar)
paket: /konum/dosya dosya sisteminde mevcut
Hata oluştu, hiçbir paket güncellenmedi.

Pacman bir dosya çakışması algılamış demektir. Pacman, körleme dosyaların üzerine yazmaz, aksine bu gibi durumlarda işlemi iptal eder. Kullanıcı olarak çakışmaya neyin sebep olduğunu bulup ona göre davranmanız gerekmektedir. Bu bir tasarım özelliğidir; bir eksiklik değildir.

Dosya başka bir paket tarafından kullanılıyor olabilir. Bunu anlamak için şunu çalıştırmanız gerekir: (pacman -Qo /dosyanın/konumu). Dosya bir başka pakete aitse hata bildiriminde bulunun. Dosya bir başka pakete ait değilse, dosyayı elle oluşturmuşsanız dosyayı yeniden adlandırmayı ve güncellemeyi yapmayı deneyin. Her şey yolunda giderse yeniden adlandırılan dosyayı silebilirsiniz.

Bunun yanında bir yazılımı pacman kullanmadan ./configure, make ve make install yoluyla kaynaktan kurmuş iseniz o uygulamayı sistemden kaldırmanız gereklidir. Bunun için yazılımı derlediğiniz dizine girerek orada bir komut satırı açın ve make uninstall komutu ile yazılımı sistemden kaldırın.

Her kurulan paket, o paketin meta verisini içeren bir /var/lib/pacman/local/$paket-$sürüm/files dosyası sunar. Bu dosya zarar görürse -içi boşsa veya dosya silinmişse - paket güncellenmeye çalışılırken "dosya, dosya sisteminde mevcut" hatası ortaya çıkar.

Böyle bir hata genellikle sadece tek pakette ortaya çıkar ve yeniden adlandırarak sonrasında pakete ait tüm dosyaları silmek yerine; dosyaların üzerine yazmak için pacman -S --force $paket komutunu çalıştırmak daha iyi bir yoldur.

pacman -Syu --force komutunu kullanmayın.


SORU : Bir paketi kurarken şu hatayı alıyorum: "senkronize veritabanında bulunamadı"

CEVAP : Öncelikle paketin gerçekten depolarda var olduğundan emin olun. Ayrıca paket adını yanlış yazmış olabileceğinizi düşünün. Belirli bir paket mevcut ise, pacman paket veritabanı güncelliğini yitirmiş veya depolarınızı yanlış yapılandırmış olabilirsiniz. Tüm paket veritabanlarını yenilemeye zorlamak için pacman -Syy komutunu çalıştırmayı deneyin.


SORU : pacman tekrar tekrar aynı paketi güncelliyor!

CEVAP : Bunun sebebi /var/lib/pacman/local/ altındaki aynı girdinin iki kez yer almasıdır, mesela iki linux paketi. pacman -Qi komutu doğru sürümü algılar; ancak pacman -Qu sadece eski sürümü algılar ve sürekli yükseltme yapmaya çalışır.

Çözüm: /var/lib/pacman/local/ altındaki sorunlu girdiyi silin.


Kalem.png
ÖNEMLİ:
pacman 3.4 sürümü ve sonrasında çift girdilerde bir hata iletisi gösterecektir.


SORU : pacman bir yükseltme işlemi sırasında çöküyor!

CEVAP : Pacman paketleri kaldırırken bir "veritabanı yazma" (database error) hatası vererek çökerse ve yeniden kurma ile paketleri yükseltme işlemleri başarısız olursa:
  1. Arch CD' si ile bilgisayarınızı başlatın
  2. Kök dosya sisteminizi bağlayın
  3. Pacman veritabanını pacman -Syy komutu ile güncelleyin
  4. Bozuk paketi pacman -r /kök/konumu -S paket komutu ile yeniden yükleyin.


SORU : make install komutu ile yazılım kurdum; bu dosyalar herhangi bir pakete ait değil!

CEVAP : "çakışan dosyalar" ile ilgili hata alıyorsanız; pacman -f anahtarı ile kullanıldığında elle kurulmuş yazılımın üzerine yazacaktır: (pacman -Sf). Sistemi sahipsiz dosyalar için tarayan bir betik için henüz İngilizce olan pacman ipuçları#Her hangi bir pakete ait olmayan dosyaları belirlemek yazısına bakın.


SORU : Belirli bir dosyayı içeren belirli bir pakete gereksinimim var. Bu dosyayı hangi paketin içerdiğini nasıl bulabilirim?

CEVAP : Tüm dosyalar ve ilgili paketlerle ilgili ayrı bir veritabanı kullanan pkgfile aracını kullanın. Bu araç pkgtools paketince sunulmaktadır.


SORU : pacman tamamen çökmüş/bozulmuş durumda. Nasıl yeniden yükleyebilirim?

CEVAP : Pacman, tamir edilebilmenin ötesinde bozulduysa elle zorunlu paketler olan (openssl, libarchive, libfetch, ve pacman) paketlerini indirip kök dosya sistemine açın. Pacman ikili dosyası öntanımlı yapılandırma dosyası ile birlikte yeniden kurulmuş olacaktır. Bundan sonra bu paketleri veritabanı bütünlüğünün korunması için pacman ile yeniden kurun.


SORU : Sistemimi güncelledikten sonra bilgisayarı yeniden başlattığımda "unable to find root device" (kök aygıt bulunamıyor) hatası alıyorum ve sistem başlamıyor.

CEVAP : Büyük ihtimalle bir çekirdek güncellemesi sırasında (pacman' in --force anahtarının hatalı kullanımı buna sebep olabilir.) initramfs imajı bozulmuştur. İmajı yeniden oluşturmak için aşağıdaki adımları uygulayın

Arch kurulum CD' si bilgisayarınızı başlatın ve komut satırında şunları çalıştırın:

# mkdir /mnt/arch
# mount /dev/sdX /mnt/arch (kök disk bölümünüz) 
# cd /mnt/arch
# mount -t proc proc proc/
# mount -t sysfs sys sys/
# mount -o bind /dev dev/
# mount /dev/sdX boot/ (önyükleme disk bölümünüz) <--- Ayrı bir /boot disk bölümünüz yoksa bu adıma gerek yoktur.
# chroot . /bin/bash
# pacman -Syu
# pacman -S udev
# pacman -S mkinitcpio
# mkinitcpio -p linux (veya diğer linux çekirdek türleri: linux-ck, linux-pf, linux-lts v.b.)

Daha sonra bilgisayarınız yeniden başlatın.