Por que não há, no Linux, "runtimes" relativamente retrocompatíveis?

1 - Primeiramente, tenham em mente que não sou da área de TI, portanto talvez eu use aqui algum termo de forma errada, como o “runtime” no próprio título. Por “runtime” eu quero dizer qualquer software (mesmo que não seja realmente uma runtime…) que é usado como base para rodar um programa, como por exemplo o GTK-Runtime que é necessário pro Geany, Bluefish, StarDict, etc no Windows.

2 - Galera, talvez eu passe essa impressão, mas não pretendo mudar o mundo com este tópico. Na verdade o meu objetivo aqui é entender porque as coisas são como estão e por que não são diferentes.

3 - Desculpa, mas o texto é grande porque quero deixar bem claro meu questionamento, esse embasamento todo é até para vocês saberem como me responder.

Em 98% das vezes, o jeito de ser do Linux (me refiro ao modo como o Linux gerencia a instalação de programas) não me atrapalha uma vez que os programas nos repositórios em suas respectivas versões me atendem bem, mas tem hora que esse modelo é inconveniente, são 2% que, as vezes, fazem a diferença.

  1. A primeira coisa que me vem a mente são programas antigos que não se encontram mais nos repositórios e/ou não são mais suportados pelas bibliotecas atuais, no meu caso é o espcon (um dicionário de esperanto) e o StarDict Editor, se não me engano ambos exigem o GTK 2, mas posso estar enganado; também tenho outro exemplo que vi esta semana no Reddit Brasil de um cara que queria ter instalado o XMMS no Linux, que exige o GTK 1. Para um usuário comum como eu, é muito complicado instalar esses programas de forma nativa, seus executáveis não rodam e até para compilá-los é complicado, consegui compilar o espcon, mas ficou um pouquinho bugado. No fim eu instalei o espcon e o StarDict Editor via Wine, o que é bizarro uma vez que ambos teoricamente têm versão para Linux.

  2. A outra situação é de quando muitas vezes certas empresas deixam de lançar um software pro Linux por que falta uma padronização.

Sou contra o sistema de instalação tradicional do Linux?

Não, na verdade até o acho interessante. E como dá para esse sistema coexistir com outras formas de instalação (Flatpak, appimage e snap), na verdade eu ficaria muito decepcionado se as distribuições abandonassem esse modelo.

É como eu disse e repito, para 98% ou 99% dos casos esse modelo está bom.

O que eu acho do Flatpak, appimage e snap?

Não vou falar dos aspectos técnicos porque disso eu não entendo, só quero poder carregar o instalador/executável no pendrive (ou HD externo, que é o meu caso na verdade) e que esse instalador/executável não tenha um tamanho absurdo. Dei uma pesquisada nos tamanho que um programa pode ter nessas formas de empacotamento e aqui está o caso do VLC:
snap = 204 MB :fearful:
flatpak = 78 MB :roll_eyes:
appimage = 53 MB :slightly_smiling_face:
Instalador Windows = 40MB

Gosto mais do appimage não só pelo tamanho como também pela facilidade, você baixa um único arquivo e depois só manda executar. Nossa, comparado ao instalador do Windows, o snap é 5x maior (é esse o modelo que a Canonical que propagar?) e o flatpak tem quase o dobro do tamanho (não tão grave aqui, mas o dobro do tamanho seria bem ruim para um programa maior). o Appimage é um pouco maior, mas estou de boa com isso.

Por que que o instalador do Windows consegue poupar tanto espaço? O que impede de implementar esse modelo no Linux? Eu ACHO que sei a resposta. Acredito que, no Windows, as “runtimes” mais básicas já estejam muito bem estabelecidas e as outras “runtimes” que necessitam de uma instalação periódica são relativamente muito pequenas de forma que não causam incomodo, como as versões do NET. Framework e Visual C++. No Windows 10 você tem boas chances de instalar, sem problemas, um programa de 2005 por exemplo (ou a “runtime” atual tem retrocompatibilidade ou o Windows traz uma “runtime” antiga para rodar programas velhos, não sei); é claro que às vezes tem problemas de compatibilidade, especialmente com jogos, mas mesmo assim a situação é bem mais confortável do que no Linux, não tem nem comparação.

Então, eis a minha pergunta:

Que mantenha o sistema de instalação tradicional, mas não teria como implementar um sistema paralelo com “runtimes” estáveis que todo desenvolvedor seria sugerido a suportar? Vou citar um exemplo desse modelo hipotético:

Vamos dizer que lança o Ubuntu LTS agora e o GTK estável mais novo está na sua versão 3.4 (esse número foi chutado). Sei que um programa faz uso de vários componentes, não só o GTK (isso quando ele sequer usar o GTK), mas vamos nos limitar ao GTK aqui para facilitar o raciocínio. Se possível, o GTK-Runtime 3.4 poderia ser usado para rodar programas feitos no GTK 2, se não for possível seria muito fácil instalar (ou já teria instalado) a última versão estável do GTK-Runtime 2.x. Os desenvolvedores de programas, por sua vez, teriam a recomendação de criar seus programas para base no GTK 3.4 por uma questão de padronização, mas se for realmente necessário usar uma versão mais recente, então eles disponibilizariam também a runtime do GTK mais recente.

