Linux packages management

Vicente González Ruiz

September 12, 2016

Contents

 0.1 Debian Linux
  0.1.1 Pasando de stable a testing
  0.1.2 Pasando de testing a unstable
  0.1.3 Actualización de la base de datos de paquetes
  0.1.4 Actualización de los paquetes
  0.1.5 Búsqueda de un paquete
  0.1.6 Conocer si un paquete ya está instalado
  0.1.7 Instalación de un paquete
  0.1.8 Actualización de un paquete
  0.1.9 Averiguar los ficheros que ha instalado un paquete
  0.1.10 Averiguar el paquete al que pertence un fichero
  0.1.11 Encontrar los paquetes de los que depende otro paquete
  0.1.12 Encontrar los paquetes que dependen de un paquete
  0.1.13 Borrado de un paquete
 0.2 Fedora Core Linux
  0.2.1 Actualización de la base de datos de paquetes
  0.2.2 Actualización de los paquetes
  0.2.3 Búsqueda de un paquete
  0.2.4 Conocer si un paquete ya está instalado
  0.2.5 Averiguar los ficheros que ha instalado un paquete
  0.2.6 Averiguar el paquete al que pertence un fichero
  0.2.7 Instalación de un paquete
  0.2.8 Actualización de un paquete
  0.2.9 Encontrar los paquetes de los que depende otro paquete
  0.2.10 Borrado de un paquete
 0.3 Gentoo Linux
  0.3.1 Actualización de la base de datos de paquetes
  0.3.2 Actualización de los paquetes
  0.3.3 Búsqueda de un paquete
  0.3.4 Conocer si un paquete ya está instalado
  0.3.5 Instalación de un paquete
  0.3.6 Actualización de un paquete
  0.3.7 Averiguar los ficheros que ha instalado un paquete
  0.3.8 Averiguar el paquete al que pertence un fichero
  0.3.9 Encontrar los paquetes de los que depende otro paquete
  0.3.10 Encontrar los paquetes que dependen de un paquete
  0.3.11 Borrado de un paquete
  0.3.12 Averiguar qu’e USE’s existen para un paquete
  0.3.13 Instalar un paquete con alg’un USE activado

A la hora de instalar software en Linux tenemos básicamente dos alternativas. La primera consiste en descargar el código fuente del paquete que deseamos y compilarlo. En la segunda alternativa nos bajamos el paquete ya compilado para la versión del sistema operativo que estamos utilizando. En distribuciones como Fedora Core y Debian Linux esta suele ser la opción más frecuente. En otras distribuciones como Gentoo los paquetes se compilan tras las descarga. Veámos cómo se realizan estas tareas en estas tres distribuciones de Linux.

0.1 Debian Linux

En Debian el instalador de paquetes se llama apt y lo normal es descargar el paquete ya compilado. Para poderlo usar tenemos que haber accedido al sistema como super-usuario.

