Gestión de paquetes en Debian

7
288

Las distribuciones Linux contemporáneas como Debian y sus derivados, instalan el software mediante paquetes pre-compilados que contienen en su mayoría los binarios de un programa determinado así como información acerca de las dependencias con otros programas que son necesarios se instalen para el correcto funcionamiento del primero. Además, las diferentes herramientas para la gestión de paquetes mantienen un registro de las actualizaciones de forma que no tenemos porque buscar información acerca de los bugs y parches de seguridad.

Sin las herramientas para la Gestión de Paquetes, estaríamos obligados a instalar manualmente cada programa y sus dependencias si las tiene que necesitemos, a partir de programas fuentes que requieren sean compilados con todas las variables de compilación a tener en cuenta. Proceso arduo y en ocasiones complicado que, en manos inexpertas, resulta con frecuencia en que funcione incorrectamente el programa compilado e instalado.

El Sistema de Gestión de Paquetes intenta ayudarnos en las tareas de instalación de programas de forma sencilla, y en la obtención de de un sistema operativo coherente y de alta calidad.

Conceptos sobre la Gestión de Paquetes.

Independiente de la distribución Linux que utilice la Gestión de Paquetes, sus aspectos principales son los siguientes:

  • Descarga de paquetes: los diferentes proyectos de sistemas operativos como Debian, Ubuntu, CentOS, openSUSE, etcétera, mantienen de forma actualizada los llamados Repositorios de Paquetes que permiten la descarga centralizada con un cifrado confiable, de los paquetes propios de cada proyecto.
  • Resolución de dependencias: muchos paquetes contienen metadatos con información referente a cuáles otros paquetes le son necesarios para su correcto funcionamiento, y/o de cuáles Librerías Compartidas dependen. Estas características permiten mediante un solo comando la instalación de un paquete determinado con sus dependencias, y disminuye el volumen de paquetes a instalar en el caso de las Librerías Compartidas que ya se encuentren instaladas en el sistema y la gestión de la actualización de los paquetes de programas.
  • Formato estándar de paquete binario: los paquetes se preparan de forma uniforme por el sistema, con el objetivo de hacer la instalación mas coherente y fácil. Algunas distribuciones comparten los mismos formatos: Debian y sus derivados como son Ubuntu y LinuxMint, utilizan el formato de paquetes binarios ‘.deb‘. CentOS, openSUSE, Fedora, y otros, comparten el formato ‘.rpm‘. No obstante, pueden existir diferencias entre paquetes formateados de forma similar para sistemas operativos diferentes.
  • Ubicación común de los programas instalados y sus configuraciones: los desarrolladores de los diferentes sistemas operativos que utilizan el mismo formato de paquete, con frecuencia se ponen de acuerdo para ubicar a los programas instalados y sus archivos de configuración en iguales carpetas dentro del árbol de directorios de cada sistema de archivos. De ésta forma, los sistemas operativos serán capaces de imponer tal conformidad.
  • Control de la calidad: los desarrolladores de los sistemas operativos utilizan al proceso de empaquetado para probar y asegurar que el software es estable y que está libre de bugs que pueda disminuir la calidad del producto.

Recomendaciones generales

Mientras esté disponible, se recomienda instalar las versiones de programas existentes en el repositorio de paquetes que brinda cada distribución. En caso contrario, debemos buscar paquetes binarios de terceros para nuestro sistema operativo.

De no tener mas opciones, acudir a la instalación manual a partir de la compilación de programas fuentes. Sin embargo, debemos aclarar de que en ocasiones es mejor utilizar este procedimiento, y que de hecho existen distribuciones Linux que lo utilizan casi desde la misma instalación del sistema operativo.

En servidores, conocemos muchos casos de Administradores de Sistemas que, por hacer una actualización del software kakamamutt-1.0.1 a su “última versión” kakamamutt-1.0.3, han dejado inoperante toda una serie de servicios vitales para sus empresas.

En estaciones de trabajo, la “versionitis” ha acabado y seguirá acabando con sistemas muy estables y en perfecto funcionamiento que ha obligado a reinstalar el sistema operativo completo desde cero.

Paquetes en Debian y derivados

