¿Zypper no elimina todas las dependencias huérfanas al quitar un paquete?

Hola a todos,

No entiendo el comportamiento de zypper a ver si me podéis ayudar, porque me genera TOC saber que tengo basura cada vez que instalo algo.

Primero hago esto: (resumo la salida)

sudo zypper install leafpad

Se han seleccionado automáticamente los siguientes 2 paquetes recomendados:
  gtk2-branding-openSUSE gtk2-data

Los siguientes 12 paquetes NUEVOS van a ser instalados:
  gtk2-branding-openSUSE gtk2-data gtk2-lang gtk2-metatheme-adwaita gtk2-metatheme-breeze6
  gtk2-theming-engine-adwaita gtk2-tools leafpad libcanberra-gtk0 libcanberra-gtk2-module libgtk-2_0-0
  libqt5-qtstyleplugins-platformtheme-gtk2

12 nuevos paquetes a instalar.

A continuación hago un remove

sudo zypper remove leafpad

Leyendo los paquetes instalados...
Resolviendo dependencias de paquete...

El siguiente paquete va a ser ELIMINADO:
  leafpad

1 paquete a quitar.

Entonces hago

zypper packages --unneeded

Y me saca muchos y solo 1 coincide con mis 12 paquetes de leafpad. He eliminado todos sin compasión

Ahora tengo 11 paquetes huerfanos pero que zypper no me los detecta, y hago esto:

sudo zypper rm --clean-deps leafpad

Los siguientes 11 paquetes van a ser ELIMINADOS:
  gtk2-branding-openSUSE gtk2-data gtk2-metatheme-adwaita gtk2-metatheme-breeze6 gtk2-theming-engine-adwaita
  gtk2-tools leafpad libcanberra-gtk0 libcanberra-gtk2-module libgtk-2_0-0
  libqt5-qtstyleplugins-platformtheme-gtk2

11 paquetes a quitar.

Los elimino

Preguntas

¿Como lo hago a todo el sistema? sin tener que ir aplicación por aplicación
¿Es un error de diseño de zypper / bug o hay un motivo? por reportarlo lo digo

Yo soy muy nueva y ando probando bastantes cosas y no quiero llenar de porquería el sistema innecesariamente

Ya que estoy añado por si alguien tiene algún flujo de trabajo

En ocasiones copias un ejemplo de algún sitio y no lo puedes llevar tal cual a la consola o el editor de turno, prefieres editarlo de forma intermedia y ya después pegarlo (a veces por cosas como que si pegas una conversación de teams te mete el texto y un enlace, o el formato UTF no es correcto etc… y prefieres pasarlo por editor sin formato)

En windows lo sencillo es escribir notepad, pegar - editar - copiar y ir al destino…

Aquí estoy probando hacer algo así y metiendolo en un comando y a ver si lo asigno a un botón del ratón

xclip -selection clipboard -o > /tmp/clip.txt && featherpad /tmp/clip.txt

Estoy probando con featherpad… ¿algun consejo?

No sé si entiendo bien este asunto (y lo que pones por encima). Cuando tengo un texto que si copio y pego en otro sitio me arrastra formatos no deseados (tamaño de letra, citas, etc), lo que hago es pegarlo en Kate (siempre lo tengo abierto) y de allí copio y pego al sitio que quería sin formatos raros.

Respecto a paquetes huérfanos, los puedes ver en Yast-->Instalar/desinstalar software-->Clasificación del paquete-->Paquetes huérfanos


Si no ves la pestaña Clasificación del paquete, haz click en el Ver de la izquierda y se desplegará una lista con todas las pestañas que puedes meter. Click en Paquetes huérfanos.

Comentar que puedes ver como huérfano el paquete autofirma. Aunque salga como huérfano, es un rpm externo al sistema que instalé con rpm -ivh autofirma.rpm (algo así era el comando). Como no es de los repos activos (si tienes un paquete instalado de un repositorio que sigues teniendo pero desactivado te lo marca como huérfano), lo marca como huérfano.

También puedes ver la sección Paquetes no necesarios. Pero como no estoy seguro al 100% de que no me hagan falta, pues ahí siguen.

Saludos

He mezclado dos cosas, soy una liante. A ver simplemente buscaba una aplicación puente (Kate no me gusta nada :sweat_smile:) para editar algo antes de pegarlo en el destino final y ha sido cuando me he encontrado con esto de zypper.

Esa pantalla es consistentemente incorrecta :smile_cat:

He hecho install leafpad y remove leafpad… y nuevamente no me ha eliminado los 11 paquetes y se han quedado en el sistema, si voy a la pantalla que me indicas tampoco están, solo 1

