Capítulo 2. Gestión de paquetes Debian

Tabla de contenidos

2.1. Prerequisitos de la gestión de paquetes Debian
2.1.1. Configuración de paquetes
2.1.2. Precauciones principales
2.1.3. Conviviendo con actualizaciones continuas
2.1.4. Fundamentos del archivo de Debian
2.1.5. Debian es 100% software libre
2.1.6. Dependencias de paquetes
2.1.7. El flujo de eventos en la gestión de paquetes
2.1.8. Soluciones a problemas básicos de gestión de paquetes
2.2. Operaciones básicas de la gestión de paquetes
2.2.1. apt-get / apt-cache vs. aptitude
2.2.2. Operaciones básicas de gestión de paquetes con línea de órdenes
2.2.3. Uso interactivo de aptitude
2.2.4. Combinaciones de teclado en aptitude
2.2.5. Visualización de paquetes en aptitude
2.2.6. Opciones del método de búsqueda con aptitude
2.2.7. La fórmula de la expresión regular de aptitude
2.2.8. Resolución de dependencias en aptitude
2.2.9. Registro de la actividad de los paquetes
2.3. Ejemplos de operaciones con aptitude
2.3.1. Enumera los paquetes cuyos nombres encajan con la expresión regular
2.3.2. Navega por la relación de paquetes que encajan con la expresión regular
2.3.3. Purga los paquetes eliminados definitivamente
2.3.4. Estado de instalación ordenado de forma automática/manual
2.3.5. Actualización mayor del sistema
2.4. Operaciones avanzadas de gestión de paquetes
2.4.1. Operaciones avanzadas de gestión de paquetes desde la línea de órdenes
2.4.2. Verificación de los archivos de un paquete instalado
2.4.3. Protección frente a problemas con paquetes
2.4.4. Buscando metadatos en los paquetes
2.5. Gestión interna de los paquetes Debian
2.5.1. Metadatos de archivos
2.5.2. Archivo «Release» del nivel superior y autenticación
2.5.3. Archivos «Release» a nivel de archivo
2.5.4. Actualizando la meta información de los paquetes
2.5.5. Estado del paquete para APT
2.5.6. El estado del paquete en aptitude
2.5.7. Copias locales de los paquetes descargados
2.5.8. Nombres de archivos de paquetes Debian
2.5.9. La orden dpkg
2.5.10. La orden update-alternatives
2.5.11. La orden dpkg-statoverride
2.5.12. La orden dpkg-divert
2.6. Recuperación de un sistema
2.6.1. Incompatibilidad con la configuración antigua del usuario
2.6.2. Superposición de archivos por diferentes paquetes
2.6.3. Arreglando un archivo de órdenes de un paquete roto
2.6.4. Recuperación con la órden dpkg
2.6.5. Recuperando datos de la selección de paquetes
2.7. Consejos para la gestión de paquetes
2.7.1. Como seleccionar paquetes Debian
2.7.2. Paquetes de fuentes varias en los repositorios
2.7.3. Seleccionando la versión candidata
2.7.4. Actualizaciones y portes hacia atrás
2.7.5. Bloqueo de la instalación de paquetes recomendados («Recommends«)
2.7.6. Seguimiento «en pruebas» con algunos paquetes de «inestable»
2.7.7. Mantener «inestable» con algunos paquetes de experimental
2.7.8. Descarga y actualización automática de paquetes
2.7.9. Limitar el ancho de banda de descarga para APT
2.7.10. Volver al estado anterior por emergencia
2.7.11. ¿Quién sube los paquetes?
2.7.12. El paquete «equivs«
2.7.13. Portar un paquete a un sistema estable
2.7.14. Servidor proxy para APT
2.7.15. Repositorio pequeño y público de paquetes
2.7.16. Guardando y copiando la configuración del sistema
2.7.17. Convertir o instalar un paquete binario «alien«
2.7.18. Extrayendo paquetes sin dpkg
2.7.19. Más información acerca de la gestión de paquetes
[Nota] Nota

Este capítulo ha sido escrito según la última distribución estable, cuyo nombre de publicación es: stretch.

Debian es una organización constituida por voluntarios que construyen versiones de paquetes binarios precompilados compatibles basados en software libre y lo distribuyen en su archivo,

El archivo de Debian lo constituyen múltiples nodos espejo a los que se accede por medio de los protocolos HTTP y FTP. También esta disponible en CD-ROM/DVD.

El sistema de gestión de paquetes Debian, cuando se usa de forma adecuada desde el archivo, ofrece al usuario la instalación en el sistema de un conjunto de paquetes binarios consistentes. Actualmente existen 56445 paquetes disponibles para la arquitectura amd64.

El sistema de gestión de paquetes de Debian tiene un pasado enriquecedor y muchas opciones para el interfaz de usuario y para el motor de acceso al archivo. Le recomendamos los siguientes:

Tabla 2.1. Relación de herramientas para la gestión de paquetes de Debian

paquete popularidad tamaño descripción
apt V:871, I:999 3647 «Advanced Packaging Tool» (APT), interfaz de usuario de dpkg encargado de proporcionar los métodos de acceso al archivo mediante «http», «ftp» y «file» (incluye las órdenes apt-get/apt-cache)
aptitude V:136, I:778 4415 gestor de paquetes interactivo basado en la terminal: aptitude(8)
tasksel V:40, I:972 374 herramienta de selección de tareas en la instalación de un sistema Debian (interfaz de usuario para APT)
unattended-upgrades V:188, I:364 254 paquete mejorado de APT, para permitir la instalación automática de actualizaciones de seguridad
dselect V:4, I:59 2498 gestor de paquetes basado en terminal (era el estándar anterior, interfaz de usuario de APT y otros métodos de acceso anteriores)
dpkg V:932, I:999 6745 sistema de gestión de paquetes de Debian
synaptic V:70, I:453 7793 gestor de paquetes gráfico (interfaz de usuario de GNOME para APT)
apt-utils V:391, I:997 1103 utilidades de APT: apt-extracttemplates(1), apt-ftparchive(1) y apt-sortpkgs(1)
apt-listchanges V:350, I:838 365 herramienta de notificación de cambios en el histórico de paquetes
apt-listbugs V:7, I:12 451 relación de bugs críticos después de cada instalación APT
apt-file V:13, I:77 82 utilidad APT para la búsqueda de paquetes — interfaz de línea de órdenes
apt-rdepends V:0, I:6 40 relación de dependencias recursivas de los paquetes

[Aviso] Aviso

No mezcle paquetes de diferentes fuentes. Probablemente romperá la consistencia entre paquetes del sistema lo que requiere un conocimiento de su gestión interna, como son el compilador ABI, versiones de bibliotecas, funcionalidades de intérpretes, etc.

Los administradores de sistemas novatos deberían utilizar la distribución «estable» de Debian y aplicar unicamente actualizaciones de seguridad. Queremos decir, que es mejor evitar algunas de las siguientes acciones válidas, como precaución, hasta que entienda el sistema Debian muy bien. Aquí están algunos consejos:

  • no incluya los repositorios de la distribución «en pruebas» o «inestable» en «/etc/apt/sources.list»

  • no mezcle repositorios estándar de Debian con otros, como por ejemplo de Ubuntu en «/etc/apt/sources.list»

  • no cree «/etc/apt/preferences»

  • no cambie el comportamiento por defecto de las herramientas del gestión de paquetes por medio de sus archivos de configuración su no conoce todas sus implicaciones

  • no instale paquetes de forma aleatoria por medio de «dpkg -i<paquete_aleatorio>»

  • no instale paquetes de forma aleatoria mediante «dpkg --force-all -i <paquete_aleatorio>»

  • no borre o modifique archivos en el directorio «/var/lib/dpkg»

  • no sobreescriba el sistema de archivos al instalar software compilado directamente de su código fuente

    • si lo necesita instálelos en «/usr/local» o «/opt».

Los efectos de falta de compatibilidad causado por las acciones anteriores sobre el sistema de gestión de paquetes Debian puede dejar su sistema inservible.

Los administradores de sistemas Debian responsables que operan servidores críticos, deberian tomar precauciones adicionales:

  • no instalar ningún paquete de Debian, incluyendo las actualizaciones de seguridad, sin probarlo con su configuración especifica en un entorno seguro.

    • en último término como administrador es el responsable de su sistema

    • el largo historial de estabilidad del sistema Debian no es una garantía por sí misma.

Tras mis advertencias anteriores sé que muchos lectores desearán ejecutar las distribuciones de Debian «en prueba» o «inestable» como su sistema principal de escritorio. Esto es debido a que funcionan muy bien, son actualizados frecuentemente y disponen de las últimas funcionalidades.

[Atención] Atención

Para sus servidores de producción es recomendable la distribución «estable» con sus actualizaciones de seguridad. También es recomendable para los equipos de escritorio a los que quiera dedicar poco tiempo en su administración, p. ej. el equipo de su madre.

La configuración de la distribución elegida se realiza incluyendo su nombre en «/etc/apt/sources.list»: «testing», «unstable»; o su nombre de publicación: «buster», «sid». Esto le hará entrar en el ciclo de las actualizaciones eternas.

El uso de la distribución «en pruebas» o «inestable» es muy aparente pero acarrea algunos riesgos. Aunque la distribución «inestable» del sistema Debian permanece estable la mayor parte de tiempo ha habido algunos problemas de paquetes en las distribuciones del sistema Debian «en pruebas» e «inestable» y algunos de ellos no fueron fáciles de resolver. Lo cual puede resultarle muy doloroso. A veces tendrá paquetes rotos o pérdida de funcionalidades durante semanas.

Algunas ideas para asegurar la recuperación fácil y rápida de errores en los paquetes de Debian son:

(Si no puede realizar alguna de estas medidas de seguridad probablemente no esté preparado para las distribuciones «en prueba» e «inestable».)

La iluminación de las siguientes secciones salva a las personas de la eterna lucha kármica de actualizar el infierno y las dejan llegar al nirvana de Debian.

Examinemos el archivo de Debian desde el punto de vista de un usuario del sistema.

[Sugerencia] Sugerencia

Las directrices oficiales del archivo de Debian están definidas en el Manual de Directrices Debian, Capítulo 2 - El archivo de Debian.

Para el acceso normal mediante HTTP el archivo está definido en el archivo «/etc/apt/sources.list» de la siguiente manera, p. ej. para la sistema actual stable = stretch.

