GNU/Linux >> Tutoriales Linux >  >> Debian

Debian:¿cómo instalar versiones de software más recientes que las que ofrece Debian?

Supongamos que quiero una versión de software más reciente que la disponible para mi versión actual de un sistema operativo, ¿qué puedo hacer?

Casos a considerar:

  1. Hay fuentes semioficiales/oficiales de paquetes adicionales
    disponibles para esa versión del sistema operativo. P.ej. backports.org para Debian
    o PPA para Ubuntu.
  2. No hay versiones más recientes del paquete disponibles para esa
    versión del sistema operativo, pero hay versiones más recientes disponibles para
    versiones más recientes del sistema operativo. Este es el caso estándar para
    backporting.
  3. No hay versiones empaquetadas de versiones más recientes del
    software disponibles. Las opciones disponibles son empaquetar la versión más reciente
    .

Respuesta aceptada:

(Si tiene preguntas/comentarios sobre esta respuesta, agregue un comentario. O, si tiene suficientes representantes, puede hacerme ping en el chat).

Instalar paquetes binarios directamente desde una versión más reciente de Debian:no es la respuesta.

Suponga que está ejecutando alguna versión de una distribución basada en Debian. Quiere una versión más reciente de un paquete que la que está disponible para usted. Lo primero que todo principiante intenta hacer es instalar el paquete binario directamente en su versión de Debian. Esto puede funcionar o no, según la versión que esté ejecutando y cuánto más nuevo sea el paquete. En general, este procedimiento no funcionará bien.

Considere, por ejemplo, el caso en el que uno intenta instalar un paquete binario de prueba/inestable directamente en estable. Lo más probable es que esto no salga bien, a menos que las pruebas/inestables estén muy cerca de ser estables en ese momento. La razón tiene que ver con la naturaleza de una distribución binaria basada en Linux como Debian. Dichos sistemas operativos dependen en gran medida de bibliotecas compartidas, y estas dependencias a menudo dependen mucho de la versión; a menudo mucho más de lo necesario. Actualmente, Debian no tiene una buena manera de hacer que las dependencias de la versión sean "ajustadas", una forma abreviada de decir que la dependencia de la versión es exactamente tan restrictiva como sea necesario.

¿Qué significa esto para el usuario? Supongamos, por ejemplo, que está intentando instalar, digamos slrn de Debian inestable a Debian estable. ¿Cómo sería esto?

# apt-get install slrn/unstable
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Selected version '1.0.1-10' (Debian:testing [amd64]) for 'slrn'
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 slrn : Depends: libc6 (>= 2.15) but 2.13-38+deb7u1 is to be installed
E: Unable to correct problems, you have held broken packages.

A pesar del error producido por apt , no hay paquetes rotos aquí. Entonces, ¿qué salió mal? El problema es que la versión de libc6 que el inestable slrn fue compilado es diferente (y tiene un número de versión más alto) que el disponible en Debian estable. (libc6 es la biblioteca GNU C. La biblioteca C es central para cualquier sistema operativo similar a Unix, y la biblioteca GNU C es la versión que generalmente usan los sistemas operativos basados ​​en Linux).

Por lo tanto, el inestable slrn requiere una versión numerada más alta de libc6 que está disponible para estable. Tenga en cuenta que el hecho de que un paquete se haya compilado con una versión superior de la biblioteca no requiere necesariamente una versión superior de esa biblioteca, pero suele ser el caso.

La sintaxis

apt-get install slrn/unstable

significa:usar el inestable slrn pero para todos los demás paquetes, use solo las versiones estables. Para ser más precisos, utiliza números de prioridad. Ver man apt_preferences para más detalles.

También se puede hacer

apt-get install -t unstable slrn

Esto es mucho más probable que funcione, pero generalmente no quieres hacerlo. ¿Por qué?

Esto significa:tratar temporalmente a todos bultos en inestable en pie de igualdad con los bultos en estable. Por lo tanto, esto atraerá el inestable slrn Las dependencias de son inestables si son de un número de versión más alto, y generalmente lo serán. Esto generalmente incluirá la biblioteca GNU C por las razones ya explicadas. Ahora, este enfoque generalmente "tendrá éxito", en el sentido de que las dependencias se satisfarán por definición (slrn de unstable tiene dependencias que se satisfacen en inestable), pero termina con una mezcla de paquetes que de repente se ven obligados a ejecutarse con versiones de bibliotecas diferentes de aquellas para las que fueron creados. Esto probablemente no terminará bien.