debian-logoEl Sistema de Gestión de Paquetes de Debian GNU/Linux utiliza archivos con formato ‘.deb’ que usualmente existen en los Repositorios o Colecciones de Paquetes que se encuentran en diversos medios como CD, DVD, repositorios locales, o en los repositorios en línea online que mantiene el Proyecto Debian y colaboradores. Los paquetes vienen pre-compilados en formato binario de forma que su instalación sea rápida y no requiera de compilación adicional.

Dependencias

Muchos paquetes complejos emplean el concepto de Dependencias. Las dependencias no son mas que paquetes adicionales que requiere el paquete principal para que funcione correctamente. Por ejemplo, el paquete nano editor de texto modo consola depende de los paquetes dpkg, libc6, libncursesw5 y libtinfo5 en Debian 8 “Jessie“. Para que el programa nano funcione correctamente es necesario estén instaladas todas sus dependencias, y esa información que contiene el paquete nano_2.2.6-3_amd64.deb en sus meta datos, la utiliza el instalador sea dpkg, apt, aptitude, gDebi, o Synaptic para su instalación.

dpkg

dpkg Debian package management system es el Gestor de Paquetes para Debian GNU/Linux y sus derivados. Mediante su uso podemos instalar, eliminar y construir paquetes. Sin embargo, no podemos descargar e instalar paquetes y sus dependencias de forma automática.

El paquete dpkg instala los siguientes comandos:

buzz@sysadmin:~$ dpkg -L dpkg | grep /bin/
/usr/bin/dpkg
/usr/bin/dpkg-deb
/usr/bin/dpkg-divert
/usr/bin/dpkg-query
/usr/bin/dpkg-split
/usr/bin/dpkg-statoverride
/usr/bin/dpkg-trigger
/usr/bin/update-alternatives
/usr/bin/dpkg-maintscript-helper
buzz@sysadmin:~$ dpkg -L dpkg | grep /sbin/
/sbin/start-stop-daemon
/usr/sbin/dpkg-divert (-> ../bin/dpkg-divert)
/usr/sbin/dpkg-statoverride (-> ../bin/dpkg-statoverride)
/usr/sbin/update-alternatives (-> ../bin/update-alternatives)
  • dpkg: Gestor de paquetes de Debian
  • dpkg-deb: empaqueta, desempaqueta y ofrece información sobre archivos de Debian.
  • dpkg-divert: herramienta para configurar y actualizar la lista de redirecciones.
  • dpkg-query: herramienta para mostrar información acerca de los paquetes listados en la base de datos de dpkg.
  • dpkg-split: separa un paquete binario de Debian en varias partes más pequeñas para luego volverlas a unir, posibilitando almacenar paquetes en dispositivos de poca capacidad, como disquetes.
  • dpkg-statoverride: “stat overrides” es la vía para comunicarle al comando dpkg que utilice un propietario diferente o modo para el camino path cuando se va a instalar un programa. Se aplica a cualquier sistema de archivos que maneje el comando dpkg incluyendo directorios, dispositivos del sistema, etcétera. Mediante su uso se puede forzar a que un programa que normalmente se instala con un setuid user ID efectivo de un proceso se instale sin ese valor de setuid, o que solo se pueda ejecutar por un determinado grupo.
  • dpkg-trigger: herramienta para activar disparadores intencionadamente y revisar su compatibilidad con la versión de dpkg en ejecución.
    update-alternatives: crea, elimina, gestiona y muestra información sobre
    los enlaces simbólicos que conforman el sistema de alternativas de
    Debian.
  • dpkg-maintscript-helper: programa que se ejecuta dentro de un script de mantenimiento de Debian y obtiene resultados que aun no puede lograr dpkg de forma nativa, debido a decisiones de diseño o limitaciones.
  • start-stop-daemon: sirve para controlar la creación y terminación de los procesos del sistema. Mediante el uso de sus opciones de búsqueda, se puede configurar start stop daemon para encontrar las instancias de un proceso en ejecución.

Para mas información ejecute man <comando>.

Ejemplos de uso de dpkg:

* Listar todos los paquetes instalados en el sistema:

buzz@sysadmin:~$ dpkg -l

* De la lista anterior, conocer si un determinado paquete está instalado o no:

