Compile a origem com bibliotecas posteriores em um servidor e use o binário em um servidor mais antigo

1

Eu preciso da biblioteca libpcre3-dev mais recente para compilar um software a partir do código-fonte, no entanto, a distribuição atual do sistema operacional (Ubuntu) no meu servidor tem apenas a versão anterior de libpcre3-dev e nenhum backport está disponível.

Estou pensando em compilar o binário em um servidor separado com a versão mais recente do libpcre3-dev e instalar o binário de volta ao meu servidor real. Eu tenho duas perguntas:

  1. Isso funciona? Minha principal preocupação é que o libpcre3 no meu servidor ainda é a versão mais antiga, o binário ainda precisa do libpcre3 correspondente em tempo de execução, mesmo se ele for compilado com o mais recente libpcre3-dev ?

  2. Qual é a melhor maneira de instalar o binário de volta ao meu servidor? Basta copiar o binário ou transformá-lo em um pacote .deb e, em seguida, instalar usando o gerenciador de pacotes (se possível)?

por ChrisG 22.08.2014 / 19:52

2 respostas

1

Se o programa exigir recursos mais novos que não estão disponíveis em seu servidor, esses recursos não estarão disponíveis em tempo de execução e, assim, seu programa provavelmente não será executado.

Você pode vincular a biblioteca estaticamente. Isso tem a desvantagem de você não poder atualizar a biblioteca separadamente do programa. Se uma vulnerabilidade de segurança for encontrada nessa versão da biblioteca, você precisará reconstruir o programa. Substitua -lpcre3 na linha de comando do vinculador por /usr/lib/libpcre3.a .

Você pode vincular dinamicamente e copiar a biblioteca para o mesmo diretório onde você instala o software. Inicie o software por meio de um script de wrapper que define o caminho de carregamento da biblioteca para incluir esse diretório adicional.

#!/bin/sh
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/my-software/lib"
/opt/my-software/bin/foo "$@"
    
por 23.08.2014 / 02:07
1

Sua primeira pergunta é sobre links , então isso depende se você vincular estaticamente ou não. Se você faz e ambas as plataformas têm a mesma arquitetura, então deve funcionar.

Uma boa maneira de instalar um binário auto-compilado é usar checkinstall . Ele cria um pacote Debian que pode ser instalado e desinstalado usando o gerenciador de pacotes favorito.

    
por 22.08.2014 / 23:34