Não é possível localizar install-sh, install.sh ou shtool em ac-aux

70

Esta é minha primeira vez tentando compilar e instalar qualquer coisa em uma máquina linux. Recebi a última versão do link via git e li as instruções que dizem:

  

2. Construa e instale

     

O Exmpp usa o Autotools. Assim sendo   o processo é bastante comum:

$ ./configure
$ make
$ sudo make install

depois do tipo ./configure recebo o erro

  

Não é possível encontrar install-sh, install.sh ou shtool em ac-aux

O Google era de pouca ou nenhuma ajuda. Não tenho certeza em tudo o que devo fazer. Qualquer ajuda seria muito apreciada

    
por Micah 23.02.2011 / 07:14

8 respostas

90

Eu consegui criar o script de configuração usando as seguintes ferramentas:

libtoolize --force
aclocal
autoheader
automake --force-missing --add-missing
autoconf
./configure

Eu não tenho todas as dependências, então não posso testá-lo agora, mas geralmente é assim que você criaria um script de configuração a partir de um arquivo ac.

    
por sebastian_k 23.02.2011 / 07:30
35

Bem, eu tentei a resposta do sebastian_k e não funcionou para mim ( ./configure caiu no meio do caminho com um erro extremamente estranho).

O que, no entanto, funcionou para mim foi copiar as instruções usadas nesta build log eu encontrei

A versão curta (para que você não tenha que percorrer você mesmo) é:

$ autoreconf -vif
$ ./configure --prefix=/usr/lib/erlang/lib
$ make
$ sudo make install
    
por entropy 10.11.2012 / 14:30
7

Esta pergunta, e a maioria das outras respostas aqui, surge de um mal entendido de como os projetos usando o Sistema de Construção GNU (aka Autotools) são distribuídos. De fato, no caso da biblioteca Erlang XMPP mencionada pelo OP, o mal-entendido parece ser da parte dos desenvolvedores.

Obtendo o software da maneira correta

Se tudo o que você quer fazer é compilar e instalar um projeto lançado com o GNU Autotools, então você não deve fazer o checkout do sistema de controle de origem . Em vez disso, você deve fazer o download do lançamento de fonte em pacote fornecido pelo desenvolvedor. Estes normalmente assumem a forma de tarballs distribuídos no site do projeto. Para projetos que são hospedados inteiramente no GitHub, Savannah ou em algum serviço de hospedagem similar, esses tarballs geralmente são encontrados por trás de algum link chamado "Download" ou "Releases". Você descompacta o pacote e expressa alguma variante do padrão ./configure && make && sudo make install de encantamento. Isso é tudo; você não precisa invocar nenhum dos GNU Autotools e nem precisa ter o GNU Autotools instalado em seu sistema.

O motivo pelo qual você, o usuário, não precisa do GNU Autotools para compilar um projeto empacotado no Autotools é que o desenvolvedor já usou os vários programas do Autotools para gerar um "tarball de distribuição" que pode ser usado para construir o software em qualquer sistema Unix-like. O tarball de distribuição contém um script configure altamente portátil que varre o ambiente de construção, verifica as dependências e constrói um Makefile personalizado para o seu sistema.

Então, quando você precisa do Autotools?

O único motivo pelo qual você precisa instalar e invocar o GNU Autotools é se você quer fazer desenvolvimento funcionar em um projeto construído com o Autotools. E mesmo assim, você provavelmente não precisará dos Autotools, a menos que você altere as dependências do projeto. Nesse caso, você precisaria realmente verificar a fonte original, fazer as alterações apropriadas nos arquivos de entrada específicos do Autotools ( configure.ac , Makefile.am , etc.) e executar os Autotools neles para gerar um novo configure Arquivo. Se você quiser publicar o pacote revisado de forma independente, você usaria o Makefile gerado pelo Autotools para gerar um novo tarball de distribuição e publicá-lo em algum lugar on-line.

O problema é que alguns desenvolvedores disponibilizam seu repositório de origem publicamente, mas deixam de publicar seus tarballs de distribuição (ou dificultam encontrar onde eles são publicados). Por exemplo, em vez de publicar seus tarballs de distribuição como lançamentos do GitHub , o Liberações do GitHub da biblioteca Erlang XMPP são tarballs do repositório de origem bruto. Isso torna impossível compilar o projeto sem o GNU Autotools, derrotando todo o propósito de usar o Autotools em primeiro lugar.

TL; Resumo de DR

O GNU Autotools é algo que os desenvolvedores usam para fazer pacotes de código fonte portáveis para os usuários. Usuários devem baixar e compilar a partir desses pacotes fonte, não do código original do sistema de controle de origem. Se os desenvolvedores não fornecerem esses pacotes de código-fonte, eles não usarão Autotools corretamente e deverão ser gentilmente golpeados truta até que eles vejam o erro de seus caminhos.

    
por Psychonaut 01.09.2017 / 12:53
4

Eu tive esse problema e descobri que era devido à seguinte linha em configure.ac :

AC_CONFIG_AUX_DIR([build-aux])

A linha não era ruim por si só, mas precisava ser movida para mais perto do topo do arquivo configure.ac .

    
por Craig McQueen 02.05.2016 / 13:29
1

sudo apt-get install automake autoconf

funciona com sucesso

    
por Shafiul Karim Bulan 12.06.2013 / 08:47
1

Por favor, faça o seguinte para corrigir este problema,

sudo apt-get install autogen libtool shtool

Então faça a instalação

sh autogen.sh --prefix=prefered_install_path
make 
make install 
    
por Ravi Hegde 02.09.2015 / 13:30
1

Ao tentar compilar o GNU Octave a partir do repositório do Mercurial, você pode encontrar esse problema. A correção é executar ./bootstrap enquanto estiver na raiz da árvore de origem.

    
por Ruslan 22.03.2017 / 14:45
0

Eu tive um problema semelhante quando tentei ./configure um código-fonte e recebi o mesmo erro que o postado. Finalmente resolvi meus problemas inserindo o código:

sudo apt-get install autotools-dev
    
por retnan 09.02.2013 / 17:35