Gestión de paquetes Debian

dpkg / apt / dselect




* ¿Qué es un paquete y qué pinta tiene uno de Debian?

Como ya se comentó, los ficheros tienen que ir todos en un determinado sitio para poder usarlos (en un directorio los binarios, en otro los ficheros de configuración,...), por eso muchas distribuciones utilizan paquetes con todos los archivos necesarios para llevar a cabo alguna tarea (por ejemplo, el paquete 'mutt' tiene los binarios necesarios para usar el programa, los ficheros generales de configuración, las páginas del manual,...) y el encargado de llevar a cabo esta tarea en Debian es 'dpkg'.

En Debian, los nombres de los paquetes siguen una convención:
<nombre>_<NúmeroDeVersión>-<NúmeroDeRevisiónDebian>_<Plataforma>.deb
y estos pueden ser de dos tipos diferenciados:

Binarios: contienen ejecutables, archivos de configuración, páginas man/info, información de copyright, y otra documentación.

Fuentes: consisten en un archivo .dsc que describe el paquete fuente (incluyendo los nombres de los siguientes archivos), un archivo .orig.tar.gz que contiene el código fuente original sin modificar en formato tar comprimido con gzip, y usualmente un archivo .diff.gz
que contiene los cambios específicos de Debian al código fuente original.

La instalación de software por el sistema de paquetes usa "dependencias" que son definidas por los encargados del paquete. Estas dependencias están indicadas en el fichero de control asociado al paquete.

Por ejemplo, el paquete que contiene el lector de correo mutt "depende" de algún paquete que sirva para enviar el correo (exim, por ejemplo). Si un usuario intenta instalar mutt sin haber instalado antes exim, el sistema de paquetes de Debian dará un mensaje de error avisando de que también necesita exim, e instalará mutt sólo si el usuario acepta instalar antes exim.

Los detalles sobre el formato de los paquetes de Debian se describen en la página del manual deb(5).


* Grados de prioridad de un paquete:


Cada paquete Debian recibe una "prioridad" por los responsables de la distribución, como ayuda al sistema de mantenimiento de paquetes. Las prioridades son:

Requerido: los paquetes requeridos son necesarios para el correcto funcionamiento del sistema. No se deben eliminar estos paquetes o
el sistema puede volverse totalmente inestable y probablemente ni siquiera se podrá utilizar dpkg para arreglar las cosas.

Importante: aquí se encuentran los paquetes sin los que el sistema no funcionará correctamente. Estos paquetes sólo constituyen la infraestructura base.

Estándar: son los típicos en cualquier sistema Linux, incluyendo un sistema en modo consola. Se instalara por defecto si el usuario no
selecciona nada más.

Opcional: incluyen todos los que razonablemente se desearía instalar a no ser que no se sepa lo que son o exijan requisitos especiales. Esto
incluye X11 y montones de aplicaciones.

Extra: tienen conflictos con otros de mayor prioridad, o es sólo probable que se usen si ya se sabe lo que son o si tienen requisitos especiales.


* ¿Qué es un paquete virtual?


Un paquete virtual es un nombre genérico que se aplica a cualquiera de un conjunto de paquetes, los cuales proveen todos ellos una funcionalidad similar. Por ejemplo, smail y sendmail proveen ambos la funcionalidad de un agente de transporte de correo. También se dice que ambos proporcionan el paquete virtual "agente de transporte de correo". Si cualquiera de ellos está instalado, cualquier programa que exija la instalación de un agente de transporte de correo se dará por satisfecho con la existencia de este paquete virtual.


* Las dependencias en detalle


El sistema de paquetes de Debian tiene un conjunto de "dependencias" diseñadas para indicar (mediante un único indicador) el nivel al que puede operar un programa A independientemente de la existencia del programa B en un sistem a:

· El paquete A depende del paquete B si B tiene que estar obligatoriamente para que funcione A. En ese caso, la versión de dependencia normalmente es un límite inferior, de modo que A depende de cualquier versión de B más reciente que alguna versión especificada.

· EL paquete A recomienda al paquete B si el responsable considera que la mayoría de usuarios no querrán A sin tener la funcionalidad ofrecida por B.

· El paquete A sugiere  al paquete B si B contiene archivos que están relacionados con (y normalmente mejoran) la funcionalidad de A.

