¿Existe alguna distribución de Linux que se centre en la compatibilidad binaria con versiones anteriores?

¿Existe alguna distribución de Linux que se centre en la compatibilidad binaria con versiones anteriores?

Si crea un ejecutable que funciona en una versión actual de Windows, ese ejecutable probablemente funcionará durante muchos años en versiones más nuevas de Windows. Microsoft trabaja muy duro para garantizar esto.

Con Linux, existe la expectativa de que tendrá el código fuente del software que está utilizando y, por lo tanto, romper la compatibilidad binaria está bien siempre y cuando mantenga la compatibilidad fuente. Esto lleva a que las distribuciones eliminen gradualmente las versiones antiguas de la biblioteca y rompan periódicamente cosas que solían funcionar.

Para alguien que usa Linux como plataforma de juegos, esto es un problema, porque los juegos tienden a distribuirse sólo en forma binaria. Hace que los puertos de Linux se vean mal cuando se estropean, pero tengo la sensación de que sería más productivo intentar resolver este problema en general, en lugar de esperar que todos actualicen sus puertos.

¿Existe alguna distribución que intente preservar la compatibilidad binaria, no necesariamente manteniendo todas las versiones antiguas, sino al menos manteniendo los sonames antiguos, de modo que un binario que funcione con la versión n también debería funcionar con la versión n+1?

Lo más parecido que puedo encontrar es "Steam Runtime" de Valve, que es una capa de compatibilidad binaria que sólo está disponible para programas distribuidos a través de Steam.

Respuesta1

Básicamente esto se reduce a:no se puede mantener la compatibilidad binaria e introducir nuevas funciones, ya que estas cosas van directamente una contra la otra en la mayoría de los aspectos. Si introduces nuevas características importantes, al finaltengo quecambiar la ABI (normalmente poco después de los cambios en la API). Ahora, puede tener símbolos versionados (como por ejemplo Glibc), pero esto hace que las bibliotecas crezcan en tamaño (y también puede incurrir en alguna penalización de rendimiento al cargar un binario en la memoria) y los desarrolladores ciertamente no quieren conservarlo en general. bibliotecas (el código heredado contiene errores que nadie está interesado en corregir).

La forma habitual de solucionar este problema en el lado de la distribución es doble:

  1. no cambie las versiones: esto es típico de distribuciones de nivel empresarial como (en orden alfabético) RedHat y SUSE, así como de algunas otras (Debian, Slackware, Ubunty LTS y probablemente sus clones).

  2. Permitir la instalación de varias versiones de una biblioteca al mismo tiempo.

En el distribuidor de aplicaciones, esto se maneja de la misma manera que en Windows: introduzca todo lo necesario en el paquete de distribución. Sí, esta es la forma en que se hace a menudo en Windows; esta es también una de las razones por las que un sistema típico de Windows suele tener requisitos de espacio en disco varias veces mayores que Linux con la misma funcionalidad: las aplicaciones simplemente comparten muy poco entre sí y tener sus propias copias en alguna parte. Puedes pensar en ello como si cada aplicación GTK/Qt viniera con su propia pila GTK/Qt. Puede tener algunas ventajas, pero también abundan las desventajas. Por ejemplo, desde el punto de vista de la seguridad, Technicolor TM es una pesadilla . Si los binarios están vinculados estáticamente, incluso está en FullHD.

información relacionada