Lunes, Mayo 29, 2017

Desde qué repositorio proviene un paquete en Debian y derivados

servidor-web

Todavía hay muchas cuestiones en Debian que están pobremente documentadas, o directamente no documentadas. Un caso típico es conocer con exactitud desde qué repositorio proviene un paquete específico. Una pregunta muy lógica, especialmente cuando el sistema operativo en cuestión cuenta con paquetes provenientes de múltiples repositorios. Cierto paquete está causando problemas y quisiéramos saber desde qué repositorio provino.

Vamos directamente a un ejemplo

Este sistema Devuan cuenta con tres kernels Linux diferentes, cuyas versiones son 3.16, 4.6 y 4.9 respectivamente:

root@devuan:/home/emi# ll /boot/vmlinuz*
-rw-r--r-- 1 root root 3024992 mar  7 21:32 /boot/vmlinuz-3.16.0-4-686-pae
-rw-r--r-- 1 root root 3427984 jul 13  2016 /boot/vmlinuz-4.6.0-0.bpo.1-686
-rw-r--r-- 1 root root 3541216 abr 11 14:01 /boot/vmlinuz-4.9.0-0.bpo.2-686

En Debian y derivados, los kernels Linux son provistos por el paquete linux-image.

Quisiéramos saber desde qué repositorio proviene el paquete linux-image-4.6.0-0.bpo.1-686, el cual provee el kernel Linux 4.6.

En muchos blogs y foros en Internet, sugieren utilizar los comandos dpkg -s (informa el estado de un paquete específico) o apt-cache policy (muestra información detallada acerca de la prioridad de selección de un paquete específico). Veamos las salidas de ambos comandos:

root@devuan:/home/emi# dpkg -s linux-image-4.6.0-0.bpo.1-686
Package: linux-image-4.6.0-0.bpo.1-686
Status: install ok installed
Priority: optional
Section: kernel
Installed-Size: 131448
Maintainer: Debian Kernel Team <Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.>;
Architecture: i386
Source: linux
Version: 4.6.3-1~bpo8+1
Depends: kmod, linux-base (>= 4.3~), initramfs-tools (>= 0.110~) | linux-initramfs-tool
Recommends: firmware-linux-free, irqbalance
Suggests: linux-doc-4.6, debian-kernel-handbook, grub-pc | extlinux
Breaks: initramfs-tools (<< 0.110~)
Description: Linux 4.6 for older PCs
The Linux kernel 4.6 and modules for use on PCs with one or more
processors not supporting PAE.
Homepage: https://www.kernel.org/
root@devuan:/home/emi# apt-cache policy linux-image-4.6.0-0.bpo.1-686
linux-image-4.6.0-0.bpo.1-686:
Instalados: 4.6.3-1~bpo8+1
Candidato:  4.6.3-1~bpo8+1
Tabla de versión:
*** 4.6.3-1~bpo8+1 0
100 /var/lib/dpkg/status

En ninguna de las salidas se hace mención alguna acerca del origen del paquete: ¿desde qué repositorio proviene este bendito paquete? En general estas herramientas suelen incluir dicha información, pero este no es el caso.

Examinando manualmente el archivo /var/lib/dpkg/status (el cual contiene los estados de los paquetes disponibles) tampoco se obtiene referencia alguna acerca del repositorio desde donde proviene dicho paquete.

¿Qué significa ésto? Que se trata de un paquete que no existe en ninguno de los repositorios configurados actualmente en el sistema:

root@devuan:/home/emi# cat /etc/apt/sources.list | grep "deb "
# deb http://ar.mirror.devuan.org/merged/ jessie main
deb http://ar.mirror.devuan.org/merged/ jessie main
deb http://ar.mirror.devuan.org/merged/ jessie-security main
deb http://ar.mirror.devuan.org/merged/ jessie-updates main
deb http://ar.mirror.devuan.org/merged/ jessie-backports main
deb http://security.debian.org jessie/updates main

Es posible comprobar que el apquete no existe (o no se encuentra) buscando en los repositorios actuales:

