Para cada paquete que he instalado, me gustaría saber qué paquetes se instalarían si lo desinstalo. Un ejemplo de la salida que necesito es ( package: list of deps
):
abc: foo bar
bcd: baz abc
bdd: baz fuubar
Adjuntar
Si verifico lo que realmente se eliminaría si elimino el paquete ppp
usando apt-get
:
$ echo $(apt-get --dry-run remove ppp | grep '^Remv ' | cut -d' ' -f2)
gnome-ppp mint-meta-xfce network-manager-pptp-gnome network-manager-pptp wvdial pppoeconf pppoe pptp-linux pppconfig ppp
Veo que es diferente de lo apt-cache
que me muestra el programa (que no creo que incluya dependencias recursivas):
$ apt-cache show ppp | grep '^Breaks: '
Breaks: network-manager (<= 0.8.0.999-1), network-manager-pptp (<= 0.8.0.999-1), pppdcapiplugin (<= 1:3.9.20060704+dfsg.1-1)
Añadir 2
¿Es dpkg --get-selections | cut -f1
una forma confiable de obtener una lista de paquetes instalados para iterar?
apt-get --dry-run remove
ve básicamente correcto. Puede faltar algunos paquetes instalados automáticamente que solo son necesarios para los paquetes instalados automáticamente que solo son necesarios para el paquete que elimina. ¿Es por eso que no lo consideras una respuesta adecuada?Respuestas:
Hiciste algunas preguntas diferentes aquí, espero que al menos pueda ayudar en una o dos.
Para enumerar todos los paquetes instalados, utilice
dpkg
para generar en una lista separada por camposPara obtener la lista de paquetes, sin campos adicionales, para que pueda canalizarla a otro lugar.
Por ejemplo, si quiero eliminar un núcleo antiguo,
La forma más fácil de pasar por todas las dependencias innecesarias es con
debfoster
. Se ejecuta de forma interactiva y pasa por lo que desea, sus dependencias y puede eliminar o enumerar lo que no es una dependencia recursiva.Para enumerar todas las dependencias recursivas de un paquete específico,
Después de haber ejecutado
debfoster
, puede verificar cualquier dependiente que tenga un paquete también,Una forma realmente genial de enumerar paquetes 'huérfanos' es con
deborphan
. Ejecutardeborphan
sin opciones, y mostrará una lista de todos los paquetes 'huérfanos'. Un 'huérfano' es un paquete del que nada depende y no lo ha instalado explícitamente.También me gusta limpiar cualquier paquete 'huérfano', después de una nueva instalación. Después de que haya eliminado paquetes específicos, puedes perder cualquier cosa
apt-get autoremove --purge
con,Finalmente, a veces no lo hace
--purge
y termina con el paquete 'restos', las versiones más recientes deapt-get
pueden eliminarlos automáticamente. Para eliminar todas las 'sobras' de los paquetes desinstalados, ejecute,Si no tiene la nueva versión de
apt-get
, siempre puede eliminarlos con estos comandos. Se produce un error si no existen archivos 'sobrantes', parece que el autoclean puede omitir algunos ocasionalmente.fuente
enumerará (entre otras cosas) estas dependencias (tiempo de ejecución). Esto suele ser adecuado, a menos que lo esté alimentando a una máquina para su posterior procesamiento. Si lo desea exactamente en el formato que indicó, probablemente tendrá que escribir un script.
fuente
apt-get remove -s packagename
. Listado de todos los paquetes que ha instalado es justodpkg -l
.apt-get remove -s packagename
!Creo que tienes que continuar y crear un bucle para lo mismo:
Por supuesto, eliminar los encabezados.
fuente
apt-cache depends --recurse libtext