Sunteți pe pagina 1din 11

DEBIAN PACKAGE(DPKG)

Manipulación de paquetes con dpkg

dpkg es el programa base para manejar paquetes Debian en el sistema. Si tiene paquetes

.deb, dpkg es lo que permite instalar o analizar sus contenidos. Pero este programa sólo

tiene una visión parcial del universo Debian: sabe lo que está instalado en el sistema y lo

que sea que se le provee en la línea de órdenes, pero no sabe nada más de otros paquetes

disponibles. Como tal, fallará si no se satisface una dependencia. Por el contrario,

herramientas como apt crearán una lista de dependencias para instalar todo tan

automáticamente como sea posible.

NOTA ¿dpkg o apt?

Se debe ver a dpkg como una herramienta de sistema (tras bambalinas) y apt como una

herramienta más cerca del usuario que evita las limitaciones del primero. Estas

herramientas trabajan juntas, cada una con sus particularidades, adecuadas para tareas

específicas.

Instalación de paquetes

dpkg es, sobre todo, la herramienta para instalar un paquete Debian ya disponible (porque

no descarga nada). Para hacer esto utilizamos su opción -i o --install.

Ejemplo Instalación de un paquete con dpkg

# dpkg -i man-db_2.7.0.2-5_amd64.deb

(Reading database ... 86425 files and directories currently installed.)

Preparing to unpack man-db_2.7.0.2-5_amd64.deb ...


Unpacking man-db (2.7.0.2-5) over (2.7.0.2-4) ...

Setting up man-db (2.7.0.2-5) ...

Updating database of manual pages ...

Processing triggers for mime-support (3.58) ...

Podemos ver los diferentes pasos que realiza dpkg; sabemos, por lo tanto, en qué punto

podría haber ocurrido un error. La instalación también puede realizarse en dos etapas:

primero desempaquetado, luego configuración. apt-get lo aprovecha limitando la

cantidad de invocaciones de dpkg (ya que cada llamada es costosa debido a la carga de

la base de datos en memoria, especialmente la lista de archivos ya instalados).

Desempaquetado y configuración separados

# dpkg --unpack man-db_2.7.0.2-5_amd64.deb

(Reading database ... 86425 files and directories currently installed.)

Preparing to unpack man-db_2.7.0.2-5_amd64.deb ...

Unpacking man-db (2.7.0.2-5) over (2.7.0.2-5) ...

Processing triggers for mime-support (3.58) ...

# dpkg --configure man-db

Setting up man-db (2.7.0.2-5) ...

Updating database of manual pages ...

A veces dpkg fallará intentando instalar un paquete y devolverá un error; si el usuario le

ordena ignorarlo sólo generará una advertencia; es por esta razón que tenemos las

diferentes opciones --force-*. La orden dpkg --force-help, o su documentación, proveerá


una lista completa de estas opciones. El error más frecuente, con el que seguramente se

encontrará tarde o temprano, es una colisión de archivos. Cuando un paquete contiene un

archivo que ya está instalado por otro paquete, dpkg se negará a instalarlo. Aparecerá el

siguiente mensaje:

Unpacking libgdm (from .../libgdm_3.8.3-2_amd64.deb) ...

dpkg: error processing /var/cache/apt/archives/libgdm_3.8.3-2_amd64.deb (--unpack):

trying to overwrite '/usr/bin/gdmflexiserver', which is also in package gdm3 3.4.1-9

En este caso, si piensa que reemplazar este archivo no es un riesgo significativo para la

estabilidad de su sistema (que es el caso frecuentemente), puede utilizar la opción --force-

overwrite que le indica a dpkg que ignore dicho error y sobreescriba el archivo.

Si bien hay muchas opciones --force-* disponibles, probablemente sólo utilice

regularmente --force-overwrite. Estas opciones sólo existen para situaciones

excepcionales y es mejor evitarlas siempre que sea posible para respetar las reglas

impuestas por el mecanismo de empaquetado. No olvide que estas reglas aseguran la

consistencia y estabilidad de su sistema.

PRECAUCIÓN Uso efectivo de --force-*


Si no es cuidadoso, utilizar una opción --force-* puede llevar a un sistema en el que la

familia de programas APT se negarán a funcionar. De hecho, algunas de estas opciones

permitirán instalar un paquete cuando no se cumple una de sus dependencias o cuando

existe un conflicto. El resultado será un sistema inconsistente desde el punto de vista de

dependencias y los programas APT se negarán a efectuar cualquier acción excepto

aquellas que le permitan devolver el sistema a un estado consistente (que generalmente


consiste en instalar la dependencia faltante o eliminar un paquete problemático). Esto

resulta en mensajes como el siguiente, obtenido luego de instalar una nueva versión de

rdesktop ignorando su dependencia en una nueva versión de libc6:

# apt full-upgrade

[...]

You might want to run 'apt-get -f install' to correct these.

The following packages have unmet dependencies:

rdesktop: Depends: libc6 (>= 2.5) but 2.3.6.ds1-13etch7 is installed

E: Unmet dependencies. Try using -f.