root@devuan:/home/emi# apt-cache search linux-image-4.6.0-0.bpo.1-686
root@devuan:/home/emi# apt-cache search linux-image-4.9.0-0.bpo.2-686
linux-image-4.9.0-0.bpo.2-686-pae-dbg - Debugging symbols for Linux 4.9.0-0.bpo.2-686-pae
linux-image-4.9.0-0.bpo.2-686-pae-unsigned - Linux 4.9 for modern PCs
linux-image-4.9.0-0.bpo.2-686-unsigned - Linux 4.9 for older PCs
linux-image-4.9.0-0.bpo.2-686 - Linux 4.9 for older PCs (signed)
linux-image-4.9.0-0.bpo.2-686-pae - Linux 4.9 for modern PCs (signed)

Sí, en cambio, se encuentra el paquete linux-image-4.9.0-0.bpo.2-686, tal como se observa en la salida.

Este es el caso, por ejemplo, de paquetes .deb instalados manualmente utilizando dpkg.

Pero bien, si no hemos hecho cambios en la configuración de los repositorios del sistema y este paquete fue instalado desde el gestor de paquetes (apt-get) ¿cómo puede ser que este paquete no existe en ningún repositorio?

Lo que ocurre en estos casos, es que el paquete en cuestión existió en alguno de los repositorios en algún momento, y más tarde fue eliminado. Una búsqueda rápida en Google puede dar cuenta de ésto:

linux-image-4.6.0-0.bpo.1-686-pae: Bug in cpufreq driver

Con este ejemplo quise demostrar un caso excepcional, para entender que a veces las cosas pueden fallar o las recetas que encontramos en Internet pueden ser insuficientes. Y hace falta conocer y profundizar sobre el funcionamiento básico del gestor de paquetes, para que estas experiencias no nos tomen por sorpresa.

Un ejemplo donde sí funciona

Veamos ahora que, en la mayoría de los casos, la salida del comando apt-cache policy suele dar correctamente la información sobre el origen de un paquete:

El paquete linux-image-3.16.0-4-686-pae está instalado en la versión "3.16.39-1+deb8u2", la cual proviene del repositorio "jessie-security/main":

root@devuan:/home/emi# apt-cache policy linux-image-3.16.0-4-686-pae
linux-image-3.16.0-4-686-pae:
  Instalados: 3.16.39-1+deb8u2
  Candidato:  3.16.39-1+deb8u2
  Tabla de versión:
 *** 3.16.39-1+deb8u2 0
        500 http://ar.mirror.devuan.org/merged/ jessie-security/main i386 Packages
        500 http://security.debian.org/ jessie/updates/main i386 Packages
        100 /var/lib/dpkg/status
     3.16.39-1 0
        500 http://ar.mirror.devuan.org/merged/ jessie/main i386 Packages
     3.16.7-ckt25-2 0
        500 http://ar.mirror.devuan.org/merged/ jessie-updates/main i386 Packages

El paquete linux-image-4.9.0-0.bpo.2-686 está instalado en la versión "4.9.18-1~bpo8+1", la cual proviene del repositorio "jessie-backports/main":

root@devuan:/home/emi# apt-cache policy linux-image-4.9.0-0.bpo.2-686
linux-image-4.9.0-0.bpo.2-686:
  Instalados: 4.9.18-1~bpo8+1
  Candidato:  4.9.18-1~bpo8+1
  Tabla de versión:
 *** 4.9.18-1~bpo8+1 0
        500 http://ar.mirror.devuan.org/merged/ jessie-backports/main i386 Packages
        100 /var/lib/dpkg/status

Referencias

man dpkg
man apt-cache
man apt-get
man sources.list

 

Fuente: linuxito

¿Quién está en línea?

Hay 93 invitados y ningún miembro en línea

Contador de Visitas

8834388
Hoy Hoy 597
Ayer Ayer 1045
Esta semana Esta semana 597
Este mes Este mes 28196
Total de Visitas Total de Visitas 8834388

Día con más
visitantes

05-24-2017 : 1133

Gracias por su visita