DPKG(8)

NOMBRE
dpkg - Gestor de paquetes Debian de medio nivel

SINOPSIS
dpkg [opciones] acción

AVISO
El propósito de este manual es que los usuarios entiendan las opciones de llamada de dpkg y los estados en los que puede estar un paquete con algo más de precisión que la dada por dpkg --help.

No deberían usarlo los encargados de paquetes para comprender el proceso de instalación. Las descripciones de lo que hace este programa al instalar y desinstalar simplemente no son apropiadas.

DESCRIPCIÓN
dpkg es una herramienta de nivel medio para instalar, construir, borrar y gestionar los paquetes de Debian GNU/Linux. Se llama con parámetros desde línea de órdenes, especificando una acción y cero o más opciones. La acción dice a dpkg qué hacer y las opciones controlan de alguna manera su comportamiento.

También se puede usar dkpg como interfaz a dpkg-deb. Si aquél se encuentra alguna de las opciones de éste, se limita a llamarlo con esas mismas opciones. La lista de opciones de dpkg-deb es:
    -b, --build,
    -c, --contents,
    -I, --info,
    -f, --field,
    -e, --control,
    -x, --extract,
    -X, --vextract, and
    --fsys-tarfile.
Lea dpkg-deb(1) si desea más información sobre estas acciones.

Nota: La interfaz de dpkg principal y más sencilla de usar es dselect(8). También hay otras, como las basadas en apt(8).

INFORMACIÓN SOBRE PAQUETES
Hay bastante información útil sobre los paquetes disponibles accesible a través de dpkg. Esta información se divide en tres clases: estados, estados de selección e indicadores. Teóricamente, estos valores se cambiarán principalmente con dselect.

  ESTADOS DE LOS PAQUETES

installed
    Bien desempaquetado y configurado.

half-installed
    Se inició la instalación del paquete, pero no se completó por alguna razón.

not-installed
    No está instalado en el sistema.

unpacked
    Descomprimido, pero no configurado.

half-configured
    El paquete está descomprimido y la configuración se inició, pero no se terminó por alguna razón.

config-files
    Sólo quedan los ficheros de configuración del paquete en el sistema.

  ESTADOS DE SELECCIÓN DE LOS PAQUETES

install
    El paquete se ha seleccionado para instalarse.

deinstall
    El paquete se ha seleccionado para desinstalarse (es decir, que queremos borrarlo todo excepto los ficheros de configuración).

purge
    El paquete se ha seleccionado para purgarse (es decir, que queremos borrarlo todo, incluso los ficheros de configuración).

  INDICADORES DE LOS PAQUETES

hold
    Un paquete marcado como hold no es modificado por dpkg, a no ser que lo forcemos a hacerlo con la opción --force-hold.

reinst-required
    Un paquete marcado como necesita-reinst está roto y necesita reinstalarse. Estos paquetes no pueden borrarse, a no ser que se fuerce la acción con la opción --force-remove-reinstreq.

ACCIONES

dpkg -i | --install fichero_paquete...
    Instala el paquete. Si se especifica la opción --recursive o -R, fichero_paquete debe ser un directorio.

La instalación consiste en los siguientes pasos:
1. Se extraen los ficheros de control del paquete.
2. Si hay instalada otra versión del mismo paquete, se ejecuta el programa prerm del antiguo paquete.
3. Se ejecuta el programa preinst, si el paquete lo tiene.
4. Se desempaquetan los nuevos ficheros, y al mismo tiempo se hace una copia de seguridad de los antiguos, para que, si algo va mal, se puedan restaurar.
5. Si había instalada otra versión del mismo paquete, se ejecuta el postrm del paquete antiguo. Tenga en cuenta que este programa se ejecuta después del preinst del nuevo paquete, ya que los nuevos ficheros se escriben a la vez que se borran los antiguos.
6. Se configura el paquete. Si quiere información detallada sobre el proceso, vea --configure.

dpkg --unpack fichero_paquete ...
    Desempaqueta el fichero, pero no lo configura. Si se dan las opciones --recursive o -R, fichero_paquete debe referirse a un directorio.

