El viernes 04 de junio de 1999 a la(s) 12:42:32 +0100, [EMAIL PROTECTED] contaba: > >Me pregunto si existe alguna utilidad que detecte las librer�as instaladas >en el sistema que no entran en las dependencias de ning�n paquete de los >actualmente instalados.
No s�, pero creo que no.
>Y si no existe, ni nadie ha pensado en ello, ... pues una ayudita para
>empezarlo, porque yo creo que es algo muy �til.
Veamos:
NUMPAQS=`dpkg -l|wc -l`
NUMPAQS=`expr $NUMPAQS \- 5`
LISTA=`dpkg -l|tail -$NUMPAQS|cut -f3 -d' '|grep "$1"|tr '\n' ' '|sed -e
's/\+/\\\+/g'|sed -e 's/\./\\\./g'`
Tras esto, tenemos en la variable $LISTA una lista de todos los
paquetes del sistema que est�n instalados. Os cuento lo del
$NUMPAQS. 'dpkg -l' pone al principio 5 l�neas donde nos explica el
significado de la primera columna. Entonces primero almaceno en la
variable el n�mero de l�neas de 'dpkg -l', luego le resto 5 y con
ese valor ya obtengo luego, gracias a tail, la lista de paquetes
sin cabecera. Con cut recorto cada l�nea de la lista para obtener
los paquetes cuya columna "Error" est� en blanco (fijaos en la
cabecera de 'dpkg -l' para ver lo de "Error"). Con el tr transformo
los retornos de carro en espacios. grep y sed los comento luego.
Bien, ahora la cosa ser�a algo como...
--
echo -n "Verificando "
for PAQUETE in $LISTA; do
echo -n "$PAQUETE "|tr -d '\\'
egrep "(^Depends|^Pre-Depends): .*$PAQUETE.*" /var/lib/dpkg/status > /dev/null;
ERR=$?;
[ $ERR -eq 1 ] && DEPENDS="$DEPENDS$PAQUETE ";
egrep "^Recommends: .*$PAQUETE.*" /var/lib/dpkg/status > /dev/null;
ERR=$?;
[ $ERR -eq 1 ] && RECOMMENDS="$RECOMMENDS$PAQUETE ";
egrep "^Suggests: .*$PAQUETE.*" /var/lib/dpkg/status > /dev/null;
ERR=$?;
[ $ERR -eq 1 ] && SUGGESTS="$SUGGESTS$PAQUETE ";
done
echo
echo;echo -e "Ning�n paquete depende de los siguientes:\n$DEPENDS"|tr -d '\\'
echo;echo -e "Ning�n paquete recomienda los siguientes:\n$RECOMMENDS"|tr -d '\\'
echo;echo -e "Ning�n paquete sugiere los siguientes:\n$SUGGESTS"|tr -d '\\'
--
Bien, esto tiene pinta de funcionar aqu�, y con mi P100 "s�lo"
tarda cosa de dos minutos ;-). El caso es que esto nos escupe toda
la lista de paquetes "de primer nivel" como los llamo yo.
Evidentemente ning�n paquete depende de bitchx, slrn, wget, lilo,
tin, joe, mutt, lynx... y todos aparecen en la lista. Mucho idem
para los Recommends y Suggests. Para evitar esto, le podemos pasar
un par�metro al script, tal que "^lib" y as� procesar� s�lo los
paquetes cuyo nombre empiece por "lib" gracias al grep de la
tercera l�nea.
$ ./script.sh "^lib" # Por ejemplo
Otro fallito: Paquetes como libg++272 o libstdc++2.8 salen en
la lista de que ninguno depende de ellos, porque los "+" de su
nombre interfieren con el egrep. El par de sed's soluciona este
problema con los metacaracteres "+" y ".". Si aparece alguno m�s,
se soluciona de manera evidente. Como consecuencia de esto tuve que
poner un 'tr -d' en cada echo, para que las barras inversas no
salgan por la pantalla.
Probadlo, plis. En mi sistema tarda casi 2 minutos como ya
dije. Quiero saber cu�nto tarda en 300 MHz por ejemplo. Adem�s,
qui�n sabe los paquetes que tendr�is instalados "in�tilmente" ;-).
Bien, y ahora un poco de doc: Un paquete A "Recommends" otro B
cuando el mantenedor considera que la mayor�a de los usuarios no
querr�n tener el A sin tener tambi�n el B. Un paquete A "Suggests"
otro B si B contiene archivos relacionados a la funcionalidad de A,
y a veces aumentan �sta (traducido on-the-fly de la Debian-FAQ).
>Otra opci�n es tratar de desinstalar todas las librer�as una a una. Las que
>no se dejen, es que hacen falta ;-) Pero me parece un m�todo un poco
>bestia, la verdad.
Hombre, es el m�todo r�pido... 'dpkg -r lib*' ;-)
--
Just do it.
David Serrano <[EMAIL PROTECTED]> Linux Registered User no. 87069
http://come.to/Hue-Bond.world In love with TuX. Linux 2.2.9
PGP Public key at http://www.ctv.es/USERS/fserrano/pgp_pubkey.asc
pgp106kbHEVAo.pgp
Description: PGP signature

