Desinstale de forma segura un paquete en Gentoo

12

Quería desinstalar un paquete específico en Gentoo y hojeé la página de manual emergente. Encontré la --unmergeopción:

ADVERTENCIA: ¡Esta acción puede eliminar paquetes importantes! Elimina todos los paquetes coincidentes. Esto no verifica las dependencias, por lo que puede eliminar los paquetes necesarios para el correcto funcionamiento de su sistema. Sus argumentos pueden ser átomos o ebuilds. Para una versión con dependencia de --unmerge , use --depclean o --prune .

Sin embargo, me gustaría emerger para verificar si el paquete que quiero desinstalar es requerido por algún otro paquete instalado en el sistema. --depcleany --pruneno proporcione esa funcionalidad:

  • --depclean elimina los paquetes que se instalaron como dependencias, pero que ya no son necesarios
  • --prune "elimina de su sistema todas las versiones instaladas, excepto la más alta, de un paquete"

¿No hay una versión de verificación de dependencia de --unmerge?

daniel kullmann
fuente

Respuestas:

17

No creo que depcleanfuncione como lo describiste. Sin ningún argumento lo hace, pero si le pasa un nombre de paquete, funciona como unmergecon una verificación de dependencia adicional. De emerge(1):

Depclean sirve como una versión de dependencia de --unmerge. Cuando se le da uno o más átomos, unirá los paquetes coincidentes que no tienen dependencias inversas. Use --depcleanjunto con --verbosepara mostrar dependencias inversas.

Siempre uso --depclean( -c) para separar paquetes individuales; funciona bien

Michael Mrozek
fuente
6

gentoolkit viene a ayudar:

equery d <atom>

Puede verificar las dependencias primero, luego proceder a eliminar el paquete después de inspeccionar sus dependencias.

Araña
fuente
5

Otra forma de lograr el mismo resultado (aunque no es un comando que no se combina con la comprobación de dependencias) emerge --deselect package, que elimina el paquete del archivo mundial. Ahora, la ejecución emerge --depcleaneliminará ese paquete si no lo requiere ningún otro paquete.

njsg
fuente
¿Eso significa que emerge --depcleanelimina todos los paquetes que se instalaron utilizando emerge --oneshot(a menos que esos paquetes sean necesarios para un paquete del mundo)?
daniel kullmann
@danielkullmann sí. calcula todo el gráfico de dependencia y elimina lo que ningún paquete del mundo extrae. Puede usar emerge --noreplace --selectpara agregar paquetes ya instalados sin volver a compilarlos, por cierto.
njsg
1

A veces, emerge --unmergeda este mensaje de advertencia:

 * This action can remove important packages! In order to be safer, use
 * `emerge -pv --depclean <atom>` to check for reverse dependencies before
 * removing packages.

Parece que esta es la forma recomendada de hacer una verificación de dependencia antes de deshacer un paquete. Sin embargo, todavía espero que haya una manera mejor y más automatizada de lograr esto.

daniel kullmann
fuente