Relacionado:¿limitar la salida de búsqueda Y evitar la señal 13?

La respuesta es... ¡REPORTES!

Entonces, ¿cuál es la forma correcta de hacer esto? Es para reconstruir las fuentes de Debian de versiones más recientes en su sistema, conocido popularmente como “backporting”.
Considere los siguientes casos:

Hay fuentes semioficiales/oficiales de paquetes adicionales disponibles para esa versión de Debian.

El primer lugar para buscar es Debian Backports, que es el sitio oficial de Debian backports.

Para un ejemplo concreto:

Agregue la línea de backports adecuada para su versión y actualice para encontrar los nuevos paquetes, luego instale algo de backports explícitamente (porque los backports están desactivados de manera predeterminada).

echo "deb http://ftp.debian.org/debian stretch-backports main" | sudo tee /etc/apt/sources.list.d/stretch-backports.list
sudo apt-get update
sudo apt-get install -t stretch-backports git

Esto obtendrá la última versión estable de git que tiene características útiles más nuevas que la estable incluida con stretch (por ejemplo, 'incluir' que le permite combinar múltiples archivos de configuración o cambiar su nombre de usuario para ~/work/projects/ vs ~/personal/ proyectos/).

Otro lugar para mirar son los diversos PPA de los mantenedores de Ubuntu. Puede realizar una búsqueda de "nombre del paquete PPA".

No hay versiones más recientes del paquete disponibles para esa versión del sistema operativo, pero hay versiones más recientes disponibles para versiones/versiones más recientes del sistema operativo. Este es el caso estándar para backporting.

El backporting significa que usted reconstruye las fuentes de Debian a partir de una versión posterior de Debian en la versión que está ejecutando. Este procedimiento puede ser fácil o complicado y difícil según el paquete. Aquí hay un resumen de cómo hacer esto.

Un breve tutorial de backporting para principiantes

Para ser más concretos, asumiré que está ejecutando el Debian estable actual, actualmente sibilante. Usaré el paquete slrn como ejemplo.

Primero, tenga en cuenta que todos los archivos de empaquetado de Debian se encuentran en debian/ subdirectorio del directorio de origen.

El primer paso es comprobar si hay disponible una versión más reciente. Puedes hacer esto usando apt-cache policy .

apt-cache policy slrn

slrn:
  Installed: 1.0.0~pre18-1.3
  Candidate: 1.0.0~pre18-1.3
  Version table:
     1.0.1-10 0
         50 http://debian.lcs.mit.edu/debian/ testing/main amd64 Packages
         50 http://debian.lcs.mit.edu/debian/ unstable/main amd64 Packages
 *** 1.0.0~pre18-1.3 0
        500 http://debian.lcs.mit.edu/debian/ wheezy/main amd64 Packages
        100 /var/lib/dpkg/status
     1.0.0~pre18-1.1 0
        500 http://debian.lcs.mit.edu/debian/ squeeze/main amd64 Packages

Nos gustaría respaldar 1.0.1-10 .

PASO 1:

NB:asegúrese de que deb-src las líneas para la versión fuente que desea descargar aparecen en su /etc/apt/sources.list . Por ejemplo, si desea descargar la versión inestable de slrn , necesita el deb-src línea para inestable, o no funcionará. Tenga en cuenta que no necesita el correspondiente deb líneas para descargar las fuentes, aunque apt-cache policy utiliza esa información, por lo que si no tiene el correspondiente deb líneas, luego apt-cache policy no le mostrará la(s) versión(es) relevante(s). Si tienes el deb líneas, no olvide anclar las versiones más nuevas usando una entrada en /etc/apt/preferences o similar. Una entrada en /etc/apt/preferences así (para inestable) funcionará, por ejemplo.

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

Si agrega líneas en /etc/apt/sources.list , no olvide ejecutar apt-get update después.

Descarga las fuentes de slrn . Un buen lugar es /usr/local/src/slrn .