deb http://deb.debian.org/debian/ stretch main contrib non-free
deb-src http://deb.debian.org/debian/ stretch main contrib non-free

deb http://security.debian.org/ stretch/updates main contrib
deb-src http://security.debian.org/ stretch/updates main contrib

Entre el nombre de publicación «stretch» o el nombre de la distribución «estable» prefiero inclinarme por el primero para evitar sorpresas cuando se libere la nueva distribución «estable».

El significado de «/etc/apt/sources.list» está descrito en sources.list(5) y los puntos más importantes son:

  • la línea «deb» se define para paquetes binarios

  • la línea «deb-src» se define para los paquetes de código fuente

  • el primer elemento es la URL raíz del archivo de Debian

  • el segundo elemento es el nombre de la distribución: bien el nombre de la distribución o el nombre de publicación

  • el tercero y siguientes son la relación de nombres de área válidos del archivo de Debian.

Las líneas «deb-src» pueden ser omitadas de forma segura (o comentadas añadiendo «#» al comienzo de la línea) haciendo que aptitude no tenga acceso a la metainformación de las fuentes. La URL puede utilizar los protocolos «http://», «ftp://», «file://», ….

[Sugerencia] Sugerencia

Si en el ejemplo anterior se sustituye «sid» en vez de «stretch» no se necesita la línea para las actualizaciones de seguridad «deb: http://security.debian.org/ …» en «/etc/apt/sources.list». Esto es debido a que no hay área de actualizaciones de seguridad en «sid» (unstable).

A continuación se muestra la relación de los archivos de Debian, junto con sus nombres de distribución o su nombre de publicación, utilizados por el archivo de configuración.


[Atención] Atención

La mejor estabilidad se consigue utilizando únicamente la distribución «estable» con las actualizaciones de seguridad. Utilizar la mayor parte de la distribución «estable» y algunos paquetes de las distribución «en pruebas» o «inestable» es más inestable que ejecutar únicamente la distribución «inestable» debido al acoplamiento de las versiones de las bibliotecas etc. Si realmente necesita la última versión de algún programa que no esté en «estable» le pedimos que utilice los paquetes del archivo stretch-updates y http://backports.debian.org (consulte Sección 2.7.4, “Actualizaciones y portes hacia atrás”). Dichos archivos deben usarse con sumo cuidado.

[Atención] Atención

Por defecto debería tener únicamente una de las distribuciones «estable», «en pruebas» o «inestable» en las líneas «deb». Si se tiene en las líneas «deb» una combinación de las distribuciones «estable», «en pruebas» e «inestable» los programas APT son más lentos y sólo la última distribución es útil. El uso de múltiples distribuciones requiere utilizar el archivo «/etc/apt/preferences» con un fin específico (consulte Sección 2.7.3, “Seleccionando la versión candidata”).

[Sugerencia] Sugerencia

En un sistema Debian que utilice «estable» y/o «en pruebas» es una buena práctica incluir las líneas correspondientes «http://security.debian.org/» en «/etc/apt/sources.list» para permitir las actualizaciones de seguridad como se mostró en el ejemplo anterior.

[Nota] Nota

El equipo de seguridad de Debian soluciona los problemas de seguridad de la distribución «estable». Su actividad es muy rigurosa y fiable. En la distribución «en pruebas» son solucionados por el equipo de seguridad de Debian en pruebas. Por diferentes razones su actividad no es tan rigurosa como en la distribución «estable» y puede que tenga que esperar a la migración o la corrección de los paquetes de «inestable». Los problemas de seguridad de la distribución «inestable» son corregidos por los desarrolladores individuales. Los paquetes de la distribución «inestable» mantenidos habitualmente suelen estar en buen estado aprovechando las últimas soluciones de seguridad ascendentes. Consulte Debian security FAQ para conocer como se gestionan los problemas de seguridad en Debian.


El número de paquetes que se indica es para la arquitectura amd64. El área main proporciona el sistema Debian (consulte Sección 2.1.5, “Debian es 100% software libre”).

Al navegar por cada URL junto a dists o pool conocerá mejor la organización del archivo de Debian.

Una distribución puede ser nombrada de dos formas, por la distribución o nombre de publicación. La palabra distribución es usada de forma inambigua como sinónimo de versión en gran parte de la documentación. La relación existente entre la distribución y el nombre de publicación se resume en la tabla siguiente.


La historia de los nombres de publicación se cuenta en ¿Debian FAQ: 6.2.1 Qué otros nombres clave han sido usados en el pasado?

En la terminología de archivo de Debian de forma estricta, se usa la palabra «sección» especificamente para la categorización de paquetes por el tipo de aplicación. (Sin embargo las palabras «sección principal» algunas veces es usado para describir el área del archivo Debian llamado «main».)

Cada vez que un desarrollador Debian (DD) realiza una nueva entrega a la distribución «inestable» (a través del procesamiento de entrada), se les pide que se aseguren que la entrega de paquetes sea compatible con el último conjunto de paquetes de la distribución «inestable».

Si un desarrollador de Debian con su actualización rompe la compatibilidad de alguna biblioteca importante de forma intencionada etc, normalmente se anuncia en la lista de correo de desarrollo (debian-devel mailing list) etc.

Después de que un conjunto de paquetes han sido movidos de forma automática desde la distribución «inestable» a la distribución «en pruebas» el archivo de órdenes de mantenimiento que lo movió comprueba su madurez (más de 10 días de antiguedad), el estado RC de los informes de errores de los paquetes y comprueba su compatibilidad con el último conjunto de paquetes de la distribución «en pruebas». Este proceso hace que la distribución «en pruebas» este actualizada y se pueda utilizar.

Durante el proceso gradual de estabilización del archivo, liderado por el equipo de publicación, la distribución «en pruebas» se va corrigiendo por medio de intervenciones manuales para hacerla completamente consistente y libre de errores. Entonces se crea la nueva distribución «estable» asignándole a esta el nombre de publicación de la antigua distribución «en pruebas». También se crea un nuevo nombre de publicación para la nueva distribución «en pruebas». El contenido inicial de la nueva distribución «en pruebas» es exactamente el mismo que el de la nueva versión de la distribución «estable».

Tanto la distribución «inestable» como la distribución «en pruebas» pueden sufrir fallos técnicos temporales debido a diferentes factores:

  • entrega de paquetes rotos al archivo (más frecuentemente a «inestable»)

  • retraso en la aceptación de nuevos paquetes al archivo (en la mayor parte de los casos en «inestable»)

  • problemas de sincronización de cadencia (para «en pruebas» e «inestable»)

  • acciones manuales sobre el archivo como la eliminación de paquetes (generalmente para «en pruebas») etc.

Así que si decide usar esos archivos, usted debe ser capaz de arreglar o indagar sobre este tipo de problemas.

[Atención] Atención

Hasta unos meses después de una nueva distribución estable, la mayoría de los usuarios de escritorio deberían usan la versión estable y sus actualizaciones de seguridad incluso si usan de forma habitual las distribuciones «inestable» o «en pruebas». En este periodo de transición, tanto «inestable» como «en pruebas» no son útiles para la mayor parte de la gente. Su sistema es difícil de mantener en buenas condiciones de funcionamiento con la distribución «inestable» ya que sufre repentinamente actualizaciones importantes de los paquetes principales. La distribución «en pruebas» tampoco es utilizable ya que contiene lo mismo que la versión estable sin soporte de seguridad (Anuncio de 12-2008 de seguridad en pruebas de Debian). Después de un mes aproximadamente, la distribución «inestable» se puede utilizar si usted tiene cuidado.

[Sugerencia] Sugerencia

Cuando se sigue la distribución «en pruebas», un problema causado por la eliminación de un paquete normalmente se soluciona temporalmente instalando el paquete correspondiente la versión «inestable» el cual es entregado para corregir el error.

Consulte el Manual de Directrices Debian para las definiciones del archivo.

Debian es 100% software libre por lo siguiente:

  • Debian instala por omisión solo software libre para respetar las libertades del usuario.

  • Debian proporciona solo software libre en main.

  • Debian recomienda ejecutar únicamente software libre de main.

  • Ningún paquete de main depende o recomienda paquetes en non-free o contrib.

Algunas personas se preguntan si los siguientes 2 hechos se contradicen o no.

Esto no se contradice por lo siguiente:

  • El sistema Debian es 100% libre y sus paquetes son albergados por los servidores Debian en el área main.

  • Los paquetes de fuera del sistema Debian son albergados por los servidores Debian en áreas non-free y contrib.

Esto se explica de forma precisa en las claúsulas cuarta y quinta del Contrato Social de Debian:

  • Nuestras prioridades son nuestros usuarios y el software libre

    • Nos guiaremos por las necesidades de nuestros usuarios y de la comunidad de software libre. Sus intereses serán nuestra primera prioridad. Mantendremos las necesidades de nuestros usuarios en la operativa de diferentes tipos de entornos de computación.No nos opondremos a las soluciones no libres que están destinados a ser utilizados en los sistemas Debian, o tratan de cobrar a las personas que crean o utilizan dichas soluciones. Permitiremos que otros creen distribuciones que contienen el sistema Debian y otras soluciones, sin ningún cobro por nuestra parte. Para el fomento de estos objetivos, proporcionaremos un sistema integrado de alta calidad sin restricciones legales que impida tales usos del sistema.

  • Soluciones que no cumplen nuestros estándar de software libre

    • Sabemos que algunos usuarios necesitan usar soluciones que no están de acuerdo a las Directrices de Software Libre Debian. Para esas soluciones se han creado las áreas de archivo «contrib» y «non-free». Los paquetes en dichas áreas no son parte del sistema Debian, sin embargo han sido preparadas para su utilización con Debian. Pedimos encarecidamente a los fabricantes de CD que lean las licencias de los paquetes de dichas áreas y decidan si pueden distribuirlos en sus CD. De este modo, aunque las soluciones no libres no son parte de Debian, ayudamos a su uso y proporcionamos la infraestructura necesaria para dichos paquetes (como nuestro sistema de seguimiento de errores y listas de correo).

Los usuarios deben ser conscientes de los riesgos que asumen al usar los paquetes de las áreas non-free y contrib:

  • falta de libertad para dichos paquetes

  • falta de soporte de Debian para dichos paquetes (Debian no puede ayudar al software propietario sin tener acceso a su código fuente)

  • contaminación del 100% del sistema libre Debian

Las Directrices de Software Libre Debian son los estándares del software libre para Debian. Debian entiende «software« en el ámbito más amplio en los paquetes, incluyedo documentos, firmware, logotipos y materia gráfico. Esto hace que el estándar de software libre de Debian sea uno de los más estrictos.

Con el fin de cumplir con los estrictos estándares del software libre para main, Debian elimina la marca Mozilla de paquetes como Firefox, Thunderbird y Seamonkey eliminando su logotipo y otro material gráfico y los entrega como Iceweasel, Icedove, e Iceape, respectivamente.

Los paquetes más corrientes de non-free and contrib son paquetes de libre distribución pertenecientes a alguno de los tipos:

  • Paquetes de documentación que cumplen la Licencia de Documentación Libre GNU con secciones fijas como las de GCC y Make (la mayor parte se encuentran en la secciónnon-free/doc.)

  • Los paquetes de firmware contienen datos binarios sin su código como los enumerados en Sección 9.9.6, “Controladores y firware del hardware” y non-free (la mayor parte en sección non-free/kernel.)

  • Paquetes de juegos y tipos de letra con restricciones de uso comercial y/o modificación de su contenido.

Tengo en cuenta que el número de paquetes de non-free y contrib es menos del dos por ciento del número de paquetes de main. Permitiendo el acceso a las áreas de non-free y contrib oculta el origen del paquete. El uso a pantalla completa de aptitude(8) le proporciona total visibilidad y control sobre que paquetes están instalados y a que área pertenecen para mantener su sistema tan libre como desee.

El sistema Debian ofrece un conjunto coherente de paquetes binarios proporcinado por su mecanismo de declaración de dependencias de versiones binarias en los campos de control de archivos. Aquí se muestra una versión un poco simplificada de ellos:

  • «Depende«

    • Declara una dependencia obligatoria y todos los paquetes enumerados en ella es obligatorio que sean instalados al mismo tiempo o que estén instalados previamente.

  • «Predependencias«

    • Son como las dependencias, con la excepción de que requiere la instalación completa de todos ellos con anterioridad.

  • «Recomienda«

    • Determina una dependencia fuerte, pero no obligatoria. La mayoría de los usuarios no instalarán el paquete al menos que todos los paquetes enumerados en este campo estén instalados.

  • «Sugiere«

    • Declara una dependencia débil. Muchos usuario se beneficiarán de la instalación de los paquetes enumerados en este campo pero tendrán una funcionabilidad decente sin ellos.

  • «Mejora«

    • Declara una dependecia débil como «sugerido« pero trabaja en la dirección contraria.

  • «Rompe«

    • Declara una incompatibilidad, generalmente con una versión concreta. La solución más común es actualizar todos los paquetes que se encuentran enumerados en este campo.

  • «Incompatiblidades«

    • Declara la incompatibilidad absolute. Todos los paquetes enumerados en este campo deben ser eliminador para conseguir instalar el paquete.

  • «Sustituye«

    • Se declara cuando los archivos instalados por el paquete sustituyen a los paquetes que se enumeran.

  • «Proporciona«

    • Se declara cuando el paquete proporciona todos los archivos y funcionalidades de los paquetes enumerados.

[Nota] Nota

Tenga en cuenta, que lo correcto es definir «Proporciona«, «Conflicto« y «Sustituye« a la vez en un paquete virtual. Esto asegura que solo un paquete real que proporciona el virtual puede ser instalado a la vez.

La definición «oficial« incluyendo la dependencia de la fuente está en Manual de directrices Debian: Capítulo 7 - Declaración de relaciones entre paquetes.

Aquí hay un resumen simplificado del flujo de eventos de la gestión de paquetes con APT.

De forma intencionada, se han eliminado los detalles técnicos en beneficio de la visión holística.

Un sistema Debian dispone de diferentes herramientas de gestión de paquetes basadas en APT que permiten llevar a cabo las operaciones de gestión de paquetes. En este documento, explicaremos dos herrramientas básicas para la gestión de paquetes: apt-get / apt-cache y aptitude.

Para las operaciones de gestión de paquetes que incluyen su instalación o la actualización de su metainformación, usted necesitará privilegios de superusuario.

A pesar de que aptitude es una herramienta interactiva muy amigable el cual es su uso principal, debe tener en cuenta algunas advertencias:

Las órdenes apt-get y apt-cache son las herramientas más básicas para la gestión de paquetes basadas en APT.

  • apt-get y apt-cache ofrecen únicamente interfaz de usuario por línea de órdenes.

  • apt-get es más adecuado para las actualizaciones principales del sistema entre distribuciones, etc.

  • apt-get tiene un motor de resolución de dependencias de paquetes robusto.

  • apt-get necesita menos recursos «hardware«. Consume menos memoria y se ejecuta más rápido.

  • apt-cache aporta un sistema estándar de búsqueda basada en expresiones regulares sobre el nombre y descripción del paquete.

  • apt-get y apt-cache permite gestionar varias versiones de paquetes usando /etc/apt/preferences pero es bastante difícil de manejar.

La órden aptitude es la herramienta de gestión de paquetes basada en APT más versátil.

  • aptitude aporta un interfaz de usuario interactivo a pantalla completa.

  • aptitude ofrece también un interfaz de usuario por línea de órdenes.

  • aptitude esta más pensado para la gestión interactiva de paquetes diaria como examinar los paquetes instalados y buscar entre los paquetes disponibles.

  • aptitude necesita más recursos «hardware«. Consume más memoria y ejecuta más lentamente.

  • aptitude tiene un sistema de búsqueda basado en expresiones regulares sobre metainformación de paquetes mejorado.

  • aptitude permite gestionar múltiples versiones de paquetes sin usar /etc/apt/preferences y es muy intuitivo.

[Sugerencia] Sugerencia

There is a new apt(8) command intended for interactive usage. Use the apt-get(8) and apt-cache(8) commands in the shell script.

Aquí están algunas operaciones básicas para la gestión de paquetes por medio de la línea de órdenes aptitude(8) y apt-get(8) /apt-cache(8).

Tabla 2.6. Operaciones básicas de gestión de paquetes por línea de órdenes aptitude(8) y apt-get(8) /apt-cache(8)

Sintaxis de aptitude Sintaxis apt-get/apt-cache descripción
aptitude update apt-get update actualiza la metainformación de los paquetes
aptitude install foo apt-get install foo instala la versión candidata del paquete «foo» y sus dependecias
aptitude safe-upgrade apt-get upgrade instala las versiones candidatas de los paquetes instalados sin eliminir ningún otro paquete
aptitude full-upgrade comando xhost instala las versiones candidatas de los paquetes instalados sin eliminar otros paquetes en caso de ser necesario
aptitude remove foo apt-get remove foo elimina el paquete «foo» sin eliminar sus archivos de configuración
N/A apt-get autoremove elimina los paquetes autoinstalados que ya no son necesarios
aptitude purge foo apt-get purge foo elimina el paquete «foo» y sus archivos de configuración
aptitude clean apt-get clean limpia por completo el repositorio local de los archivos de paquetes descargados
aptitude autoclean apt-get autoclean limpia el repositorio local de los archivos de paquetes descargados que son obsoletos
aptitude show foo apt-cache show foo muestra información detallada sobre el paquete «foo» package
aptitude search <expresión_regular> apt-cache search <expresión_regular> busca paquetes que concuerden con <expresión_regular>
aptitude why <expresión_regular> N/A argumenta la razón por la que el paquete que encaja con la <expresión_regular> debe ser instalado
aptitude why-not <expresión_regular> N/A argumenta la razón por la que el paquete que encaja con la <expresión_regular> no debe ser instalado
aptitude search 'i!M' apt-mark showmanual enumera los paquetes que se instalaron de forma manual

[Nota] Nota

Aunque la órden aptitude proporciona funcionalidades sofisticadas como un mejor motor de resolución de dependencias de paquetes, su complejidad ha causado (o todavía puede causar) algunos problemas como el Error #411123, el Error #514930 y el Error #570377. En caso de duda, por favor, use las órdenes apt-get y apt-cache en vez de la órden aptitude.

[Nota] Nota

Desde que tanto apt-get como aptitude comparten el estado de los paquetes autoinstalados (see Sección 2.5.5, “Estado del paquete para APT”) desde lenny, se pueden usar ambas herramientas alternativamente sin mayores problemas (consulte Error #594490).

«aptitude why <expresión_regular>» pueden mostrar mas información si se usa así «aptitude -v why <expresión_regular>». Se puede obtener información parecida usando «apt-cache rdepends <paquete>».

Cuando se ejecuta la órden aptitude en modo línea de órdenes y aparece algún problema como un conflicto entre paquetes , si pulsa la tecla «e» como respuesta al cursor puede cambiar al modo interactivo a pantalla completa.

Puede proporcionar opciones justo después de la órden «aptitude».


Para más información consulte aptitude(8) y «aptitude user's manual« en «/usr/share/doc/aptitude/README».

[Sugerencia] Sugerencia

El paquete dselect está todavía disponible y fue la herramienta preferida para la gestión de paquetes en modo interactivo a pantalla completa en distribuciones anteriores.

En el modo de pantalla completa las combinaciones de teclado para comprobar el estado de los paquetes y ejecutar la «acción planificada« son:


La especificación del nombre del archivo de la línea de órden y el menú del sistema después de presionar «l» y «/ /» coge la expresión regular de aptitude como se describe a continuación. La expresión regular de aptitude explícitamente puede coincidir con un nombre de paquete utilizando una cadena iniciada por «~ n y seguido por el nombre del paquete.

[Sugerencia] Sugerencia

Usted necesita pulsar «U» para hacer que todos los paquetes se actualicen a la versión candidata en el interfaz visual. De otra manera solo los paquetes seleccionados y otros que son dependecias de versiones de estos son actualizados a la versión candidata.

En el modo interactivo a pantalla completa de aptitude(8), los paquetes que se enumeran son visualizados como el siguiente ejemplo:

idA   libsmbclient                             -2220kB 3.0.25a-1  3.0.25a-2

El significado de está línea empezando por la izquierda es:

  • La bandera del «estado actual« (la primera letra)

  • La bandera de la «acción planeada« (la segunda letra)

  • La bandera «automática« (la tercera letra)

  • El nombre del paquete

  • La variación del espacio de disco usado según la «acción planeada«

  • La versión actual del paquete

  • La versión candidata del paquete

[Sugerencia] Sugerencia

Pulsando ? se muestra al final de la pantalla de Ayuda una relación completa de las banderas.

La versión candidata se elige de acuerdo a la configuración local del equipo (consulte apt_preferences(5) y Sección 2.7.3, “Seleccionando la versión candidata”).

Existen diferentes formas de mostrar los paquetes en la opción de menú «Vistas».


[Nota] Nota

Por favor, ¡ayúdenos mejorando el marcado de paquetes con debtags!

La vista estándar «Vista de paquetes» los clasifica en cierto modo como dselect con algunas funcionalidades extra.


[Sugerencia] Sugerencia

La vista de tareas puede usarse para realizar una selección de paquetes para sus tareas.

La fórmula de expresiones regulares de aptitude es parecido a la extensión ERE (consulte Sección 1.6.2, “Expresiones regulares”) de mutt y aquellos significados de las extensiones de reglas de concordancia especiales y específicas de aptitude son las siguientes:

Tabla 2.11. Relación de fórmulas de expresiones regulares de aptitute

descripción de las reglas extendidas de encaje fórmula de la expresión regular
nombre del paquete que encaja ~n<nombre_de_la_expresión_regula>
encaja en la descripción ~d<descripcion_de_la_expresión_regular>
nombre de la tarea que encaja ~t<expresión_regular_de_tareas>
encaja con las etiquetas debian ~G<expresion_regular_de_etiquetas>
encaja con el desarrollador ~m<expresión_regular_del_desarrollador>
encaja con la sección del paquete ~s<expresión_regular_de_sección>
encaja con la versión del paquete ~V<expresión_regular_de_la_versiónn>
encaja con la distribución ~A{stretch,buster,sid}
encaja con el origen ~O{debian,…}
encaja con la prioridad ~p{extra,important,optional,required,standard}
encaja con los paquetes esenciales ~E
encaja con paquetes virtuales ~v
encaja con nuevos paquetes ~N
encaja con acciones pendientes ~a{install,upgrade,downgrade,remove,purge,hold,keep}
encaja con paquetes instalados ~i
encaja con paquetes marcados con A-mark (paquetes auto-instalados) ~M
encaja con paquetes instalados sin la marca A (paquetes seleccionados por el administrador) ~i!~M
encaja con paquetes instalados y que se pueden actualizar ~U
encaja con paquetes eliminados pero no purgados ~c
encaja con paquete eliminados y purgados o que se pueden eliminar ~g
encaja con paquetes que declaran una dependencia rota ~b
encaja con paquetes que declaran una dependencia rota de un <ipo> ~B<type>
encaja el <patrón> sobre paquetes que tienen una dependencia <tipo> ~D[<tipo>:]<patrón>
encaja el <patrón> con paquetes que tienen una dependencia rota de <tipo> ~DB[<tipo>:]<patrón>
encaja con paquetes en los cuales el <patrón> encaja con paquetes que declaran una dependecia <tipo> ~R[<tipo>:]<patrón>
encaja con los paquetes que son una dependencia rota <tipo> de los paquetes que encajan con el <patrón> ~RB[<tipo>:]<patrón>
encaja con los paquetes con los que los paquetes instalados tienen dependencias ~R~i
encaja con los paquetes que no dependen de ningún paquete instalado !~R~i
encaja con los paquete que dependen o son recomendados por otros paquetes instalados ~R~i|~Rrecommends:~i
encaja con los paquetes según el <patrón> filtrados por la versión ~S filtro <patrón>
encaja con todos los paquetes (verdad) ~T
no encaja con ningún paquete (falso) ~F

  • Las expresiones regulares son las mismas de ERE que usa la típica herramienta de textos en un entorno Unix: «^», «.*», «$» etc. como en egrep(1), awk(1) y perl(1).

  • El <tipo> de dependencias es uno de («depends«, «predepends«, «recommends«, «suggests«, «conflicts«, «replaces«, «provides«) los especificados en las relaciones entre paquetes.

  • El <tipo> de dependencia por defecto es «depends«.

[Sugerencia] Sugerencia

Cuando el <patrón_de_la_expresión_regular> es la cadena «null«, coloca inmediatamente después de la órden «~T».

Algunos atajados:

  • «~P<término>» == «~Dprovides:<término>»

  • «~C<término>» == «~Dconflicts:<término>»

  • «…~W término» == «(…|término)»

Los usuarios familiarizados con mutt aprenderán rápidamente, ya que mutt fue la inspiración para la sintaxis de las expresiones. Consulte «SEARCHING, LIMITING, AND EXPRESSIONS« en el «Manual de Usuario« «/usr/share/doc/aptitude/README».

[Nota] Nota

Con la versión de lenny de aptitude(8), la nueva sintaxis en formato largo como «?broken» puede ser usada de forma equivalente para el uso de expresiones regulares en lugar de la anteriro formato corto «~b». Ahora el carácter de espacio « » es considerado como uno de los caracteres de finalización de la expresión regular al igual que la tilde «~». Consulte el «Manual de Usuario« para la nueva sintaxis de formato largo.

Algunos ejemplos de operaciones con aptitude(8):

A continuación mostraremos como mantenemos en orden el estado de instalación de los paquetes (después de realizar instalaciones sin usar aptitude etc.).

  1. Lance aptitude en modo interactivo como «root«.

  2. Pulse «u», «U», «f» and «g» para actualizar la relación de paquetes y los paquetes.

  3. Pulse «l» para acceder a la pantalla de los paquetes limitandolos a «~i(~R~i|~Rrecommends:~i)» y pulse «M» sobre «Paquetes I» como auto instalados.

  4. Pulse «l» para acceder a la pantalla de paquetes limitados como «~prequired|~pimportant|~pstandard|~E» y pulse «m» sobre «Paquetes Instalados» como instalados de forma manual.

  5. Pulse «l» para acceder a la pantalla limitados por«~i!~M» y elimine los paquetes sin usa pulsando «-» sobre cada uno de ellos después muestrelos pulsando «[» sobre «Paquetes Instalados».

  6. Pulse «|», para entrar en la pantalla de paquetes limitada por «~i»; entonces pulse «m» sobre Tareas», para marcar aquellos paquetes instalados manualmente.

  7. Salga de aptitude.

  8. Ejecute «apt-get -s autoremove|less» como superusuario para comprobar lo que no usa.

  9. Reinicie aptitude en modo interactivo y marque los paquetes que necesite con «m».

  10. Vuelva a ejecutar «apt-get -s autoremove|less» como superusuario para volver a comprobar que solo ha ELIMINADO los paquetes que deseaba.

  11. Ejecute «apt-get autoremove|less» como superusuario para eliminar los paquetes sin uso.

La acción «m» sobre «Tasks» es opcional y se usa para evitar la situación de eliminar paquetes de forma masiva en el futuro.

[Nota] Nota

Cuando se cambia a una nueva distribución etc, se debe considerar implantar una instalación limpia del nuevo sistema incluso cuando Debian es actualizable como se describe a continuación. Proporciona la oportunidad de eliminar la basura almacenada y acceder a las mejores combinaciones de las últimas versiones de los paquetes. Sin dudarlo, debería realizar una copia de respaldo completa del sistema a un lugar seguro (consulte Sección 10.2, “Respaldo y recuperación”) antes de hacerlo. Nosotros recomendamos crear un arranque dual en una partición diferente para realizar una transición suave.

Se puede realizar una actualización mayor del sistema a una nueva distribución cambiando el contenido del archivo «/etc/apt/sources.list» y ejecutando la órden «apt-get update; apt-get dist-upgrade».

Para actualizar desde la distribución estable a «en pruebas» o «inestable», se debe cambiar «stretch» en el ejemplo de «/etc/apt/sources.list» Sección 2.1.4, “Fundamentos del archivo de Debian” por «buster» o «sid».

De hecho, se puede encontrar con algunas complicaciones debido a alguna transicion entre paquetes, la mayor parte debido a dependencias. Cuanto mayores es la actualización, más problemas importantes se puede encontrar. Para la transición desde una distribución antigua de estable a la nueva estable después de su publicación, puede leer las nuevas «Release Notes« y seguir el procedimiento concreto que se describe para minimizar los problemas.

Cuando decide migrar de estable a «en pruebas» después de una publicación formal, no existen «Release Notes« de ayuda. La diferencia entre estable y «en pruebas» puede ser bastante mayor después de la liberación de una nueva distribución estable y la actuailización se puede convertir en una situación complicada.

Usted debería ser precavido cuando realiza un actualización completa y consultar la información actualizada sobre ello y usar el sentido común.

  1. Lea las anterior «Release Notes«.

  2. Realice una copia de respaldo (o de seguridad) completa (especialmente los datos y las configuraciones).

  3. Disponga de un medio alternativo de arranque por si falla el cargador de arranque.

  4. Informe con anterioridad y de forma correctamente a los usuarios.

  5. Registre las operaciones de la actualización con script(1).

  6. Para evitar su eliminación marque los paquetes que lo requieran como «sin marcado automático» (unmarkauto), p. ej., «aptitude unmarkauto vim».

  7. Minimize los paquetes instalados con el de minimizar la posibilidad de conflictos, p. ej., elimine los paquetes de la tarea «Escritorio«.

  8. Elimine el archivo «/etc/apt/preferences» (evita el problema de prioridades (apt-pinning)).

  9. Realice actualizaciones siguiendo los pasos de forma sensata: vieja_estableestable«en pruebas»«inestable».

  10. Actualice el archivo «/etc/apt/sources.list» para referenciar unicamente el nuevo repositorio y ejecutar «aptitude update».

  11. Instale, opcionalmente, primero los nuevos paquetes fundamentales , p. ej., «aptitude install perl».

  12. Ejecute la órden «apt-get -s dist-upgrade» para comprobar su efecto.

  13. Finalmente , ejecute la órden «apt-get dist-upgrade».

[Atención] Atención

No es aconsejable omitir la distribución principal de Debian, la estable, cuando se actualiza entre distribuciones.

[Atención] Atención

En «Release Notes« anteriores, GCC, el núcleo de Linux , initrd-tools, Glibc, Perl, las herramientas APT, etc. han necesitado una atención especial para la actualización mayor del sistema.

Para actualizar de forma diaria la versión «inestable», consulte Sección 2.4.3, “Protección frente a problemas con paquetes”.

A continuación puede encontrar otras operaciones de gestión de paquetes para las cuales aptitude es demasiada abstracta o no posee la funcionalidad que se necesita.

Tabla 2.13. Relación de operaciones avanzadas con paquetes

orden acción
COLUMNS=120 dpkg -l <patrón_del_nombre_del_paquete> enumera el estado de los paquetes instalados para el informe de errores
dpkg -L <nombre_del_paquete> enumera el contenido de un paquete instalado
dpkg -L <nombre_del_paquete> | egrep '/usr/share/man/man.*/.+' relación las páginas del manual para un paquete instalado
dpkg -S <patrón_del_nombre_de_archivo> enumera los paquetes instalados que tienen un archivo que encaja con el patrón
apt-file search <patrón_nombre_de_archivo> enumera los paquetes en el repositorio que encajan con el nombre de archivo
apt-file list <patrón_nombre_de_paquete> enumera el contenido de los paquetes del repositorio que encajan
dpkg-reconfigure <nombre_del_paquete> reconfigura el paquete dado
dpkg-reconfigure -p=low <nombre_del_paquete> reconfigura el paquete dado realizando el mayor número de preguntas
configure-debian reconfigura los paquetes desde el menú de pantalla completa
dpkg --audit auditoria del sistema referente a paquete instalados parcialmente
dpkg --configure -a configura todos los paquetes instalados parcialmente
apt-cache policy <nombre_del_paquete_binario> muestra la versión, la prioridad y la información del repositorio de un paquete binario
apt-cache madison <nombre_del_paquete> muestra la versión disponible y la informacion del repositorio de un paquete
apt-cache showsrc <nombre_del_paquete_binario> muestra la información del paquete fuente que corresponde con el paquete binario
apt-get build-dep <nombre_del_paquete> instala los paquetes requieridos para construir el paquete
aptitude build-dep <nombre_del_paquete> instala los paquetes requieridos para construir el paquete
apt-get source <nombre_del_paquete> descarga la fuente (desde el repositorio estándar)
dget <URL_del_archivo_dsc> descarga el código del paquete (desde otro repositorio)
dpkg-source -x <nombre_del_paquete>_<version>-<versión_de_debian>.dsc construye el árbol de las fuentes para un conjunto de paquetes fuente («orig.tar.gz» y «debian.tar.gz»/«*.diff.gz»)
debuild binary construye el/los paquete(s) desde un árbol de fuentes locales
make-kpkg imagen_del_núcleo construye el paquete del núcleo desde el árbol fuente del kernel
make-kpkg --initrd imagen_del_núcleo construye el paquete del núcleo desde el árbol fuente de este con initramfs activado
dpkg -i <nombre_del_paquete>_<version>-<versión_de_debian>_<arquitectura>.deb instala un paquete local en el sistema
debi <nombre_del_paquete>_<version>-<versión_de_debian>_<arquitectura>.dsc instala el(los) paquete(s) locales en el sistema
dpkg --get-selections '*' >selección.txt guardar información de estado de selección de nivel de paquete dpkg
dpkg --set-selections <seleccion.txt asigna la información de estado de selección de nivel del paquete dpkg
echo <nombre_paquete> hold | dpkg --set-selections establecer estado de selección de nivel de paquete dpkg para un paquete a mantener (equivalente a ' aptitude hold < nombre_del_paquete > ')

[Nota] Nota

Para paquetes que sean multi-arch, usted puede necesitar especificar el nombre de la arquitectura para algunas órdenes. Por ejemplo, use «dpkg -L libglib2.0-0:amd64» para enumerar el contenido del paquete libglib2.0-0 para la arquitectura amd64.

[Atención] Atención

Las herramientas de bajo nivel como «dpkg -i …» y «debi …» deben ser usadas con cuidado por el administrador del sistema. No toman en cuenta de forma automática las dependencias entre paquetes. La opción de la línea de órdenes «--force-all» y parecidas (see dpkg(1)) estan hechas para ser usadas únicamente por usuarios expertos. Usarlas sin entender plenamente sus consecuencias pueder corromper el sistema entero.

Tenga en cuenta:

La instalación de debsums permite de la verificación de los archivos de los paquetes instalados comparando los valores MD5sum en el archivo «/var/lib/dpkg/info/*.md5sums» con debsums(1). Para saber como funciona MD5sum consulteSección 10.3.5, “El resumen MD5”.

[Nota] Nota

Ya que la base de datos de MD5sum pueden ser alterados por un intruso, debsums(1) su uso como herramienta de seguridad es limitada. Solo es aceptable para que el administrador compruebe modificaciones locales o daños producidos por errores del medio de almacenamiento.

Aunque hoy en día http://packages.debian.org/ proporciona métodos fáciles para buscar metainformación de los paquetes, comprobaremos métodos más tradicionales.

Las órdenes grep-dctrl(1), grep-status(1) y grep-available(1) se pueden usar para buscar cualquier archivo que tenga el formato general de un archivo de control de paquetes de Debian.

«dpkg -S <patrón_de_archivo_de_nombres>» pueden ser usados para buscar nombres de paquetes los cuales contienen archivos que encajan con el nombre instalado por dpkg. Pero pasa por alto los archivos creados por los archivos de órdenes de mantenimiento.

Si necesita realizar búsquedas más elaboradas de metadatos de dpkg , necesita ejecutar la órden «grep -e regex_pattern *» en el directorio «/var/lib/dpkg/info/». Esto realiza búsquedas de las palabras mencionadas en los archivos de órdenes de los paquetes y textos de preguntas de la instalación.

Si desea realizar búsquedas recursivas en dependencias de paquetes , se debería usar apt-rdepends(8).

Aprendamos como funciona internamente el sistema de paquetes Debian. Esto puede ayudarle a encontrar su propia solución en algunos problemas con paquetes.

[Sugerencia] Sugerencia

El archivo de la raíz «Release» es usado para firmar el repositorio del sistema seguro APT.

Cada distribución del repositorio de Debian tiene un archivo «Release» en su raíz, p. ej., el de «http://deb.debian.org/debian/dists/unstable/Release», sería:

Origin: Debian
Label: Debian
Suite: unstable
Codename: sid
Date: Sat, 14 May 2011 08:20:50 UTC
Valid-Until: Sat, 21 May 2011 08:20:50 UTC
Architectures: alpha amd64 armel hppa hurd-i386 i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 sparc
Components: main contrib non-free
Description: Debian x.y Unstable - Not Released
MD5Sum:
 bdc8fa4b3f5e4a715dd0d56d176fc789 18876880 Contents-alpha.gz
 9469a03c94b85e010d116aeeab9614c0 19441880 Contents-amd64.gz
 3d68e206d7faa3aded660dc0996054fe 19203165 Contents-armel.gz
...
[Nota] Nota

En el puede encontrar la razón de ser entre la «versión« y el «nombre en clave« en Sección 2.1.4, “Fundamentos del archivo de Debian”. «Distribución« se utiliza cuando se refiere a la «versión« y «nombre en clave«. Todos nombres «área« almacenadas en el repositorio son enumeradas en «Componentes«.

La integridad del archivo en la raíz «Release» se verifica por medio de la infraestructura criptográfica llamada secure apt.

  • El archivo de firma criptográfica «Release.gpg» se crea desde el auténtico archivo «Release» de la raíz y el archivo de la llave secreta Debian.

  • La archivo de la llave pública de debian se puede encontrat en «/etc/apt/trusted.gpg»;

  • El sistema secure APT comprueba criptograficamente la integridad del archivo «Release» de la raíz mediante el archivo «Release.gpg» y la clave pública del repositorio Debian en /etc/apt/trusted.gpg».

La integrdidad de todos los archivos de «Packages» y «Sources» son verificados usando valores MD5sum del archivo de la raíz «Release». La integridad de todos los archivos de paquetes son comprobados usando los valores de MD5sum en los archivos«Packages» and «Sources». Consulte debsums(1) y Sección 2.4.2, “Verificación de los archivos de un paquete instalado”.

Ya que la verificación de la firma criptográfica es un proceso intensivo en uso de la CPU, el uso del valor MD5sum para cada paquete mientra se usa el archivo de firma criptográfica de la raíz «Release» proporciona buena seguridad y eficiencia (consulte Sección 10.3, “Infraestructura de seguridad de la información”).

[Sugerencia] Sugerencia

Los archivos de nivel «Release» son usados para establecer las instrucciones de apt_preferences(5).

Hay archivos de nivel «Release para todas las ubicaciones especificadas por las líneas «deb» en /etc/apt/sources.list», como «http://deb.debian.org/debian/dists/unstable/main/binary-amd64/Release» o http://deb.debian.org/debian/dists/sid/main/binary-amd64/Release» como el siguiente:

Archive: unstable
Origin: Debian
Label: Debian
Component: main
Architecture: amd64
[Atención] Atención

Para la etiqueta «Archive:» , los nombres («stable», «testing», «unstable», …) son usados en el repositorio Debian mientras que los códigos de nombes («dapper», «feisty», «gutsy», «hardy», «intrepid», …) son usados en el repositorio Ubuntu.

Para algunos repositorios, como experimental y stretch-backports, que contienen paquetes que no deberían instalarse automaticamente, existe una línea añadida, p. ej., «http://deb.debian.org/debian/dists/experimental/main/binary-amd64/Release» como el siguiente:

Archive: experimental
Origin: Debian
Label: Debian
NotAutomatic: yes
Component: main
Architecture: amd64

Tenga en cuenta que los repositorios normales sin «NotAutomatic: yes», el valor por defecto de la prioridad de instalación (Pin-Priority) es 500, mientras que en los repositorios especiales con «NotAutomatic: yes», el valor por defecto de la prioridad de instalación (Pin-Priority) es 1 (consulte apt_preferences(5) y Sección 2.7.3, “Seleccionando la versión candidata”).

Cuando las herramientas APT, como aptitude, apt-get, synaptic, apt-file, auto-apt, … son usadas, necesitamos actualizar la copia local de la metainformación de la información que contienen el repositorio de Debian. Estas copias locales siguen los nombres de archivo de los nombres de la distribucion, área y arquitectura especificada en «/etc/apt/sources.list» (see Sección 2.1.4, “Fundamentos del archivo de Debian”).

  • «/var/lib/apt/lists/deb.debian.org_debian_dists_<distribution>_Release»

  • «/var/lib/apt/lists/deb.debian.org_debian_dists_<distribution>_Release.gpg»

  • «/var/lib/apt/lists/deb.debian.org_debian_dists_<distribution>_<area>_binary-<architecture>_Packages»

  • «/var/lib/apt/lists/deb.debian.org_debian_dists_<distribution>_<area>_source_Sources»

  • «/var/cache/apt/apt-file/deb.debian.org_debian_dists_<distribution>_Contents-<architecture>.gz» (para apt-file)

Los 4 primeros tipos de archivo son compartidos por todas las órdenes relevantes de actualización APT y son actualizados desde la línea de órdenes por «apt-get update» o «aptitude update». La metainformación de los «paquetes» es actualizada si existe la línea «deb» en «/etc/apt/sources.list». La metainformación de las «fuentes» es actualizada si existe la línea «deb-src» en «/etc/apt/sources.list».

La metainformación de los «paquetes» y de las «fuentes» contienen el campo «Filename:» que apunta a la ubicación del archivo de los paquetes fuente y binarios. En este momento, estos paquetes se ubican en el subárbol del directorio «pool/» para mejorar la transición entre distribuciones.

Se pueden realizar búsquedas interactivas en las copias locales de la metainformación de los «paquetes» mediante la órden aptitude. La órden de búsqueda especializada grep-dctrl(1) puede buscar metainformación en las copias locales de los «paquetes» y las «fuentes».

La copia local de la metainformación de «Contents-<architecture>» puede ser actualizada mediante «apt-file update» y su ubicación es diferente de las otras cuatro. Consulte apt-file(1). (La órden auto-apt usa por defecto una ubicación diferente para su copia local de «Contents-<architecture>.gz».)

Los archivos que son paquetes Debian tienen una estructura para nombrarlos determinada.


[Sugerencia] Sugerencia

Únicamente describiremos aquí el formato del paquete fuente. Para obtener mayor información consulte dpkg-source(1).


[Nota] Nota

Se puede comprobar el orden de las versiones de los paquetes con la órdendpkg(1), p. ej., «dpkg --compare-versions 7.0 gt 7.~pre1 ; echo $?» .

[Nota] Nota

El instalador debian (d-i) usa la extensión de archivo udeb para sus paquetes binarios en vez de la normal deb. Un paquete udeb es una versión reducida de un paquete deb a la cual se le han eliminado los contenidos no esenciales como la documentación con el fin de ahorrar espacio mientras se relajan los requisitos de la directriz de los paquetes. Ambos paquetes, deb y udeb, comparten la misma estructura de paquetes. La «u» tiene el significado de micro.

dpkg(1) es la herramienta de más bajo nivel para la gestión de paquetes Debian. Es una herramienta muy poderosa y por tanto es necesario usarla con cuidado.

Cuando se instala un paquete llamado «<nombre_del_paquete>», dpkg sigue el siguiente procedimiento:

  1. Desempaqueta el archivo deb (equivale a «ar -x»)

  2. Ejecuta «<nombre_del_paquete>.preinst» usando debconf(1)

  3. Instala el contenido del paquete en el sistema (equivalente a «tar -x»)

  4. Ejecuta «<nombre_del_paquete>.postinst» usando debconf(1)

El sistema debconf proporciona las llamadas interactivas de usuario estándar a la ayuda I18N y L10N (Capítulo 8, I18N y L10N).

Tabla 2.17. Los archivos destacados creados por dpkg

archivo descripción del contenido
/var/lib/dpkg/info/<nombre_del_paquete>.conffiles relación de archivos de configuración (modificables por el usuario)
/var/lib/dpkg/info/<nombre_del_paquete>.list relación de archivos y directorios instalados por el paquete
/var/lib/dpkg/info/<nombre_del_paquete>.md5sums relación de resumen criptográfico MD5 de los archivos instalados por el paquete
/var/lib/dpkg/info/<nombre_del_paquete>.preinst archivos de órdenes del paquete que se ejecutan antes de su instalación
/var/lib/dpkg/info/<nombre_del_paquete>.postinst archivo de órdenes que se ejecutan después de la instalación del paquete
/var/lib/dpkg/info/<nombre_del_paquete>.prerm archivo de órdenes del paquete que se ejecuta antes de la eliminación del paquete
/var/lib/dpkg/info/<nombre_del_paquete>.postrm archivo de órdenes del paquete para ser ejecutada después de la eliminación del paquete
/var/lib/dpkg/info/<nombre_del_paquete>.config archivo de órdenes para el sistema debconf
/var/lib/dpkg/alternatives/<nombre_del_paquete> la información alternativa usada por la órden update-alternatives
/var/lib/dpkg/available la información disponible para todo el paquete
/var/lib/dpkg/diversions la información de la ubicación alternativa usada por dpkg(1) y asignada por dpkg-divert(8)
/var/lib/dpkg/statoverride la información estadística manual utilizada por dpkg(1) y asignada por dpkg-statoverride(8)
/var/lib/dpkg/status la información del estado de todos los paquetes
/var/lib/dpkg/status-old la primera juego de copias de respaldo del archivo «var/lib/dpkg/status»
/var/backups/dpkg.status* el segundo juego de copias de respaldo y anteriores del archivo «var/lib/dpkg/status»

El archivo «status» además es utilizado por herramintas como dpkg(1), «dselect update» y «apt-get -u dselect-upgrade».

La órden de búsqueda especializada grep-dctrl(1) permite buscar en las copias locales de «status» y la metainformación «disponible».

[Sugerencia] Sugerencia

En el entorno del instalador de debian, la órden udpkg se usa para abrir los paquetes udeb. La órden udpkg es una versión reducida de la órden dpkg.

Cuando se mantiene un sistema Debian distribución «inestable», se espera que el administrador sea capaz de recuperarlo de situaciones en las que se encuentren paquetes rotos.

[Atención] Atención

Algunos métodos que vamos a exponer conllevan acciones muy peligrosas. ¡Usted ha sido advertido de ello!.

Los sistemas de gestión de paquetes, al nivel de archivo, como aptitude(8) o apt-get(1), ni siquiera tratan de instalar paquetes con archivos superpuestos usando las dependencias de los paquetes (see Sección 2.1.6, “Dependencias de paquetes”).

Los errores de los mantenedores de paquetes o la inconsistencia en el despliegue de archivos de fuentes mezclados (see Sección 2.7.2, “Paquetes de fuentes varias en los repositorios”) por parte del administrador del sistema puede crear situaciones con una definición incorrecta de las dependencias del paquete. Cuando se instala un paquete que superpone archivos usando aptitude(8) o apt-get(1), dpkg(1) se encarga de devolver un error al programa que lo llamó sin sobreescribir los archivos existentes.

[Atención] Atención

El uso de paquetes de terceras partes añade riesgos significativos para el sistema a través de los archivos de órdenes de mantenimiento, ya que son ejecutados con los privilegios de superusuario y pueden realizar cualquier cosa en su sistema. La órden dpkg(1) solo ofrece protección contra la sobreescritura en el desempaquetado.

Se puede arreglar una instalación deficiente eliminando en primer lugar el paquete incompatible anterior <old-package>.

$ sudo dpkg -P <old-package>

Ya que dpkg es una herramienta de paquetes de muy bajo nivel, puede ser útil en situaciones críticas como un sistema que no inicia sin conexión a la red. Asumamos que el paquete foo esta roto y necesita ser sustituido.

Se pueden encontrar versiones antiguas del paquete foo libres de errores en las copias locales (cachés) en el directorio de caché de paquetes: «/var/cache/apt/archives/». (Si no, se pueden descargar del repositorio de http://snapshot.debian.net/ or copiar desde la caché de paquetes de un equipo en funcionamiento).

Si puede iniciar el sistema, se puede instalar con la siguiente órden:

# dpkg -i /ruta/a/foo_<versión_antigua>_<arquictectura>.deb
[Sugerencia] Sugerencia

Si el sistema tiene un error menor, otra alternativa es realizar un actualización del sistema completo a una versión anterior (downgrade) como en Sección 2.7.10, “Volver al estado anterior por emergencia” por medio de las herramientas de alto nivel del sistema APT.

Si el sistema no se puede iniciar desde el disco duro, se pueden encontrar otras formas de iniciarlo.

  1. Iniciar el sistema mediante un CD de instalación de Debian en modo rescate.

  2. Montar el sistema que no inicia en el disco duro en «/destino».

  3. Instalar una versión anterior del paquete foo mediante:

# dpkg --root /destino -i /ruta/a/foo_<versión_antigua>_<arquitectura>.deb

Este ejemplo funciona incluso si la órden dpkg del disco duro está roto.

[Sugerencia] Sugerencia

Cualquier sistema GNU/Linux iniciado por otro sistema en disco duro, CD live GNU/Linux CD, llavero USB iniciable, o inicio mediante red pueede ser usado para recuperar un sistema roto.

Si trata de instalar de esta manera un paquete y dicha instalación falla debido a la violación de alguna dependencia y es la única manera de solucionarlo, se puede ignorar la dependencia utilizando dpkg's «--ignore-depends», «--force-depends» y otras opciones. Si lo hace así, será necesario un gran esfuerzo para más tarde restaurar la propia dependencia. Consulte para más detalles dpkg(8).

[Nota] Nota

Si su sistema esta inoperativo por errores graves, debería realizar una copia de respaldo del sistema a un lugar seguro (see Sección 10.2, “Respaldo y recuperación”) y realizar una instalación limpia. Esto le llevará menos tiempo y al final tendrá un mejor resultado.

[Atención] Atención

La instalación de paquetes desde fuentes de múltiples repositorios no se permite en la distribución oficial Debian excepto para las combinaciones oficiales de repositorios como estable con actualizaciones de seguridad y stretch-updates.

Se muestra un ejemplo de las operaciones que incluyen la versión más reciente de paquetes encontrados en «inestable» mientras se realiza el seguimiento en una única ocasión de «en pruebas».

  1. Cambie el archivo «/etc/apt/sources.list» de forma temporal a una entrada única «unstable».

  2. Ejecute «aptitude update».

  3. Ejecute «aptitude install <nombre_del_paquete>».

  4. Recupere la versión original de«/etc/apt/sources.list» para «en pruebas».

  5. Ejecute «aptitude update».

No cree el archivo «/etc/apt/preferences» ni preocupese por la forma de hacerlo manualmente mediante «apt-pinning«. Ya que es muy engorroso.

[Atención] Atención

Cuando se usan archivos de múltiples fuentes, usted se debe asegurar de la compatibilidad de los paquetes por usted mismo, ya que Debian no lo garantiza. Si existe incompatibilidad entre paquetes, se puede romper el sistema. Usted debe ser capaz de decidir dichos requisitos técnicos. El uso de archivos de múltiples fuentes desconocidas es una operación completamente opcional y su uso es algo que se desaconseja encarecidamente.

Las reglas generales para la instalación de paquetes de diferentes repositorios son:

[Nota] Nota

Para asegurar la instalación segura de un paquete, algunos paquetes binarios comerciales «non-free« pueden incluir bibliotecas enlazadas estaticamente. Se debe comprobar su compatibilidad ABI.

[Nota] Nota

Con la excepción de evitar la rotura de algún paquete de forma transitoria, es una mala idea la instalación de paquetes binarios de repositorios binarios no soportados oficialmente. Esto es cierto incluso si se utiliza «apt-pinning« (consulte Sección 2.7.3, “Seleccionando la versión candidata”). Debería evaluar la técnica de chroot (consulte Sección 9.10, “Sistemas virtualizados”) o similares para ejecutar programas de repositorios diferentes.

Sin el archivo «/etc/apt/preferences», el sistema APT elige la versión candidata como la última versión disponible utilizando la versión de la cadena de caracteres. Este es el proceso normal y recomentado para el uso del sistema APT. Todas las combinaciones de repositorios con soporte oficial no necesitan el archivo «/etc/apt/preferences» ya que algunos respositorios no deberían usarse para realizar actualizaciones y para que el funcionamiento sea el correcto se marcan como NotAutomatic.

[Sugerencia] Sugerencia

La forma en que se comparan las cadenas de caracteres de las versiones puede ser comprobada mediante, p. ej., «dpkg --compare-versions ver1.1 gt ver1.1~1; echo $?» (consulte dpkg(1)).

Cuanso se usa como origen para instalación de paquetes, un conjunto mixto de repositorios con regularidad (consulte Sección 2.7.2, “Paquetes de fuentes varias en los repositorios”), mediante el archivo «/etc/apt/preferences» se puede automatizar este tipo de operaciones complejas, creando dicho archivo con las entradas adecuadas y modificando la forma en que se seleccionan la versión candidata de los paquetes según se describe en apt_preferences(5). Esta operación recibe el nombre de alteración de la selección de paquetes (apt-pinning).

[Aviso] Aviso

El uso de apt-pinning por un usuario no experimentado es una causa segura de problemas graves. Se debe evitar la alteración de la selección de paquetes (apt-pinning) excepto cuando sea absolutamente indispensable.

[Atención] Atención

Cuando use apt-pinning, usted se debe asegurar de la compatibilidad de los paquetes ya que Debian no lo garantiza. La alteración de la selección de paquetes es una operación opcional y es algo que no le animo a experimentar.

[Atención] Atención

Las reglas de apt_preferences(5) utilizan los archivos «Release» a nivel de archivo (consulte Sección 2.5.3, “Archivos «Release» a nivel de archivo”). Así «apt-pinning» funciona únicamante con los nombres de los repositorios normales de Debian y repositorios de seguridad de Debian. (Esto es diferente para los repositorios de Ubuntu). Por ejemplo, se puede hacer «Pin: release a=unstable» pero no se puede hacer «Pin: release a=sid» en el archivo «/etc/apt/preferences».

[Atención] Atención

Cuando se usan repositorios que no son de Devian como parte de «apt-pinning«, debería comprobar lo que hacen y comprobar su credibilidad. Por ejemplo, Ubuntu y Debian no deben mezclarse.

[Nota] Nota

Incluso si no crea el archivo «/etc/apt/preferences», se pueden realizar operaciones complejas de forma correcta sin «apt-pinning« (consulte Sección 2.6.4, “Recuperación con la órden dpkg”y Sección 2.7.2, “Paquetes de fuentes varias en los repositorios”).

Aquí está una explicación simplificada de la técnica apt-pinning.

El sistema APT elige el valor de la prioridad de pin (Pin-Priority) mayor actualizando el paquete desde la fuente disponible indicado en el archivo «/etc/apt/sources.list» como el paquete de la versión candidata. Si la «pin-priority« del paquete es mayor que 1000, esta restricción de la versión para la actualización se descarta para permitir realizar un «downgrading« (consulte Sección 2.7.10, “Volver al estado anterior por emergencia”).

El valor Pin-Priority de cada paquete se deine por las entradas de «Pin-Priority« en el archivo «/etc/apt/preferences» o usa su valor por defecto.


La distribución objetivo del repositorio puede ser asignado por varios métodos,

  • Añadir al archivo de configuración «/etc/apt/apt.conf» la línea«APT::Default-Release «stable«;»

  • línea de órdenes, p. ej., «apt-get install -t testing some-package»

Los repositorios «NotAutomatic« y «ButAutomaticUpgrades« es asignado por el servidor teniendo su archivo de nivel «Release« (consulte Sección 2.5.3, “Archivos «Release» a nivel de archivo”) contiene tanto «NotAutomatic: yes» como «ButAutomaticUpgrades: yes». El repositorio «NotAutomatic« es asignado por el servidor teniendo su archivo de nivel «Release« el literal «NotAutomatic: yes».

La situación de apt-pinning del <paquete> que se encuentra en múltiples repositorios de origen puede mostrarse con «apt-cache policy <paquete>».

  • Una línea que empieza por «Package pin:» muestra la versión del paquete de pin si la asociación se define solo con <package> p. ej., «Package pin:0.190».

  • No existirá la línea !Package pin:» si no se ha definido ninguna asociación con el <paquete>.

  • El valor de «Pin-Priority« asociado con el <paquete> es mostrado al lado derecho de todas las cadenas de caracteres de las versiones, p. ej. 0.181 700».

  • «0» se muestra a la derecha de todas las cadenas de caracteres de las versiones si esta definida la asociación con el <paquete> p. ej., «0.181 0».

  • Los valores de la Pin-Priority de los repositorios (definido como «Package: *» en el archivo «/etc/apt/preferences» ) se muestra a la izquierda de todas las rutas de archivo, p.ej., «100 http://deb.debian.org/debian/ stretch-backports/main Packages».

Existen los repositorios stretch-updates y backports.debian.org que aportan paquetes actualizados para estable (stretch).

Para usar dichos repositorios, deben aparecer en el archivo «/etc/apt/sources.list» lo siguiente:

deb http://deb.debian.org/debian/ stretch main contrib non-free
deb http://security.debian.org/ stretch/updates main contrib
deb http://deb.debian.org/debian/ stretch-updates main contrib non-free
deb http://deb.debian.org/debian/ stretch-backports main contrib non-free

No es necesario asignar un valor explícito Pin-Priority en el archivo «/etc/apt/preferences». Cuando hay nuevos paquetes disponibles, la configuración por defecto proporciona las actualizaciones más sensao (consulte Sección 2.5.3, “Archivos «Release» a nivel de archivo”).

  • Todos los paquetes viejos son actualizados a los nuevos con origen en stretch-updates.

  • Solo los paquetes antiguios instalados de forma manual desde stretch-backports son actualizados a los nuevos de stretch-backports.

Cuando ocurra que se desee instalar manualmente un paquete llamado «<nombre_del_paquete>» con su dependencia del repositorio stretch-backports, se usa la siguiente órden mientras se cambia la distribución objetivo con la opción «-t».

$ sudo apt-get install -t stretch-backports <nombre_del_paquete>

A continuación se tiene un ejemplo de como usar la técnica de apt-pinning en las actualizaciones de «en pruebas» para usar una versión nueva de un paquete de «inestable». Se deben enumerar todos los repositorios necesarios en el archivo «/etc/apt/sources.list» como se muestra a continuación:

deb http://deb.debian.org/debian/ testing main contrib non-free
deb http://deb.debian.org/debian/ unstable main contrib non-free
deb http://security.debian.org/ testing/updates main contrib

Modifique «/etc/apt/preferences» como sigue:

Package: *
Pin: release a=unstable
Pin-Priority: 100

Cuando desee instalar un paquete llamado «<nombre_del_paquete>» con sus dependencias desde el respositorio «inestable» con esta configuración, debe ejecutar la órden siguiente que cambia la distribución del repositorio con la opción «-t» (Pin-Priority of «inestable» con el valor 990).

$ sudo apt-get install -t unstable <nombre_del_paquete>

Con esta configuración la actualización de paquetes «apt-get upgrade» y «apt-get dist-upgrade» (o «aptitude safe-upgrade» y «aptitude full-upgrade») se realiza de la siguiente manera: los paquetes que han sido instalados desde el repositorio «en pruebas» usan su correspondiente repositorio «en pruebas» y los paquetes instalados desde la distribución «inestable» usan su correspondiente repositorio «inestable».

[Atención] Atención

Tenga cuidado con eliminar la entrada «testing» del archivo «/etc/apt/sources.list». Sin dicha entrada «testing» en él, el sistema APT actualizará los paquetes usando la nueva distribución «inestable».

[Sugerencia] Sugerencia

Generalmente edito el archivo «/etc/apt/sources.list» para comentar la entrada ««inestable»» del archivo justo después de realizar la operación anterior. Esto evita que el proceso de actualización se ralentice portener demasiadas entradas en el archivo «/etc/apt/sources.list» aunque esto impide que se actualicen los paquetes que fueron instalados desde el repositorio «inestable» usando dicho repositorio actual.

[Sugerencia] Sugerencia

Si se utiliza «Pin-Priority: 1 « en vez de «Pin-Priority: 100» en el archivo« / etc/apt/preferences «, los paquetes instalados con anterioridad que tienen un valor de Pin-Priority de 100 no se actualizarán del repositorio «inestable» incluso si se elimina la entrada ««en pruebas»» del archivo «/etc/apt/sources.list».

Si desea mantener automáticamente algunos paquetes particulares de «inestable» sin la instalación inicial «-*t unstable», tiene que crear el archivo «/etc/apt/preferences» literal y explícitamente enumerar al principio todos aquellos paquetes como sigue:

Package: <package-1>
Pin: release a=unstable
Pin-Priority: 700

Package: <package-2>
Pin: release a=unstable
Pin-Priority: 700

Esto realiza un ajuste del valor de «Pin-Priority« para cada paquete. Por ejemplo, con el fin de mantener la última versión de «inestable» de esta «Referencia de Debian« en inglés, usted debe tener la siguiente entrada en el archivo «/ etc/apt/preferences».

Package: debian-reference-en
Pin: release a=unstable
Pin-Priority: 700

Package: debian-reference-common
Pin: release a=unstable
Pin-Priority: 700
[Sugerencia] Sugerencia

Esta técnica de apt-pinning es válida incluso para mantener paquetes de la distribución stable. En mi experiencia es más seguro tener los paquetes de documentación de la distribución «inestable».

El paquete apt incluye su propio archivo de órdenes cron «/etc/cron.daily/apt» que se encarga de la descarga automática de paquetes. Este archivo de órdenes puede ser mejorado para la actualización automática de paquetes mediante la instalación del paquete unattended-upgrades. Se puede personalizar mediante los parámetros de los archivos «/etc/apt/apt.conf.d/02backup» y «/etc/apt/apt.conf.d/50unattended-upgrades» según se describe en «/usr/share/doc/unattended-upgrades/README».

El paquete unattended-upgrades esta pensado para realizar las actualizaciones de seguridad de un sistema estable. Si el riesgo de que se rompa un sistema estable por una actualización automática es menor de que el sistema se rompa por un intruso usando un agujero de seguridad que podría haber sido cerrado por una actualización automática, debería considerar usar las actualizaciones automáticas con una configuración de parámetros como la siguiente:

APT::Periodic::Update-Package-Lists «1«;
APT::Periodic::Download-Upgradeable-Packages «1«;
APT::Periodic::Unattended-Upgrade «1«;

Si esta ejecutando un sistema con la distribución «inestable», no querrá usar las actualizaciones automáticas ya que con toda seguridad el sistema se romperá en algún momento. Incluso para un caso como «inestable», todavía puede que quiera descargar los paquetes por adelantado para ahorrar tiempo en una actualización interactiva con la configuración de los parámetros según se indica:

APT::Periodic::Update-Package-Lists «1«;
APT::Periodic::Download-Upgradeable-Packages «1«;
APT::Periodic::Unattended-Upgrade «0«;
[Atención] Atención

El hecho de volver a un estado anterior no esta soportado oficialmente por el diseño de Debian. Debe ser hecho únicamente como parte de un proceso de recuperación de emergencia. Aparte de esta situación, es una técnica que funciona muy bien para muchos problemas. En sistemas críticos debe realizar una copia de respaldo de todos los datos del sistema antes de realizar una operación de recuperación y reinstalar el sistema desde el principio.

Puede tener suerte en volver de una versión nueva de un repositorio a una vieja al recuperarse de una actualización que rompa el sistema manipulando la versión_candidata (see Sección 2.7.3, “Seleccionando la versión candidata”). Esta es una posibilidad lenta a realizar la tediosa acción de ejecutar muchas órdenes «dpkg -i <paquete_roto>_<versión_antigua>.deb» (consulte Sección 2.6.4, “Recuperación con la órden dpkg”).

Busque las líneas del archivo «/etc/apt/sources.list» para mantener «inestable» como sigue a continuación:

deb http://deb.debian.org/debian/ sid main contrib non-free

Sustituyalo por lo siguiente para mantener «en pruebas».

deb http://deb.debian.org/debian/ buster main contrib non-free

Configure el archivo «/etc/apt/preferences» como sigue:

Package: *
Pin: release a=testing
Pin-Priority: 1010

Ejecute «apt-get update; apt-get dist-upgrade» para forzar la vuelta al estado anterior del sistema completo.

Elimine es fichero particular «/etc/apt/preferences» después de la vuelta atrás de emergencia.

[Sugerencia] Sugerencia

Es una buena idea eliminar (¡que no purgar!) tantos paquetes como sea posible para minimizar los problemas de dependencias. Puede necesitar eliminar de forma manual e instalar algunos paquetes para tener un sistema restaurado. El núcleo de Linux, bootloader, udev, PAM, APT y los paquetes de red y sus archivos de configuraciñon pueden necesitar atención especial.

Ya que el sistema de copias espejo de todas las subsecciones del repositorio de Debian despercia espacio en disco y ancho de banda de red, cuando existen muchos equipos con Debian en LAN se debe considerar el despliegue de un de un servidor proxy local para APT. APT se puede configurar para utilizar servidores proxy genérico web (http) como calamar (consulte Sección 6.10, “Servidores de aplicaciones en otras redes”) según se describe en el apt.conf(5) y en «/usr/share/doc/apt/examples/configure-index.gz». La configuración del servidor proxy puede realizarse mediante la variable de entorno «$http_proxy» como sustituto de la configuración en el archivo «/etc/apt/apt.conf».

Existen herramientas especiales proxy para repositorios Debian. Compruebe BTS antes de usarlos.


[Atención] Atención

Cuando Debian reorganiza la estructura del repositorio, estas herramientas proxy especializadas necesitan la reescritura de su código por parte del desarrollador Debian y pueden no ser operativas durante cierto tiempo. Por otro lado, los servidores proxy genéricos web (http) son más robustos y es más fácil hacer frente a esos cambios.

Aquí esta un ejemplo de la creación de un repositorio público y pequeño de paquetes compatible con el sistema moderno «secure APT« (consulte Sección 2.5.2, “Archivo «Release» del nivel superior y autenticación”). Asumamos algunas cosas:

  • Nombre de la cuenta de usuario: «foo»

  • Nombre de equipo: «www.example.com»

  • Paquetes necesarios: apt-utils, gnupg y otros paquetes

  • URL: «http://www.example.com/~foo/» ( → «/home/foo/public_html/index.html»)

  • Arquitectura de paquetes: «amd64»

Cree la clave del repositorio APT de Foo en su sistema servidor como sigue:

$ ssh foo@www.example.com
$ gpg --gen-key
...
$ gpg -K
...
sec   1024D/3A3CB5A6 2008-08-14
uid                  Foo (ARCHIVE KEY) <foo@www.example.com>
ssb   2048g/6856F4A7 2008-08-14
$ gpg --export -a 3A3CB5A6 >foo.public.key

Publique el archivo de la clave del repositirio !foo.public.key» con el identificador (ID) de la clave 3A3CB5A6» para Foo

Crear el árbol del repositorio llamado «Origin: Foo« como sigue:

$ umask 022
$ mkdir -p ~/public_html/debian/pool/main
$ mkdir -p ~/public_html/debian/dists/unstable/main/binary-amd64
$ mkdir -p ~/public_html/debian/dists/unstable/main/source
$ cd ~/public_html/debian
$ cat > dists/unstable/main/binary-amd64/Release << EOF
Archive: unstable
Version: 4.0
Component: main
Origin: Foo
Label: Foo
Architecture: amd64
EOF
$ cat > dists/unstable/main/source/Release << EOF
Archive: unstable
Version: 4.0
Component: main
Origin: Foo
Label: Foo
Architecture: source
EOF
$ cat >aptftp.conf <<EOF
APT::FTPArchive::Release {
  Origin «Foo«;
  Label «Foo«;
  Suite «unstable«;
  Codename «sid«;
  Architectures «amd64«;
  Components «main«;
  Description «Public archive for Foo«;
};
EOF
$ cat >aptgenerate.conf <<EOF
Dir::ArchiveDir «.«;
Dir::CacheDir «.«;
TreeDefault::Directory «pool/«;
TreeDefault::SrcDirectory «pool/«;
Default::Packages::Extensions «.deb«;
Default::Packages::Compress «. gzip bzip2«;
Default::Sources::Compress «gzip bzip2«;
Default::Contents::Compress «gzip bzip2«;

BinDirectory «dists/unstable/main/binary-amd64« {
  Packages «dists/unstable/main/binary-amd64/Packages«;
  Contents «dists/unstable/Contents-amd64«;
  SrcPackages «dists/unstable/main/source/Sources«;
};

Tree «dists/unstable« {
  Sections «main«;
  Architectures «amd64 source«;
};
EOF

Puede automatizar las actualizaciones repetitivas del contenido del repositorio APT en su sistema servidor mediante la configuración dupload.

Ubique todos los archivos de paquetes en !~foo/public_html/debian/pool/main/» ejecutando «dupload -t foo archivo_de_cambios» en el cliente mientras tiene «~/.dupload.conf» con el contenido que sigue:

$cfg{'foo'} = {
  fqdn => «www.example.com«,
  method => «scpb«,
  incoming => «/home/foo/public_html/debian/pool/main«,
  # The dinstall on ftp-master sends emails itself
  dinstall_runs => 1,
};

$cfg{'foo'}{postupload}{'changes'} = «
  echo 'cd public_html/debian ;
  apt-ftparchive generate -c=aptftp.conf aptgenerate.conf;
  apt-ftparchive release -c=aptftp.conf dists/unstable >dists/unstable/Release ;
  rm -f dists/unstable/Release.gpg ;
  gpg -u 3A3CB5A6 -bao dists/unstable/Release.gpg dists/unstable/Release'|
  ssh foo@www.example.com  2>/dev/null ;
  echo 'Package archive created!'«;

El archivo de órdenes postupload iniciado por dupload(1) crea los archivos actualizados para cada subida.

Puede añadir este pequeño repositorio público a las líneas apt de su sistema cliente como sigue:

$ sudo bash
# echo «deb http://www.example.com/~foo/debian/ unstable main« \
   >> /etc/apt/sources.list
# apt-key add foo.public.key
[Sugerencia] Sugerencia

Si el repositorio se ubica en el sistema de archivos local, puede ver «deb file:///home/foo/debian/ …» en su lugar.

El contenido de paquetes «dpkg*.deb» puede ser extraido sin usar dpkg(1) en cualquier entorno tipo Unix usando los estándares ar(1) y tar(1).

# ar x /path/to/dpkg_<version>_<arch>.deb
# ls
total 24
-rw-r--r-- 1 bozo bozo  1320 2007-05-07 00:11 control.tar.gz
-rw-r--r-- 1 bozo bozo 12837 2007-05-07 00:11 data.tar.gz
-rw-r--r-- 1 bozo bozo     4 2007-05-07 00:11 debian-binary
# mkdir control
# mkdir data
# tar xvzf control.tar.gz -C control
# tar xvzf data.tar.gz -C data

El contenido de otros paquetes «*.deb» puede ser obtenido con la órden dpkg-deb(1) obtenido del paquete «dpkg*.deb» como en el caso anterior; o usando el estándar ar(1) y los nuevos GNU tar(1) con el apoyo de la descomprensión xz(1) del mismo modo del anterior.

También se puede navegar por el contenido de un paquete usando la órden mc.