· El paquete A entra en conflicto  con el paquete B cuando A no funcionará si B está instalado en el sistema. La mayoría de las veces los conflictos son casos en los que A contiene archivos que son una mejora respecto a los que contiene B. Los "conflictos" se combinan frecuentemente con los "reemplazos".

· El paquete A reemplaza al paquete B cuando archivos instalados por B son borrados y (en algunos casos) sobreescritos por archivos de A.

· El paquete A proporciona al paquete B cuando todos los archivos y la funcionalidad de B se incorporan en A.

Información más detallada en el Manual del Programador de Debian.


* Cómo trabajar con los paquetes (I) - Uso general de 'dpkg'

'dpkg' es el programa principal de gestión de paquetes y puede ejecutarse con muchas opciones. Algunas de las más comunes son:

· "dpkg --help" Averiguar cuáles son las opciones existentes.
· "dpkg --install <paquete>" Instala un paquete (incluyendo el desempaquetado y la configuración).
· "dpkg --remove <paquete>" Borra un paquete (pero no sus archivos de configuración).
· "dpkg --purge <paquete>" Borra un paquete (incluidos los archivos de configuración).
· "dpkg --list 'fu*'" Lista el estado de los paquetes cuyo nombre contiene la cadena "fu*".
· "dpkg --info <paquete>" Información extra de un fichero '.deb'.
· "dpkg --contents <paquete>" Lista los contenidos de un fichero '.deb'.
· "dpkg --listfiles <paquete>" Da una lista de todos los ficheros que instala <paquete>.
· "dpkg --search <fichero>" Busca qué paquetes contienen el fichero <fichero>.
· "dpkg --status <paquete>" Muestra información del paquete instalado <paquete>.
· "dpkg-reconfigure <paquete>" Reconfigura un paquete ya instalado, pero sólo si éste utiliza debconf (debconf provee un interfaz de configuración común a todos los paquetes).
· "dpkg --get-selections" Muestra el estado actual de todos los paquetes que hay en la base de datos de paquetes (si se le da un argumento muestra sólo el estado de ese paquete).
· "dpkg --set-selections" Permite cambiar el estado de un paquete (tiene que recibir la información por la entrada estándar). P. ej.: "echo ``<paquete> hold'' | dpkg --set-selections" Pone el paquete <paquete> en estado 'hold'

Todas las opciones (o casi todas) de dpkg admiten recibir los parámetros de forma abreviada (se puede usar -S en lugar de --search), para más información 'dpkg --help' y/o la pagina del manual de dpkg(8) ('man 8 dpkg').


* Cómo trabajar con los paquetes (II) - Uso general de 'apt'


APT es un sistema de administración de paquetes de software nacido después de dpkg que implementa muchas de sus funciones, así como otras de nuevas.

La base de datos de paquetes la mantiene al día según lo que tengan los recursos indicados en el fichero /etc/apt/sources.list.

Algunos de los comandos más usualmente útiles son:

· "apt-cdrom add" Lo primero que hay que hacer si se instala un sistema Debian desde CD, añadir los paquetes de los CDs a la base de datos, pues apt _sólo_ trabaja con lo que tiene en su base de datos.
· "apt-get install <paquete>" Baja el paquete si no esta, junto con todas sus dependencias y los instala o actualiza (según toque); los paquetes bajados se guardan en /var/cache/apt/archives.
· "apt-get remove [--purge] <paquete>" Borra el paquete y todos los que dependan de él. --purge especifica que los paquetes deberían ser purgados (ver dpkg --purge para mas información).
· "apt-get update" Actualiza la lista de paquetes de los mirrors de Debian. Debería usarse cada día si hay que instalar algún paquete aquél día, y cada vez que se modifique /etc/apt/sources.list.
· "apt-get upgrade [-u]" Actualiza todos los paquetes instalados a las últimas versiones disponibles según el último 'update'. No instalará nuevos paquetes ni borrará de viejos. Si un paquete cambia sus dependencias y requiere la instalación de otro paquete, no será actualizado, sino que será puesto en estado 'hold'. apt-get upgrade no actualizará ningún paquete puesto en 'hold'. También es útil la opción '-u' para saber qué paquetes van a ser actualizados.
· "apt-get dist-upgrade [-u]" Similar a 'apt-get upgrade', pero este borrará o instalará nuevos paquetes para satisfacer las dependencias.
· "apt-get dselect-upgrade" Equivalente a ejecutar la opción 'Install' desde dselect (ver mas adelante).
· "apt-get autoclean" Borra los paquetes que hay en /var/cache/apt/archives cuya versión no está indicada en la base de datos de paquetes (útil para cuando se hace un update y se quieren borrar los paquetes anteriormente bajados cuya versión disponible es ahora superior).
· "apt-get clean" Borra todos los paquetes en /var/cache/apt/archives.
· "apt-cache search <patrón>" Busca un patrón en los nombres de paquetes y sus descripciones.
· "apt-cache show <paquete>" Muestra la descripción completa del paquete.
· "apt-cache showpkg <paquete>" Muestra información mas detallada sobre el paquete y sus relaciones con otros paquetes.


