Meu projeto é baseado no Ubuntu 14.04 em C ++ usando g ++.
Anteriormente, meu projeto usava g ++ 4.8 para desenvolvimento. Nosso software depende do libstdc ++ 6 para executar.
Fornecemos pacotes Debian para instalar o nosso software. Nosso pacote Debian só instala as bibliotecas de tempo de execução necessárias para executar nosso software. Não queremos instalar ferramentas de desenvolvimento para nossos clientes. Mas como o libstdc ++ 6 já está instalado junto com o Ubuntu 14.04 por padrão, nós não o especificamos no arquivo 'control' do pacote Debian.
Recentemente, mudamos para g ++ 4.9 . Para instalar o g ++ 4.9, precisamos adicionar o seu PPA antes de executar o 'apt-get install' para instalar o nosso software. Tendo percebido que eu também preciso usar o libstdc ++ 6 que trabalha com o g ++ 4.9, eu coloco 'libstdc ++ 6' na seção 'Depends' do arquivo 'control'. Algo parecido com isto:
Depends: libstdc++6 (Other packages are omitted)
Ao fazer o 'sudo apt-get install nosso pacote', percebi que o libstdc ++ 6 é NÃO atualizado para o que eu quero. Portanto, eu obteria as mensagens de erro em tempo de execução como:
/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version 'CXXABI_1.3.8' not found
/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version 'GLIBCXX_3.4.20' not found
Eu me certifiquei de que:
Por outro lado, se eu executasse sudo apt-get install libstdc++6
manualmente, o libstdc ++ 6 seria atualizado para o correto.
Minha teoria é que a seção 'Depends' do arquivo 'control' funciona mais como verificar a existência mas não a versão, e como o Ubuntu 14.04 instalou o libstdc ++ 6, o pacote Debian não instalou / atualizou porque ele pode ser encontrado no sistema já. No entanto, o 'apt-get install' verificou a versão mais recente e instalou-a em caso de falta ou atualização, se existente.
Alguma ideia?