dpkg --configure paquete ... | -a | --pending
    Vuelve a configurar un paquete que, al menos, esté desempaquetado. Si se dan las opciones -a o --pending en vez de paquete, se configuran todos los paquetes no configurados.

La configuración consiste en los siguientes pasos:
1. Se desempaquetan los ficheros de configuración, y al mismo tiempo se hace una copia de seguridad de los antiguos, para que puedan restaurarse si algo va mal.
2. Se ejecuta el programa postinst, si el paquete lo tiene.

dpkg -r | --remove | -P | --purge paquete ... | -a | --pending
    Borra un paquete instalado. Las opciones -r y --remove lo borran todo excepto los ficheros de configuración. Esto podría evitar tener que configurar de nuevo el paquete si se reinstala después (los ficheros de configuración son los listados en el fichero de control debian/conffiles). Si se usan las opciones -a y --pending en vez de un paquete, todos los que están al menos desempaquetados, pero marcados para borrar o purgar en /var/lib/dpkg/status, se borran o purgan respectivamente.

Borrar un paquete consiste de los siguientes pasos:
1. Ejecutar el programa prerm.
2. Borrar los ficheros instalados.
3. Ejecutar el programa postrm.

dpkg --update-avail | --merge-avail fichero-Packages
    Actualiza la lista de paquetes disponibles de dpkg y dselect. Con la acción --merge-avail, la información antigua se combina con la información de fichero-Packages. El fichero-Packages que viene con Debian GNU/Linux se llama simplemente Packages. El programa dpkg guarda la lista de paquetes disponibles en /var/lib/dpkg/available.

    Una orden más simple que permite obtener y actualizar el fichero available de una tirada es dselect update.

dpkg -A | --record-avail fichero_paquete ...
    Actualiza la idea que tienen dpkg y dselect de qué paquetes están disponibles, con información del paquete fichero_paquete. Si se usa --recursive o -R, fichero_paquete debe ser un directorio.

dpkg --forget-old-unavail
    Olvida los paquetes no instalados ni disponibles.

dpkg --clear-avail
    Borra la información sobre los paquetes disponibles.

dpkg -C | --audit
    Busca paquetes que se hayan instalado sólo parcialmente. El programa dpkg sugerirá qué hacer con ellos para hacerlos funcionar.

dpkg --get-selections [patrón...]
    Muestra la lista de selecciones de paquetes en la salida estándar.

dpkg --set-selections
    Establece las selecciones a unas determinadas, leyendo de la entrada estándar.

dpkg --yet-to-unpack
    Busca los paquetes seleccionados para instalar, pero que por alguna razón todavía no se han instalado.

dpkg --print-architecture
    Imprime la arquitectura de destino (por ejemplo, «i386»). Esta opción usa a gcc.

dpkg --print-gnu-build-architecture
    Imprime la versión GNU de la arquitectura de destino (por ejemplo, «i486»).

dpkg --print-installation-architecture
    Imprime la arquitectura de origen de instalación.

dpkg --compare-versions ver1 op ver2
    Compara números de versión, donde op es un operador binario. Devuelve éxito (cero) si la condición especificada se cumple, y fallo (resultado distinto de cero) si no. Hay dos grupos de operadores, que difieren en cómo se comportan cuando les falta alguno de los operandos. Los primeros tratan la falta de versión como la versión más antigua posible: lt le eq ne ge gt. Los otros tratan la falta de versión como la más moderna posible: lt-nl le-nl ge-nl gt-nl. Éstos se dan sólo por compatibilidad con la sintaxis del fichero de control: < << <= = >= >> >.

dpkg --command-fd <n>
    Acepta una serie de órdenes en el fichero cuyo descriptor es <n>. Aviso: las opciones adicionales pasadas desde la línea de órdenes y mediante este descriptor de fichero no se desactivan en las subsiguientes llamadas efectuadas en la misma ejecución.

dpkg --help
    Muestra las instrucciones de uso.

dpkg --force-help
    Muestra la ayuda de las opciones --force-algo.

dpkg -Dh | --debug=help
    Muestra la ayuda de las opciones de depuración.

dpkg --licence | dpkg --license
    Muestra la licencia e información sobre derechos de autor de dpkg.

