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

Attachment: pgp106kbHEVAo.pgp
Description: PGP signature

Responder a