Soru Ubuntu Linux'ta “evren” deposundan yüklenen paketleri nasıl listeleyebilirim?


Bir Ubuntu 10.04 LTS sunucusunda, kurulu paketleri listelemek ve hangi depodan geldiğimi görmek istiyorum.

Yüklü paketleri listelemek kolaydır, ancak depo adını (“ana” veya “evren” gibi) içermez. Ve bu bilgi içeride değil /var/lib/dpkg/status, yani dpkg-query ya da göstermez.

“Desteklenmeyen” yazılımın bir listesini (yani “ana” depodan gelmeyen ve Ubuntu'nun güvenlik güncellemelerini garanti etmediği bir yazılım) almak istiyorum.

Not: Bu bir sunucudur. X, GNOME veya KDE yüklü değildir.


7
2018-05-04 19:48


Menşei




Cevaplar:


Tamam, bunu nasıl yapacağımı anladım:

aptitude search "~i" -F "%s# %p"

“Evren” havuzundan öğeleri bulmak için elbette ki kolayca kırılabilir:

aptitude search "~i" -F "%s# %p" | grep universe

12
2018-05-04 20:51



+1. Oraya varıyordum, ancak Ubuntu belgelerinde veya Debian'ın web sitesinde daha iyi belgelenmediğine şaşırdım. Synaptic’te her zaman yaptığım bir şey ama henüz CLI’dan ona hiç ihtiyaç duymadım. - Richard Holloway


Dpkg komutunun çıkışı için özel bir format sağlayabilirsiniz (-f seçeneğini kullanarak). Origin değişkenini kullanarak böyle bir şey deneyin:

dpkg-query -f='${Package} ${Version}\t${Origin}\n' --get-selections

Bu sayfadaki biçimlendirme argümanı hakkında daha fazla bilgi var: http://www.tin.org/bin/man.cgi?section=1&topic=dpkg-query

Varsayılan biçim dizesi   "$ {Paket} \ t $ {Sürüm} \ n". Actu-   müttefik, tüm diğer alanlarda bulunan   durum dosyası (ör. kullanıcı tanımlı   alanlar da talep edilebilir. Onlar   olmasına rağmen yazdırılacak, hayır   dönüşüm veya hata kontrolü tamamlandı   onlar üzerinde. İsmini almak için   dpkg sürdürücü ve kurulu ver-   sion, sen kaçabilirsin:

dpkg-query -W -f = '$ {Paket}   $ {Sürüm} \ t $ {Maintainer} \ n 'dpkg


1
2018-05-04 19:55



Ne yazık ki ${Origin} ne de ${Source} herhangi bir çıktı vermek. Örnek sorgu: dpkg-query -W -f='${Package} ${Version}\t${Origin}\n' 'apache2*'. Eğer dpkg-query verilerini alıyor /var/lib/dpkg/status Daha sonra bu bilgi sahibi olmaz, çünkü bu dosya orijin deposunu tanımlamaz. - Nate


denedim     yetenek arama ~ i -F "% s #% p"

ubuntu 12.04 ve 14.04'te ancak depoları göstermedi.

Bu küçük senaryoyu yazdım:

# more origins.sh
#!/bin/bash
for i in $(dpkg -l |grep ^ii |awk -F' ' '{print $2}'); do
  apt-cache showpkg "$i"|head -3|grep -v '^Versions'|cut -d'(' -f2|cut -d')' -f1|sed -e 's/^Package: //;' | paste -d '\t' - -
done

Sonra

bash origins.sh|grep universe

1
2017-09-25 03:42



Ayıklanan sürüm showpkg çıktı mutlaka kurulu sürüm değildir, bu yüzden bu sizin için işe yarayabilir, ancak bir pakette birden fazla depodan mevcutsa sources.list (backback'leri etkinleştirdiyseniz), paketin hangi depodan kurulduğunu size göstermeyecektir. - Aryeh Leib Taurog
bu gerçekten havalı. Aslında, gerçekten yararlı ve önemli çünkü evren ana bilgisayardan farklı olarak LTS'de 5 yıl güncellenmiyor :( Daha fazla bilgi: wilderssecurity.com/threads/... - therealmarv


Bu tam olarak bir cevap değil, yardımcı olmak için kullanılabilir. Bir meslektaşım geçen gün bana bunu gösterdi. Bir paketin bu komutu kullanarak nerede olduğunu öğrenebilirsiniz:

apt-cache policy <package-name>

Örneğin:

 apt-cache policy xterm  
 xterm:  
 Installed: 271-1ubuntu2.1    
 Candidate: 271-1ubuntu2.1  
 Version table:    *** 271-1ubuntu2.1 0  
         500 http://mirror.internode.on.net/pub/ubuntu/ubuntu/ precise-updates/main amd64 Packages  
         100 /var/lib/dpkg/status  
      271-1ubuntu2 0  
         500 http://mirror.internode.on.net/pub/ubuntu/ubuntu/ precise/main amd64 Packages

0
2018-04-30 02:17