Não sei se meu modelo hipotético é bom, mas quero dizer algo igual ou próximo ao que é no Windows, algo simples para o usuário. Por que não há essa possibilidade no Linux?

Só uma coisa, quando eu baixava um programa no Windows assim:

Geralmente era um gerenciador de download que baixava pelo menos uns 200 MB :v

2 curtidas

Não por um simples motivo: ao contrario do Qt o Gtk não é retrocompatível os programas precisam ser refeitos e muitos do Zero para poder compatibilizar

Já o Qt que é retrocompatível precisa que o programa seja recompilado

Não sei se é meu Defict de Atenção mas o que você procura pode ser resolvido com:

# "Runtime" gtk2
sudo apt install libgtk2

# "Runtime" gtk3
sudo apt install libgtk3

Agora sobre isso:

Simplesmente os desenvolvedores do GTK não quiseram, no Qt basta recompilar usando uma ferramenta especial MAS precisa ser recompilado


Cara sobre isso:

Não seria isso?

Que é exatamente o que os pacotes tradicionais fazem de forma “silenciosa”. Se não for poderia explicar melhor? eu tô sem metilfenidato :broken_heart:

Mas aí depende de como você baixa e do que você baixa.

Você pega muito esses gerenciadores de download se você baixar suas coisas em sites com Baixaki, eu mesmo sempre busquei baixar da fonte (site do próprio programa) ou de um site de download que não me fizesse baixar o programa de forma indieta (isto é, via gerenciador de download).

Sobe o tamanho, O VLC mesmo é só 40MB, o Firefox 44MB e por aí vai. Programas um pouco maiores que posso imaginar agora são o LibreOffice 284MB e o Vitual Box 209MB. Todos esses tamanhos citados são de instaladores para Windows 64bits.

.

O que você diz faz sentido, mas creio que, quando eu havia tentado instalar/rodar o espcon e o StarDict Editor, eu já tivesse o libgtk2 até por conta de outros softwares como StarDict (só esse, com total certeza, já teria me dado o libgtk2), XFCE, GIMP, etc. Mesmo com o libgtk2 eu não tive sucesso, talvez meu problema tivesse sido por causa de outra “runtime”, não sei.

Isso também pode estar relacionada á interface gráfica, nunca tive problemas com libs (qt e gtk) no Xfce, em questão ao flatpak e snap eles já contêm todas as libs que precisam para funcionar, por isso que um aplicativo deb, rpm e afins, são menores já que eles usam as mesmas libs do sistema ou puxam as suas dependências nos reposiórios (nem sempre dá certo).

Acho que não, de forma geral, o que você pode instalar no GNOME ou XFCE você pode instalar no KDE ou LXQt e vice versa. O que pode acontecer às vezes é o desempenho de um programa não ser o mesmo, como o Kolourpaint demorar para abrir em outras interfaces gráficas que não o KDE ou o Dolphin ou Okular ficarem sem os ícones de suas interfaces quando eles são instalados em uma DE que não o KDE.

.

É como eu disse, em 98% ou 99% dos casos você estará bem, mas se você tentar instalar ou manter programas antigos, você terá dificuldades.

1 curtida

Então os programas gtk funcionava no plasma, mas com uma aparência horrivel, e para instalar se não me engano puxava várias bibliotecas, talvez por eu não estar interessado em pesquisar sobre qual lib faltava optei por deixar aplicativos em gtk feio mesmo, acho me preciptei em comentar que pode estar relacionada á interface.

Olha consegui instalar o stardict e o xmms normalmente aqui no Arch e estar funcionando normal, depois vejo se consigo instalar no meu Xubuntu, mas não conseguir encontrar esse “espcon” nem na internet :joy:, poderia passar o link onde você baixou :slight_smile:

Edit: disse que consegui instalar normalmente mas a compilação desse XMMS demorou mais do que o normal (tive que usar o yay) :thinking:

Identifiquei o problema, os programas tem dependências fora dos repositórios, instalando resolve, use o gdebi e depois baixe o .deb e instale como faria no Windows caso pedisse o Net Framework ou similar

Mas com todos os programas “problemáticos”?

Como assim? Não entendi

Seria interessante você substituir esses programas

Quis dizer se os programas que você estava com problemas de libs já resolveu

Me refiro ao “StarDict Editor”, o StarDict em si está tranquilo nos repositórios de qualquer distribuição.

Quanto ao XMMS, usei-o como exemplo por causa de um comentário de terceiros.

.

Falo “espcon” porque é assim que está o nome do arquivo, mas o nome dele mesmo é “Esperanta Vortaro” (em português: dicionário de esperanto).

O link é esse: Esperanta Vortaro

