Tidak dapat menemukan install-sh, install.sh, atau shtool di ac-aux

81

Ini adalah pertama kalinya saya mencoba mengkompilasi dan menginstal apa pun di mesin linux. Saya mendapatkan versi terbaru https://github.com/processone/exmpp via git dan membaca instruksi yang menyatakan:

2. Bangun dan pasang

Exmpp menggunakan Autotools. Karena itu prosesnya sangat umum:

$ ./configure
$ make
$ sudo make install

setelah tipe ./configuresaya mendapatkan error

Tidak dapat menemukan install-sh, install.sh, atau shtool di ac-aux

Google tidak banyak membantu. Tidak yakin sama sekali apa yang harus saya lakukan. Bantuan apa pun akan sangat dihargai

Mikha
sumber

Jawaban:

109

Saya mendapatkannya untuk membuat skrip konfigurasi menggunakan alat berikut:

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

Saya tidak memiliki semua dependensi jadi saya tidak dapat mengujinya sekarang, tetapi ini umumnya bagaimana Anda akan membuat skrip konfigurasi dari file ac.

sebastian_k
sumber
2
Instruksi dalam README mungkin disalin secara membabi buta dari tempat lain. Saya harus mengakui bahwa saya tidak mengerti setiap detail dari rantai alat autoconf; pada dasarnya kumpulan makro yang dihasilkan dan digunakan untuk membuat skrip configure Anda (yang, pada gilirannya, menetapkan tahapan untuk proses kompilasi dan instalasi). Saya tidak pernah harus memperbaiki hal-hal ini, jadi saya bukan ahli, tetapi ada beberapa penjelasan yang cukup luas di sini
sebastian_k
12
Catatan untuk programmer: silakan berhenti menggunakan toolchain automake. Tolong .
Qix
1
@Qix, bisakah Anda menjelaskan mengapa?
Sergei
4
@ Safi itu berantakan, lambat, dan selalu rusak. Itu mengacaukan definisi dan sangat ajaib . Caranya menangani dependensi (atau ketiadaannya) memberikan pesan kesalahan samar, dan file yang dihasilkannya tidak dapat dibaca dengan cara terbaik dan mimpi buruk rusak paling buruk.
Qix
4
@Sergei CMake adalah yang paling layak saat ini menurut saya. Saya yakin akan ada sesuatu yang lebih baik dalam waktu dekat.
Qix
40

Yah, saya mencoba jawaban sebastian_k dan itu tidak berhasil untuk saya ( ./configurejatuh di tengah jalan dengan kesalahan yang sangat aneh).

Apa yang berhasil, namun berhasil bagi saya adalah menyalin instruksi yang digunakan dalam log pembangunan ini yang saya temukan

Versi singkat (jadi Anda tidak harus mengarungi sendiri) adalah:

$ autoreconf -vif
$ ./configure --prefix=/usr/lib/erlang/lib
$ make
$ sudo make install
entropi
sumber
16
+1. autoreconf -iadalah jawaban yang benar ( vdan fbiasanya opsional)
Nemo
2
+1. Ini satu-satunya jawaban yang berhasil untuk saya.
weberc2
@ Tidak ada yang bagus. Jawaban yang diterima secara teknis berfungsi, tetapi jawaban Anda adalah yang paling sederhana.
Avindra Goolcharan
9

Pertanyaan ini, dan sebagian besar jawaban lain di sini, muncul dari kesalahpahaman tentang bagaimana proyek yang menggunakan Sistem Bangun GNU (alias Autotools) didistribusikan. Bahkan, dalam kasus perpustakaan Erlang XMPP yang disebutkan oleh OP, kesalahpahaman tampaknya berada di pihak pengembang.

Memperoleh perangkat lunak dengan cara yang benar

Jika semua yang ingin Anda lakukan adalah mengkompilasi dan menginstal proyek yang dirilis dengan GNU Autotools, maka Anda tidak boleh memeriksanya dari sistem kontrol sumber . Anda sebaiknya mengunduh rilis sumber paket yang disediakan oleh pengembang. Ini biasanya berbentuk tarball yang didistribusikan di situs web proyek. Untuk proyek yang dihosting sepenuhnya di GitHub, Savannah, atau layanan hosting serupa, tarbal ini biasanya akan ditemukan di balik beberapa tautan yang berlabel "Unduh" atau "Rilis". Anda menghapus paket dan mengucapkan beberapa varian dari ./configure && make && sudo make installmantra standar . Itu saja; Anda tidak perlu memanggil Autotools GNU, dan bahkan tidak perlu menginstal Autotools GNU di sistem Anda.

Alasan bahwa Anda, pengguna, tidak perlu GNU autotools untuk mengkompilasi sebuah proyek autotools-dikemas adalah bahwa pengembang telah sudah menggunakan berbagai program Autotools untuk menghasilkan "tarball distribusi" yang dapat digunakan untuk membangun perangkat lunak pada setiap Sistem seperti-unix. Tarbal distribusi berisi configureskrip yang sangat portabel yang memindai lingkungan build, memeriksa dependensi, dan membuat Makefilekustomisasi untuk sistem Anda.

Jadi kapan Anda membutuhkan Autotools?

