Usando aptitude, para buscar paquetes instalados fuera de la rama estable, puede usar:
aptitude search "?narrow(?installed,?not(?archive(stable)))"
Para ver las versiones, así como los nombres de los paquetes (y en lugar de las descripciones), puede usar el comando con la opción de formato ( -F
para abreviar), de la siguiente manera.
aptitude search -F "%p %V %v" "?narrow(?installed,?not(?archive(stable)))"
Para más formatos, eche un vistazo a la página de manual (aquí hay documentación con opciones disponibles ).
Que funciona por ejemplo, en Debian Si ha instalado paquetes Squeeze exterior (por runing, por ejemplo, apt-get install -t sid package-name
.
Puede ver de dónde proviene un paquete instalado apt-cache policy
, el uso es el siguiente:
apt-cache policy <package-name>
Por ejemplo, mi paquete python-numpy presenta el siguiente resultado:
$ LANG=C apt-cache policy python-numpy
python-numpy:
Installed: 1:1.6.2-1
Candidate: 1:1.6.2-1.2
Version table:
1:1.7.0-1 0
1 http://ftp.es.debian.org/debian/ experimental/main amd64 Packages
1:1.6.2-1.2 0
500 http://ftp.es.debian.org/debian/ sid/main amd64 Packages
*** 1:1.6.2-1 0
100 /var/lib/dpkg/status
1:1.4.1-5 0
990 http://ftp.es.debian.org/debian/ squeeze/main amd64 Packages
990 http://ftp.de.debian.org/debian/ squeeze/main amd64 Packages
Eso significa que estoy una versión detrás de la rama actual de sid / main, así que tengo instalada una versión antigua de sid. Veo que no tengo el estable porque todavía lo es 1.4.1-5
, y actualmente estoy en 1.6.2-1
.
Al momento de la presentación, este paquete ya estaba actualizado :)
?any-version()
, porque~narrow(pat1, pat2)
es lo mismo?any-version(pat1 pat2)
y es compatible?any-version(pat1 pat2 pat3)
sin parecer estúpido.Después de leer la página de información de aptitud y una docena de intentos, finalmente obtuve esto:
o equivalente) :
Buscará paquetes instalados desde archivos inestables de cualquier repositorio. Debe filtrar los paquetes de su archivo predeterminado (prueba en el ejemplo anterior).
Si desea filtrar paquetes instalados desde www.debian-multimedia.org/unstable:
Editar: "Archivo", "origen" etc. se deducen del
Release
archivo del repositorio. Desafortunadamente, no todas las herramientas pueden ver todas esas líneas y usan una sintaxis diferente para ellas. Puede encontrar esos archivos como/var/lib/apt/lists/*Release
. O simplemente escribaapt-cache policy
para obtener una descripción general. apt-cache cambió su formato de salida: las versiones posteriores usan el estilo apt_preferences.Suite:
oArchive:
(nombre antiguo)?archive(___)
o~A___
%t
release a=___
natty-backports
,trusty-security
,stable
Origin:
?origin(___)
o~O___
release o=___
Canonical
,Google, Inc.
,LP-PPA-dockbar-main
,Ubuntu
fuente
Examine la etiqueta de origen (como o = Debian ) para cada uno de sus repositorios actuales:
Luego busque paquetes de (o no de) un origen particular:
Esto no es adecuado para una auditoría de seguridad porque se basa en que cada repositorio proporciona su propia información de origen, pero podría ser útil para solucionar el origen de los paquetes que están presentes en múltiples repositorios.
fuente
aptitude search
patrones no son buenos. - Seleccionan de esta manera "enumerar los paquetes donde está instalada una versión, y cualquier otra versión existe en Debian" o "alguna versión instalada, y al menos una versión de ese paquete disponible en una versión que no sea Debian". - Lo que buscamos es "la versión instalada es de Debian (o no)". Esto tiene que hacerse con?narrow()
o?any-version()
.nemo-fileroller
desdelinuxmint
, pero también existe enDebian
. Entonces aparece en la lista, porque está instalado y existe en algún lugar de Debian.Para completar: en los sistemas Ubuntu también puede usar Synaptic para esta tarea. En la columna izquierda puede filtrar paquetes por su origen.
fuente
He encontrado esto:
También puede encontrar una lista de términos de búsqueda compatibles con "aptitude search" aquí .
fuente
sudo
? Me parece que esto también funciona sin ejecutarlo como root.Primero, encuentre los archivos apropiados para el repositorio de interés en / var / lib / apt / lists. Debería ser posible hacer esto mediante programación, pero no he necesitado hacerlo.
Usando google chrome como ejemplo, intente esto:
y obtengo la salida:
dpkg -s devuelve 0 si el paquete está instalado y de lo contrario no es cero. Para fines de referencia futura, la salida de
fue
fuente
Las otras respuestas son realmente incorrectas, porque el parámetro to
?archive()
es una expresión regular. Entonces?archive(stable)
coincide con ambosstable
yunstable
. Para excluir solostable
necesita anclar el patrón regex:Para excluir múltiples repositorios:
También tenga en cuenta que algunos paquetes pertenecen a múltiples repositorios, por ejemplo
xenial-security,xenial-updates
.?archive()
evalúa el patrón regex contra cada repositorio individualmente, por?archive("^xenial-updates$")
lo que coincidirá con cualquier paquete que pertenezcaxenial-updates
, incluso si pertenece a otros repositorios también.fuente