Debian: Manipulación de paquetes
Vamos a explicar varios usos básicos de los paquetes de intalación de la distribución Debian y sus derivados.
Los programas en Debian se distribuyen en forma de paquetes deb. Los paquetes deb son similares a los RPM de Fedora/RedHat que contienen todo lo necesario para instalar el programa y tienes las dependencias necesarias para instalar todo lo necesario. Para instalar un programa en paquete deb escribimos:
dpkg -i programa.deb
dpkg
nos proporciona un método sencillo de comprobar el contenido de un paquete:
dpkg -L programaEs habitual que el paquete tenga tantos archivos que nos sea difícil encontrar el que nos
interesa. En ese caso podemos utilizar less
para tener un mejor control del resultado.
dpkg -L programa | less
En ocasiones podemos encontrarnos en el caso contrario de la sección anterior. Podemos tener un archivo y querer saber a qué paquete pertenece. Una vez más dpkg
acude al rescate:
dpkg -S vimrc
Supongamos que queremos reinstalar el sistema operativo y necesitamos saber los paquetes que teníamos instalados para volver a instalarlos más tarde. Una opción es utilizar el comando:
dpkg -l
Lo mismo que antes el listado puede ser muy largo y lo mejor es pasar la salida al less
.
dpkg -l | less
o bien un listado más simple:
dpkg --get-selections
Un truco con este último comando es replicar los paquetes instalados en un server en otro de la siguiente forma. Primero sacamos un listado de los paquetes instalados en el servidor origen:
dpkg --get-selections > paquetes_instalados
Luego en el servidor destino hacemos lo contrario, obtener el listado de paquetes a instalar, actualizar y por último instalar lo marcado con --set-selections
:
dpkg --set-selections < paquetes_instalados sudo aptitude update sudo dselect
Otra opción para replicar los paquete instalados en un servidor a otro vía CD es usar la aplicación aptoncd, que hace una imagen con las aplicaciones que tenemos instaladas en un CD para poder llevarlo a otro server y poder restaurar e instalar dichas aplicaciones.
Una de las fases a ejecutar a la hora de instalar un paquete es la de configuración, en la que se hacen cosas como iniciar o parar servicios, crear archivos de log, etc. En ocasiones podemos querer reconfigurar un paquete sin necesidad de reinstalarlo completamente. Para ello utilizaríamos:
dpkg-reconfigure paquete
En ocasiones necesitamos un cierto software que realice una determinada tarea, pero no conocemos ninguno. Si necesitáramos un reproductor de FLAC, por ejemplo, podríamos utilizar la opción search
de aptitude
para buscar paquetes con el texto flac en el nombre o la descripción:
aptitude search flac
Para hacer búsquedas utilizamos la condición '~n' (n de name, nombre) para buscar en los nombres de los paquetes aquellos que coincidan con la expresión regular que le sigue. Por ejemplo para encontrar paquetes que contengan el texto 'sdl' en su nombre escribiríamos:
aptitude search ~nsdl
Para encontrar todos aquellos paquetes cuyo nombre termine con 'sdl' usaríamos
aptitude search ~nsdl$
La condición ~n es la condición de búsqueda por defecto para aptitude, por lo que no es necesario especificarla y podríamos haber sustituido los comandos anteriores por:
aptitude search sdly
aptitude search sdl$
Sin embargo para el caso de install, si no especificáramos la condición de búsqueda:
sudo aptitude install sdl
aptitude sólo nos informaría de que no existen paquetes con ese nombre, y listaría los paquetes que coinciden con la expresión, mientras que si especificamos la condición de búsqueda:
sudo aptitude install ~nsdl
aptitude da por sentado que sabemos lo que hacemos y procede a instalar todos los paquetes que coincidan con la expresión.
Otras condiciones de búsqueda interesantes son:
Si necesitas que un paquete se mantenga en una determinada versión, por ejemplo porque se elimine una característica que te gustaba, puedes utilizar la opción hold:
aptitude hold paquete
Tanto aptitude como apt ofrecen dos maneras de actualizar el sistema, upgrade
y dist-upgrade
. upgrade
actualizará todos los paquetes a sus nuevas versiones, pero no tocará nada que requiera instalar nuevos paquetes o eliminarlos; ese es el cometido de dist-upgrade
.
Cuando necesites saber la versión de un paquete, quién lo mantiene, si está instalado en el sistema actualmente, que es lo que hace se recurre a la opción show
:
aptitude show paquete
Para extraer el contenido de un paquete .deb sin tener que instalarlo:
dpkg-deb -x nombre_del_paquete.deb directorio_destino