Execute a aplicação construída no Ubuntu no CentOS

1

Existe uma maneira de implantar um aplicativo, que você construiu no Ubuntu, no CentOS? E se sim, como?

EDIT: Desculpe, eu deveria ter dado mais algumas informações.

Ele é construído no Ubuntu 15.10 com Qt 5.6 e, além do Qt, tem apenas uma outra dependência que está vinculada estaticamente. Eu não tenho certeza se suas dependências estão estaticamente ligadas também, mas está usando algumas bibliotecas de reforço e nada específico do Ubuntu, então estou supondo que isso não deveria ser um problema.

    
por rndm 23.07.2016 / 14:17

3 respostas

0

Depende de como o aplicativo foi criado e quais dependências ele possui. Se estiver escrito, por exemplo, em Python, ele geralmente pode ser executado enquanto um interpretador Python compatível e módulos estiverem instalados.

Se for um binário elf, então depende se houver bibliotecas binárias compatíveis instaladas. Como algumas bibliotecas podem não estar disponíveis, estejam disponíveis apenas como uma versão incompatível ou possuam o nome errado, então você pode vincular estaticamente seu binário ou distribuir as bibliotecas ausentes junto com o aplicativo.

Você também pode usar o Flatpak para empacotar seu aplicativo e usá-lo em várias distribuições.

    
por 23.07.2016 / 14:48
0

Como outros já mencionaram, apenas instalar / extrair o aplicativo diretamente no sistema pode ou não funcionar, dependendo de se é um script ou binário compilado, estaticamente vs dinamicamente vinculado, versões lib, etc.

Para ter certeza de que o aplicativo será executado, o aplicativo precisa ser executado dentro do contexto do sistema operacional para o qual foi criado. Uma das maneiras mais simples de fazer isso é o docker. É uma solução pesada, mas essencialmente permitirá que você execute um sistema operacional dentro de outro. Então você poderia rodar um container do Ubuntu e colocar seu aplicativo nele.
Você também pode configurar um chroot do ubuntu e executar o aplicativo lá. Isso é semelhante ao que o docker faz, mas muito mais leve.

A única coisa que essas soluções não resolverão é se o aplicativo depender de recursos específicos do kernel que estão apenas no Ubuntu. Isso é muito improvável.

    
por 23.07.2016 / 15:38
0

Você pode executar um aplicativo compilado para uma distribuição do Linux em qualquer outra distribuição, desde que essa outra distribuição tenha as bibliotecas necessárias disponíveis. O problema na prática é geralmente que diferentes distribuições enviam diferentes versões de bibliotecas em um determinado ponto no tempo.

Vincular bibliotecas estaticamente é uma má ideia. Ele aumenta o tamanho do arquivo do aplicativo (não é muito preocupante na maioria dos casos, exceto para pessoas com pouca largura de banda da Internet), aumenta o tamanho do aplicativo na memória (isso é mais uma preocupação na prática) e significa que seu aplicativo permanecerá preso todos os erros da versão que você vinculou. Vincule suas bibliotecas dinamicamente para que seus usuários se beneficiem das correções de bugs para as bibliotecas, especialmente as correções de segurança.

Além disso, enquanto você pode executar aplicativos, há o problema de empacotamento. Instalar aplicativos manualmente é uma dor. Se você não distribuir um pacote RPM para o CentOS e um pacote deb para o Ubuntu, você fará um desserviço aos seus usuários.

Então você deve gerar pacotes apropriados para todas as distribuições. Você pode executar um aplicativo criado para o Ubuntu no CentOS, com mais ou menos esforço dependendo dos requisitos da biblioteca, mas não é possível implantar um aplicativo criado para o Ubuntu no CentOS. / p>     

por 23.07.2016 / 16:05