Do que preciso saber se quero escrever um aplicativo que será executado em qualquer distribuição Linux?

15

Estou planejando escrever um aplicativo que gostaria de ser executado em qualquer instalação do Linux sem ter que reescrever qualquer código ao fazê-lo (exceto talvez a interface, GNOME vs KDE, etc).

Eu não sou muito experiente nas minúcias das diferenças entre distros, e eu também não posso fornecer detalhes sobre o projeto, já que ele acabou de entrar no estágio de planejamento, diferente do que está sendo pesquisado no kernel. para interagir com o máximo possível do hardware do computador.

    
por Chris Wilson 16.12.2010 / 10:29

6 respostas

11

Alguns pontos a ter em conta ao desenvolver,

  1. Use um sistema de compilação padrão
  2. Evite caminhos de biblioteca de codificação rígida
  3. use ferramentas como pkg-config para encontrar os pacotes externos.
  4. Se seu aplicativo tiver uma GUI, use algumas estruturas como wxWidgets , que podem renderizar elementos de interface do usuário nativos dependendo de onde você executa.
  5. Evite criar dependências com pacotes que não serão executados em outras distribuições.

A única maneira de garantir que o seu aplicativo funcione em todas as distribuições é realmente executar e testar nele. Uma maneira de fazer isso é criando máquinas virtuais para cada distribuição. O VirtualBox pode ser usado para fazer isso. Eu tenho cerca de 8 máquinas virtuais na minha caixa para esse tipo de teste.

Eu acho que você não pode generalizar muito na implantação do aplicativo, pois cada distribuição usa uma maneira diferente de instalar pacotes. O Debian usa deb e fedora rpm .

    
por 16.12.2010 / 10:57
3

Apenas meu 2c, mas tive menos dores de cabeça com aplicativos que vêm com pacotes nos repositórios oficiais ou que são compilados da origem. Aplicativos que são distribuídos como binários de terceiros tendem a sofrer com alguns problemas de dependência. Eu normalmente preciso rastreá-los e resolvê-los manualmente.

Então, se eu fosse lançar um aplicativo Linux, eu trabalharia para empacotá-lo e colocá-lo nos repositórios oficiais. Caso contrário, eu iria distribuí-lo na forma de código-fonte e fazer o usuário compilá-lo para o sistema deles.

    
por 16.12.2010 / 11:17
2

Se você está escrevendo para Linux não embarcado, a principal coisa a ter em mente é que diferentes distribuições terão uma coleção diferente de versões de bibliotecas. Então você deve definir uma linha de base suficientemente antiga. Como o Debian é atualizado lentamente, o Debian estável (ou oldstable quando existe, nos poucos meses após o lançamento) tende a ser uma escolha razoável.

Você precisará empacotar separadamente para cada distribuição. Se o seu aplicativo for open source e for bem-sucedido, você pode contar com alguém pegando e contribuindo com a embalagem, por isso não é uma habilidade essencial. Além do empacotamento, as diferenças entre as distribuições afetam principalmente a administração do sistema, não o desenvolvimento ou o uso diário.

Se você estiver indo para corrigir o kernel, você terá que testar com mais distribuições, pois cada distribuição tem seus próprios patches que podem causar incompatibilidades e cada distribuição tem configurações de userland que podem depender de diferentes conjuntos de interfaces de kernel disponíveis (por exemplo, requisitos para algumas coisas não serem módulos).

Note que o que eu escrevi acima não é verdade se você quer que seu aplicativo trabalhe em sistemas embarcados (aqui significando qualquer coisa que não seja um servidor, desktop ou laptop), que mesmo quando eles rodam um kernel Linux bibliotecas usuais, começando com Glibc sendo evitado em favor de µClibc , dietlibc , Bionic , etc.

    
por 16.12.2010 / 19:38
1

Eu achei o Linux Standards Base útil, especialmente quando seu aplicativo inclui serviços (daemons). Veja alguns desses sites:

Mas se eu tivesse que me limitar a apenas recursos, poderia ser o Padrão de hierarquia de arquivos .

    
por 16.12.2010 / 19:49
0

As distribuições difere principalmente em padrões / configurações de pacotes e aplicativos. Todo código executado em uma arquitetura determinada deve ser executado em todas as distros dessa arquitetura. Além disso, você pode facilmente executar aplicativos do GNOME no KDE e vice-versa, para que você possa escolher um que seja mais adequado para você / sua base de usuários e pronto!

    
por 16.12.2010 / 10:52
0

O principal é escolher um idioma. Em que idioma isso será executado? Se você realmente quer rodar em qualquer distribuição linux, você pode escrevê-la em Python. Qualquer aplicativo python que será executado no linux (basicamente) será executado em qualquer distribuição do Linux com 0 modificações.

O Python também possui ótimos binders GTK e Qt. Eu nunca trabalhei com o gtk, mas o PyQt é ótimo para trabalhar.

Os benefícios do python é que você provavelmente não precisará compilar nenhuma extensão (isso depende totalmente do que você está escrevendo. Mesmo se você precisar, é muito fácil.) e você também tem uma ótima distribuição fonte via pypi. A instalação de programas python a partir daí normalmente é ainda mais fácil que o repositório de pacotes distro.

    
por 16.12.2010 / 19:22