ac-aux에서 install-sh, install.sh 또는 shtool을 찾을 수 없습니다


81

이것은 리눅스 컴퓨터에서 무엇이든 컴파일하고 설치하려고하는 첫 번째 시간입니다. git을 통해 최신 버전의 https://github.com/processone/exmpp 를 얻었으며 다음 상태를 나타내는 지침을 읽었습니다.

2. 빌드 및 설치

Exmpp는 Autotools를 사용합니다. 따라서 프로세스는 매우 일반적입니다.

$ ./configure
$ make
$ sudo make install

유형 후 ./configure오류가 발생합니다

ac-aux에서 install-sh, install.sh 또는 shtool을 찾을 수 없습니다

구글은 거의 도움이되지 않았다. 내가해야 할 일을 전혀 확신하지 못합니다. 어떤 도움이라도 대단히 감사하겠습니다

답변:


109

다음 도구를 사용하여 구성 스크립트를 작성했습니다.

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

모든 종속성이 없으므로 지금 테스트 할 수는 없지만 일반적으로 ac 파일에서 구성 스크립트를 만드는 방법입니다.


2
README의 지침은 아마도 다른 곳에서 맹목적으로 복사되었을 것입니다. autoconf 툴체인의 모든 세부 사항을 이해하지 못한다는 것을 인정해야합니다. 기본적으로 매크로를 생성하여 구성 스크립트를 작성하고 컴파일 및 설치 프로세스를위한 단계를 설정하는 데 사용됩니다. 나는 이런 것들을 미세 조정할 필요가 없었기 때문에 전문가는 아니지만 여기에
sebastian_k

12
프로그래머 참고 사항 : automake 툴체인 사용을 중단하십시오. 하십시오 .
Qix

1
@Qix, 이유를 설명해 주시겠습니까?
Sergei

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정답입니다 ( vf일반적으로 선택 사항 임)
Nemo

2
+1. 이것은 나를 위해 일한 유일한 대답입니다.
weberc2

@ 네모 좋은 사람. 받아 들여진 대답은 기술적으로 효과가 있지만 가장 간단합니다.
Avindra Goolcharan

9

이 질문과 다른 답변은 GNU Build System (일명 Autotools)을 사용하는 프로젝트가 어떻게 배포 되는지에 대한 오해에서 비롯됩니다 . 실제로 OP가 언급 한 Erlang XMPP 라이브러리 의 경우 개발자가 오해를하는 것으로 보입니다.

올바른 방법으로 소프트웨어 얻기

GNU Autotools로 릴리스 된 프로젝트를 컴파일하고 설치하기 만하면 소스 제어 시스템에서 체크 아웃해서는 안됩니다 . 대신 개발자가 제공 한 패키지 소스 릴리스 를 다운로드해야합니다 . 이들은 보통 프로젝트 웹 사이트에 배포 된 타르볼 형태를 취합니다. GitHub, Savannah 또는 이와 유사한 호스팅 서비스에서 전적으로 호스팅되는 프로젝트의 경우 이러한 타르볼은 일반적으로 "다운로드"또는 "릴리스"라는 링크 뒤에 있습니다. 패키지 포장을 풀고 표준 ./configure && make && sudo make install주문의 변형을 말하십시오 . 그게 다야; GNU Autotools를 호출 할 필요가 없으며 시스템에 GNU Autotools를 설치하지 않아도됩니다.

사용자가 Autotools 패키지 프로젝트를 컴파일하기 위해 GNU Autotools가 필요하지 않은 이유는 개발자가 이미 다양한 Autotools 프로그램을 사용하여 소프트웨어를 빌드하는 데 사용할 수있는 "배포 tarball"을 생성했기 때문입니다 유닉스 계열 시스템. 배포판 tarball에는 configure빌드 환경을 스캔하고 종속성을 확인하며 Makefile시스템에 맞게 사용자 정의를 구성하는 이식성이 뛰어난 스크립트가 포함되어 있습니다.

언제 Autotools가 필요합니까?