buzz@sysadmin:~$ dpkg -l | grep nano
ii nano 2.2.6-3 amd64 small, friendly text editor inspired by Pico

* Listar todos los paquetes instalados por nano:

buzz@sysadmin:~$ dpkg -L nano

* Queremos conocer cuál paquete instaló por ejemplo el archivo /etc/gconf/2/evoldap.conf:

buzz@sysadmin:~$ dpkg -S /etc/gconf/2/evoldap.conf 
gconf2-common: /etc/gconf/2/evoldap.conf

* La salida anterior muestra que el archivo en cuestión lo instaló el paquete gconf2-common. Para comprobarlo ejecutamos:

buzz@sysadmin:~$ dpkg -L gconf2-common | grep evoldap
/usr/share/doc/gconf2-common/evoldap.schema
/etc/gconf/2/evoldap.conf

* Obtener información sobre un paquete descargado localmente:

buzz@sysadmin:~$ dpkg --info ldap-account-manager_4.9-1_all.deb

* Instalar el paquete ldap-account-manager_4.9-1_all.deb descargado localmente:

buzz@sysadmin:~$ sudo dpkg -i ldap-account-manager_4.9-1_all.deb

Desinstalar programas mediante dpkg

warning-signsNo se recomienda desinstalar paquetes mediante el uso de dpkg. Se debe emplear un gestor de paquetes que maneje las dependencias de forma consistente como aptitude o apt.
Para mas opciones sobre el gestor de paquetes dpkg ver las páginas del manual con el comando man dpkg.

dpkg-dev

Paquete independiente del dpkg que contiene las herramientas de desarrollo que se necesitan para desempaquetar, construir y subir  upload los paquetes fuentes de Debian.

El paquete dpkg-dev instala los siguientes comandos:

buzz@sysadmin:~$ dpkg -L dpkg-dev | grep /bin/
/usr/bin/dpkg-name
/usr/bin/dpkg-mergechangelogs
/usr/bin/dpkg-gencontrol
/usr/bin/dpkg-vendor
/usr/bin/dpkg-source
/usr/bin/dpkg-checkbuilddeps
/usr/bin/dpkg-parsechangelog
/usr/bin/dpkg-genchanges
/usr/bin/dpkg-architecture
/usr/bin/dpkg-shlibdeps
/usr/bin/dpkg-distaddfile
/usr/bin/dpkg-scanpackages
/usr/bin/dpkg-scansources
/usr/bin/dpkg-buildpackage
/usr/bin/dpkg-buildflags
/usr/bin/dpkg-gensymbols

Para conocer la descripción y las diferentes opciones de cada comando ejecute man <comando>.

Nos puede ser útil por ejemplo cuando necesitemos restaurar todos los paquetes instalados en nuestra estación de trabajo a partir de una instalación limpia como se indica en el post Debian 8 Jessie: Estación de trabajo o Servidor (I), o si queremos instalar los mismos paquetes en varios equipos diferentes. Para ello debemos dar los siguientes pasos:

1.- Obtenemos la lista de todos los paquetes instalados en nuestra Workstation o en el equipo tomado como “Plantilla” mediante el comando:

buzz@sysadmin:~$ dpkg --get-selections > lista-de-paquetes
buzz@sysadmin:~$ less lista-de-paquetes

el cual genera el archivo lista-de-paquetes que debemos guardar celosamente, pues lo utilizaremos mas adelante. Incluimos el segundo comando porque es educativo ver el contenido del archivo.

2.- Hacemos una instalación básica sin necesidad de entorno de escritorio o de un manejador de ventanas, tal y como se indica en Debian 8 Jessie: Estación de trabajo o Servidor (I).

3.- En el equipo con el sistema operativo recién instalado Iniciamos sesión como el usuario root.

4.- Copiamos el archivo lista de paquetes a la computadora que deseamos clonar los programas instalados en el equipo tomado como Plantilla; o hacia él que queremos restaurar.

5.- Declaramos los repositorios que utilizaremos en el archivo sources.list y actualizamos la lista de paquetes mediante apt-get update o aptitude update.

6.- Sino está instalado, procedemos a instalar el paquete dpkg-dev:

root@sysadmin:~# apt-get install dpkg-dev

