Estoy usando Arch Linux.
¿Hay alguna manera de enumerar las dependencias opcionales de todos los paquetes instalados? Y en caso afirmativo, ¿puedo filtrar esta lista para ver solo los paquetes faltantes (no instalados)?
arch-linux
pacman
vonPetrushev
fuente
fuente
pacman -Qi | grep "Optional Deps" | grep -v None | grep -v installed
Respuestas:
Puede usar expac para consultar la
pacman
base de datos.Algo como:
imprimirá una lista de todos los paquetes instalados en su máquina y el
optdepends
de cada uno (%O
) 1 en un archivo llamadooptdeps
. Luego puede ordenar esto en una lista de paquetes instalados de optdepends.Consulte
man expac
la lista completa de opciones.1. Esa es una O mayúscula, no un cero. Porque no podemos tener una fuente que distinga entre los dos ...
fuente
Hay una buena utilidad en el AUR-Repository (aur / pacdep).
pacdep tiene muchas opciones - solo un ejemplo - encuentre paquetes opcionales para "thunar-archive-plugin":
El resultado anterior significa que ninguno de los paquetes opcionales están instalados. Después de instalar "xarchiver" el resultado se ve como
Encontré (la primera parte de) esta respuesta en
http://mywaytoarch.tumblr.com/post/34979742718/easily-list-package-dependencies
fuente
Esto no es exactamente eficiente, pero encontrará lo que desea (en COLOR):
fuente
||
lugar de&&
después delgrep
paréntesis y luego entre paréntesis en el resto de la línea?pacman -Qi xmms2 | sed -n '/^Optional/,$p' | sed '/^Required/q' | head -n -1 | cut -c19- | cut -d: -f1
Aunque he tenido que darme cuenta de que la solución de @ DarkHeart realmente no funciona, me inspiró a hacer una que funcione. (sin colores, sin embargo)
Estoy usando package-query , una herramienta similar en lugar de expac que fue sugerida por @jasonwryan, porque ya la tengo instalada (es una dependencia de yaourt). Debería ser trivial cambiar esto para usar expac en su lugar.
La lista de todas las dependencias opcionales se realiza principalmente mediante la llamada a la consulta de paquete. El primer bucle for elimina las explicaciones, por lo que solo quedan los nombres de paquete para las dependencias opcionales; el segundo for-loop elimina las dependencias ya instaladas en su primera línea antes de imprimir los resultados en la segunda.
fuente
Esto debería funcionar:
La primera entrada a
comm
enumera todas las dependencias opcionales, la segunda entrada todos los paquetes instalados y sus atributos 'proporcionar'. Ambas listas están ordenadas y contienen cada elemento solo una vez debido asort -u
. Entonces solo se muestran las líneas que están contenidas en la primera pero no en la segunda lista.(editado para incorporar la sugerencia de @ Archemar)
fuente
A veces tiene que trabajar hacia atrás ... primero encuentre todas las dependencias no opcionales, luego haga una referencia cruzada con la lista completa, luego use uniq. Esto generará una lista de dependencias opcionales instaladas.
Encuentra todo instalado
Encuentra todos los no opcionales:
Por lo tanto, las entradas únicas deben ser opcionales:
Generar una lista de opciones opcionales que faltan depende de las descripciones, no es bonito, pero funciona.
fuente
Lo intenté solo en GNU sed pero
esto funcionó (Use sort / uniq como desee).
fuente