Secuencia de hechos:
sudo zypper install leafpad > añade 12 paquetes (explicitamente ha dicho que eran nuevos)
sudo zypper remove leafpad > elimina 1 paquetes (así que se te han quedado 11 en el sistema)
sudo zypper install leafpad > añade 1 paquete (claro ya hay 11 en el sistema)
sudo zypper rm --clean-deps leafpad> ahora sí que elimina 12

= Zypper te deja dependencias por defecto que no necesitas y nadie las usa :speak_no_evil:

Hola. Yo siempre he usado para desinstalar el parametro -u y asi eliminar todas las dependencias que el programa necesita y que no son usadas por otros programas.

sudo zypper rm -u
1 Like

Igual que @Vernius , sólo que yo desinstalo siempre con sudo zypper rm --clean-deps (no sé que es -u :stuck_out_tongue_closed_eyes:).

EDIT: Ya encontré el -u en el manual. Parece lo mismo que --clean-deps.

Saludos

1 Like

Pues vaya, pues mal por zypper… jeje

Si para instalar no tengo que hacer --añade-todas-las-dependencias no me obligues para el remove decirte --clean-depses inconsistente

En lo sucesivo, no mezcles distintos problemas. Crea un hilo para cada problema.

Es lo que hay, zypper rm -u, --clean-deps: Elimina automáticamente las dependencias innecesarias. Si te fijas bien, veras que el paquete que no ha borrado gtk2-lang tiene su sentido porque en ese paquete esta los idiomas de cualquier paquete de gtk2…

Si ejecutas esto: zypper se -i gtk2 , veras que tienes algunos paquetes instalados y, por lo tanto, gtk2-lang es necesario y no se borra.

El comando zypper lleva bastantes años funcionando y hace bien su trabajo.

1 Like

tomo nota :smiley_cat:

Cierto si tiene sentido, no conocia el comando :slight_smile:

Sí lo hace bien, y siempre lo utilizo en lugar de discover, eso no quita que, en mi opinión de novata, sigue habiendo 11 paquetes huerfanos que no quita a no ser que le pases el parámetro… y no será por capricho o error, entiendo que hay un motivo que no comprendo

La pregunta que me surge de esto, como localizo esos 11 paquetes que no hice con -u en su momento… a lo largo de este tiempo he instalado muchos programas que no he desinstalado con -u… y en huerfanos no aparecen (hemos visto que solo el gtk2-lang el resto no aparecian)

Es que si NO lo haces con la opción -u o --clean-deps no los borran y ahí se quedan sin ser marcados como huérfanos (*) porque no lo son.

En mi caso, casi nunca lo utilizo salvo que me instale un motón de paquetes de una aplicación que quiera probar.

PD: Otra cosa, sobre copiar y pegar sin formato, todo depende de la aplicación donde quieras pegar. Por ejemplo, LibreOffice Writer admite la opción de pegar sin formato, se llama Pegado especial.

(*) Los paquetes huérfanos son archivos que ya no son referenciados por ningún repositorio, pero permanecen en el sistema de archivos y consumen espacio en disco. Los archivos de paquete pueden quedar huérfanos debido a la configuración o a la eliminación del repositorio.

Como comenta @Krovikan , se puede ver bien.
Había una utilidad dentro de yast software , que indicaba el flujo de cada aplicación, esta se quito y ya no aparece en minguna (desconozco la causa) .
Al eliminar es bueno marcar las opciones que no están seleccionadas, el limpiar al borrar y añadir también cambio de proveedor.

Hay que tener especial cuidado, ya que aquellas instalaciones que no se pueden confirmar por un proveedor, también son marcadas como huérfanas, y en realidad son funcionales (a pesar de aparecer en rojo como huérfanas) ; un ejemplo son los drivers de las impresoras, al no aparecer como certificadas, no se pueden comprobar .

Saludos

Buenas. Podriamos decir que zypper no tiene (que yo sepa) un comando para borrar dependencias no usadas por otros programas como si tiene por ejemplo apt con la orden autoremove.
Las dependencias que no sean usadas por otros programas debes borrarlas en el momento de desinstalar el programa que las usa o se quedan en el sistema salvo que sean marcadas por zypper como paquetes huerfanos, es decir, que no estan en ningun repositorio.
Si no es correcto, por favor corregidme que asi me aclaro yo tb.
Saludos

yo entiendo exactamente lo mismo, y lo veo como un fallo, que ignoro si apt u otros también lo tienen. Si es así es un fallo no por el espacio en disco, sino sobre todo por el riesgo de seguridad.

Entiendo que zypper debería tener un árbol de dependencias y poder saber estén firmadas o no, qué se ha instalado con qué. Conoce la base del sistema que viene “planchada” y conoce todas las cosas que pasen por él.