7.- Registramos la lista de paquetes que vamos a instalar mediante el comando:

root@sysadmin:~# dpkg --set-selections < lista-de-paquetes

8.- Instalamos los paquetes registrados mediante el comando:

root@sysadmin:~# apt-get dselect-upgrade

apt

apt -Advanced Packaging Tool es una potente herramienta de la línea de comandos que forma parte del Gestor de Paquetes de Debian. Provee una interfaz de línea de comandos para la gestión de paquetes del sistema operativo.

El paquete apt instala los siguientes comandos:

buzz@sysadmin:~$ dpkg -L apt | grep /bin/
/usr/bin/apt
/usr/bin/apt-cache
/usr/bin/apt-cdrom
/usr/bin/apt-config
/usr/bin/apt-get
/usr/bin/apt-mark
/usr/bin/apt-key
  • apt-cache: realiza una serie de operaciones sobre la caché (registro o lista) de paquetes de APT. No modifica el estado del sistema. Proporciona operaciones de búsqueda y genera información útil a partir de los meta datos del paquete.
  • apt-cdrom: se utiliza para añadir un disco óptico nuevo a la lista de fuentes disponibles de APT. Examina la estructura del disco, corrige los posibles errores de grabación y verifica los ficheros de índice.
  • apt-config: programa interno que usan varios programas del conjunto de herramientas de APT para ofrecer un método de configuración sólido. Este programa accede al fichero principal de configuración /etc/apt/apt.conf de forma que resulta sencillo de usar por aplicaciones con scripts.
  • apt-get: herramienta de línea de comando para manejar paquetes. Puede considerarse como la interfaz de consola o “back-end” de usuario para otras herramientas que utilizan la librería proporcionada por APT. Existen varios “front-end” o interfaces de consola y gráficas como aptitude, synaptic y wajig.

Para conocer mas sobre la descripción y las diferentes opciones de cada comando ejecute man <comando>.

Ejemplos de uso de apt-get

* Instalar el paquete para escanear redes nmap:

buzz@sysadmin:~$ sudo apt-get install nmap

* Desinstalar el paquete nmap:

buzz@sysadmin:~$ sudo apt-get remove nmap

* Desinstalar el paquete nmap, dependencias instaladas automáticamente, y eliminar los archivos de configuración:

buzz@sysadmin:~$ sudo apt-get purge nmap

* Actualizar el Índice de Paquetes de APT. Básicamente el índice de paquetes es la base de datos con los paquetes disponibles desde los repositorios declarados en el archivo /etc/apt/sources.list:

buzz@sysadmin:~$ sudo apt-get update

* Actualizar paquetes a versiones actualizadas y revisadas actualizadas. Es lo que comúnmente denominamos Actualizar to upgrade el sistema:

buzz@sysadmin:~$ sudo apt-get upgrade

* Mostrar la lista de las opciones principales del comando apt:

buzz@sysadmin:~$ apt-get help

aptitude

aptitude es una interfaz de texto y herramienta de línea de comandos para el sistema de paquetes de Debian GNU/Linux. Permite al usuario ver la lista de paquetes y realizar tareas de gestión tales como instalar, actualizar o eliminar paquetes.

Básicamente permite dos formas de trabajo:

  • Interfaz de texto con menú de opciones
  • Directamente desde la línea de comandos con opciones.

Si invocamos en una consola de texto al comando sudo aptitude sin opciones, se mostrará la siguiente interfaz:

Acciones Deshacer Paquete Solucionador Buscar Opciones Vistas Ayuda
C-T: Menú ?: Ayuda q: Salir u: Actualizar g: Descarga/Instala/Elimina Paqs
aptitude 0.6.11
--- Paquetes nuevos (42961)
--- Paquetes instalados (415)
--- Paquetes no instalados (4)
--- Paquetes obsoletos y creados localmente (5)
--- Paquetes virtuales (5223)
--- Tareas (216)

Estos paquetes se han añadido a Debian desde la última vez que borró la lista de paquetes «nuevos». (elija «Olvidar paquetes nuevos» del menú Acciones para vaciar la lista).
Este grupo contiene 42961 paquetes.

