Hace no mucho se habló aquí de que cuando se desinstalan programas
es posible que queden librerías que ya no son necesarias ocupando
espacio.

Voy a poner aquí fragmentos de unos cuantos mensajes de
es.comp.os.linux porque creo que pueden ser interesantes.


(Sobre el apt)
[ Yo ]
De todos modos lo acabo de probar y realmente está muy bien, pero
le veo dos pegas:
- si instalo desde el cdrom ¿porqué diablos me copia los paquetes
a /var/cache/apt/archives?
- está claro que los programadores lo han hecho pensando en
facilitar la instalación, pero y la desinstalación ¿qué? En un
instante te puedes instalar el gnome por ejemplo, pero para
desinstalarlo tienes que ir buscando todos los paquetes que ha
instalado.

(En otro thread)
[ RVM, o sea yo]
> De todos modos es una lástima que ningún gestor de paquetes tenga
> ninguna opción para recordarle al usuario las librerías
> instaladas y que no está usando ningún programa.

[ *Puntero_Loco ]
Muy sencillo, si estás en debian te vas al dselect, prueba a marcar
un
paquete de librerías para desintalación, y si no te sale ninguna
pantalla de advertencia es que nada usa esas librerías.

[ Yo ]
Hue-Bond hizo un script que muestra los paquetes que no tienen
dependencias con ningún otro, pero... imaginaros esto:

dpkg --purge gimp
Reading database...
Purging package gimp....
The following packages are not needed anymore:
gimp-nonfree
freefonts
libtal1.1
libytal2.4
...
would you like to purge them too?
yes
Purging...
Ok. 11532 files erased. 25643 Kb disk space freed.

[ Salvador Petit Marti ]
>>[...]
>La idea es buena, pero ¿como sabe la máquina si esos paquetes te
>interesan por si mismos?. Quizás seria interesante saber cuales
son tus
>paquetes "hoja" (aquellos de los que no depende ningun otro, y
que se
>encuentran en los extremos del arbol de dependencias) pues estos
son los
>que tienes porque quieres (no porque te obliga el apt). ¿El
script de
>Hue-Bond detectaba estos?

[ Yo, otra vez ]
Sí, pero no es tan sencillo, porque entre esos paquetes "hoja"
hay muchos que son necesarios, además imagínate este caso: entre
el listado de paquetes que puedes desinstalar sale el
gnome-panel. Vale voy y lo desinstalo. Si vuelvo a ejecutar otra
vez el script ahora aparecerán unas cuantas librerías que ya no
necesita ningún otro paquete (antes el gnome-panel dependía de
ellas).
Lo malo es que al ser un script es lento. La debian lleva un
paquete llamado pkg-order que muestra el árbol de dependencias
pero al estar hecho en perl también es lento.

En los últimos días he estado incluso pensando en hacer yo mismo
un programa que hiciera este tipo de desinstalaciones, pero lo
malo es que no sé como obtener de una forma sencilla en C o C++
la lista de dependencias de un paquete instalado. De todas formas
contaré el algoritmo (ojo, que puede no ser correcto) que tenía
pensado por si alguien con más conocimientos de programación que
yo se anima:

Al programa se le pasaría como parámetro el paquete base a
desinstalar. El objetivo del programa es averiguar la lista de
paquetes que quedarían libres (que ningún otro paquete dependiera
de ellos).

1) Comprobar si algún otro paquete instalado depende del paquete
que se pretende desinstalar. Si es así no hay nada que hacer.

2) Meter el paquete y su lista de dependencias en una lista
(provisional) de paquetes borrables.

3) Recorrer esta lista desde el principio al final y comprobar si
cada uno de estos paquetes es necesitado por otro paquete
instalado y que no esté en la lista.

4) Si es así el paquete se borra de esta lista (es decir el
paquete no se desinstalará).

5) Si no es así (ningún otro paquete depende de él) añadir sus
dependencias a la lista de paquetes borrables (para más tarde
comprobar si alguno de esos paquetes se pueden borrar también).

Cuando se haya recorrido toda la lista se puede dar el caso de
que algún paquete sigue estando en la lista porque otro paquete
que también estaba en la lista dependía de él, pero si embargo al
llegar a él hemos comprobado de que lo tenemos que quitar de la
lista porque otro paquete fuera de la lista dependía de este
último (buf, esto no está quedando nada claro, no sé si lo
entendereis).

Por este motivo hay que hacer varias pasadas a la lista hasta que
la lista no cambie.

6) Mostrar la lista definitiva en pantalla (o grabarla en un
fichero, o directamente proceder a desinstalar los paquetes de la
lista).

Ricardo Villalba
[EMAIL PROTECTED]
[EMAIL PROTECTED]
http://members.xoom.com/rvmsoft
http://rvmsoft.findhere.com

Responder a