dpkg --version
    Muestra la versión de dpkg.

dpkg-deb-actions
    Ver dpkg-dev(1) para más información sobre las siguientes acciones.

dpkg -b | --build directorio [fichero]
    Construye un paquete Debian GNU/Linux.
dpkg -c | --contents fichero
    Muestra el contenidos de un paquete Debian GNU/Linux.
dpkg -e | --control fichero [directorio]
    Extrae la información de control de un paquete.
dpkg -x | --extract fichero directorio
    Extrae los ficheros contenidos en el paquete.
dpkg -f | --field  fichero [campo-control] ...
    Muestra el/los campo(s) de control de un paquete.
dpkg --fsys-tarfile fichero
    Muestra el fichero tar contenido en el paquete Debian.
dpkg -I | --info fichero [fichero-control]
    Muestra información sobre el paquete.
dpkg -X | --vextract fichero directorio
    Extrae y muestra los nombres de ficheros contenidos en un paquete.

dpkg-query-actions
    Vea dpkg-query(1) para más información sobre las siguientes acciones:

    dpkg -l | --list patrón-nombre-paquete ...
        Lista los paquetes cuyo nombre encaja en el patrón dado.
    dpkg -s | --status nombre-paquete ...
        Informa del estado del paquete especificado.
    dpkg -L | --listfiles paquete ...
        Lista los ficheros instalados en el sistema, que pertenecen a paquete.
    dpkg -S | --search patrón-búsqueda-ficheros ...
        Busca un fichero en los paquetes instalados.
    dpkg -p | --print-avail paquete ...
        Imprime información sobre el paquete, sacada de /var/lib/dpkg/available.