Existe mucha más información acerca de la instalación de paquetes usando apt. Podremos encontrar gran parte de esta en la la Guía de Referencia Debian (http://www.debian.org/doc/user-manuals).

0.1.1 Pasando de stable a testing

Cuando instalamos Debian podemos seleccionar dos versiones: (1) la estable que tiene los paquetes más probados y (2) la de test, con paquetes más nuevos, aunque menos probados. Dependiendo del uso que queramos dar al host deberíamos utilizar una versión u otra. Generalmente, si el host es un servidor seleccionaremos la versión estable que da menos problemas de actualización.

En algún momento puede ser interesante “upgradear” a la versión de pruebas. Esto se puede hacer son los siguientes comandos:

root# apt-get update  
root# apt-get install libc6 perl libdb2 debconf  
root# apt-get install apt apt-utils dselect dpkg  
 
# Editar el fichero /etc/apt/sources.list cambiar "stable" por  
# "testing" donde proceda.  
 
root# dselect update  # always do this before upgrade  
root# dselect select  # select additional packages  
root# dselect install

0.1.2 Pasando de testing a unstable
# Editar el fichero /etc/apt/sources.list cambiar "testing" por  
# "unstable" donde proceda.  
 
root# dselect update  # always do this before upgrade  
root# dselect select  # select additional packages  
root# dselect install

0.1.3 Actualización de la base de datos de paquetes

Antes de realizar una instalación es interesante tener actualizada la base de datos de paquetes en nuestra máquina. Esto se hace escribiendo:

  root# apt-get update

0.1.4 Actualización de los paquetes

Es una buena idea mantener el sistema operativo lo más actualizado posible. Así minimizaremos los agujeros de seguridad y nos aseguraremos de estar utilizando las últimas versiones de los programas. En Debian se actualiza el sistema operativo escribiendo:

  root# apt-get upgrade

0.1.5 Búsqueda de un paquete

Una vez que nos hemos sincronizado con el servidor de apt que hayamos seleccionado (probablemente durante la instalación del sistema operativo) pasaremos a buscar si existe el <paquete> en cuestión. Esto se realiza escribiendo:

# B\’usqueda sencilla  
root# apt-cache search <paquete>  
 
# B\’usqueda con informaci\’on extra  
root# apt-cache search --full <paquete>

La lista de servidores de paquetes utilizados por apt se encuentra en el fichero ASCII:

  /etc/apt/sources.list

0.1.6 Conocer si un paquete ya está instalado

Para averiguar si un paquete ya está instalado podemos escribir:

  usuario$ dpkg -l | grep <cadena>

donde <cadena> es una cadena de caracteres que pertenecen al nombre del paquete.

0.1.7 Instalación de un paquete

Para instalar un <paquete> escribiremos:

  root# apt-get install <paquete>

0.1.8 Actualización de un paquete

Para actualizar un <paquete> escribiremos:

  root# apt-get install <paquete>

Sí, la misma orden que para instalarlo.

0.1.9 Averiguar los ficheros que ha instalado un paquete
  root# apt-file update  
  usuario$ apt-file list <paquete>

0.1.10 Averiguar el paquete al que pertence un fichero
  usuario$ apt-file search <fichero>

0.1.11 Encontrar los paquetes de los que depende otro paquete
  usuario$ apt-cache depends <paquete>

0.1.12 Encontrar los paquetes que dependen de un paquete
  usuario$ apt-cache rdepends <paquete>

0.1.13 Borrado de un paquete

Para borrar un paquete, escribir:

root# apt-get remove <paquete>

Si se desear eliminar además los ficheros de configuración que dependen del paquete, usar:

root# apt-get --purge remove <paquete>

Esta opción sólo funciona si no existen ficheros nuevos en los directorios que fueran a eliminarse. Si existieran, deberá eliminarlos “a mano”. La opci’on –purge es la ’unica forma de forzar la reinstalaci’on de los ficheros de confiuraci’on de un determinado paquete.

Finalmente, se pueden desinstalar un conjunto de paquetes escribiendo:

root# apt-get remove <paquete>*

0.2 Fedora Core Linux

En Fedora Core el instalador de paquetes se llama yum y es semejante a Debian. Los paquetes suelen descargarse ya compilados.

0.2.1 Actualización de la base de datos de paquetes

A la hora de usar yum no hace falta actualizar la base de datos de paquetes porque de esta tarea se encarga un demonio llamado yum-updatesd, que debería estar siempre ejecutándose.

0.2.2 Actualización de los paquetes
  root# yum update

0.2.3 Búsqueda de un paquete
  root# yum search <paquete>

0.2.4 Conocer si un paquete ya está instalado

Escribir:

  usuario$ rpm --query --all | grep <cadena>

donde <cadena> es una cadena de caracteres que pertenecen al nombre del paquete que deseamos saber si está instalado.

0.2.5 Averiguar los ficheros que ha instalado un paquete
  usuario$ rpm --query --list <nombre_paquete_sin_version>

0.2.6 Averiguar el paquete al que pertence un fichero
  usuario$ rpm --query --file <fichero>

0.2.7 Instalación de un paquete
  root# yum install <paquete>

0.2.8 Actualización de un paquete
  root# yum update <paquete>

0.2.9 Encontrar los paquetes de los que depende otro paquete
  usuario$ ??

0.2.10 Borrado de un paquete
  root# yum remove <paquete>

0.3 Gentoo Linux

En Gentoo los paquetes normalmente se descargan en código fuente y se compilan. Esto tiene ciertas ventajas y otros inconvenientes. Las principales ventajas son: (1) que las dependencias entre las versiones de los paquetes es menor y por tanto, la instalación o actualización de un paquete implica recompilar pocas dependencias y (2) el paquete se compila para la arquitectura de nuestra computadora y con las características deseadas. Esto último incrementa el rendimiento de los programas.

El principal problema en Gentoo es que hay paquetes (como Mozilla Firefox) que tardan mucho en compilarse :-(. Por esto, estos paquetes tan pesados también suelen estar disponibles en binario.

0.3.1 Actualización de la base de datos de paquetes

La base de datos de paquetes en Gentoo se denomina “portage”. Esta base de datos es un árbol de directorios (y ficheros) que se sincroniza con un servidor mediante rsync. La actualización es, debido a la cantidad de información transmitida, un proceso pesado.

Por suerte, los paquetes en Gentoo sólo necesitan ser actualizados cuando aparece una versión nueva de los mismos (no cuando cambia la versión de alguna de sus dependencias, como en Debian). Esto implica que no necesitamos sincronizar portage muy frecuentemente (una vez al mes es más que suficiente para disfrutar de las últimas versiones).

Bien. En Gentoo, portage se actualiza escribiendo:

  root# emerge --sync  
  root# emerge portage

La lista de servidores de rsync y la lista de servidores de paquetes se encuentra en el fichero:

  /etc/make.conf

0.3.2 Actualización de los paquetes
  root# emerge --update --deep --newuse world  
  root# etc-update  
  root# emerge --depclean  
  root# revdep-rebuild

0.3.3 Búsqueda de un paquete
  root# emerge --search <paquete>

0.3.4 Conocer si un paquete ya está instalado

Escribiremos:

 usuario$ equery list <cadena>

donde <cadena> es una cadena de caracteres que pertenecen al nombre del paquete que deseamos saber si está instalado.

0.3.5 Instalación de un paquete

Para instalar un <paquete> escribiremos:

  root# emerge <paquete>

0.3.6 Actualización de un paquete

Para instalar un <paquete> escribiremos:

  root# emerge --update <paquete>

0.3.7 Averiguar los ficheros que ha instalado un paquete
  usuario$ equery files <paquete>

0.3.8 Averiguar el paquete al que pertence un fichero
  usuario$ equery belongs <fichero>

0.3.9 Encontrar los paquetes de los que depende otro paquete
  usuario$ equery depgraph <paquete>

0.3.10 Encontrar los paquetes que dependen de un paquete
  usuario$ equery depends <paquete>

0.3.11 Borrado de un paquete
  root# emerge --unmerge <paquete>

0.3.12 Averiguar qu’e USE’s existen para un paquete
# Hay tres maneras:  
emerge -pv <package>  
equery uses <package>  
eix -e <package>

0.3.13 Instalar un paquete con alg’un USE activado

Existen dos opciones:

  1. Definiendo los USE’s temporalmente:
    USE="-X" emerge emacs # Por ejemplo, para instalar emacs sin soporte para X11  
    USE="X" emerge emacs  # Para hacer lo contrario

  2. Definiendo los USE’s de forma definitiva. De nuevo, existen dos posibilidades:
    1. Modificar la variable USE del fichero /etc/make.conf, y con esto, estaremos haciendo una configuraci’on global en nuestro sistema.
    2. Modificar el fichero etc/portage/package.use. Por ejemplo, si insertamos en ’el la l’inea:
      media-gfx/imagemagick jpeg2k

      tendremos las utilidades proporcionadas por Imagemagic (display, por ejemplo) con soporte para JPEG 2000.