information-signoPara obtener ayuda de como trabajar con la interfaz, tecleamos “?” sin comillas y entraremos a la “Ayuda en línea de Aptitude”. Si estamos en una consola de texto con soporte para el mouse, lo podemos utilizar para movernos entre las pestañas “Paquetes” y “Ayuda”, sin tener que cerrar ésta última.
Es recomendable navegar por las diferentes opciones de esta interfaz, no sin antes consultar su ayuda. Personalmente utilizo el comando aptitude desde la línea de comandos.

Ejemplos de uso de aptitude

* Buscar paquetes que contienen la cadena “task” o tareas, y paginar el resultado:

buzz@sysadmin:~$ aptitude search task | more

* Mostrar la descripción del paquete de tarea task-mate-desktop, y posteriormente instalar el paquete:

buzz@sysadmin:~$ aptitude show task-mate-desktop
buzz@sysadmin:~$ sudo aptitude install task-mate-desktop

* Buscar en el nombre y dentro de las descripciones de paquetes la cadena “mate”, y paginar el resultado:

buzz@sysadmin:~$ aptitude search ~dmate | more

* Buscar los nombres de paquetes instalados que contengan la cadena “mate” y paginar el resultado:

buzz@sysadmin:~$ aptitude search ~imate | more

* Eliminar el paquete task-mate-desktop. Posteriormente, eliminar configuraciones y archivos de dependencias que no se borraron automáticamente:

buzz@sysadmin:~$ sudo aptitude purge task-mate-desktop
buzz@sysadmin:~$ sudo aptitude purge ~c

* Intentar el arreglo de paquetes rotos de forma agresiva:

buzz@sysadmin:~$ sudo aptitude install -f

information-signoEl comando anterior, conjuntamente con aptitude purge ~c, son muy útiles cuando eliminamos muchos paquetes o un paquete con muchas dependencias. Hasta que aptitude no devuelva un mensaje como el mostrado a continuación, no podemos asegurar que tenemos un sistema coherente y limpio desde el punto de vista del Gestor de Paquetes de Debian GNU/Linux.

 

buzz@sysadmin:~$ sudo aptitude install -f
No se instalará, actualizará o eliminará ningún paquete.
0 paquetes actualizados, 0 nuevos instalados, 0 para eliminar y 0 sin actualizar.
Necesito descargar 0 B de ficheros. Después de desempaquetar se usarán 0 B.
 
buzz@sysadmin:~$ sudo aptitude purge ~c
No se instalará, actualizará o eliminará ningún paquete.
0 paquetes actualizados, 0 nuevos instalados, 0 para eliminar y 0 sin actualizar.
Necesito descargar 0 B de ficheros. Después de desempaquetar se usarán 0

* Eliminar de la caché los archivos de paquetes descargados -clean- y los archivos de paquetes descargados que son obsoletos -autoclean- en dos comandos:

buzz@sysadmin:~$ sudo aptitude clean
buzz@sysadmin:~$ sudo aptitude autoclean

* Mostrar la lista de las opciones principales del comando aptitude:

buzz@sysadmin:~$ aptitude help

wajig

wajig ofrece una sencilla y unificada envoltura para la gestión de paquetes en Debian GNU/Linux. Con un solo comando podemos realizar muchas de las funciones que brindan los comandos dpkg, apt-get, apt-cache y aptitude por separado. En vez de memorizar el uso de cada uno de los comandos anteriores, wajig realiza la selección de la herramienta adecuada.

La documentación primaria la podemos encontrar en www.togaware.com

Ejemplos de uso de wajig

* Obtener ayuda sobre el comando:

buzz@sysadmin:~$ wajig help
usage: wajig [-h] [-V]

unified package management front-end for Debian

optional arguments:
 -h, --help show this help message and exit
 -V, --version show wajig version

'wajig commands' displays available commands
'wajig doc' displays a tutorial
'wajig@googlegroups.com' is where your queries should go

* Listar los comandos disponibles mediante wajig:

buzz@sysadmin:~$ wajig commands

* Obtener la documentación del wajig:

buzz@sysadmin:~$ wajig doc | more

information-signoLa documentación se instala con el paquete wajig y se encuentra en la carpeta /usr/share/doc/wajig/. Específicamente, al archivo del tutorial podemos acceder mediante el comando:

 