Un administrador valiente que está seguro de la correctitud de su análisis podría elegir

ignorar una dependencia o conflicto y utilizar la opción --force-* correspondiente. En este

caso, si desea poder continuar utilizando apt o aptitude, deberá editar /var/lib/dpkg/status

para borrar o modificar la dependencia o conflicto que desea invalidar.

Esta manipulación es un atajo desagradable y no debería ser utilizado nunca excepto en

los casos de más extrema necesidad. Muy frecuentemente, recompilar el paquete que está

causando el problema (revise la Sección 15.1, “Recompilación de un paquete desde sus

fuentes”) o utilizar una nueva verión (potencialmente corregida) de un repositorio como

stable-backports (revise la Sección 6.1.2.4, “Retroadaptaciones para Stable”) son

soluciones más adecuadas.

Eliminación de un paquete

Ejecutar dpkg con la opción -r o --remove seguida del nombre de un paquete eliminará

dicho paquete. Esta eliminación, sin embargo, no es completa: se mantendrán todos los
archivos de configuración, scripts del encargado, archivos de registros (registros de

sistema) y otros datos de usuarios que gestiona el paquete. De esta forma, puede

desactivar el programa fácilmente al desinstalarlo pero es posible reinstalarlo rápidamente

con la misma configuración. Para eliminar completamente todo lo asociado con un

paquete, utilice la opción -P o --purge seguida del nombre del paquete.

Ejemplo Eliminación y purgado del paquete debian-cd

# dpkg -r debian-cd

(Reading database ... 97747 files and directories currently installed.)

Removing debian-cd (3.1.17) ...

# dpkg -P debian-cd

(Reading database ... 97401 files and directories currently installed.)

Removing debian-cd (3.1.17) ...

Purging configuration files for debian-cd (3.1.17) ...

Consulta de la base de datos de dpkg e inspección de archivos .deb

VOLVER A LOS CIMIENTOS Sintaxis de opciones

La mayoría de las opciones se encuentran disponibles en una versión «larga» (una o más

palabras relevantes precedidas por doble guión) y en una versión «corta» (una única letra,

normalmente la primera de las letras de la versión larga, y precedida por un único guión).

Esta convención es tan común que constituye un estándar POSIX.

Antes de finalizar esta sección, estudiaremos algunas opciones de dpkg que consultan la

base de datos interna para obtener información. Daremos primero las opciones en su
versión larga y luego la versión corta correspondiente (que evidentemente aceptarán los

mismos parámetros posibles) de las opciones: --listfiles paquete (o -L), que listará los

archivos instalados por este paquete; --search archivo (o -S), que encontrará el o los

paquetes que contienen el archivo; --status paquete (o -s), que mostrará las cabeceras de

un paquete instalado; --list (o -l), que mostrará la lista de paquetes conocidos por el

sistema y su estado de instalación; --contents archivo.deb (o -c), que listará los archivos

en el paquete Debian especificado; --info archivo.deb (o -I), que mostrará las cabeceras

de este paquete Debian.

Archivo de registro de dpkg

dpkg mantiene un registro de todas sus acciones en /var/log/dpkg.log. Este registro es

extremadamente detallado ya que incluye cada una de las etapas por las que pasa un

paquete gestionado por dpkg. Además de ofrecer una forma de rastrear el funcionamiento

de dpkg, sobre todo ayuda a mantener un historial del desarrollo del sistema: uno puede

encontrar el momento exacto en el que se instaló o actualizó un paquete, y esta

información puede ser extremadamente útil cuando se intenta entender un cambio de

comportamiento reciente. Además, como se registran todas las versiones, es sencillo

verificar y referenciar información con el archivo changelog.Debian.gz del paquete en

cuestión o inclusive con reportes de error online.

PARA ABREVIAR

dpkg

El comando dpkg permite la instalación, la actualización y la supresión de los

programas. Se utiliza en los S.O. Deribados de Debian y trabaja sobre los archivos con

la extensión .deb.
En el directorio /var/lib/dpkg se encuentra la base de datos. NO debe modificar el

archivo. En /var/lib/dpkg/status esta la lista de paquetes conocidos por dpkg.

Instalación, actualización y supresión.

dpkg -i o dpkg -install [nombre_del_archivo.deb] Así se puede instalar un paquete o los

paquetes descriptos.

dpkg -R directorio Permite instalar recursiva todos los archivos .deb del directorio

nombrado.

No existe opción del comando dpkg para forzar la actualización o instalación del

paquete.

La supresión de un paquete se lleva acabo con la opción -r. Esta opción elimina todo

menos los archivos de configuración. Para suprimir todo incluso estos archivos se debe

usar la opción -P.

La opciones -a o --pending elimina todos los datos pendientes de borrado.

La opciones --force-all y --purge en conjunto permiten la desinstalación forzosa de

paquetes.

dpkg --force-all --purge nombre_del_paquete

Listar paquetes

El parámetro -l permite listar los paquetes conocidos por dpkg.

El parámetro -S seguido del nombre del fichero permite encontrar el paquete de origen.

