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


81

Це вперше я намагаюся зібрати та встановити що-небудь на машині Linux. Я отримав останню версію https://github.com/processone/exmpp через git і прочитав інструкції, які містять:

2. Побудувати та встановити

Exmpp використовує Autotools. Тому процес є досить поширеним:

$ ./configure
$ make
$ sudo make install

після типу ./configureя отримую помилку

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

Google мало що допомагає. Зовсім не впевнений, що я повинен робити. Будь-яка допомога буде дуже вдячна

Відповіді:


109

Я отримав це для створення сценарію настройки за допомогою наступних інструментів:

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

У мене немає всіх залежностей, тому я не можу перевірити її зараз, але це, як правило, те, як ви створили б сценарій налаштування з файла змінного струму.


2
Вказівки в програмі README, ймовірно, були наосліп скопійовані з іншого місця. Я мушу визнати, що я не розумію кожної деталі ланцюжка інструментів autoconf; це в основному сукупність макросів, які генеруються та використовуються для створення вашого сценарію налаштування (який, у свою чергу, встановлює етап для компіляції та встановлення). Я ніколи не був точно налаштувати ці речі, так що я не експерт, але є деякі досить великі пояснення тут
sebastian_k

12
Примітка для програмістів: перестаньте використовувати автоматичну ланцюжок інструментів. Будь ласка .
Qix

1
@Qix, чи не могли б ви пояснити нам чому?
Сергій

4
@Sergei - це брудно, повільно і постійно ламається. Це захаращує визначає і неймовірно магія . Спосіб поводження із залежностями (або їх відсутністю) дає критичні повідомлення про помилки, а створені ними файли в кращому випадку не читаються і кошмарно зламаються в гіршому випадку.
Qix

4
@Sergei CMake є найбільш життєздатним на даний момент часу. Я впевнений, що у (найближчому) майбутньому буде щось краще.
Qix

40

Добре, я спробував відповісти sebastian_k, і це не спрацювало для мене ( ./configureрозбилося на середині з надзвичайно дивною помилкою).

Однак для мене все-таки працювало копіювання інструкцій, використаних у цьому журналі збірки, який я знайшов

Коротка версія (тож вам не доведеться самостійно перебирати її):

$ autoreconf -vif
$ ./configure --prefix=/usr/lib/erlang/lib
$ make
$ sudo make install