buzz@sysadmin:~$ zless /usr/share/doc/wajig/TUTORIAL.gz

Actualizaciones Automáticas

Para automatizar el proceso de instalación de las actualizaciones de seguridad y de paquetes actualizados, podemos hacer uso del paquete unattended-upgrades. Para ello debemos instalar el paquete y modificar -si es necesario- las opciones de configuración que encontraremos en /etc/apt/apt.conf.d/50unattended-upgrades, archivo que se instalará con muchos comentarios y opciones, todas comentadas con // al inicio de cada línea.

information-signoEs muy recomendable hacer una copia del archivo 50unattended-upgrade y estudiar detenidamente su contenido antes de realizar cualquier modificación. Los comentarios que incluye ese archivo son la mejor ayuda que podamos encontrar para configurar correctamente las Actualizaciones Automáticas.

buzz@sysadmin:~$ sudo aptitude install unattended-upgrades
buzz@sysadmin:~$ sudo cp /etc/apt/apt.conf.d/50unattended-upgrades \  
/etc/apt/apt.conf.d/50unattended-upgrades.original

Si solo queremos se instalen los Paquetes Actualizados – Update Packages y las Actualizaciones de Seguridad – Security Updates modificaremos las siguientes opciones:

buzz@sysadmin:~$ sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Origins-Pattern {
        // Codename based matching:
        // This will follow the migration of a release through different
        // archives (e.g. from testing to stable and later oldstable).
//      "o=Debian,n=jessie";
        "o=Debian,n=jessie-updates";
//      "o=Debian,n=jessie-proposed-updates";
        "o=Debian,n=jessie,l=Debian-Security";

        // Archive or Suite based matching:
        // Note that this will silently match a different release after
        // migration to the specified archive (e.g. testing becomes the
        // new stable).
//      "o=Debian,a=stable";
//      "o=Debian,a=stable-updates";
//      "o=Debian,a=proposed-updates";
        "origin=Debian,codename=${distro_codename},label=Debian-Security";
};

Después de las modificaciones, guardamos los cambios y cerramos el archivo.

Para habilitar las Actualizaciones Automáticas, creamos y editamos el archivo /etc/apt/apt.conf.d/10periodic y declaramos las configuraciones apropiadas de apt:

buzz@sysadmin:~$ sudo nano /etc/apt/apt.conf.d/10periodic
APT::Periodic::Update-Package- Lists "1";
APT::Periodic::Download- Upgradeable-Packages "1";
APT::Periodic:: AutocleanInterval "7";
APT::Periodic::Unattended- Upgrade "1";

La anterior configuración indica que:

  • Se descargue la Lista de paquetes a actualizar
  • Se descarguen e instalen los paquetes disponibles para la actualización
  • El intervalo de tiempo para ejecutar la auto limpieza es de 7 días
  • Se actualice diariamente

Para obtener mas información sobre las opciones de configuración del archivo /etc/apt/apt.conf.d/10periodic, consulte el encabezado del archivo /etc/cron.daily/apt.

Recibir Notificaciones de las Actualizaciones Automáticas

Podemos configurar la recepción de mensajes de las Actualizaciones Automáticas. Para ello volvemos a modificar el archivo /etc/apt/apt.conf.d/50unattended-upgrades y modificamos las opciones correspondientes:

buzz@sysadmin:~$ sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
// Send email to this address for problems or packages upgrades
// If empty or unset then no email is sent, make sure that you
// have a working mail setup on your system. A package that provides
// 'mailx' must be installed. E.g. "user@example.com"
// Unattended-Upgrade::Mail "root";
Unattended-Upgrade::Mail "buzz@sysadmin.swl.fan";

// Set this value to "true" to get emails only on errors. Default
// is to always send a mail if Unattended-Upgrade::Mail is set
//Unattended-Upgrade::MailOnlyOnError "true";

Configuración del Gestor de Paquetes

La configuración de los Repositorios del sistema APT se efectúa mediante el archivo /etc/apt/sources.list y el directorio /etc/apt/sources.list.d/.

