Distribuição cruzada / embalagem do sistema operacional

6

Fedora, FreeBSD, Mac OS X (Homebrew, MacPorts), Ubuntu, Debian e outros usam sistemas de empacotamento diferentes para distribuição binária e de código fonte.

Quando eu desenvolvo um novo aplicativo, quero disponibilizá-lo para o maior número possível de usuários. Mas aprender todas as diferentes ferramentas e convenções de embalagem é muito trabalhoso. Eu consigo, mas tem que ser mais fácil.

Existe uma super ferramenta que eu saiba que pode ser usada para aliviar a sobrecarga de manutenção e aprendizado de todos esses sistemas de empacotamento?

    
por Aeyoun 02.01.2013 / 16:35

3 respostas

5

A maneira mais fácil é fornecer um arquivo de origem e permitir que os mantenedores de distribuição criem pacotes para sua própria distribuição.

Você pode facilmente criar um arquivo binário simples ( .tar.gz ) e convertê-lo em .deb e .rpm , o que cobrirá a maioria dos usuários do Linux, mas não será tão útil quanto pacote feito. Obtendo o arquivo binário no formato certo é apenas a ponta do iceberg. Fazer um bom pacote requer, entre outros:

  • Colocando os arquivos nos diretórios apropriados. Enquanto o FHS tenta unificar a estrutura de diretórios do Linux, ainda há variação entre as distribuições.
  • Compilando as versões corretas das bibliotecas. O quão difícil isso é depende se o seu programa depende de bibliotecas cujo ABI evolui rapidamente. Versões diferentes da mesma distribuição podem requerer pacotes diferentes porque elas são fornecidas com diferentes versões de bibliotecas.
  • Declarando dependências com os nomes de pacotes corretos.
  • Declarações de menu, manipuladores MIME, documentação, scripts de inicialização,…

Geralmente, é mais fácil permitir que alguém familiarizado com cada distribuição faça um pacote. Muitas vezes, você poderá reunir essas contribuições em um único pacote de origem (contendo um debian directory, um .spec file for rpm,…) e distribuir archives de origem, permitindo que as pessoas que executam cada distribuição façam um pacote para sua distribuição. A menos que você tenha feito grandes alterações em seu programa, é provável que, uma vez que você tenha uma determinada distribuição funcionando, as versões mais novas funcionem com os mesmos scripts de construção.

Algumas distribuições possuem mecanismos automatizados para construir e distribuir pacotes. Por exemplo, você pode fazer um PPA PPA e tê-lo automaticamente construído contra todas as versões suportadas do Ubuntu, mesmo que você não seja executando o Ubuntu.

    
por 03.01.2013 / 02:41
3

Você pode considerar o fpm , que é uma ferramenta para ajudar a criar pacotes para todos os diferentes formatos de pacotes com facilidade.

    
por 02.01.2013 / 23:44
0

Minha sugestão é aprendê-las. Não é tão difícil e tem havido muita automação na construção dos mesmos e fornece uma maneira nativa para os sistemas dizerem ao usuário o que eles realmente instalaram.

Tendo dito que existem muitas opções:

  1. RPM pode ser compilado a partir da fonte e muitos sistemas fornecem portas nativamente compiladas da ferramenta
  2. O APT também está disponível para alguns dos sistemas operacionais que você listou.
  3. Arquivo de shell de extração automática que basicamente requer uma tarball de sua distribuição e alguns scripts de pós-configuração.
por 02.01.2013 / 19:55

Tags