* Interfaces para APT

Existen gran variedad de interfaces gráficas para trabajar con APT de forma más cómoda, como son console-apt, aptitude, gnome-apt, synaptic y stormpkg (entre otros), pero aquí solo trataremos dselect, que aunque es una de las mas potentes, también es una de las mas viejas y difíciles de usar.

dselect comienza presentando al usuario un menú de 7 entradas. El usuario puede seleccionar una acción utilizando las flechas del teclado que mueven la barra iluminada y presionando INTRO para seleccionar la acción iluminada.

Lo que el usuario ve a continuación depende de la acción elegida. Si elige una opción diferente de Access o Select, dselect simplemente procederá a ejecutar la opción seleccionada: p.ej., si el usuario eligió Remove, dselect procederá a borrar todos los ficheros marcados para ser borrados la última vez que se ejecutó la opción Select para elegirlos.

Las dos entradas Access y Select llevan a menús adicionales. En ambos casos, los menús se presentan en una pantalla dividida en dos; la parte superior presenta una lista de opciones navegable, mientras que la parte inferior presenta una explicación ("información") sobre cada una de las opciones.

Una extensa ayuda en línea está disponible: Utilizando la tecla '?' para acceder a la pantalla de ayuda y luego '.' para sucesivamente ver cada una de las páginas disponibles, una a una.

El orden en el que las acciones se presentan en el menú inicial de dselect refleja el orden en el que el usuario ejecutaría normalmente dselect para instalar paquetes. Sin embargo, un usuario puede elegir cualquiera de las opciones tantas veces como sea necesario (incluyendo no usar ninguna opción en absoluto, dependiendo de lo que quiera hacer).

· Primeramente hay que elegir un "Método de Acceso" (Access Method). Este será el método mediante el cual el usuario planea acceder a los paquetes de Debian; p.ej., algunos usuarios pueden acceder a los paquetes de Debian mediante un CD-ROM mientras que otros planean acceder a ellos mediante ftp anónimo. El "Método de Acceso" es almacenado al salir de dselect, de forma que si no cambia, no será necesario volver a usar esta opción más.

Aunque pueda haber muchas mas opciones, actualmente APT ya incorpora los métodos mas usados, por lo que basta con seleccionarlo como método de acceso. A partir de ahora se presupondrá que el método de acceso utilizado es APT.

· Luego, hay que "Actualizar" (Update) la lista de paquetes disponibles. Para ello (si se está usando como método de acceso APT), dselect lee el fichero /etc/apt/sources.list para llevar a cabo la actualización (en realidad, como en el resto de acciones de dselect, se están utilizando las opciones que ofrece APT para realizar el trabajo).

· Elegir (Select) para seleccionar los paquetes que se desea instalar en el sistema. Tras seleccionar esta opción del menú, el sistema presenta al usuario una pantalla de ayuda; se puede salir de la ayuda (de esta y de cualquiera) presionando la barra espaciadora. Lo mejor (si es la primera vez que se utiliza dselect) es leer toda la ayuda, pero presionando '.' repetidamente irá presentando todas las páginas una tras otra. Una vez que el usuario sale de la pantalla de ayuda, aparece el menú en dos secciones para la elección de los paquetes a instalar (o borrar). La parte superior es una ventana relativamente estrecha que presenta una parte de la lista de los paquetes disponibles; la parte inferior de la pantalla es una ventana con "información" sobre los paquetes o grupos de paquetes seleccionados en la parte superior.