Cuando instalamos Debian, se configura el archivo sources.list con direcciones URL que apuntan a los Repositorios Oficiales del Proyecto Debian. Si disponemos de buena conexión con Internet que es lo normal- podemos actualizar el sistema e instalar las actualizaciones de seguridad mediante los comandos aptitude update y aptitude upgrade, o apt-get update y apt-get upgrade., inmediatamente después de terminada la instalación. Ejemplo de configuración por defecto de un Debian Jessie acabo de instalar:

root@admin:~# cat /etc/apt/sources.list
deb cdrom:[Debian GNU/Linux 8.6.0 _Jessie_ - Official amd64 DVD Binary-1 20160917-14:25]/ jessie contrib main

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

# jessie-updates, previously known as 'volatile'
# A network mirror was not selected during install. The following entries
# are provided as examples, but you should amend them as appropriate
# for your mirror of choice.
#
# deb http://ftp.debian.org/debian/ jessie-updates main contrib
# deb-src http://ftp.debian.org/debian/ jessie-updates main contrib

Debian utiliza tres secciones para diferenciar los paquetes según las licencias seleccionadas por los autores de cada trabajo:

  • Main reúne todos los paquetes que cumplen completamente con las Directrices de software libre de Debian.
  • Non-free agrupa a software que no cumple totalmente con las Directrices, pero se puede distribuir sin restricciones. Éste compendio no es parte oficial del Proyecto Debian.
  • Contrib o Contribuciones es un conjunto de software de código abierto – open source que requiere de software privado para su correcto funcionamiento o para su compilación, como fue el caso de OpenOffice.org que necesitaba el entorno privado de Java de la Sun Microsystem.

La mera existencia de la sección contrib representa una fuente de controversia entre el Proyecto Debian, y la Free Software Fundation y su presidente Richard M. Stallman, y desconozco si aun se mantiene por parte de la última la No recomendación a los usuarios de Software Libre de Debian como sistema operativo. Sin embargo, Debian GNU/Linux siempre recomienda dar prioridad al software libre.

Repositorios locales

Somos muchos los que no disponemos de una conexión con Internet que permita actualizar el sistema directamente desde Internet. Dependemos de Repositorios Locales almacenados en discos duros externos o internos, o en el caso de las empresas, en equipos habilitados al efecto.

Para éstos últimos ofrecemos a modo de ejemplo las entradas que deben existir en el archivo /etc/apt/sources.list para la declaración de los Repositorios Locales:

* Repositorios locales almacenados en un disco USB externo con la etiqueta mi-usb:

buzz@sysadmin:~$ sudo nano /etc/apt/sources.list
deb file:/media/buzz/mi-usb/jessie/debian/ jessie main contrib non-free 
deb file:/media/buzz/mi-usb/jessie/debian-security/ jessie/updates main contrib non-free 
deb file:/media/buzz/mi-usb/jessie/debian-multimedia/ jessie main non-free

* Repositorios almacenados en un disco duro interno que se monta en la carpeta /tera/ y que además contiene toda una serie de repositorios de distribuciones Linux:

buzz@sysadmin:~$ sudo nano /etc/apt/sources.list
deb file:/tera/repos/jessie/debian/ jessie main contrib non-free
deb file:/tera/repos/jessie/debian-security/ jessie/updates main contrib non-free
deb file:/tera/repos/jessie/debian-multimedia/ jessie main non-free

* Igual que el anterior, pero los Repositorios Locales se sirven mediante un servidor http Apache. Al efecto es necesario instalar el servidor Apache y crear un enlace en la carpeta /var/www/html/ que apunte a la carpeta /tera/repos/:,