GNU Autotools를 직접 설치하고 호출해야하는 유일한 이유는 Autotools로 빌드 된 프로젝트에서 개발 작업 을 수행하려는 경우 입니다. 그럼에도 불구하고 프로젝트의 종속성을 변경하지 않으면 Autotools가 필요하지 않을 것입니다. 이 경우, 당신은 정말로, 원래의 소스를 확인하는 데 필요한 Autotools가 특정 입력 파일 (적절한 변화 할 것이다 configure.ac, Makefile.am등), 새로운 생성하는 그들에 Autotools가 실행 configure파일을. 수정 된 패키지를 독립적으로 게시하려면 Autotools에서 생성 한 Makefile을 사용하여 새 배포 tarball을 생성 한 다음 해당 tarball을 온라인 어딘가에 게시하십시오.

문제는 일부 개발자가 소스 리포지토리를 공개적으로 사용할 수 있지만 배포 tarball을 게시하지 않거나 게시 된 위치를 찾기가 어렵다는 것입니다. 예를 들어, 대신 GitHub의 자료로 자신의 분포 타르볼을 게시얼랑 XMPP 라이브러리의 GitHub의 자료는 원시 소스 저장소의 타르볼입니다. 이것은 GNU Autotools 없이는 프로젝트를 컴파일하는 것을 불가능하게하여 Autotools를 사용하는 전체 목적을 우선적으로 상실합니다.

TL; DR 요약

GNU Autotools는 개발자가 사용자를위한 이식 가능한 소스 코드 패키지를 만들기 위해 사용하는 것입니다. 사용자 는 소스 제어 시스템의 원본 코드가 아닌 이러한 소스 패키지에서 다운로드하여 컴파일해야합니다. 개발자가 이러한 소스 패키지를 제공하지 않으면 Autotools를 올바르게 사용하지 않는 것이므로 방법에 오류가 나타날 때까지 젖은 송어가볍게 두 드려야 합니다.


이 긴 글은 질문과 어떤 관련이 있습니까? OP가 autotools를 사용하려고 했습니까? ./configure && make && sudo make install두 번째 단락에서 제안한대로 소프트를 다운로드하여 실행 했습니다.
Pilot6

3
OP에서 다운로드 한 소프트웨어에 올바른 구성 스크립트가 포함되어 있지 않기 때문에 (그리고 소스 제어의 최신 버전과 릴리스 된 타르볼에는 구성 스크립트가 전혀 포함되어 있지 않기 때문에) 관련이 있습니다. 여기서 거의 모든 답변은 OP에게 Autotools를 실행하라고 지시합니다. 이것이 문제를 해결할 수도 있지만 근본 원인을 이해하는 것이 중요합니다. 개발자는 Autotools를 실행할 책임이 있으며 올바르게 수행하지 않았거나 전혀하지 않았습니다.
Psychonaut September

1
이것은 좋은 답변이며, "젖은 송어로 부드럽게 때리다"라는 문구가 마음에 들지만 버그 업스트림을보고하는 것이 올바른 응답임을 명시 적으로 언급하는 것이 더 적절할 수 있습니다.
William Pursell

1
@WilliamPursell 나는 말장난을 의도합니다. :)
Psychonaut

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

Mercurial 저장소에서 GNU Octave를 컴파일하려고 할 때이 문제가 발생할 수 있습니다. 수정은 ./bootstrap소스 트리의 루트에있는 동안 실행 하는 것입니다.



0

./configure소스 코드를 사용 하려고 할 때 비슷한 문제가 발생하여 게시 된 것과 동일한 오류가 발생했습니다. 마지막으로 코드를 입력하여 문제를 해결했습니다.

sudo apt-get install autotools-dev

2
오류 : 패키지 autotools를 찾을 수 없습니다.
Mauricio Scheffer

여기도 마찬가지입니다. 오류 : 패키지 autotools를 찾을 수 없습니다. 공감. 죄송합니다.
PJunior

패키지가 무엇이든 이미 설치되어 있습니다. 그럼에도 불구하고 구성 스크립트가 중단되었습니다.
Boann

0

autogen패키지를 설치 한 후이 오류는 wolfSSL빌드 에서 해결되었습니다 .

sudo apt-get install autogen libtool shtool

0

약간 다른 오류가있었습니다.

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

configure를 찾을 수 없습니다 build-aux/install-sh. 나는 그렇게 연결

ln -s build-aux/install-sh .

그런 다음 빌드됩니다.

그것이 누군가를 도울 수 있기를 바랍니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.