Belirli bir havuzdan yüklediğim tüm paketleri nasıl listeleyebilirim?


51

Belirli bir havuzdan yüklediğim tüm paketleri nasıl listeleyebilirim?

Ana Ubuntu arşivlerinde bulunmayan kurulu tüm paketleri nasıl listeleyebilirim ve hangi depolardan geldiklerini nasıl görebilirim? (Bu sorunun cevabını bilseydim, ilk sorumun cevabını bulmak için bu listeyi belirli bir PPA adı için tutardım.)


Bunun için mevcut bir komut satırı aracı görünmediğinden (ne yazık ki), GUI cevaplarından birini kabul edeceğim.
Marius Gedminas,

Yanıtlar:


24

Ubuntu Yazılım Merkezi'ndeki "Kurulu Yazılım" öğesini genişletin. Etkinleştirdiğiniz tüm farklı depoların bir listesini göreceksiniz. Depoya tıkladığınızda, her birinden yüklediğiniz paketler gösterilir.

alt metin


Bu seçeneğin sadece Ubuntu 10.10'da mevcut olduğundan korkuyorum yoksa bir şey mi eksik? Yazılım Merkezim o menünün altındaki kaynakları görüntülemiyor.
lovinglinux

2
Benim sürümümde üstünde bir "Yüklü" açılan var. Bu seçeneği seçtiğimde çeşitli kaynakları seçebilirim (çekirdek, satınalma için, PPA ...)
Alexis Wilke

Ubuntu 16.04’te bu sayfa artık mevcut değil. Ancak, sinaptik benzer bir özelliğe sahiptir - sol altta "Origin" tıklayın.
Josh,

26

Yüklenmiş bir paketin kökenine dair bir kayıt yok gibi görünüyor .

Konumu, aynı addaki bir paketin indirileceği konumdan alma konusunda iyiyseniz, bu işlem aracılığıyla edinilebilir apt-cache policy. Aşağıdaki (oldukça çirkin) betiği benim için hile yapar:

LC_ALL=C dpkg-query --showformat='${Package}:${Status}\n' -W '*' \
  | fgrep ':install ok installed' \
  | cut -d: -f1 \
  | (while read pkg; do 
       inst_version=$(apt-cache policy $pkg \
                                | fgrep Installed: \
                                | awk '{ print $2 }'); 
       origin=$(apt-cache policy "$pkg" \
                          | fgrep " *** ${inst_version}" -C1 \
                          | tail -n 1 \
                          | cut -c12-); 
       echo $pkg $origin; 
     done)

apt-cache policySürümleri arasında değişebilecek çıktısı hakkında varsayımlarda bulunduğundan, oldukça kırılgan olduğuna dikkat edin ...


Evet, bu temelde sıfırdan bir araç yazmak anlamına gelir. Ve / var / lib / apt / listeleri Perl veya Python ile ayrıştırmanın daha hızlı ve daha sağlam olacağını düşünüyorum.
Marius Gedminas,

Burada normal çalışır, 2018 yılında :) Teşekkür ederim!
N0rbert

Ubuntu ve Debian'da test edilmiş benzer bir çözüm geliştirdim .
famzah

23

Synaptic Package Manager'ı açın ve sol kenar çubuğunun altındaki "Origin" düğmesini tıklayın. Kaynaklarınızı listeler. Kullanılabilir / kurulu paketleri görmek için bir kaynak seçin.


4

Bu komut dosyası, PPA'da yüklü ve kullanılabilir olan paketleri listeler:

#!/bin/sh
# Give PPA name as an argument, e.g. ppa:oibaf/graphics-drivers

name1="$(echo "$1"|cut -d: -f2|cut -d/ -f1)"
name2="$(echo "$1"|cut -d/ -f2)"

awk '$1 == "Package:" { if (a[$2]++ == 0) print $2; }' \
/var/lib/apt/lists/*"$name1"*"$name2"*Packages |
xargs dpkg-query -W -f='${Status} ${Package}\n' 2>/dev/null  | awk '/^[^ ]+ ok installed/{print $4}'

Ben uygulanan bu .

BTW PPA'yı kullanımdan çıkarmak için, ppa-purge programını kullanın; Burada geliştirilmiş bir versiyonunu yarattım .


3

Quantal (12.10) altında orijin çizgisindeki boşluğun kaldırılması gerekir.

LC_ALL=C dpkg-query --showformat='${Package}:${Status}\n' -W '*' \
 | fgrep ':install ok installed' \
 | cut -d: -f1 \
 | (while read pkg; do 
   inst_version=$(apt-cache policy $pkg \
                            | fgrep Installed: \
                            | cut -d: -f2-); 
   origin=$(apt-cache policy "$pkg" \
                      | fgrep " ***${inst_version}" -C1 \
                      | tail -n 1 \
                      | cut -c12-); 
   echo $pkg $origin; 
 done)
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.