Bir paketin hangi Ubuntu veya Debian deposundan geldiğini nasıl anlatabilirim?


168

Ubuntu dahil Debian tabanlı bir sistemde, indirme işlemine başlamadan bir paketin hangi depodan indirileceğini nasıl söyleyebilir? aptitude showve bölümü (örn. metapackage, base, graphics) apt-cache infogösterecek , fakat bir paketin ait olduğu depoları göstermeyecektir (örneğin, http://ppa.launchpad.net/mactel-support/ppa/ubuntu veya http: // us .archive.ubuntu.com / ubuntu / ).

Paketi kurarken, asıl havuz indirme sırasında görünür (apt ve benzeri programlardan "indiren ..." çıktısında basılır), ancak paketin bulunduğu depo hakkında bilgi (veya belirli bir bilgiyi nasıl elde edebilirsiniz) Bir paketin sürümü) önce indirmeden ve kurmadan mı?

Ek olarak, zaten kurulu olan bir paket için kaynak havuzunu nasıl belirleyebilir?


1
Bunu Apt'ın eksikliklerinden birini buluyorum; Paket deposu araçlarında hangi havuzun belirli bir paket sağladığını söylemek kolay değildir.
quack quixote

Yanıtlar:


203

Koştum apt-cache policy <package name>:

$ apt-cache policy wajig
wajig:
  Installed: 2.1
  Candidate: 2.1
  Version table:
 *** 2.1 0
        100 /var/lib/dpkg/status
     2.0.47 0
        500 file:/home/wena/.repo_bin/ squeeze/main i386 Packages
        500 ftp://ftp.is.co.za/debian/ squeeze/main i386 Packages

Bu üç wajigpaket olduğu anlamına gelir :

  • Yüklü olan ( /var/lib/dpkg/status)

  • Yerel bir depodan erişilebilen bir tane ( file:/home/wena/.repo_bin/)

  • Yerel bir depodakiyle ftp://ftp.is.co.za/debianaynı sürümde ( 2.0.47 ) de bulunan uzak bir depodan ( ) erişilebilen bir tane


Ayrıca, apt-cache madison <package name>benzer bilgileri tablo biçiminde görüntüler.

 wajig |        2.2 | mirror://mirrors.ubuntu.com/mirrors.txt/ precise/universe amd64 Packages
 wajig |        2.2 | mirror://mirrors.ubuntu.com/mirrors.txt/ precise/universe Sources

Ama kurulu paketin nereden geldiğini göstermiyor, değil mi?
Adobe,

2
@Adobe Benim durumumda, 2.1sürüm herhangi bir depoda mevcut değildir. Yerel olarak inşa edilmiş.
tshepang

2
Yüklü paketin işareti nedir? ***ya /var/lib/dpkg/status?
SuB

Belki ikisi de? Emin değil.
tshepang

Paket yüklü değilken apt-cache policydiyor: Installed: (none).
John McGehee,

28

Aha! Görünüşe göre, uygun aptkomut değil apt-cache info, yerine apt-cache showpkg.

$ apt-cache showpkg linux-generic
Package: linux-generic
Versions: 
2.6.31.19.32 (/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic-updates_main_binary-amd64_Packages) (/var/lib/apt/lists/security.ubuntu.com_ubuntu_dists_karmic-security_main_binary-amd64_Packages) (/var/lib/dpkg/status)
 Description Language: 
                 File: /var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic-updates_main_binary-amd64_Packages
                  MD5: 5d722da329763b9342d322f5a140005c

2.6.31.14.27 (/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic_main_binary-amd64_Packages)
 Description Language: 
                 File: /var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic_main_binary-amd64_Packages
                  MD5: 5d722da329763b9342d322f5a140005c


Reverse Depends: 
Dependencies: 
2.6.31.19.32 - linux-image-generic (5 2.6.31.19.32) 
2.6.31.14.27 - linux-image-generic (5 2.6.31.14.27) 
Provides: 
2.6.31.19.32 - 
2.6.31.14.27 - 
Reverse Provides: 

File:Çizgi sonra depo bilgi sağlar /var/lib/apt/lists/.

Orada bir hata raporu aptitudekaynak deposu gösteremez , ancak özellik dilek listesinde hala şu anda görünüyor.