16
+1. autoreconf -iє правильною відповіддю ( vта, fяк правило, необов'язково)
Немо

2
+1. Це єдина відповідь, яка працювала на мене.
weberc2

@Нема приємна. Прийнята відповідь технічно працює, але ваша найпростіша на сьогоднішній день.
Avindra Goolcharan

9

Це запитання, а також більшість інших відповідей тут, виникають через нерозуміння того, як розподіляються проекти, що використовують систему побудови GNU (він же Autotools). Насправді у випадку згаданої ОП програми бібліотеки Erlang XMPP , як видається, непорозуміння ставиться до розробників.

Отримання програмного забезпечення правильним способом

Якщо все, що ви хочете зробити, - це компілювати та встановити проект, випущений за допомогою програми GNU Autotools, тоді не слід перевіряти це у системі управління джерелом . Натомість слід завантажувати пакувальну версію джерела, надану розробником. Зазвичай вони мають форму тарілок, розміщених на веб-сайті проекту. Для проектів, які повністю розміщуються в GitHub, Savannah або іншому подібному хостинговому сервісі, ці тарболи зазвичай знаходяться за деяким посиланням з написом "Завантажити" або "Релізи". Ви знімаєте пакет і вимовляєте якийсь варіант стандартного ./configure && make && sudo make installзаклику. Це все; вам не потрібно викликати будь-який з GNU Autotools, і навіть не потрібно встановлювати GNU Autotools у вашій системі.

Причиною того, що вам, користувачеві, не потрібні програми GNU Autotools для складання пакуваного проекту Autotools, є те, що розробник вже використовував різні програми Autotools для створення "розподільної тарболи", яку можна використовувати для створення програмного забезпечення на будь-якому Unix-схожа система. Тарбол розподілу містить високо портативний configureскрипт, який сканує середовище збирання, перевіряє залежності та створює Makefileіндивідуальну для вашої системи.

То коли вам потрібні автоінструменти?

Єдиною причиною, що вам потрібно буде самостійно встановити та викликати GNU Autotools, є те, якщо ви хочете виконати розробку проекту, побудованого за допомогою Autotools. І навіть тоді вам, мабуть, не знадобляться Автоінструменти, якщо ви не зміните залежність проекту. У такому випадку вам справді потрібно перевірити оригінальне джерело, внести відповідні зміни до вхідних файлів configure.ac, пов'язаних з Autotools ( Makefile.am, тощо), та запустити на них Autotools для створення нового configureфайлу. Якщо ви хочете самостійно опублікувати оновлений пакет, тоді ви використовуєте Makefile, створений Autotools, для створення нового тарболу дистрибуції, а потім публікуйте цей тарбол десь в Інтернеті.

Проблема полягає в тому, що деякі розробники роблять своє сховище джерела загальнодоступним, але нехтують публікацією своїх дистрибутивів (або ускладнюють пошук, де вони публікуються). Наприклад, замість публікації тарболів їх розповсюдження як GitHub Releases , GitHub Release бібліотеки Erlang XMPP є тарілками сховища сировини. Це унеможливлює складання проекту без автоінструментів GNU, перемагаючи в першу чергу цілі використання Autotools.

TL; резюме DR

Автоінструменти GNU - це те, що розробники використовують для створення портативних пакетів вихідного коду для користувачів. Користувачі повинні завантажувати та компілювати з цих вихідних пакетів, а не оригінальний код із системи управління джерелом. Якщо розробники не надають ці вихідні пакети, вони не використовують Autotools належним чином, і їх слід обережно ляпати мокрою фореллю, поки вони не побачать помилку своїх шляхів.


Як цей довгий пост пов’язаний із питанням? ОП намагався використовувати автоінструменти? Вони завантажили кілька програм і побігли, ./configure && make && sudo make installяк ви запропонували в другому абзаці.
Пілот6

3
Це актуально, тому що програмне забезпечення, завантажене ОП, не містило правильного сценарію налаштування (а остання версія в керуванні джерелами, а також випущені тарболи, взагалі не містять сценарій налаштування). Майже всі відповіді тут говорять про те, щоб ОП запустив Autotools. Хоча це може вирішити проблему, важливо зрозуміти першопричину: розробники - це відповідальність за запуск Autotools, і вони цього не зробили правильно (або зовсім).
Психонавт

1
Це хороша відповідь, і хоча мені подобається фраза "м'яко ляснувши мокрою фореллю", може бути більш доцільним чітко згадати правильну відповідь - повідомити про помилку вгору за течією.
Вільям Перселл

1
@WilliamPursell Я вважаю, каламбур призначений. :)
Психонавт

4

У мене була ця проблема, і я виявив, що це пов’язано з наступним рядком у configure.ac:

AC_CONFIG_AUX_DIR([build-aux])

Рядок сам по собі не був поганим, однак його потрібно було перемістити ближче до верхньої частини configure.acфайлу.


3

Виконайте наступне, щоб вирішити цю проблему,

sudo apt-get install autogen libtool shtool

Потім виконайте встановлення

sh autogen.sh --prefix=prefered_install_path
make 
make install 

2

При спробі скласти GNU Octave з сховища Mercurial, ви можете зіткнутися з цією проблемою. Виправлення полягає в запуску ./bootstrapпід час перебування в корені дерева-джерела.



0

У мене була подібна проблема, коли я намагався ./configureввести вихідний код і отримав таку ж помилку, що і розміщена. Нарешті вирішив мої проблеми, ввівши код:

sudo apt-get install autotools-dev

2
Помилка: не вдається знайти автоінструменти пакета.
Маурісіо Шеффер

Те ж саме. Помилка: не вдається знайти автоінструменти пакета. Захищений. Вибачте.
PJunior

У мене вже встановлений цей пакет, що б він не був. Тим не менш, налаштування сценарію є захищеним.
Боан

0

Після встановлення autogenпакета ця помилка була вирішена в wolfSSLзбірці.

sudo apt-get install autogen libtool shtool

0

У мене була дещо інша помилка:

configure: error: cannot find install-sh, install.sh, or shtool in "." "./.." "./../.."

Виявляється, налаштування не вдалося знайти build-aux/install-sh. Я пов’язав це так

ln -s build-aux/install-sh .

то воно будує.

Сподіваюся, що хтось допомагає там!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.