Debe haber alguna complejidad que no comprendo y por ese motivo es así

Tengo, con permisos de ejecución, el siguiente script que ejecuto cada tanto:

#!/bin/sh
zypper packages --unneeded | awk -F'|' 'NR==0 || NR==1 || NR==2 || NR==3 || NR==4 {next} {print $3}' > list
while read p; do zypper info $p && zypper se --requires $p && zypper rm $p; done  < list
rm -rf list

Creado por gnac, y que básicamente lista paquetes innecesarios, muestra su información, verifica dependencias y luego los elimina después de solicitar confirmación para cada uno.

2 Likes

chúpate esa chatGPT… gracias !!

1 Like

Más abajo de gnac, aparece un comando zypper equivalente a apt autoremove.

Hello guys, I found this command and it seems to do the equivalent of ‘apt autoremove’

zypper packages --unneeded | awk -F'|' 'NR==0 || NR==1 || NR==2 || NR==3 || NR==4 {next} {print $3}' | grep -v Name | sudo xargs zypper remove --clean-deps

Screenshot_20230401_051015

A mi me sale:

 ~/Descargas  zypper packages --unneeded | awk -F'|' 'NR==0 || NR==1 || NR==2 || NR==3 || NR==4 {next} {print $3}' | grep -v Name | sudo xargs zypper remove --clean-deps
[sudo] contraseña para root: 
Leyendo los paquetes instalados...
Resolviendo dependencias de paquete...

Los siguientes 41 paquetes van a ser ELIMINADOS:
  libdeflate0-32bit libgif7-32bit libIex-3_2-31-32bit libIlmThread-3_2-31-32bit libImath-3_1-29-32bit
  libkdecorations3private1 libLLVM18-32bit libLLVM19 libLLVM19-32bit libOpenEXR-3_2-31-32bit
  libOpenEXRCore-3_2-31-32bit libpoppler146 libpoppler147 libprotobuf-lite28_3_0 libwx_baseu_net-suse14_0_0
  libwx_baseu_net-suse-nostl14_0_0 libwx_baseu-suse14_0_0 libwx_baseu-suse-nostl14_0_0
  libwx_baseu_xml-suse14_0_0 libwx_baseu_xml-suse-nostl14_0_0 libwx_gtk3u_aui-suse14_0_0
  libwx_gtk3u_core-suse14_0_0 libwx_gtk3u_core-suse-nostl14_0_0 libwx_gtk3u_gl-suse14_0_0
  libwx_gtk3u_html-suse14_0_0 libwx_gtk3u_html-suse-nostl14_0_0 libwx_gtk3u_propgrid-suse14_0_0
  libwx_gtk3u_qa-suse14_0_0 libwx_gtk3u_qa-suse-nostl14_0_0 libwx_gtk3u_xrc-suse14_0_0 libx265-209
  libx265-209-32bit python311-gobject-Gdk python311-policycoreutils python311-pygdbmi python311-pyinotify
  python311-pysmbc python311-selinux python311-semanage python311-setools python311-tomli

41 paquetes a quitar.

Cambio de tamaño de la instalación del paquete:
              |         0 B    requerido por los paquetes que se instalarán
  -461,8 MiB  |  -  461,8 MiB  liberados por los paquetes que van a ser eliminados

Backend:  classic_rpmtrans
¿Desea continuar? [s/n/v/...? mostrar todas las opciones] (s):

Comparad con mis pantallazos de mi comentario de más arriba. Respeta autofirma y los que no son realmente huérfanos.

Saludos

Hola:
Según tengo entendido, yast soft, lo hace de forma automática , y tiene opción de comprobarlo de forma manual .
En auto firma de drivers , advierte, pero al saber la procedencia ,se le da ignorar y se instala ( lo único es que aparece en rojo) .

Había la utilidad de ver la resolución de lo que instalaba, pero ya hace tiempo que la quitaron .

No se si de forma gráfica ,se pueda ver con systemd-analyze en una de sus opciones , pero es muy extensa y compleja.

Lo bueno de zypper ( lo indica en la wiki) , es que se puede usar con script , Por lo demás hay que respetar ,las reglas (repos,prioridades,etc) ,siendo así es raro que haya dependencias .

Saludos

En ese mismo hilo de Github hay otro script más elegante

zypper pa --unneeded | awk 'NR > 4 {OFS="="; print $5,$7}' | sudo -E xargs zypper rm -u $ASSUME

OJO, tener cuidado con ejecutar dichos scripts. Es mejor, mirar uno a uno los paquetes innecesarios y si procede, eliminarlo.

Mejor que ocupe espacio a que te destroce el sistema, dejarlos no hay riesgo de inseguridad porque se actualizan.

2 Likes