Bu yetenek özelliği 8 yıl sonra hala whislist'te ve bu cevabın ( apt-cache showpkg) neden doğru cevap olarak işaretlenmediğini bilmiyorum .
Csaba Toth

8

Bu benim için çalışıyor (2vcard paketinin nerede olduğunu gösterir):

$ grep 2vcard /var/lib/apt/lists/* | grep "Filename:"

/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic_universe_binary-i386_Packages:Filename: pool/universe/2/2vcard/2vcard_0.5-3_all.deb

Birden fazla sürüm varsa, sürümleri vb. Kontrol etmek için ek filtreleme uygulayabilirsiniz.


Pragmatik. dpkgYine de , bu bilgilere hiçbir ön uçtan erişilemediğine şaşırdım .
Gotgenes


8

Neden kimsenin bahsetmediğini merak ediyorum aptitude. Ben her zaman kullanırım.

Yetenek:

  • varsayılan olarak birçok Debian tabanlı dağıtım ile gönderilir. Diğerine (Ubuntu gibi) aracılığıyla kurulabilirsudo apt install aptitude
  • idari ayrıcalıklar gerektirmez (en azından aşağıdaki komut için)
  • güzel bir ncursesGUI var (ancak çoğu zaman onsuz kullanılır)
  • Gerçekten güzel bir çıktı sağlar. Paketlerin sürümlerini göstermek için aptitude versionskomutu kullanın:

    me@wheezy:~$ aptitude versions kde-standard
    Package kde-standard:                        
    i A 5:77+deb7u1     stable              500
    p A 5:84            testing,unstable    130
    
  • Süper İnek Güçlerine sahip değil

Her dizgenin önündeki harf paketin durumunu gösterir, i yüklenir ve p temizlenir (veya hiç kurulmaz), kararlı , test ve kararsız depo tanımlarıdır, sondaki sayı bir pin önceliğidir .

Yeteneklerin son sürümleriyle ilgili bir uyarı, burada bahsetmeye değer: varsayılan olarak, aradığınız adı içeren tüm paketleri gösterir, bu nedenle , örneğin, katı bir adla aramak için biraz regex büyüsü kullanın aptitude versions ^kde-workspace$.


1
Güzel emir, ancak depoyu istendiği gibi listelemiyor.
bjhend

Aslında öyle .
TranslucentCloud

Anlamıyorsun Ek PPA'lar kurulabilir. Bir paketin böyle bir PPA'dan olup olmadığını bilmek önemlidir. Aslına bakarsan, şu an anlamaya çalıştığım şey bu - eğer öyleyse, PPA'yı kaldırabilirim, sorun riskini azaltabilirim.
reinierpost

Evet, haklısınız, versionsbasitçe ilgili depoları değil ilgili paketlerin uygun sabitleme değerlerini kontrol edebilirsiniz. Tüm depolarınızı ve nasıl sabitlendiklerini biliyorsanız, yine de kullanışlıdır.
TranslucentCloud

6

Ne yazık ki, bu bilgiler paket yükleme sırasında kaydedilmez. Depo hala kaynak listesinde ise ve depoda hala paket varsa, iyi bir tahmin yapabilirsiniz:

grep -l PKG /var/lib/apt/lists/*

apt-cache showpkg depo veritabanındaki verileri (yüklü olanları değil) gösteriyor, bu yüzden grep'ten gelen aynı bilgilerin başka bir şekli.

Sinaptik bile depoyu ve güncellemeyi devre dışı bırakıp bırakmadığınızı (Kökeni ekranında) söyleyemez.


2

Veya Sunny'den ilham alarak deneyebilirsiniz:

# list installed restricted packages
for i in `dpkg --get-selections | awk '{ print $1 }'`; do egrep -lRI "^Filename: .*/${i}_[^/]+.deb" /var/lib/apt/lists/ | grep -q 'restricted' && echo $i; done

# list installed multiverse packages
for i in `dpkg --get-selections | awk '{ print $1 }'`; do egrep -lRI "^Filename: .*/${i}_[^/]+.deb" /var/lib/apt/lists/ | grep -q 'multiverse' && echo $i; done

ps. % 100 doğru değil.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.