¿Cómo puedo enumerar todos los paquetes que he instalado desde un repositorio particular?


51

¿Cómo puedo enumerar todos los paquetes que he instalado desde un repositorio particular?

¿Cómo puedo enumerar todos los paquetes instalados que no están disponibles en los archivos principales de Ubuntu y también ver de qué repositorios provienen? (Si supiera la respuesta a esta pregunta, podría seleccionar esa lista para un nombre de PPA en particular para encontrar la respuesta a mi primera pregunta).


Como no parece haber una herramienta de línea de comandos para esto (lamentablemente), aceptaré una de las respuestas de la GUI.
Marius Gedminas

Respuestas:


24

Expanda el elemento "Software instalado" en el Centro de software de Ubuntu. Verá una lista de todos los repositorios diferentes que ha habilitado. Al hacer clic en el repositorio, se mostrarán los paquetes que ha instalado de cada uno.

texto alternativo


Me temo que esa opción solo está disponible en Ubuntu 10.10 o ¿me falta algo? Mi Centro de software no muestra las fuentes debajo de ese menú.
lovinglinux

2
En mi versión tengo un menú desplegable "Instalado" en la parte superior. Cuando selecciono esa opción, puedo elegir las diversas fuentes (núcleo, para comprar, PPA ...)
Alexis Wilke

En Ubuntu 16.04, esta página ya no está disponible. Sin embargo, Synaptic tiene una característica similar: haga clic en "Origen" en la esquina inferior izquierda.
Josh

26

Parece que no hay registro del origen de un paquete instalado .

Si está de acuerdo en obtener la ubicación desde donde se descargaría un paquete del mismo nombre, está disponible a través de apt-cache policy. El siguiente script (bastante feo) hace el truco para mí:

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)

Tenga en cuenta que es bastante frágil, ya que hace suposiciones sobre la salida de apt-cache policy, que pueden cambiar entre versiones ...


Sí, esto básicamente significaría escribir una herramienta desde cero. Y creo que analizar / var / lib / apt / lists con Perl o Python sería más rápido y más robusto.
Marius Gedminas

Funciona normalmente aquí, en 2018 :) ¡Gracias!
N0rbert

Desarrollé una solución similar probada en Ubuntu y Debian.
famzah

23

Abra Synaptic Package Manager y haga clic en el botón "Origen" en la parte inferior de la barra lateral izquierda. Enumerará sus fuentes. Seleccione una fuente para ver los paquetes disponibles / instalados.


4

Este script enumera los paquetes que están instalados y disponibles en el 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}'

Apliqué esto .

Por cierto, en cuanto a eliminar PPA del uso, utilice el programa de purga ppa; He creado una versión mejorada aquí .


3

En Quantal (12.10), el espacio en la línea de origen debe eliminarse.

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)
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.