./configure: mostra todos os pacotes ausentes de uma só vez

5

Eu compilei um pacote que usa autotools como sistema de compilação ( autoreconf , ./configure , make , make install ).

./configure pára quando um pacote está faltando.

Para cada pacote ausente, eu procuro seu nome, então eu faço apt install package ou eu compilo da fonte, se não estiver disponível.

Em seguida, corro ./configure novamente e ele me diz o nome de outra dependência não satisfeita.

Se houver apenas um ou dois pacotes ausentes, tudo bem. Mas havia 19!

libmspack-dev
libglib2.0-dev
libpam0g-dev
libssl-dev
libxml2-dev
libxmlsec1-dev
libx11-dev
libcunit1-dev
libxext-dev
libxinerama-dev
libxi-dev
libxrender-dev
libxrandr-dev
libxtst-dev
libgdk-pixbuf2.0-dev
libgtk-3-dev
libgtkmm-3.0-dev
libtool
dnet

Gostaria que ./configure continuasse com erro e mostre todos os pacotes ausentes de uma só vez para que eu possa instalá-los todos de uma vez. Caso contrário, é longo e doloroso executar ./configure e apt install 19 vezes.

    
por Bilow 27.07.2018 / 10:24

2 respostas

9

A abordagem simples no seu caso é instalar o pacote open-vm-tools .

Para resolver sua dúvida, não há uma maneira infalível de listar todos os pacotes ausentes de uma só vez, principalmente porque isso não foi projetado e configure scripts permitem que seus autores façam qualquer coisa - então não há como saber em avançar como continuar e se continuar é seguro. Um exemplo do tipo de problema que você poderia encontrar são os testes que se baseiam nos resultados dos testes anteriores; por exemplo, verifique se há um programa instalado, falhe se ele não estiver instalado e use-o em testes subseqüentes, se necessário. Continuar se o programa estiver ausente não dará resultados muito úteis.

No entanto, em muitos casos, você pode obter resultados úteis ajustando configure para não sair quando encontrar um erro. Normalmente, isso envolve a substituição de AC_MSG_ERROR por AC_MSG_WARN , em configure.ac e de qualquer biblioteca M4 usada por configure.ac :

sed -i 's/AC_MSG_ERROR/AC_MSG_WARN/g' configure.ac m4/*.m4
autoreconf -i
./configure ...

e procure por "AVISO:" mensagens.

Você deve, é claro, restaurar configure.ac e as bibliotecas M4 antes de tentar construir o software “corretamente”.

Olhando isso de maneira mais geral, existem outras maneiras de determinar dependências. Em muitos casos, eles estão listados na documentação ( README , INSTALL ...), às vezes até com nomes de pacotes correspondentes para distribuições populares. Outro local útil para procurar é configure , executando ./configure --help ou lendo configure.ac (ou CMakeLists.txt ou meson.build ou qualquer arquivo apropriado para a ferramenta de construção usada). Se o software que você está vendo for empacotado em uma distribuição Linux, você também poderá ver os metadados, embora ele corresponda apenas à versão do software que está sendo empacotado e reflita as opções de empacotamento do mantenedor ( apt showsrc ... in Derivados do Debian).

    
por 27.07.2018 / 14:16
5

Esta resposta destina-se a mostrar uma maneira rápida de instalar dependências ausentes no Debian e Ubuntu (que, se eu entendi corretamente, é o que você realmente quer alcançar), mas não resolve sua questão sobre como fazer ./configure report todas as dependências de uma só vez.

Se o software que você quer construir já estiver nos repositórios (como é o caso de open-vm-tools no Ubuntu, por exemplo), você pode fazer:

$ apt-get build-dep <packagename>

Isso instalará todas as dependências necessárias para construir essa versão específica do pacote. Isso não é o mesmo, já que a lista de dependências pode diferir entre as duas versões, mas deve instalar a maioria (ou todas) das dependências que faltam.

    
por 27.07.2018 / 11:40