dpkg -S /usr/bin/basename

Convertir paquetes

Algunos programas solo vienen para ciertas distros específicamente. Para poder usar

estos programas en nuestro S.O. aunque su distribución oficial no sea la misma que

nuestro S.O. podemos utilizar el comando alien.

Alien permite convertir paquetes de RPM a DPKG y viceversa.


El parámetro -d convertiremos de rpm a dpkg:

alien -d lgtoclnt-7.4-1.i686.rpm

Debemos agregar al comando anterior el parámetro --scripts para que agrege al nuevo

archivo los scripts.

alien --scripts -d lgtoclnt-7.4-1.i686.rpm

ADVANCED PACKAGING TOOL (APT)

¿Qué es APT?

Advanced Packaging Tool (Herramienta Avanzada de Empaquetado), abreviado APT, es

un sistema de gestión de paquetes creado por el proyecto Debian. APT simplifica en gran

medida la instalación y eliminación de programas en los sistemas GNU/Linux.

No existe un programa apt en sí mismo, sino que APT es una biblioteca de funciones

C++ que se emplea por varios programas de línea de comandos para distribuir paquetes.

En especial, apt-get y apt-cache .

Existen también programas que proporcionan un frontispicio para APT, generalmente

basados en apt-get, como aptitude con una interfaz de texto ncurses, Synaptic con una

interfaz gráfica GTK+, o Adept con una interfaz gráfica Qt. Existe un repositorio central

con más de ~25.000 paquetes apt utilizados por apt-get y programas derivados para

descargar e instalar aplicaciones directamente desde Internet, conocida como una de las

mejores cualidades de Debian.

APT fue rápidamente utilizado para funcionar con paquetes .deb, en los sistemas Debian y

distribuciones derivadas, pero desde entonces ha sido modificado para trabajar con paquetes
RPM, con la herramienta apt-rpm, y para funcionar en otros sistemas operativos, como Mac

OS X (Fink) y OpenSolaris (distribución Nexenta OS). Cabe mencionar que a partir de la

versión 1.0, esta incluye una barra de progreso que muestra el porcentaje de instalación.

Uso de APT

Todos conocemos Synaptic, nos permite instalar programas o actualizarlos. De todos

modos nunca viene de mas saber sobre el uso de APT ya que en alguna ocasión quizás

debamos de usarlo.

La abreviatura APT significa Advanced Packaging Tool y es usado por todas las

distribuciones basadas en Debian. Suele ser necesaria la conexión a internet aunque a

veces también funcione sin ella. Las tareas que puede realizar APT son las siguientes:

 Buscar paquetes en internet o localmente

 Solucionar dependencias, algunas veces para que funcione una aplicación se

necesitan otras, esto es una dependencia.

 Descargar de internet aplicaciones, dependencias o paquetes

 Instalar en orden correcto paquetes y dependencias

Los paquetes usados por APT provienen de los repositorios. Solo se puede hacer uso

de APT en caso que seas superusuario o root (administrador). Seguidamente

pondremos una lista de comandos y su utilidad. (Cuando ponemos paquete debe ser

sustituido por el nombre del archivo).

sudo apt-get update

Actualiza los repositorios.

sudo apt-get install paquete

De este modo se nos instalará el paquete con sus dependencias de forma ordenada.
sudo apt-get -d paquete

Se nos baja el paquete y sus dependencias pero no se instala, esto es útil cuando queramos
instalar estos paquetes en otras pc.

sudo apt-get –reinstall install paquete

Podemos actualizar el paquete o solucionar los problemas que pueda tener.

sudo apt-get install paquete1 paquete2- paquete 3

De este modo podremos instalar los paquetes 1 y 2 pero al poner el signo – delante del
tercero este último de desinstalará.

sudo apt-get remove paquete

De esta forma desinstalaremos el paquete junto con todas sus dependencias.

sudo apt-get –purge remove paquete

Esta opción ademas de borrar todos los paquetes y dependencias borra los archivos de
configuración.

sudo apt-get upgrade


Nos actualiza los paquetes a una versión mas nueva, pero antes se tiene que haber usado
sudo apt-get update.
sudo apt-get dist-upgrade
Con este comando actualizaremos la versión del núcleo, Linux.

Los paquetes una vez instalados se quedan en var/cache/apt/archives. Pero los

podemos borrar de las siguietes dos formas, pero cuidado si los borramos y después

los queremos los tendremos que volver a bajar.

sudo apt-get autoclean

Este comando borra los paquetes de los cuales ya existe una nueva versión en el cache.
sudo apt-get clean

Este borra todos los paquetes sin excepción.

Para realizar las consultas de los paquetes tenemos las siguientes tres opciones:

sudo apt-cache search palabra

Busca todos los paquetes que contengan “palabra” en su nombre o descripciones y nos
mostrará un listado con ellos.

sudo apt-cache show paquete

De este modo obtendremos información sobre el paquete.

sudo apt-cache depends paquete

Nos mostrará las dependencias del paquete, es decir de los que depende el paquete
mencionado.

S-ar putea să vă placă și