OPCIONES
Todas las opciones pueden especificarse tanto en línea de órdenes como en el fichero de configuración de dpkg, /etc/dpkg/dpkg.cfg. Cada línea de este fichero es bien una opción (exactamente la misma que la de línea de órdenes, pero sin los guiones al principio) o bien un comentario (si empieza con #).

--abort-after=número
    Cambiar después de cuántos errores abortará dpkg. El valor por omisión es 50.

-B|--auto-deconfigure
    Cuando se borra un paquete, hay posibilidades de que otro dependa de él. Especificar esta opción producirá la desconfiguración automática del paquete que dependía del borrado.

-Doctal | --debug=octal
    Activar el modo de depuración. El parámetro octal se forma uniendo los valores de la siguiente lista mediante la operación or a nivel de bits (tenga en cuenta que estos valores podrían cambiar en futuras versiones). -Dh o --debug=help muestran estos valores.

     número descripción
        1 Información de progreso generalmente útil
        2 Invocación y estado de los scripts del paquete
       10 Salida por cada fichero procesado
      100 Mucha salida por cada fichero procesado
       20 Salida por cada conffile
      200 Mucha salida por cada conffile
       40 Dependencias y conflictos
      400 Mucha salida sobre dependencias y conflictos
     1000 Parrafadas sobre el directorio dpkg/info
     2000 Montañas de parrafadas (perjudica la salud)

--force-cosas | --no-force-cosas | --refuse-cosas
    Fuerza o rehusa (no-force y refuse significan lo mismo) a hacer ciertas cosas. El parámetro cosas es una lista de cosas especificadas abajo, separada por comas. La opción --force-help muestra un mensaje que las describe. Las cosas marcadas con (*) se fuerzan por omisión.

Aviso: Estas opciones están pensadas mayormente para que las usen expertos. Usarlas sin total conocimiento de sus efectos podrían hacer que su sistema dejara de funcionar.
all: Activa (o desactiva) todas las opciones de forzar.
auto-select(*): Selecciona paquetes para instalarlos, y quita la selección a paquetes para borrarlos.
downgrade(*): Instala un paquete, incluso si hay una versión más nueva ya instalada.

Aviso: actualmente dpkg no comprueba de ninguna manera las dependencias al desactualizar y por lo tanto no avisará si se rompe alguna dependencia de otro paquete. Una situación así podría tener efectos laterales graves; desactualizar componentes esenciales del sistema incluso podría inutilizar su sistema completo. Úselo con cuidado.

configure-any: Configura también todo lo desempaquetado y no configurado sobre lo que depende el paquete.
hold: Procesa los paquetes incluso si están marcados como «hold» (mantener).
remove-reinstreq: Borra un paquete, incluso si está roto y marcado como de reinstalación requerida. Esto podría causar, por ejemplo, que algunas partes del paquete quedaran en el sistema, pero dpkg se olvidara de ellas.
remove-essential: Borra, incluso si el paquete se considera esencial. Los paquetes esenciales contienen sobre todo órdenes de Unix muy básicas. Borrarlos podría hacer que el sistema dejara de funcionar en absoluto, así que use esta opción con cuidado.
depends: Convierte todos los problemas de dependencias en avisos.
depends-version: No tiene en cuenta las versiones al comprobar dependencias.
conflicts: Instala, incluso si está en conflicto con otro paquete. Esta opción es peligrosa, dado que generalmente sobreescribirá algunos ficheros.
confmiss: Siempre instala un fichero de configuración perdido. Es peligroso porque no guarda los cambios (el borrado) hechos al fichero.
confnew: Si se ha modificado un fichero de configuración, instalar siempre la nueva versión sin preguntar, a menos que se especifique también la opción --force-confdef, en cuyo caso se toma la acción por omisión.
confold: Si se ha modificado un fichero de configuración, mantener siempre la versión existente sin preguntar, a menos que también se especifique la opción --force-confdef, en cuyo caso se toma la acción por omisión.
confdef: Si se ha modificado un fichero de configuración, elegir siempre la opción por omisión. Si no la hay, parará y preguntará al usuario a no ser que se usen también las opciones --force-confnew o --force-confold, en cuyo caso se usará esta opción para tomar la decisión final.
overwrite: Sobreescribe un fichero de un paquete con otro fichero.
overwrite-dir: Sobreescribe un directorio de un paquete con otro fichero.
overwrite-diverted: Sobreescribe una versión desviada de un fichero con una no desviada.
architecture: Procesar incluso si los paquetes no son de la arquitectura adecuada.
bad-path: PATH no contiene algunos programas importantes, así que es bastante posible que haya problemas.
not-root: Intentar la (des)instalación incluso si no se es root.
bad-verify: Instala un paquete incluso si falla la comprobación de autenticidad.

--ignore-depends=paquete,...
    Ignora la comprobación de dependencias para los paquetes especificados (realmente, se hacen las comprobaciones, pero se imprimen avisos en vez de abortar el proceso).

--new | --old
    elige el formato de paquetes nuevo o antiguo. Es una opción de dpkg-deb(1).

--nocheck
    No lee ni comprueba el contenido del fichero de control mientras se construye el paquete. Es una opción de dpkg-deb(1).

--no-act | --dry-run | --simulate
    Hace todo lo que se supone que debe hacer, pero no realiza ningún cambio. Se utiliza para ver qué ocurriría con las opciones elegidas sin llegar a cambiar nada.

Asegúrese de dar la opción --no-act antes del parámetro de acción, o podría acabar con resultados no deseados. P.ej.: dpkg --purge foo --no-act primero purgará el paquete foo y luego intentará purgar el paquete --no-act, ¡aunque probablemente usted esperara que no hiciera nada!).

-R | --recursive
    Actúa recursivamente sobre todos los ficheros que coincidan con el patrón *.deb que se encuentren en el directorio especificado y todos sus subdirectorios. Puede usarse con las opciones -i, -A, --install, --unpack y --avail.

-G  No instala un paquete del que hay ya instalada una versión más nueva. Es lo mismo que --refuse-downgrade.

--root=dir | --admindir=dir | --instdir=dir
    Cambia los directorios por omisión. El valor predeterminado para el directorio admindir es /var/lib/dpkg y contiene muchos ficheros con información sobre el estado de los paquetes instalados y desinstalados, etc. El valor por omisión de instdir es / y se refiere al directorio donde se instalarán los paquetes. También es el directorio pasado a chroot(2) antes de ejecutar los programas de instalación de paquete, lo que significa que éstos verán instdir como directorio raíz. Cambiar root cambia a su vez instdir a dir y admindir a dir/var/lib/dpkg.

