Como construir uma ferramenta com bibliotecas específicas sem quebrar o Fedora?

2

Até agora nunca precisou desviar-se dos componentes principais de desenvolvimento do Fedora 16. Eu estou precisando construir projeto clutter-mx , mas esta biblioteca requer glib-2.0.32. Junto com isso, o glib-2 precisa do libffi-3.0.11.

Eu posso baixar a fonte e construir essas bibliotecas, no entanto, estou preocupado que instalá-las irá quebrar o resto do sistema.

O projeto clutter-mx usa autotools e procura a versão glib-2.

As perguntas são:

  1. Se eu construir e instalar os novos componentes e algo der errado, você poderá voltar usando o yum ou algo similar?

  2. Existe uma maneira de fazer com que o autotools procure em outro diretório pelos cabeçalhos instalados?

por user626201 15.06.2012 / 17:06

2 respostas

1

As fontes que procuram dependências por meio de ferramentas automáticas têm um arquivo configure.ac (e / ou Makefile.am, não tenho certeza disso) em que essas dependências são definidas. Na maioria das vezes, as pessoas / IDEs apenas colocam suas versões atualmente instaladas das bibliotecas como dependentes, mas não precisam delas na versão recente.

Você pode tentar modificar as versões necessárias para suas versões e tentar criar o pacote.

Você não pode fazer as autotools diretamente em algum caminho alternativo, mas as autotools usam o pkg-config para determinar as especificidades da instalação do pacote (man pkg-config). Você pode dizer ao pkg-config para procurar em outros diretórios pela variável evironmental PKG_CONFIG_PATH. No entanto, o caminho pkg-config só funciona se você tiver as bibliotecas mais recentes instaladas em algum lugar. Mas então acredito que você pode editar os arquivos * .pc para forçar o clutter-mx a vincular estaticamente essas bibliotecas.

Se você instalar duas versões de uma biblioteca e, às vezes, usar uma e às vezes a outra, poderá ter problemas. Se você realmente substituir arquivos que foram colocados lá por rpm seu sobre o parafuso.

Meu conselho é modificar as dependências de compilação ou, se necessário, determinar por que a versão mais recente da biblioteca XY é necessária e modificar as fontes de clutter-mx para não exigir essa versão recente e trabalhar com sua versão atual. Meu segundo melhor conselho é obter / construir pacotes para sua distribuição das bibliotecas requeridas e instalá-las. Você realmente não deveria sair do mundo criado pela sua distro, ou seja, gerenciador de pacotes. Existem forças do mal lá fora. : -)

    
por 16.06.2012 / 07:15
2

Não tente instalar bibliotecas Gtk / Gnome mais novas em um diretório do sistema. Eles têm baixa compatibilidade com versões anteriores e você corre o risco de quebrar programas existentes.

Compile e instale novas bibliotecas em uma hierarquia de diretórios separada. Execute ./configure --help para ver como especificar caminhos para bibliotecas e incluir arquivos ao compilar uma biblioteca. Por exemplo, se você ver

PANGO_CFLAGS
            C compiler flags for PANGO, overriding pkg-config
PANGO_LIBS  linker flags for PANGO, overriding pkg-config

defina as seguintes variáveis de ambiente:

export PANGO_CFLAGS='-I /path/to/my/gnome/stuff/include'
export PANGO_LIBS='-L /path/to/my/gnome/stuff/libs'

Passe --prefix=/path/to/my/gnome/stuff para ./configure para ter tudo instalado em seu próprio diretório.

Ou, e isso será mais fácil se você precisar instalar muitas bibliotecas, reconstrua tudo, inclusive com o pkg-config . Instale pkg-config em /path/to/my/gnome/stuff e, em seguida, defina

export PKG_CONFIG=/path/to/my/gnome/stuff/bin/pkg-config
    
por 17.06.2012 / 03:57