Infelizmente os links para download estão quebrados, mas ainda tenho, no meu computador, o código fonte.

.

O cara lá do Reddit tinha falado que até teve que mexer no código C para viabilizar a compilação. Não me lembro qual distribuição ele usou.

Se não me engano o yay no arch faz a compilação automática (no caso o “trabalho sujo”)

Na verdade o snap é exatamente a solução para esse tipo de problema. Ele cria um conteiner que pode abrigar bibliotecas antigas que poderão ser instaladas sem quebrar o sistema. O snap é um pouco maior mas vale lembrar que ainda é uma solução em desenvolvimento e com o tempo a otimização de tamanho será feita. Esses programas antigos foram abandonados pelos criadores, você pode entrar nos fóruns das distros ou no IRC e tentar obter suporte para instalá-los. Quem sabe depois que você descobrir você mesmo não cria um pacote snap para facilitar a vida. Quanto ao tamanho dos programas no Windows serem pequenos, você tem certeza que aquele é o tamanho final? Muitas vezes os instaladores fazem download do programa como é o caso do Firefox e do libreoffice. Vale lembrar que nem tudo no Windows são flores quando se trata de programas antigos. Muitos programas 32 bits funcionam apenas meia boca nos Windows 7 e 10.

Espero que sim, porque o tamanho dos programas no snap são ridiculamente grandes, vide o exemplo do VLC.

.

Por enquanto eu acho que eu preferiria fazer isso com o Flatpak ou appimage, o tamanho que um programa fica no snap é um desaforo. rsrsrs

.

Geralmente há um grau de compactação dos instaladores Windows, mas nunca parei para observar bem o quanto foi compactado.

Infelizmente não estou com o meu notebook novo para checar o tamanho que os programas ocupam em disco, estou no meu computador antigo com Windows XP (em que além dos programas serem em 32 bit, são versões antigas, bem menores que suas novas versões em 64 bits), mas me parece realmente que o pacote snap reflete o tamanho que eles ocuparão em disco.

O LibreOffice e o VLC aqui ocupam respectivamente 505MB e 124MB no Windows XP 32bits, não faço ideia o quanto suas novas versões em 64bits ocupam no Windows 10, mas vou por mais 50MB pra cada um, realmente fica próximo do tamanho de um snap, que já traz “runtimes” adicionais.

Então acho que um pacote snap não adicionaria em demasiado muito mais o espaço em disco em comparação a um instalador do Windows (embora eu ache que você terá muitas “runtimes”, o que imagino que possa deixar a inicialização do programa mais lenta, mas posso estar errado, não sou técnico), mas mesmo assim os desenvolvedores precisarão trabalhar bastante no poder de compactação dos pacotes snap, fica chato carregar um instalador com tamanhos tão grandes.

.

Me desculpa, mas tenho que dizer você está errado a respeito desses dois programas, os instaladores tanto do Firefox quanto do LibreOffice instalam o programa sem depender da internet. É claro que há outros programas que fazem download de pacotes da internet (mas mesmo nesses casos é algo não compulsório), se não me falha a memória o BlueFish baixa um pacote de idiomas da internet e o SMPlayer baixa o Youtube-DL, mas mesmo esses baixam pacotes muito pequenos.

Até mesmo do Firefox – que sempre está se atualizando em segundo plano – não me recordo do instalador dele ter baixado uma atualização (carrego comigo o instalador do Firefox 64), ele instala a versão que se encontra dentro do instalador para então o programa instalado se auto-atualizar.

Acho estranho você falar do Firefox e LibreOffice, nunca vi instaladores-web desses dois programas como eu já vi do Google Chrome.

.

Verdade, não são 100% dos programas feitos para Windows 95/98 e Windows XP que funcionarão perfeitamente ou sequer rodarão no Windows 7/10, mas a situação continua sendo melhor do que no Linux, em que um executável criado numa distribuição pode não rodar em outra contemporânea que tiver a base diferente (ex: um executável criado no Manjaro pode não rodar no Ubuntu, o que exigiria uma compilação desse programa no Ubuntu).

O StarDict Editor por exemplo, rodou perfeitamente bem no Windows 10, instalei o GTK2-Runtime 2.24 sem problemas e pude por o StarDict Editor para funcionar.

Um dos motivos por existir em empresas versões do desatualizado Windows XP, pelo programa não funcionar corretamente no Windows 7/8/10, bom isso de base diferente é que o Linux não existe uma padronização em forma de empacotamento, para isso que existe os Flatpaks, Snaps e AppImage para facilitar a forma de distribuição do software, se bem em que muitas aplicações os manentendores da distribuição transformam os .tar.gz em programas pré-compilados no caso do Debian, Ubuntu, Fedora, OpenSUSE e variantes

Por exemplo se você for baixar o Firefox do site o pacote será um .tar.bz o que a maioria dos desenvolvedores das distros baseadas em .DEB e .RPM fazem é empacotá-los dessa forma