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

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

Até agora, nunca foi necessário desviar-se dos principais componentes de desenvolvimento padrão do Fedora 16. estou precisando construirprojeto desordem-mx, mas esta biblioteca requer glib-2.0.32. Junto com isso, o glib-2 precisa do libffi-3.0.11.

Posso baixar o código-fonte e construir essas bibliotecas, no entanto, estou preocupado que sua instalação prejudique o resto do sistema.

Oprojeto desordem-mxusa 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 a usar o yum ou algo semelhante?

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

Responder1

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

Compile e instale novas bibliotecas em uma hierarquia de diretórios separada. Execute ./configure --helppara 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

em seguida, 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/stuffpara ./configure, para instalar tudo em seu próprio diretório.

Ou, e isso será mais fácil se você precisar instalar muitas bibliotecas, reconstruir tudo inclusive compacote-config. Instale também e pkg-configdefina/path/to/my/gnome/stuff

export PKG_CONFIG=/path/to/my/gnome/stuff/bin/pkg-config

Responder2

Fontes que procuram dependências por meio de ferramentas automáticas possuem um arquivo configure.ac (e/ou Makefile.am, não tenho certeza sobre este) no qual essas dependências são definidas. Na maioria das vezes, as pessoas/IDEs apenas colocam suas versões atualmente instaladas das bibliotecas como dependência, mas na verdade não precisam delas em uma versão recente.

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

Você não pode fazer com que as ferramentas automáticas procurem diretamente em algum caminho alternativo, mas no IIRC as ferramentas automáticas usam pkg-config para determinar as especificações de instalação do pacote (man pkg-config). Você pode dizer ao pkg-config para procurar em outros diretórios pela variável ambiental PKG_CONFIG_PATH. No entanto, o caminho pkg-config só funciona se você tiver as bibliotecas mais recentes instaladas em algum lugar. Mas 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 outras vezes a outra, poderá ter problemas. Se você realmente substituir arquivos que foram colocados lá por rpm, você estará ferrado.

Meu conselho é modificar as dependências de construção ou, se necessário, determinar por que a versão mais recente da biblioteca XY é necessária e modificar as fontes 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 necessárias e instalá-los. Você realmente não deveria sair do mundo configurado pela sua distribuição, ou seja, pelo gerenciador de pacotes. Existem forças do mal por aí. :-)

informação relacionada