Come posso elencare tutti i pacchetti che ho installato da un particolare repository?


51

Come posso elencare tutti i pacchetti che ho installato da un particolare repository?

Come posso elencare tutti i pacchetti installati che non sono disponibili dai principali archivi Ubuntu e anche vedere da quali repository provengono? (Se avessi saputo la risposta a questa domanda, avrei potuto accedere a quell'elenco per un particolare nome PPA per scoprire la risposta alla mia prima domanda.)


Dal momento che non sembra esserci uno strumento da riga di comando esistente per questo (purtroppo), accetterò una delle risposte della GUI.
Marius Gedminas,

Risposte:


24

Espandi l'elemento "Software installato" in Ubuntu Software Center. Vedrai un elenco di tutti i diversi repository che hai abilitato. Fare clic sul repository ti mostrerà i pacchetti che hai installato da ciascuno.

testo alternativo


Temo che l'opzione sia disponibile solo in Ubuntu 10.10 o mi sto perdendo qualcosa? My Software Center non visualizza le fonti sotto quel menu.
lovinglinux,

2
Nella mia versione ho un menu a discesa "Installato" in alto. Quando seleziono quell'opzione, posso scegliere le varie fonti (core, per acquisto, PPA ...)
Alexis Wilke,

In Ubuntu 16.04, questa pagina non è più disponibile. Tuttavia, Synaptic ha una funzione simile: fai clic su "Origine" in basso a sinistra.
Josh,

26

Sembra che non ci sia traccia dell'origine di un pacchetto installato .

Se si è in grado di ottenere la posizione da cui verrà scaricato un pacchetto con lo stesso nome, questo è disponibile tramite apt-cache policy. Il seguente (piuttosto brutto) script fa il trucco per me:

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)

Si noti che è piuttosto fragile, poiché fa ipotesi sull'output di apt-cache policy, che potrebbe cambiare tra le versioni ...


Sì, questo significherebbe sostanzialmente scrivere uno strumento da zero. E penso che analizzare / var / lib / apt / lists con Perl o Python sarebbe più veloce e più robusto.
Marius Gedminas,

Funziona normalmente qui, nel 2018 :) Grazie!
N0rbert,

Ho sviluppato una soluzione simile testata su Ubuntu e Debian.
famzah,

23

Apri Synaptic Package Manager e fai clic sul pulsante "Origine" nella parte inferiore della barra laterale sinistra. Elencherà le tue fonti. Seleziona una fonte per vedere i pacchetti disponibili / installati.


4

Questo script elenca i pacchetti installati e disponibili nel PPA:

#!/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}'

Ho applicato questo .

A proposito di come rimuovere PPA dall'uso, utilizzare il programma ppa-purge; Ho creato una versione migliorata qui .


3

In Quantal (12.10), lo spazio nella linea di origine deve essere rimosso.

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)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.