Como instalar o Cairo 1.8.10

12

O pacote libcairo2-devé a versão mais recente da biblioteca de gráficos do Cairo (1.10.2). Existe alguma maneira de instalar a versão 1.8.10?

Estou executando a 11.10, mas estaria interessado em uma solução geral, se possível.

Daniel Standage
fonte
Você poderia explicar por que deseja instalar a versão mais antiga? A instalação da versão anterior em todo o sistema provavelmente não é uma possibilidade (alguns programas podem depender dos recursos da versão mais recente), mas se você tiver um requisito mais restrito para a versão anterior, poderá ser possível uma solução.
James Henstridge
Eu, pessoalmente, sei muito pouco sobre o Cairo, mas escrevi um programa vinculado a uma biblioteca que, por sua vez, usa o Cairo para gerar gráficos. Eu fiz a maior parte do desenvolvimento original em meu Mac, para o qual a instalação Cairo estava disponível apenas através de algo como Fink (que só tem v1.8.10) ...
Daniel Standage
... O programa também usa o OpenMP, e um dos loops paralelos inclui chamadas para as funções da biblioteca do Cairo. O programa funciona no Ubuntu quando eu o executo em um único processador e funciona no Mac para qualquer número de processadores. Mas quando eu o executo no Ubuntu com vários processadores, recebo abortos, segfaults, glibcs ​​etc.
Daniel Standage
Entendo que a atualização para a v1.8.10 não é algo que você deseja para uma solução de longo prazo, e se você puder isolar a instalação, pode ser ainda melhor. Já distribuí o software e simplesmente quero ter um intervalo temporário até descobrir o que há realmente de errado com o meu programa.
Daniel Standage
Para referência, os números de versão do Cairo variam de 1,8 a 1,9 e a 1,10; portanto, a versão incluída no Ubuntu deve ser capaz de fazer tudo o que a versão usada no MacOS fez. Se você está acessando o Cairo apenas através de uma biblioteca de terceiros que não está modificando, não deve se preocupar em usar acidentalmente novos recursos e quebrar a compatibilidade com seu antigo ambiente de desenvolvimento. Se você encontrou algum problema com a nova versão, poderia explicar o que é?
James Henstridge

Respostas:

9

Se você quiser testar uma versão antiga do Cairo, é possível compilá-la em um prefixo temporário no diretório inicial.

Primeiro de tudo, verifique se você tem as dependências de compilação do Cairo instaladas. Você pode fazer isso com o seguinte comando:

sudo apt-get build-dep cairo

Agora baixe e descompacte a versão antiga do Cairo:

wget http://cairographics.org/releases/cairo-1.8.10.tar.gz
tar xzf cairo-1.8.10.tar.gz
cd cairo-1.8.10

Agora você deseja transformar o Cairo em um prefixo temporário. Eu usei ~/prefixisso em algumas ocasiões, mas você pode usar qualquer diretório.

./configure --prefix=$HOME/prefix
make
make install

Agora você precisa criar seu próprio software para usar esta versão do Cairo. Se o software usar pkg-configpara localizar suas dependências, só será necessário definir a seguinte variável de ambiente:

export PKG_CONFIG_PATH=$HOME/prefix/lib/pkgconfig

Se não estiver em uso pkg-config, pode ser necessário ajustar CFLAGSpara incluir -I$HOME/prefix/includee LDFLAGSincluir -L$HOME/prefix/lib.

Por fim, para executar seu programa usando a versão personalizada do Cairo, você precisará configurar o vinculador dinâmico para procurar bibliotecas compartilhadas em seu prefixo temporário:

export LD_LIBRARY_PATH=$HOME/prefix/lib

Uma vez definido, você pode verificar se o seu programa está vinculado à sua cópia do Cairo usando ldd. Se isso parece bom, você está pronto.

Limpando

Depois de concluir esta instalação temporária, a limpeza é bastante fácil. Redefina as variáveis ​​de ambiente e remova o prefixo de instalação temporário:

unset LD_LIBRARY_PATH
unset PKG_CONFIG_PATH
rm -rf $HOME/prefix

Pode ser necessário reconfigurar / reconstruir seu programa depois de fazer isso para que ele use o sistema Cairo novamente.

James Henstridge
fonte
1
Instruções excelentes e claras, com um processo limpo de instalação e desinstalação. Obrigado!
Daniel Standage
Como remover padrão incluir caminhos de $ HOME para que ele não vai usar arquivos cairo padrão
Dau