Checkinstall
Checkinsall es una utilidad que permite crear paquetes Debian a partir de los fuentes. CUIDADO, porque no son paquetes completos, sino que simplemente ayudan a seguir el rastro de archivos instalados por el programa, facilitando la actualización y el borrado del mismo.
Comenzamos con la instalación:
# aptitude install checkinstall
Su uso es bastante fácil e intuitivo,la configuración de las fuentes ( ./configure --alguna-opción) y la compilación (make) se deben de llevar a cabo, mientras que el comando:
# make install
debe ser sustituido por :
# checkinstall
Durante la ejecución vendrán formuladas algunas preguntas,como por ejemplo el tipo de paquete a crear (siendo los posibles: deb,rpm,tgz).
Tenemos a disposición otras opciones :
- -y,--default --Acepta los valores por defecto
- --pkgname=name --Impone el nombre de un paquete
- --pkgversion=versión --Impone la versión
- -A, --arch, --pkgarch=arch --Impone la arquitectura
- --pkgrelease=release --Impone la release versión
- --pkggroup=group --Impone el grupo al cual el paquete debe pertenecer(doc,net...)
- --pakdir=directory --Donde salvar el paquete
- --maintainer=email_addr --El mantenedor del paquete
- --dpkgflags=flags --Eventuales flags para dpkg
- --bk --Realiza un Backup de los archivos que serán pisados
Una vez terminado el proceso,el paquete vendrá automáticamente instalado.
Nota: debemos tener en cuenta que serán señalados eventuales dependencias,sustituciones e/o conflictos,esto debido a que el objetivo de checkinstall es aquel de poder rastrear los files generados y no el de crear un .deb oficial.
Debfoster
#aptitude install debfoster
El objetivo de este programa es de mostrar los paquetes que NO han sido instalados como dependencias, y una vez individuado/s, sera mostrada una lista indicando los paquetes "retenidos" por este/os.
Su uso es bastante simple, cuando lo hacemos correr por primera vez nos hará una serie de preguntas acerca de los paquetes instalados.
Podemos seleccionar mantener el paquete (sera recordado por debfoster) o podemos elegir su eliminación.
Si al momento de responder una de las preguntas tenemos alguna duda acerca del paquete, podemos tipear "?" para poder visualizar información acerca del mismo.
Salida de ejemplo:
libxml-libxml-perl is keeping the following 3 packages installed:
libxml-libxml-common-perl libxml-namespacesupport-perl libxml-sax-perl
Keep libxml-libxml-perl? [Ynpsiuqx?], [H]elp:
ahora podemos elegir cosa hacer:
- Y --Mantiene el paquete instalado
- n --Borra el paquete señalado
- p --Borra el paquete señalado y todos los paquetes retenidos
- s --Salta la pregunta
- i --Visualiza información sobre el paquete
- ? --Igual a i
- u --Vuelve a formular la pregunta anterior
- q --Cancela la operación sin realizar modificaciones
- x --Realiza la cancelación de los paquetes
- h --Ayuda
poderoso verdad?!
Cuando realizamos la limpieza con este programa,seria importante tener algunas consideraciones:
-La información mostrada no toma en cuenta eventuales programas compilados desde las fuentes.
-Leer con atención las librerías mostradas como "retenidas",puede suceder que se muestre una librería de desarrollo NO necesaria para la ejecución de otrasaplicaciones,pero indispensable para la compilación (libncurses5-dev por ejemplo).
Deborphan
#aptitude install deborphan
Este paquete genera una lista de los paquetes huérfanos en el sistema. Por paquete huérfano entendemos aquellas librerías que ya no son necesarias, osea, que ningún paquete instalado la indica como dependencia.Pero...atención con los programas compilados desde las fuentes (con make install o checkinstall) ya que no serán controladas sus dependencias, por lo que podríamos causar algún problema de funcionamiento.
Una opción interesante es --libdev, que nos genera una lista con las librerías de desarrollo (que terminan con -dev) no necesarias.
Para ver los paquetes huérfanos basta lanzar el comando
#deborphan
o
#deborphan --libdevel
Es posible hacer que apt-get lea la lista de paquetes generada por deborphan:
# apt-get --purge remove `deborphan`
# apt-get --purge remove `deborphan --libdev`
La opción --purge como ya sabemos elimina los archivos de configuración del paquete.
Para los poco amantes de la consola podemos instalar gtkorphan, el cual es una muy fácil e intuitiva interfaz gráfica para deborphan.
#aptitude install gtkorphan
y el pollo esta pronto !
Archivos de configuración.
Eliminando los archivos de configuración liberamos espacio en nuestro disco (tarde o temprano muy valioso) y mantenemos limpio el directorio /etc.
Con el siguiente comando podremos borrar los archivos de configuración que han sido dejados por paquetes desinstalados sin la opción --purge.
# dpkg --purge `COLUMNS=300 dpkg -l | egrep "^rc" | cut -d' ' -f3`
pero...que cáspita es este chorizo de letras ?! tranquilos...allá vamos!
dpkg --purge paquetes
Borra los archivos de configuración de todos los paquetes indicados.Estos paquetes los obtenemos tramite el comando
`COLUMNS=300 dpkg -l | egrep "^rc" | cut -d' ' -f3`
que a su vez genera la lista de los paquetes que no han sido borrados completamente (osea aquellos que cuando "se fueron", olvidaron de llevarse laconfiguración).
COLUMNS=300 --> modifica la longitud de la cadena,evitando cortar los nombres de los paquetes (COLUMNS es una variable de ambiente).
dpkg -l --> lista los paquetes disponibles.
egrep "^rc" --> lista las cadenas de nombres que comienzan con "rc", que es el estado que indica que el paquete ha sido borrado.
cut -d' ' -f3 --> devuelve el nombre del paquete,usa como limitador (-d) de campo un espacio (' ') y toma el tercer campo ( -f3.field en ingles).
Existen otros dos comandos que funcionan exactamente igual que el anterior:
dpkg -P $(dpkg -l |awk '/^rc/ { print $2 }')
o
for i in $(dpkg -l |grep ^r| awk '{print $2}'); do aptitude purge -y $i; done
También podemos realizar la limpieza por medio de deborphan, así:
dpkg --purge $(deborphan --find-config)
O bien podemos utilizar aptitude:
aptitude purge '~'c
Donde c la bandera de estado del paquete.
Localepurge
Este es un paquete que debería ser instalado en el sistema desde el inicio, o al menos eso pienso.
El objetivo de este paquete es eliminar los idiomas que instala un paquete y no nos sirven.
Normalmente nos sirven dos idiomas:
*en (idioma "de fabrica")
*es_ES (nuestro idioma)
Entre otras debemos elegir las variaciones que son utilizadas en nuestro sistema (es_ES@euro y en_US o la que sea).
No es aconsejable borrar el ingles, ya que es el idioma por defecto del sistema, y para evitar problemas ....no molesta.
así que, si aun no lo hemos hecho:
#aptitude install localepurge
Durante la configuración sera mostrada una lista con los idiomas, de estas, deberemos seleccionar las que nos interesa.
Normalmente no es necesario, pero por si las moscas...ejecutamos:
#localepurge
De ahora en adelante cada vez que instalemos un paquete,los idiomas inútiles serán borrados, ganando así, espacio en disco.
Buscando archivos duplicados
Conviene cada tanto hacer una intervención sobre el sistema en busca de archivos duplicados.
Cuando digo archivos duplicados me refiero a archivos con diferente nombre pero de idéntico contenido.
Para esto nos podemos valer del siguiente script:
find path/ -type f | xargs md5sum | awk '{
sub("[^/]*/","",$2);
if (cache[$1])
print "Found: "cache[$1],$2;
else
cache[$1]=$2
}'
donde path es la ruta del directorio que queremos controlar.
Este script como se ve NO borra nada, simplemente busca y lista.
Otra alternativa que nos ofrece Debian al momento de buscar y limpiar archivos duplicados es fdupes, una aplicación para linea de comandos muy fácil y útil de usar.
#aptitude install fdupes
Donde las diferentes opciones que nos ofrece son :
(man fdupes para profundizar la informacion).
- -r -- Modo recursivo.
- -s -- Comprueba enlaces simbolicos.
- -h -- Comprueba los enlaces fuertes.
- -S -- Muestra el tamaño de los archivos duplicados.
- -q -- Modo “quiet”, oculta el indicador de progreso.
- -v -- Muestra la version de fdupes.
- -d -- Borra los ficheros duplicados (cuidado, con esta opcion.)
- -h -- Muestra la ayuda.
- -n -- Descarta los ficheros vacios
Ejemplo:
$ fdupes -r -n -S /ruta/al/directorio > duplicados.txt
Se buscan los archivos dentro de /ruta/al/directorio y sus subdirectorios (recursivamente) omitiendo los archivos vacios, mostrando el tamaño de los mismos y guardando la salida en un archivo de texto para estudiar mas tarde y decidir que hacemos.
Instalación de paquetes sin incluir paquetes recomendados ni sugeridos
Una forma de controlar los paquetes que se han de instalar al usar "apt-get install paquete", es controlando los paquetes, aplicaciones y librerías sugeridas o recomendadas, con el fin de tener un sistema limpio y con lo que en realidad necesitamos.
Para realizar ésto, basta con indicarlo en el archivo de configuración /etc/apt/apt.conf añadiendo los siguientes parámetros:
APT::Install-Recommends "false";
APT::Install-Suggests "false";
Cruft:
Según su descripción,
descripcion escribió:
Cruft es un programa que busca a lo largo de tu sistema cualquier cosa que no debería estar allí pero que por alguna razón está; o cualquier cosa que debería estar pero que no está.
Basa casi todos sus resultados en la base de datos de dpkg, así como en una lista de "ficheros extra" que pueden aparecer durante el tiempo de vida de varios paquetes.
Cruft está todavía en una versión preeliminar; tu ayuda para mejorar su precisión y rendimiento es apreciada.
Así pues, cruft es un paquete que una vez instalado y ejecutado, empezará a listar una gran cantidad de ficheros que presumiblemente sobran, faltan o están de alguna forma incorrectos. Su uso es interesante si lo que pretendes es llevar a cabo una limpia hasta los cimientos de tu sistema. Se recomienda encarecidamente usar el sentido común, cruft no es perfecto, y cualquier vano intento de ejecutar burradas como rm -rf $(cruft) terminará, con toda seguridad, en desastre. Así pues, si vas a emplear esta poderosa y destructiva herramienta, siempre a mano y cerciorándote en cada caso de que vas a borrar o manipular.
Conclusión: