Quando entro em um site oficial de algum software que possui versão para Linux não encontro distros propriamente ditas logo de cara mas sim o arquivo daquele programa disposto de múltiplas formas para ser instalado (pelo menos é o que me parece), o que me sucita a pergunta que não encontrei uma resposta plena até agora:
A versão para linux de um software caso o sistema atenda aos requisitos de arquiterura e etc… funcionará em qualquer distro linux?
Ou cada distro terá obrigaroriamente que ter uma versão do software para ela caso contrário não será possivel instalar o software tendo que intermediar coisas para que tal funcione?
Então, eu não sei te explicar o que rola de “baixo do capô”, mas vou dar um exemplo meu.
Eu usava um cliente de e-mail que era o Criptext que vinha empacotado em Appimage do site oficial, daí ele funcionava de boas no Linux Mint que é base Ubuntu.
Aí fui testar no Arch Linux o mesmo appimage e não funcionou nem por reza, tentei também uma versão do AUR mas também não rolou. Pra piorar o desenvolvedor nem responde mais qualquer chamada no suporte, enfim, parece que o serviço morreu.
Caso o aplicativo seja desenvolvido para ser usado em uma distribuição de 32bits, ele rodará tanto na de 32bits quanto na de 64. Caso seja criado especialmente para 64bits, não funcionará na de 32.
Esse arquivo, bem resumidamente, é um arquivo executável que contém o código associado a um programa específico, podendo ser um script pré-moldado com parâmetros de instalação. Outro exemplo, no site da NVidia os drivers são disponibilizados em *.run, com isso é possível rodar os parâmetros de instalação independentemente da distribuição em uso, evitando a criação de dezenas de instaladores.
Isso porque o binário (ELF) é compatível, o problema são as bibliotecas, a menos que seja um AppImage o sistema alvo de compilação não pode ser muito mais recente que o seu se não a biblioteca C dá problema (porque vai ser tipo usar apps do Windows 11 no Windows 7), nem muito mais antigo porque bibliotecas tendem a quebrar compatibilidade com versões mais antigas
Sim, se satisfeitas as condições para o programa rodar: hardware para o qual o programa foi compilado e a presença de bibliotecas e outros elementos dos quais o programa depende.
O pacote snap, flatpak, AppImagem, é o empacotador que decide quais dependência vai vim junto no pacote. o empacotador pode se quiser deixar uma dependência faltando dentro do pacote por opção e deixar que o sistema carregue a dependência necessária se ela estiver instalada na raiz.
Isso pode quebrar o software empacotado em algumas distros caso essas dependência não venha junto com o pacote, se fosse eu incluiria todas as dependência no pacote, mas isso o tornaria muito grande.
Diferente do faltpak e snap que reaproveitam os os pacotes que já estão instalado neles próprios os AppImagem não reaproveita pacote nenhum somente os que estão instalado na raiz do sistema aumentando seu tamanho.
Então, esse foi a único app que não rolou Arch Linux, e era o mesmo executável que é um appimage.
Não.
Na época ainda funcionava no Linux Mint (máquina virtual) e não no Arch Linux.
E aí passou um tempo tentei de novo, continuava funcionando no Linux Mint e nada ainda no Arch (tanto o appimage como o pacote do AUR), só que daí abri uma chamada no serviço técnico pra ver se conseguia resolver, mas não me responderam.
Por fim, recentemente tentei mais uma vez, só que agora nem no Linux Mint funciona mais, e vi também na página de comentários do pacote do app no AUR o mantenedor dizer que parecia que o desenvolvimento do app tinha sido encerrado.
Enfim, o site do serviço está no ar, não testei o app no Windows, mas no Android está funcionando, parece que pelo menos o suporte a Linux morreu.
Não, funciona com todos, em linhas gerais a retro compatibilidade do Linux gira em torno de ~4 anos isso desconsiderando o GTK
Não só pode como ocorre
Resumindo? Nada
Você pode olhar a data de release, via de regra se você usa base Debian você vai ter até 2 releases LTS, por exemplo, SE o app foi desenvolvido em 2020, muito provavelmente vai funcionar no 20.04 e no 22.04, se ele vier com algumas bibliotecas que quebram com certa frequência, pode ser que funcione até o 24.04 LTS
Via Flatpak se o App passa longos periodos sem atualizar muito provavelmente em 2 anos ele começa a dar problema também
Depende do formato em que o programa é empacotado e distribuído. Se for um arquivo .deb, será compatível apenas com Debian, Ubuntu e distros derivadas destes. Se for um .rpm, é compatível com Fedora, openSUSE, CentOS, e outras distros que usam o formato de pacote .rpm. Geralmente os desenvolvedores publicam seus softwares nesses dois formatos que são os mais populares e abrangem a maioria das distros.
Programas distribuídos no formato AppImage, funcionam em qualquer distro. Eles não necessitam de instalação, são portáteis (baixa o arquivo e executa clicando duas vezes nele), e contém todas as dependências do programa dentro do próprio arquivo.
Existe, ainda, os formatos Snap e Flatpak que, assim como o AppImage, são universais (compatíveis com qualquer distro). A diferença é que você precisa primeiro habilitar o suporte a esse formato de programa na sua distribuição. Algumas distros já vêm com o suporte a Snap habilitado, outras vêm com o suporte a Flatpak, outras vêm com os dois, e outras com nenhum, mas é possível ativar o suporte a esses programas em praticamente todas as distros.
– É possível descompactar um .deb e executa-lo no Fedora, por exemplo? – Sim, é geralmente isso que acontece no Arch Linux, quando um programa é distribuído apenas em .deb, e então um usuário coloca no AUR (Arch User Repository); ele cria um PKGBUILD, isto é, um script que descompacta o programa .deb e o instala no Arch. Mas isso já é um pouco mais avançado. Eu expliquei acima como as coisas funcionam da forma “normal”, para um usuário “normal”, sem ter que ficar quebrando muito a cabeça.
Bom, pra ser mais preciso, eu os compararia com o .msi do Windows. No Windows, os arquivos .exe são executáveis genéricos, isto é, um arquivo que você clica e executa um programa, que pode ser um instalador, ou um programa que você executa diretamente…
Já os arquivos .msi tem a única finalidade de instalar um programa no sistema. Eles contém dentro de si todos os arquivos do programa que precisam ser instalados nas suas respectivas pastas no S.O. A mesma coisa com os .deb e .rpm. Você não os executa diretamente, você os instala no sistema.