Administración de Paquetes en Ubuntu.
Introducción.
Los paquetes contienen generalmente todos los archivos necesarios para implementar un conjunto de comandos relacionados o características. Existen dos tipos de paquetes Ubuntu:
- Paquetes binarios: Que contienen ejecutables, archivos de configuración, paginas man/info. Información sobre derechos de autor y así como otra información, conocida como metadatos. Estos paquetes se distribuyen en un formato de archivo especifico de Debian. Se distinguen por tener a .deb como extensión de archivos. Los paquetes binarios se pueden desempaquetar usando la utilidad de Debian dpkg.
- Paquetes fuentes: Que consisten en un archivos que contienen el código fuente original sin modificar en formato tar comprimido con gzip y generalmente.
La instalación de software mediante el sistema de paquetes utiliza dependencias. Estas dependencias están documentadas en el archivo de control asociado a cada paquete.
Formato de los Paquetes Ubuntu.
Un “paquete” Ubuntu contiene los archivos ejecutables, bibliotecas y la documentación asociada con un programa particular o con un conjunto de programas relacionados. Normalmente, un archivo Ubuntu tiene la extensión de archivo .deb.
Convención usada para designar a los paquetes Ubuntu
Si nunca has visto un fichero de paquete de Ubuntu previamente, puedes entrar en la carpeta /var/cache/apt/archives y haz un listado de su contenido.
Los paquetes Debian/Ubuntu siguen la siguiente convención:
npaquete_version-revision_arquitectura.deb
Donde Generalmente:
- Npaquete: es el nombre del paquete
- Version: es el número de versión del paquete (cada vez que los mantenedores del mismo le añaden modificaciones o mejoras incrementan el número de la versión)
- Revision: es el número de revisión (de Ubuntu/Debian)
- Arquitectura: es la arquitectura para la que fue compilado el paquete.
El número de revisión es asignado por el desarrollador Ubuntu. Un cambio en el número de revisión generalmente indica que a cambiado algún aspecto del empaquetado.
Dependencias entre Paquetes.
El sistema de paquetes Ubuntu maneja declaraciones de dependencia que se utilizan para expresar que un paquete necesita de la instalación de otro para funcionar. Los tipos de relación que pueden existir entre los paquetes son:
- El Paquete A Depende del Paquete B si B debe instalarse sí o sí para poder ejecutar A. En algunos casos A Depende no sólo de B, sino de una versión específica de B. En este caso, la dependencia de versión constituye un límite inferior, es decir, A dependerá de cualquier versión de B más reciente que la versión especificada.
- El Paquete A Recomienda al Paquete B si el encargado del mismo considera que la mayoría de los usuarios no querrán a A sin tener también la funcionalidad proporcionada por B.
- El Paquete A Sugiere al Paquete B si B contiene archivos que están relacionados y mejoran la funcionalidad de A. La misma relación se expresa diciendo que el paquete B Mejora el paquete A.
- El Paquete A Está en conflicto con el Paquete B cuando A no funciona si se instala B en el sistema.
- El Paquete A Reemplaza el Paquete B cuando los archivos instalados por B se eliminan o se sobrescriben por los archivos de A.
- El Paquete A Proporciona el Paquete B cuando todos los archivos y funcionalidad de B están incorporados en A.
La utilidad aptitude tiene un mayor control sobre los paquetes considerados como Recomendados y Sugeridos que apt-get, el cual simplemente obtiene todos los paquetes considerados como Dependientes y deja todos los paquetes considerados como Recomendados y Sugeridos.
Manipulación de Paquetes a Bajo Nivel.
La manipulación directa de ficheros de paquetes se realiza con el comando dpkg. Gracias a la existencia de programas como el Centro de software de Ubuntu, synaptic, aptitude o apt-get, sólo es necesario usar dpkg cuando nos encontramos con paquetes de Ubuntu sueltos, esto es, que no forman parte de un repositorio estructurado en la red o de un CD-ROM.
Instalación de paquetes a bajo nivel
El comando
$ dpkg -i paquete.deb
Instalará el fichero de paquete indicado.
En caso de que se produzcan problemas de dependencias (falta un paquete del que depende), el paquete no será configurado, pero será desempaquetado. En este caso deberemos instalar también los paquetes necesarios
- Comprobación de si un paquete está instalado
Si queremos comprobar si un paquete está instalado podemos hacerlo utilizando la opción -l:
$ dpkg -l vim
- Para desinstalar paquetes con dpkg se emplea:
$ dpkg --remove paquete
o
$ dpkg --purge paquete
si se quiere además borrar los ficheros de configuración. También se puede usar -P.
En este caso no se especifica la ruta en la que se encuentra el paquete, sino simplemente el nombre del mismo.
- Averiguar los archivos instalados por un paquete
La opción -L muestra todos los archivos que instala en el sistema un paquete en concreto.
$ dpkg -L hwdata
- Averiguar que paquete instala un determinado archivo
Si no sabemos que paquete instaló un determinado archivo en nuestro sistema podemos averigüarlo con la opción -S de dpkg:
Manipulación de Paquetes a Alto Nivel.
APT.
Advanced Packaging Tool, (APT), es un sistema de gestión de paquetes que simplifica en gran medida la instalación y eliminación de programas en los sistemas GNU/Linux. Y apt-get es la utilidad para usar desde la línea de comandos que hace de interfaz entre el usuario y APT.
APT es capaz de:
- Manejar automáticamente las dependencias entre paquetes
- Hacerse cargo de las configuraciones de los paquetes
- Encontrar los paquetes por sí mismo y
- Actualizar el sistema con versiones nuevas de programas.
APT, por si mismo no instala los paquetes, se encarga de descargarlos, resolver dependencias, mantener actualizada la base de datos de paquetes y de otras funciones, pero cuando se va a instalar un paquete transfiere el control a dpkg.
El funcionamiento de APT se necesita un fichero donde se localicen las fuentes. Una fuente o repositorio, es el lugar donde se encuentran los paquetes. Una fuente puede ser:
- Un CD/DVD.
- Un servidor HTTP.
- Un servidor FTP.
- Un directorio en el sistema de ficheros local.
El fichero en el que se especifican las fuentes disponibles es:
/etc/apt/sources.list
Normalmente el formato del fichero /etc/apt/sources.list incluye líneas del tipo:
deb http://site.org/debian distribución sección1 sección2
deb-src http://site.org/debian distribución sección1 sección2
- deb indica que el repositorio contiene paquetes compilados o binarios.
- deb-src indica que en el repositorio obtendremos paquetes en código fuente.
Si queremos ver el contenido del fichero sources.list para ver todas las fuentes de paquetes disponibles en nuestro sistema podemos ejecutar:
$ cat /etc/apt/sources.list
Actualización de la Base de Datos de Paquetes.
El sistema de paquetes utiliza una base de datos para llevar un control de los paquetes instalados, no instalados y cuáles están disponibles para instalar.
Para actualizar la lista se utiliza el comando apt-get update. Este comando descargará la lista completa de paquetes que contienen las fuentes indicadas en el fichero sources.list.
Instalación de un paquete
Si tenemos la lista de paquetes disponibles actualizada, para instalar un paquete basta escribir:
$ sudo apt-get install nombre_paquete
Este comando se conectará a la fuente y descargará el paquete, comprobará las dependencias descargando además todos los paquetes necesarios, los descomprimirá e instalará y configurará el software.
Si sólo queremos que se descargue el paquete y no se instale utilizamos la opción -d:
$ sudo apt-get -d install n_paquete
El paquete estará disponible en /var/cache/apt/archives
Eliminar un Paquete.
Si vamos a dejar de utilizar un paquete podemos desinstalarlo con:
$ sudo apt-get remove nombre_paquete
Con el parámetro –purge delante de remove se borrarán también los archivos de configuración de los paquetes que vamos a desinstalar.
Actualizar Paquetes.
Para actualizar todos los paquetes a sus versiones más recientes disponibles en las fuentes utilizaremos apt-get con el comando upgrade.
$ sudo apt-get upgrade
Puede ocurrir que al actualizar con el parámetro upgrade aparezca el error:
The following packages have been kept back:
Esto significa que por alguna razón algunos paquetes no han podido ser actualizados y se han conservado sus versiones anteriores debido a cambio de dependencias en el paquete.
En ese caso debemos actualizar con:
$ sudo apt-get dist-upgrade
Descubrir nombres de Paquetes.
Si para instalar un paquete necesito saber su nombre, podemos utilizar el comando apt-cache con el parámetro search.
$ apt-cache search NombrePaquete.
Obtener información de Paquetes
- Para obtener información de un paquete en concreto utilizaremos el parámetro show:
$ apt-cache show
- Para obtener más información como dependencias emplearemos el paráemtro showpkg
$ apt-cache showpkg NombrePaquete.
- Para obtener sólo las dependencias completas usamos la opción depends:
$ apt-cache depends NombrePaquete.