apt-get source slrn=1.0.1-10

PASO 2:

Cambie ligeramente el número de versión, para distinguir su backport de la versión anterior. Ejecute dch --bpo , que agregará automáticamente una entrada al debian/changelog archivo con un número de versión apropiado, por ejemplo

slrn (1.0.1-10~bpo10+1) UNRELEASED; urgency=low

  * Backport to buster.

 -- User <[email protected]>  Sun, 02 Feb 2014 23:54:13 +0530

PASO 3:

Intenta construir las fuentes. Si los paquetes necesarios para la compilación no están disponibles, el intento fallará. Cambie el directorio al directorio de origen. Usar debuild de las devtools paquete.

cd slrn-1.0.1/
debuild -uc -us

Si se satisfacen las dependencias de compilación, las fuentes compilarán y producirán algunas versiones en el nivel superior al directorio de origen; en este caso /usr/local/src/slrn .

PASO 4:

Supongamos que no se satisfacen las dependencias de compilación. Luego, debe intentar instalar las dependencias de compilación. Esto puede funcionar o no, ya que las dependencias pueden no estar disponibles para su versión o, si están disponibles, pueden no estar disponibles en la versión correcta.

NB:Lamentablemente, no es raro que los paquetes de Debian requieran versiones de dependencias de compilación más altas de lo necesario. No hay una forma automatizada en Debian de verificar esto y, a menudo, a los mantenedores de paquetes no les importa, siempre y cuando funcione en la versión/lanzamiento correspondiente. Por lo tanto, adopte una actitud escéptica hacia las versiones de dependencia y use el sentido común. Por ejemplo, los paquetes ampliamente utilizados como Python y las herramientas GNU no dependerán de versiones muy específicas de sus dependencias, independientemente de lo que enumere el empaquetador de Debian.

Relacionado:Debian:¿cómo podemos predecir cuándo saldrá la próxima versión de Debian?

En cualquier caso, puedes intentar instalarlos haciendo

apt-get build-dep slrn=1.0.1-10

Si esto tiene éxito, intente construir el paquete nuevamente (PASO 2). Si falla, entonces se necesita más trabajo. Tenga en cuenta que debuild examina las dependencias de compilación en debian/control y puede cambiarlos si es necesario. Así que hablemos de eso ahora. Estas son las dependencias de compilación para slrn.

Build-Depends: debhelper (>=9), libslang2-dev, libuu-dev,
 exim4 | mail-transport-agent, libgnutls-openssl-dev, po-debconf, autoconf,
 libcanlock2-dev, autotools-dev, dpkg-dev (>= 1.16.0), chrpath, dh-autoreconf, inn2-inews

Una alternativa al uso de apt-get build-dep es instalarlos manualmente, haciendo

apt-get install debhelper libslang2-dev ...

Si comienza a cambiar estos valores en el archivo de control, debe cambiar a una instalación manual, ya que apt-get build-dep ya no estará haciendo lo correcto.

No hay versiones empaquetadas de versiones más recientes del software disponibles. Las opciones disponibles son empaquetar la versión más reciente.

En muchos casos, se puede reutilizar el paquete de versiones anteriores del software junto con fuentes más nuevas. Este enfoque puede generar problemas, en particular, los parches que se aplicaron a versiones anteriores del software pueden no aplicarse aquí, por lo que es posible que deba volver a sincronizarlos con las fuentes. El formato fuente 3.0 (quilt) que ahora se está volviendo estándar usa quilt, y los parches se encuentran en debian/patches directorio.

Sin embargo, una discusión detallada de estos temas está fuera del alcance de esta publicación.


Debian
  1. Cómo instalar Java en Debian 9

  2. Cómo instalar R en Debian 9

  3. Cómo instalar Docker y Docker Compose en Debian 11

  4. Cómo instalar paquetes Debian sin conexión

  5. Cómo instalar paquetes RPM en Debian 11 Bullseye

Cómo instalar paquetes en Debian 10

Cómo instalar software a través de Flatpak en Debian 10

Cómo instalar la última versión de LibreOffice en Debian 10

Cómo instalar backports y repositorio experimental en Debian 11

Cómo instalar la versión principal de Nginx en Debian 9

¿Cómo instalar Git en Debian 10?