O que é a forma preferida para publicar um aplicativo só de binário para múltiplas distribuições Linux?

StackOverflow https://stackoverflow.com/questions/1502543

Pergunta

Eu tenho um aplicativo Linux de código fechado que eu quero distribuir. Este aplicativo está usando wxWidgets / GTK para que haja uma lista enorme de bibliotecas compartilhadas (60+) que esta aplicação depende.

O que é a maneira preferida para publicar o aplicativo e suportar o número máximo de distros?

  • É para construir o aplicativo para cada distribuição suportada e publicá-los separadamente? Isto tem a desvantagem de ser complicado para construir (a chroot e uma compilação per distro) e só irá funcionar na distribuição suportada.

  • É para adicionar todas as bibliotecas compartilhadas no instalador e usá-los com a variável LD_LIBRARY_PATH env (como o VMware)? Isto tem o inconveniente de aumentar o tamanho do instalador.

  • É para construir uma aplicação completamente estática? Este não é certamente possível, como ele vai quebrar algumas licenças.

  • É uma mistura de que ou outra opção? Como fornecedores mais comerciais publicar seu próprio aplicativo gráfico (de preferência baseada em GTK)?

Foi útil?

Solução

Você deve ter um olhar para o Linux Standard Base . Ele foi projetado especificamente para ajudar as pessoas em sua posição. Ele define um ambiente que os desenvolvedores de aplicações 3rd party pode confiar - então não há versão conjunto de libc e outras bibliotecas, e certos programas e diretórios viver em lugares conhecidos. Todo o apoio à distribuição Linux principal LSB.

Dito isso, você ainda deve provavelmente embalar o resultado especificamente para cada grande distribuição -. Apenas para que seus clientes podem gerenciar seu aplicativo com suas ferramentas familiares de gerenciamento de pacotes

Outras dicas

Basicamente, existem duas maneiras. Você pode escolher tanto, se desejar.

A primeira maneira é os jogos comuns forma e tal fazê-lo. Fazer uma lib / subdiretório, use LD_LIBARY_PATH e incluem apenas sobre cada biblioteca compartilhada que você precisa. Isso garante uma experiência livre de dor de seu usuário, mas faz o instalador maior e provavelmente o consumo de memória maior também. Eu nem tente reutilizar preexistente bibliotecas, como eles tendem a desaparecer à medida que as atualizações são feitas no sistema.

A segunda maneira é fornecer pacotes de distribuição. Estes geralmente não são difíceis de fazer, e, então, integrar bem com as distribuições, e vai parecer ainda muito mais acolhedor para seus clientes. Os 2 suas desvantagens são: Você precisa fazer isso para cada distribuição (Debian, Ubuntu, SuSE, RedHat é provavelmente um bom começo), e você terá de mantê-los: como o tempo passa, algumas bibliotecas não estará disponível em uma versão específica e, portanto, o usuário terá problemas de dependência.

Em seu instalador, verifique quais bibliotecas são instaladas e, em seguida, baixar os binários para aqueles que não são.

Para um conforto adicional de seus usuários, se não houver conexão com a Internet, têm o instalador gerar uma chave que você pode entrar em seu site para receber um arquivo ZIP que você pode então alimentar ao instalador.

Para maior conforto, verifique quais bibliotecas estão disponíveis na distro-alvo e perguntar ao usuário usar a ferramenta de administração padrão para instalá-los. Dessa forma, você não vai poluir o computador com diferentes versões da mesma biblioteca.

Dito: Pode ser mais inteligente para colocar o seu código valioso em uma biblioteca de vínculo e, em seguida, prever que como blob binário em um pacote fonte. Desta forma, seu código é tão protegido como seria em um binário puro e os usuários podem compilar o código cola no seu sistema favorito sem que você tenha que se preocupar com outras coisas.

Quer dizer: Quanto vale é a parte do seu código que configura a interface do usuário? Quanto você vai perder quando alguém rouba isso?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top