Не удается найти install-sh, install.sh или shtool в ac-aux

68

Это мой первый попыток скомпилировать и установить что-либо на машине Linux. Я получил последнюю версию Ссылка через git и прочитал инструкции, в которых указано:

  

2. Создайте и установите

     

Exmpp использует Autotools. Следовательно   процесс довольно распространен:

$ ./configure
$ make
$ sudo make install

после типа ./configure Я получаю ошибку

  

Не удается найти install-sh, install.sh или shtool в ac-aux

Google мало помог. Не уверен, что я должен делать. Любая помощь будет высоко оценена

    
задан Micah 23.02.2011 в 07:14
источник

8 ответов

88

Я получил его для создания скрипта configure, используя следующие инструменты:

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

У меня нет всех зависимостей, поэтому я не могу проверить его прямо сейчас, но обычно это как создать скрипт configure из файла ac.

    
ответ дан sebastian_k 23.02.2011 в 07:30
34

Хорошо, я попробовал ответить sebastian_k, и это не сработало для меня ( ./configure разбилось на полпути с чрезвычайно странной ошибкой).

Что, однако, работало для меня, копируя инструкции, используемые в этой сборке log я нашел

Короткий вариант (так что вам не нужно пробираться через него):

$ autoreconf -vif
$ ./configure --prefix=/usr/lib/erlang/lib
$ make
$ sudo make install
    
ответ дан entropy 10.11.2012 в 14:30
5

Этот вопрос и большинство других ответов здесь возникают из-за непонимания того, как проекты используют GNU Build System (aka Autotools). Фактически, в случае библиотеки Erlang XMPP , упомянутой OP, недоразумение, похоже, принадлежит разработчикам.

Получение программного обеспечения правильным способом

Если все, что вы хотите сделать, это компилировать и установить проект, выпущенный с помощью GNU Autotools, тогда вы не должны проверять его из системы управления версиями . Вместо этого вы должны загрузить упакованную исходную версию , предоставленную разработчиком. Они обычно принимают форму tarballs, распространяемых на веб-сайте проекта. Для проектов, которые полностью размещены на GitHub, Savannah или подобном сервисе хостинга, эти tarballs обычно будут найдены за некоторой ссылкой с надписью «Загрузка» или «Релизы». Вы разворачиваете пакет и произносите некоторый вариант стандартного заклинания ./configure && make && sudo make install . Это все; вам не нужно вызывать какой-либо из GNU Autotools и даже не нужно устанавливать GNU Autotools в вашу систему.

Причина, по которой вам, пользователю, не нужна GNU Autotools для компиляции проекта, упакованного в Autotools, заключается в том, что разработчик уже использовал различные программы Autotools для создания «дистрибутивного tarball», которые могут быть использованы для создания программного обеспечения в любой Unix-подобной системе. В распространенном tarball содержится очень портативный скрипт configure , который сканирует среду сборки, проверяет зависимости и создает Makefile , настроенное для вашей системы.

Итак, когда вам нужны Autotools?

Единственная причина, по которой вам нужно будет установить и вызвать GNU Autotools самостоятельно, - это если вы хотите выполнить development работу над проектом, созданным с помощью Autotools. И даже тогда вам, вероятно, не понадобится Autotools, если вы не измените зависимости проекта. В этом случае вам действительно нужно проверить исходный источник, внести соответствующие изменения в входные файлы, специфичные для Autotools ( configure.ac , Makefile.am и т. Д.), И запустить Autotools для их создания, чтобы создать новый configure файл. Если вы хотите самостоятельно опубликовать исправленный пакет, то вы должны использовать Makefile, сгенерированный Autotools, для создания нового дистрибутива tarball, а затем опубликовать этот tarball где-то в Интернете.

Проблема заключается в том, что некоторые разработчики публично публикуют свои исходные репозитории, но пренебрегают публикацией своих карт распространения (или затрудняют поиск там, где они публикуются). Например, вместо публикации своих карточек распространения как выпусков GitHub , Релизы GitHub библиотеки Erlang XMPP являются архивами исходного хранилища источников. Это делает невозможным компиляцию проекта без GNU Autotools, в первую очередь победив цель использования Autotools.

TL; краткое описание DR

GNU Autotools - это то, что разработчики используют для создания портативных пакетов исходного кода для пользователей. Пользователи должны загружать и компилировать из этих исходных пакетов, а не исходный код из исходной системы управления. Если разработчики не предоставляют эти исходные пакеты, то они не используют Autotools правильно и должны быть мягко ударяться с мокрым форели , пока не увидит ошибку их путей.

    
ответ дан Psychonaut 01.09.2017 в 12:53
3

У меня была эта проблема, и я обнаружил, что это произошло из-за следующей строки в configure.ac :

AC_CONFIG_AUX_DIR([build-aux])

Линия не была плохим сама по себе, однако ее нужно было перемещать ближе к началу файла configure.ac .

    
ответ дан Craig McQueen 02.05.2016 в 13:29
1

sudo apt-get install automake autoconf

его работы успешно

    
ответ дан Shafiul Karim Bulan 12.06.2013 в 08:47
1

Для устранения этой проблемы выполните следующие действия:

sudo apt-get install autogen libtool shtool

Затем выполните установку

sh autogen.sh --prefix=prefered_install_path
make 
make install 
    
ответ дан Ravi Hegde 02.09.2015 в 13:30
1

При попытке скомпилировать GNU Octave из репозитория Mercurial вы можете столкнуться с этой проблемой. Исправление состоит в том, чтобы запустить ./bootstrap , находясь в корне дерева-источника.

    
ответ дан Ruslan 22.03.2017 в 14:45
0

У меня была аналогичная проблема, когда я попытался использовать ./configure исходного кода и получил ту же самую ошибку, что и отправленный. Наконец, я решил свои проблемы, введя код:

sudo apt-get install autotools-dev
    
ответ дан retnan 09.02.2013 в 17:35