Obter lista de bibliotecas necessárias ao instalar algo da fonte

6

Ao instalar algo da origem (digamos, Ruby 1.9.2), qual comando posso executar para obter uma lista completa de todas as dependências necessárias para instalar esse aplicativo? Isso é possível?

    
por Levi Hackwith 02.10.2010 / 03:20

4 respostas

9

Resposta curta: não é possível . A dificuldade de obter as dependências exatas de uma distribuição de origem é a razão pela qual o gerenciamento de pacotes é tão popular no Linux (bem, uma das várias razões). Na verdade, se você só precisa fazê-lo e não se importar muito com isso, a maneira mais confiável de obter as dependências provavelmente será pegar um pacote de distribuição (as ebuilds do gentoo são fáceis de se trabalhar) e puxar a lista de dependências disso.

Caso contrário, se você tiver sorte, os mantenedores terão criado uma listagem das dependências no arquivo README ou similar - esse seria o primeiro local a ser verificado. Caso contrário, se é um projeto em C e você não se importa em sujar as mãos, você pode olhar dentro do script de configuração (ou melhor ainda o configure.ac ou o que é gerado a partir dele) e descobrir as dependências disso com base no que verifica.

    
por 02.10.2010 / 08:01
5

Criando a partir da fonte

Não há nenhuma maneira programática de que conheço, geralmente examino as notas de versão e / ou os arquivos README do software para obter uma ideia geral. Isso funciona como um processo interativo no qual eu posso encontrar uma biblioteca ou duas que eu não tenha ou tenha perdido e precise buscá-las.

Construindo usando um gerenciador de pacotes

Se, por outro lado, você estiver usando um gerenciador de pacotes como apt ou yum , poderá solicitar a ajuda desses sistemas para ajudar a instalar todas as dependências antecipadamente, antes de instalar / construir o pacote em questão.

distros com base em apt

$ sudo apt-get build-dep <package>

distros baseadas em yum

$ sudo yum-builddep --nogpgcheck <source package>

-ou -

$ sudo yum-builddep --nogpgcheck <package>
    
por 10.11.2013 / 20:04
3

No geral, eu também não posso oferecer uma solução 100%, mas para a maioria das fontes usando autotools , você pode grep configure.ac para AC_SEARCH_LIBS , AC_CHECK_HEADERS e PKG_CHECK_MODULES .

O primeiro argumento de AC_CHECK_HEADERS é um nome de arquivo ou até mesmo um caminho com um nome de arquivo.

PKG_CHECK_MODULES é introduzido com pkg-config e, IIRC o segundo argumento para PKG_CHECK_MODULES inclui um nome de pacote para o qual um arquivo <pkg-name>.pc deve existir.

O segundo argumento para AC_SEARCH_LIBS é um nome de biblioteca e usando o Linux você está procurando por um arquivo que começa com lib<second-argument-to AC_SEARCH_LIBS>.so .

Nenhuma delas é perfeita e isso não precisa fornecer uma lista completa de requisitos, mas ...

  1. os mantenedores de origem têm um interesse crescente em ver que essas três coisas levarão você a uma lista completa de requisitos.

  2. com um pequeno script, você pode usar essas três coisas para pesquisar os pacotes da sua distribuição e encontrar pacotes que fornecem arquivos ausentes. Por exemplo, usando apt-file search para todos os Linuxes baseados em Debian, como mencionado por Faheem Mitha.

por 10.11.2013 / 22:18
2

No Ubuntu (Debian): sudo apt-get build-dep <package>

    
por 02.10.2010 / 08:11