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

15

Estou planejando escrever um aplicativo que eu gostaria de poder executar em qualquer instalação do Linux sem precisar reescrever nenhum código (exceto talvez a interface, GNOME x KDE, etc.).

Não tenho muita experiência nas minúcias das diferenças entre as distros e também não posso fornecer detalhes sobre o projeto, pois ele acabou de entrar no estágio de planejamento, a não ser que seja bisbilhotar profundamente dentro do kernel para interagir com o máximo possível de hardware do computador.


fonte
código aberto ou proprietário? compilado ou interpretado?
Xenoterracide
código aberto e compilado.
bem, então você não precisa se preocupar em escrever uma pequena app / makefile ou algo assim, que irá vincular novamente seu programa, como a Oracle faz
xenoterracide

Respostas:

10

Alguns pontos a serem lembrados ao desenvolver,

  1. Use um sistema de compilação padrão
  2. Evite caminhos de biblioteca de codificação permanente
  3. use ferramentas como pkg-configpara encontrar os pacotes externos.
  4. Se o seu aplicativo tiver uma GUI, use algumas estruturas como as wxWidgetsque podem renderizar elementos nativos da interface do usuário, 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 totalmente que seu aplicativo funcione em todas as distribuições é realmente executá-lo e testá-lo. 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 a implantação do aplicativo, pois cada distribuição usa maneiras diferentes de instalar pacotes. Usos do Debian debe fedora rpm.

Navaneeth KN
fonte
3
simplesmente evite caminhos de codificação rígidos, a maior diferença entre TODAS as distros é o gerenciador de pacotes e onde eles colocam as coisas. Suponha que eles colocarão todos os arquivos e diretórios em um local diferente de você.
Xenoterracide
2

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 a partir do código-fonte. Os aplicativos distribuídos como binários de terceiros tendem a sofrer de alguns problemas de dependência. Normalmente, precisarei rastrear essas informações e resolvê-las manualmente.

Portanto, se eu lançasse um aplicativo Linux, trabalharia para empacotá-lo e colocá-lo nos repositórios oficiais. Caso contrário, eu o distribuiria na forma de origem e o usuário o compilaria para o sistema deles.

sybreon
fonte
2

Se você está escrevendo para Linux não incorporado, o principal a ter em mente é que diferentes distribuições terão uma coleção diferente de versões de bibliotecas. Portanto, você deve definir uma linha de base suficientemente antiga. À medida que o Debian é atualizado lentamente, o Debian stable (ou antigo 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 seu aplicativo é de código aberto e é bem-sucedido, você pode contar com alguém para buscá-lo e contribuir com a embalagem, para que não seja uma habilidade essencial. Além das embalagens, as diferenças entre distribuições afetam principalmente a administração do sistema, não o desenvolvimento ou o uso diário.

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

Observe que o que eu escrevi acima não é verdade se você deseja que seu aplicativo funcione em sistemas incorporados (aqui significa qualquer coisa que não seja um servidor, desktop ou laptop), que mesmo quando eles executam um kernel Linux, geralmente não possuem as bibliotecas usuais, começando com Glibc sendo evitado em favor de µClibc , dietlibc , Bionic , etc.

Gilles 'SO- parar de ser mau'
fonte
0

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

Mr Shunz
fonte
0

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

O Python também possui ligantes GTK e Qt muito bons. Eu nunca trabalhei com o gtk, mas o PyQt é realmente ótimo de se trabalhar.

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

Falmarri
fonte