Satu-satunya alasan Anda harus menginstal dan memohon GNU Autotools sendiri adalah jika Anda ingin melakukan pekerjaan pengembangan pada proyek yang dibangun dengan Autotools. Dan bahkan kemudian, Anda mungkin tidak akan membutuhkan Autotools kecuali Anda mengubah dependensi proyek. Dalam hal ini, Anda memang akan perlu memeriksa sumber aslinya, membuat perubahan yang sesuai dengan Autotools spesifik file input ( configure.ac, Makefile.am, dll), dan menjalankan Autotools pada mereka untuk menghasilkan baru configureberkas. Jika Anda ingin mempublikasikan paket revisi secara mandiri, maka Anda akan menggunakan Makefile yang dihasilkan oleh Autotools untuk menghasilkan tarball distribusi baru, dan kemudian menerbitkan tarball itu di suatu tempat online.

Masalahnya adalah bahwa beberapa pengembang membuat repositori sumbernya tersedia untuk umum tetapi lalai untuk menerbitkan tarbal distribusi mereka (atau membuatnya sulit untuk menemukan di mana mereka diterbitkan). Misalnya, alih-alih menerbitkan tarbal distribusi mereka sebagai GitHub Rilis , rilis GitHub perpustakaan Erlang XMPP adalah tarbal dari repositori sumber mentah. Hal ini membuat mustahil untuk mengkompilasi proyek tanpa Autotools GNU, mengalahkan seluruh tujuan menggunakan Autotools di tempat pertama.

TL; ringkasan DR

GNU Autotools adalah sesuatu yang digunakan pengembang untuk membuat paket kode sumber portabel untuk pengguna. Pengguna harus mengunduh dan mengkompilasi dari paket sumber ini, bukan kode asli dari sistem kontrol sumber. Jika pengembang tidak menyediakan paket sumber ini, maka mereka tidak menggunakan Autotools dengan benar, dan harus ditampar dengan lembut dengan trout basah sampai mereka melihat kesalahan cara mereka.

Psychonaut
sumber
Bagaimana pos panjang ini terkait dengan pertanyaan? Apakah OP mencoba menggunakan autotool? Mereka mengunduh beberapa soft dan berlari ./configure && make && sudo make installseperti yang Anda sarankan pada paragraf kedua.
Pilot6
3
Ini relevan karena perangkat lunak yang diunduh oleh OP tidak mengandung skrip konfigurasi yang benar (dan versi terbaru dalam kontrol sumber, ditambah tarbal yang dirilis, tidak mengandung skrip konfigurasikan sama sekali). Hampir semua jawaban di sini memberi tahu OP untuk menjalankan Autotools. Meskipun hal ini dapat mengatasi masalah, penting untuk memahami penyebab utama: pengembang adalah yang bertanggung jawab untuk menjalankan Autotools, dan mereka belum melakukan ini dengan benar (atau sama sekali).
Psychonaut
1
Ini adalah jawaban yang baik, dan meskipun saya suka frasa "ditampar lembut dengan trout basah" mungkin lebih tepat untuk secara eksplisit menyebutkan tanggapan yang benar adalah melaporkan bug di hulu.
William Pursell
1
@ WilliamPursell Saya menganggap permainan ini dimaksudkan. :)
Psychonaut
4

Saya punya masalah ini, dan menemukan itu karena baris berikut di configure.ac:

AC_CONFIG_AUX_DIR([build-aux])

Baris itu tidak buruk, tetapi perlu dipindahkan lebih dekat ke bagian atas configure.acfile.

Craig McQueen
sumber
3

Silakan lakukan hal berikut untuk memperbaiki masalah ini,

sudo apt-get install autogen libtool shtool

Kemudian lakukan instalasi

sh autogen.sh --prefix=prefered_install_path
make 
make install 
Ravi Hegde
sumber
2

Saat mencoba mengkompilasi GNU Octave dari repositori Mercurial, Anda mungkin menemukan masalah ini. Cara mengatasinya adalah menjalankan ./bootstrapsementara berada di root dari pohon sumber.

Ruslan
sumber
1

sudo apt-get install automake autoconf

itu berhasil

Shafiul Karim Bulan
sumber
0

Saya memiliki masalah yang sama ketika saya mencoba ./configurekode sumber dan mendapatkan kesalahan yang sama seperti yang diposting. Akhirnya diselesaikan masalah saya dengan memasukkan kode:

sudo apt-get install autotools-dev
Retnan
sumber
2
Kesalahan: Tidak dapat menemukan autotool paket.
Mauricio Scheffer
Sama disini. Kesalahan: Tidak dapat menemukan autotool paket. Diturunkan. Maaf.
PJunior
Saya sudah menginstal paket itu, apa pun itu. Meskipun demikian, skrip konfigurasi borked.
Boann
0

Setelah menginstal autogenpaket, kesalahan ini diselesaikan dalam wolfSSLbuild.

sudo apt-get install autogen libtool shtool
rashok
sumber
0

Saya memiliki kesalahan yang sedikit berbeda:

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

Ternyata konfigurasi tidak dapat ditemukan build-aux/install-sh. Saya menautkannya seperti itu

ln -s build-aux/install-sh .

lalu dibangun.

Semoga itu bisa membantu seseorang di luar sana!

Barmaley
sumber