-O | --selected-only
    Procesa sólo los paquetes que se han elegido para la instalación. La marca en sí la hacen dselect o dpkg, cuando se usa para gestionar paquetes. Por ejemplo, si se borra uno, se marcará como elegido para desinstalar.

-E | --skip-same-version
    Evita la instalación de un paquete si es la misma versión que ya hay instalada.

--status-fd <n>
    Envía el estado del paquete al descriptor de fichero <n>. Puede usarse varias veces. Las actualizaciones de estado tienen la forma «status: <pkg>: <pkg qstate>».

FICHEROS

/etc/dpkg/dpkg.cfg
    Fichero de configuración con las opciones por omisión.

Los otros ficheros listados abajo están en sus directorios por omisión. Véase la opción --admindir para ver cómo cambiar la ruta de estos ficheros.

/var/lib/dpkg/available
    Lista de paquetes disponibles.

/var/lib/dpkg/status
    Estado de los paquetes disponibles. Este fichero contiene información sobre si un paquete está marcado para borrar o no, si está instalado o no, etc. Véase el apartado INFORMACIÓN SOBRE PAQUETES para más información.

Los siguientes ficheros son componentes de un paquete binario. Véase deb(5) para más información sobre éstos:

control

conffiles

preinst

postinst

prerm

postrm

VARIABLES DE ENTORNO

DPKG_NO_TSTP
    Defina esta variable si prefiere que dpkg arranque en un intérprete diferente en vez de suspenderse a sí mismo cuando vuelve temporalmente al intérprete de órdenes.

SHELL
    El programa que ejecutará dpkg cuando arranque el nuevo intérprete.

COLUMNS
    Especifica el número de columnas que puede usar dpkg para mostrar la información. Por ahora sólo la usa la opción -l.

EJEMPLOS
Para listar los paquetes con «vi» en su nombre:
dpkg -l '*vi*'

Para ver las entradas en /var/lib/dpkg/available de varios paquetes:
dpkg -p base-files login xfree86-common | pager

Para borrar un paquete instalado llamado «elvis»:
dpkg -r elvis

Para instalar un paquete, primero hay que encontrarlo en la colección de paquetes que queramos. El fichero «available» muestra que el paquete «vim» está en el apartado «editors»:
cd /cdrom/hamm/hamm/binary/editors dpkg -i vim_4.5-3.deb
(Nota: En estos casos suele usarse apt-get(8))

Para hacer una copia local de los estados de la selección de paquetes:
dpkg --get-selections >mis_selecciones

Se podría copiar este fichero a otra máquina e instalarlo allí con:
dpkg --set-selections <mis_selecciones
Tenga en cuenta que esto no instalará ni borrará nada, simplemente modificará el estado de selección de los paquetes escogidos. Necesitará otra aplicación para conseguir los paquetes e instalarlos. Por ejemplo, ejecute dselect y elija «Instalar».

Por lo general, encontrará que dselect(8) es una forma más cómoda de modificar los estados de selección de los paquetes.

FUNCIONALIDAD ADICIONAL
Se puede ganar funcionalidad adicional instalando alguno de los siguientes paquetes: apt, aptitude and debsums.

VÉASE TAMBIÉN
dselect(8), dpkg-deb(1), deb(5), deb-control(5), y dpkg-reconfigure(8).

FALLOS/RESTRICCIONES
dpkg no ordena inteligentemente los paquetes a la hora de instalarlos.
No hay ningún sistema automático de registro de actividades en dpkg.
Durante las actualizaciones, las relaciones de los paquetes que dependen de otros se podrían desincronizar (p.ej.: las dependencias exactas de la versión de desarrollo de un paquete sobre el propio paquete).

Normalmente, la opción --no-act da menos información de la que necesita.
No hay información de estado para los paquetes virtuales.

AUTORES
El programador original de dpkg fue Ian Jackson, y luego mucha gente fue
mejorándolo. La lista completa está en /usr/share/doc/dpkg/THANKS.gz.
Traducción realizada por Esteban Manchado Velázquez (zoso@demiurgo.org).