Muchos usuarios noveles suelen mostrar confusión en relación a los siguientes aspectos de la pantalla de la opción Select:

· "Marcar para borrado" de paquetes: Se puede especificar qué paquetes deben ser borrados marcando el nombre del paquete o la etiqueta de un grupo de paquetes, p.ej. "Todos" (All) y presionando:

· la tecla '-'. Esto borra la mayoría de los ficheros asociados con el paquete, pero preserva los ficheros listados como ``ficheros de  
configuración'' y demás información de configuración.

· la tecla '_'. En este caso, se borra cualquier fichero que pertenezca a este paquete.

· Si pone un paquete "en espera" (o hold, presionando `='): De forma efectiva, esto indica a dselect que no actualice un paquete incluso en
el caso de que la versión presente en el sistema sea menos reciente que la disponible en la fuente de la distribución que se esté usando (la que fue especificada al establecer el Método de Acceso). (La versión disponible en la distribución viene en el fichero Packages.gz que se lee al activar la opción de menú "Update").

Sacar un paquete del estado de espera (presionando ':'): Se trata de la  opción por defecto y significa que el paquete será actualizado siempre y cuando esté disponible una versión más reciente.


· Orden de presentación de los paquetes: El orden de presentación predeterminado es por Prioridad; para cada valor de prioridad, los
paquetes aparecen ordenados según el directorio (alias sección) del archivo en el que están almacenados. De esa forma, algunos paquetes de (digamos) la sección A pueden aparecer primero, seguidos de paquetes de
la sección B, seguidos de otros paquetes (de prioridad más baja) de la sección A. Se puede cambiar el orden de presentación utilizando la tecla 'o' que va cíclicamente, cambiando de orden de presentación.

· Significado de las etiquetas en la parte superior de la pantalla: Las etiquetas de la parte superior pueden expandirse utilizando la tecla 'v'
(del inglés verbose, detallado). Al hacer esto, gran parte del texto que originalmente cabía en la pantalla se desplaza a la derecha. Para poder verlo es necesario usar la flecha derecha; para volver a la izquierda, hay que utilizar la flecha izquierda.

· Qué hacer en la pantalla de conflicto/dependencia: Si un usuario elige (tanto para instalar como para borrar) un paquete, digamos fu.deb que depende de o recomienda otro, digamos, blurf.deb, entonces dselect presentará un extracto de la pantalla principal de selección. El proceso comienza presentando la ayuda a pantalla completa, de la que se puede salir usando la barra espaciadora. Después, puede elegir los paquetes relacionados, aceptando las acciones sugeridas (de instalar o no), o rechazándolas. Para conseguir esto último, basta presionar Mayúsculas-D; para volver a las sugerencias puede usar Mayúsculas-U. En cualquier caso, se puede salvar la elección y volver al menú principal de instalación mediante Mayúsculas-Q.

· Una vez de vuelta al menú principal, se puede proceder a la opción de "Instalación" (Install) para desempaquetar y configurar los paquetes elegidos. Aunque su nombre sólo diga Install, en el método de acceso de APT también se hace el borrado de los paquetes que se hayan seleccionado para tal fin, de forma que al hacer un "Install" también se hace un "Remove". Alternativamente, si lo que quiere sólo es eliminar ficheros, se puede elegir la opción de "Borrado" (Remove). Se puede salir del programa en cualquier momento mediante la opción Quit; cualquier elección hecha será preservada por dselect.



* Cómo solucionar problemas de dependencias


A veces se producen errores o conflictos durante el proceso de instalación que APT o dpkg no han podido predecir, con lo que algunos paquetes se quedan a medio proceso.

"dpkg --configure --pending" Si dpkg sale con un error mientras hacíamos un apt-get install, upgrade o dist-upgrade se puede intentar utilizar esta línea para configurar los paquetes que ya fueron desempaquetados pero no configurados. Luego se puede probar con apt-get install, upgrade o dist-upgrade -f y luego apt-get install , upgrade o dist-upgrade otra vez. Repetir tanto como sea necesario.

Normalmente, esto resuelve la mayoría de los problemas de dependencias (también, si menciona algún paquete por alguna razón, se puede intentar instalar o borrar ese paquete).


No tenemos copyright, ni declaracion de privacidad, ni lo veras mejor con ningun otro navegador.

Last modified: Monday, 1 July 2013, 09:14 AM