Existem distribuições Linux que se concentram na compatibilidade retroativa binária?

4

Se você criar um executável que funcione em uma versão atual do Windows, esse executável provavelmente funcionará por muitos anos em versões mais recentes do Windows. A Microsoft trabalha muito para garantir isso.

Com o Linux, há uma expectativa de que você tenha o código-fonte do software que está usando e, portanto, a quebra da compatibilidade binária é OK, desde que você mantenha a compatibilidade da fonte. Isso faz com que as distros eliminem versões antigas de bibliotecas e periodicamente quebrem coisas que costumavam funcionar.

Para alguém que usa o Linux como uma plataforma de jogos, isso é um problema, porque os jogos tendem a ser distribuídos apenas em formato binário. Isso faz com que as portas do Linux pareçam ruins quando elas quebram, mas tenho a sensação de que seria mais produtivo tentar resolver esse problema em geral, em vez de esperar que todos atualizassem suas portas.

Existem distribuições que tentam preservar a compatibilidade binária, não necessariamente mantendo todas as versões antigas, mas mantendo pelo menos os antigos, de tal forma que um binário que funcione com o release n também funcione com o release n + 1? >

A coisa mais próxima que eu posso encontrar é o "Steam Runtime" da Valve, que é uma camada de compatibilidade binária disponível apenas para programas distribuídos pelo Steam.

    
por Vincent Povirk 16.06.2014 / 17:42

1 resposta

5

Basicamente, isso se resume a: você não pode manter a compatibilidade binária e introduzir novos recursos , já que essas coisas vão diretamente umas contra as outras na maioria dos aspectos. Se você introduzir novos recursos importantes no final, precisará alterar a ABI (geralmente logo após as alterações na API). Agora, você pode ter símbolos versionados (como, por exemplo, o Glibc), mas isso faz com que as bibliotecas cresçam em tamanho (e também pode incorrer em alguma penalidade de desempenho ao carregar um binário na memória) e desenvolvedores certamente não querem mantê-lo em geral bibliotecas (o código legado contém erros que ninguém está interessado em consertar).

A maneira usual de contornar isso no lado da distribuição é dupla:

  1. não altere versões - isso é típico para distribuições de nível empresarial como (em ordem alfabética) RedHat e SUSE, assim como para outras (Debian, Slackware, Ubunty LTS e provavelmente seus clones).

  2. permite a instalação de várias versões de uma biblioteca ao mesmo tempo.

No distribuidor de aplicativos, isso é tratado da mesma forma que no Windows: armazena tudo o que é necessário no pacote de distribuição. Sim, é assim que muitas vezes é feito no Windows - essa também é uma das razões para o sistema Windows normalmente ter requisitos de espaço em disco muito maiores do que o Linux com a mesma funcionalidade - os aplicativos simplesmente compartilham muito pouco entre si e tem suas próprias cópias em algum lugar. Você pode pensar nisso como em toda aplicação GTK / Qt que vem com sua própria pilha GTK / Qt. Pode ter algumas vantagens, mas as desvantagens também são abundantes. Por exemplo, do ponto de vista da segurança, é um pesadelo em Technicolor TM . Se os binários estão estaticamente ligados, é mesmo em FullHD.

    
por 16.06.2014 / 18:07