buzz@sysadmin:~$ sudo aptitude install apache2
buzz@sysadmin:~$ sudo ln -s /tera/repos/ /var/www/html/
buzz@sysadmin:~$ ls -l /var/www/html/
lrwxrwxrwx 1 root root 11 ago 8 2016 repos -> /tera/repos
buzz@sysadmin:~$ sudo nano /etc/apt/sources.list
deb http://localhost/repos/jessie/debian/ jessie main contrib non-free 
deb http://localhost/repos/jessie/debian-security/ jessie/updates main contrib non-free 
deb http://localhost/repos/jessie/debian-multimedia/ jessie main non-free
buzz@sysadmin:~$ sudo aptitude update
Ign http://localhost jessie InRelease
Ign http://localhost jessie/updates InRelease
Ign http://localhost jessie InRelease
Ign http://localhost jessie Release.gpg
Ign http://localhost jessie/updates Release.gpg
Ign http://localhost jessie Release.gpg
Hit http://localhost jessie Release
Hit http://localhost jessie/updates Release
Hit http://localhost jessie Release
Ign http://localhost jessie/main amd64 Packages/DiffIndex
Ign http://localhost jessie/contrib amd64 Packages/DiffIndex
Ign http://localhost jessie/non-free amd64 Packages/DiffIndex
Hit http://localhost jessie/contrib Translation-en
Hit http://localhost jessie/main Translation-en
Hit http://localhost jessie/non-free Translation-en
Ign http://localhost jessie/updates/main amd64 Packages/DiffIndex
Ign http://localhost jessie/updates/contrib amd64 Packages/DiffIndex
Ign http://localhost jessie/updates/non-free amd64 Packages/DiffIndex
Hit http://localhost jessie/updates/contrib Translation-en
Hit http://localhost jessie/updates/main Translation-en
Hit http://localhost jessie/updates/non-free Translation-en
Ign http://localhost jessie/main amd64 Packages/DiffIndex
Ign http://localhost jessie/non-free amd64 Packages/DiffIndex
Hit http://localhost jessie/main amd64 Packages
Hit http://localhost jessie/contrib amd64 Packages
Hit http://localhost jessie/non-free amd64 Packages
Ign http://localhost jessie/main Translation-es
Hit http://localhost jessie/updates/main amd64 Packages
Hit http://localhost jessie/updates/contrib amd64 Packages
Hit http://localhost jessie/updates/non-free amd64 Packages
Hit http://localhost jessie/main amd64 Packages
Hit http://localhost jessie/non-free amd64 Packages
Ign http://localhost jessie/main Translation-es_US
Ign http://localhost jessie/main Translation-es
Ign http://localhost jessie/main Translation-en
Ign http://localhost jessie/non-free Translation-es_US
Ign http://localhost jessie/non-free Translation-es 
Ign http://localhost jessie/non-free Translation-en

El próximo artículo versará sobre la Gestión de Paquetes en CentOS.

¡Hasta entonces!.

Compartir
Artículo siguienteCentOS 7 como Workstation
Federico Antonio

Ing. Federico Antonio Valdes Toujague
Ingeniero Termo Energético de profesión. Administrador de Redes desde hace ya varios años. Fan de Debian y “OldFashion Man”.

7 Comentarios

  1. Menos mal que volvieron a publicar en éste sitio que espero se mantenga. Sirve de mucho a lectores como yo, que me desempeño como Sysadmin. Y este artículo viene de perillas como recordatorio y resumen de la gestión de paquetes en Debian. Gracias Fico.

  2. Muy buen articulo, es un verdadero ‘Todo en Uno’: dpkg, apt-get & apt-cache y aptitude.
    No conocía “wajig” que permite con un solo comando realizar muchas de las funciones que brindan los comandos antes mencionados.
    Genial el tip de las actualización automática de la instalación de los updates de seguridad y de los paquetes actualizados haciendo uso del paquete unattended-upgrades así como recibir notificaciones por correo de las mismas.
    Buenísimo también el tip de configurar de los repositorios locales con “deb http://…” en lugar del habitual “deb file:///…”
    Confieso que es muy difícil por no decir imposible encontrar en la Web un articulo sobre la administración paquetería en Debian que recoga en si mismo (en uno solo) tanto información.
    Felicidades Federico y a guardarlo en el Baúl de los Tips-en-Debian.

  3. Muy buena la explicacion detallada (acompañada de ejemplos) del “dpkg” [Gestor de Paquetes para Debian] y sus sub-comandos sobre los que no tenia conocimientos.
    Lo mismo para “apt” [Advanced Packaging Tool] y “aptitude”.
    A destacar lo de “wajig”, herramienta que no conocia y que es un “Todo en Uno”.
    Por ultimo y buenisimo como definir y habilitar las “Actualizaciones Automaticas” e incluso hasta uno darse el lujo de recibir Notificaciones de las mismas.
    Otro gran y practico articulo de Federico.

Dejar respuesta

Please enter your comment!
Please enter your name here