Aptitude: elimine todos los paquetes de la categoría X11, excepto las dependencias de un paquete específico

Aptitude: elimine todos los paquetes de la categoría X11, excepto las dependencias de un paquete específico

Me gustaría eliminar la mayoría de los paquetes de la categoría X11 de mi sistema. Sin embargo, algunos de esos paquetes dependen del paquete 'beaglebone'. ¿Cómo podría pedirle a aptitude que elimine todo lo que está en la categoría X11, con la excepción de los paquetes de los que depende 'beaglebone'?

Puede ver a continuación que recomienda 'beaglebone' como uno de los paquetes que deben desinstalarse a riesgo de dañarse.

    Aptitude recomienda su eliminación. Se incluye hueso de beagle.

¿Cómo puedo asegurarme de que este paquete y sus dependencias se conserven después de la eliminación?

Respuesta1

La respuesta corta es:

aptitude remove '~sX11 ! ~Rbeaglebone'

Sin embargo, en este tipo de situación (hay unalote¡De cosas que dependen de X11!), recomiendo usar el solucionador interactivo. Para hacer esto, agregue la --schedule-onlyopción a lo anterior y ejecute aptitudenuevamente sin argumentos. Es posible que también deba agregar -o Aptitude::Auto-Fix-Broken=falseuno o ambos comandos (si aún no está en su configuración), pero no creo que lo necesite en la medida de lo posible. Puedo ver que la resolución automática solo ocurre cuando presionas gen la interfaz.

Una vez que tenga la interfaz de ncurses ejecutándose, presione epara examinar la primera solución y observar las eliminaciones adicionales. Si ve alguno que no desea, use las teclas de flecha para seleccionarlo y presione rpara rechazar la acción. Presione .para cargar la siguiente solución. Ahora debería proporcionar una solución que no incluya ninguno de sus rechazos. Repita según sea necesario y presione !para aceptar la solución y continuar con normalidad.

Respuesta2

Creo que puede utilizar uno de los siguientes métodos para "excluir" el paquete "beaglebone", lo que debería obligar a que cualquiera de sus dependencias permanezca.

$ sudo apt-mark hold <package>

o

$ echo <package> hold | sudo dpkg --set-selections

El primero hace uso de apt-marksu holdcaracterística.

   hold
        hold is used to mark a package as held back, which will prevent the 
        package from being automatically installed, upgraded or removed. The 
        command is only a wrapper around dpkg --set-selections and the state 
        is therefore maintained by dpkg(1) and not affected by the --file 
        option.

El segundo se utiliza dpkgpara marcar un paquete como "en espera".

   --set-selections
        Set package selections using file read from stdin. This file should 
        be in the format 'package state', where state is one of install, 
        hold,  deinstall  or purge. Blank lines and comment lines beginning 
        with '#' are also permitted.

información relacionada