Ac-aux içinde install-sh, install.sh veya shtool bulunamıyor


81

Bu benim linux makinede herhangi bir şeyi derlemeye ve yüklemeye ilk kez başladım. Https://github.com/processone/exmpp adresinden en son sürümü git üzerinden aldım ve bu durumu gösteren talimatları okudum:

2. Oluştur ve yükle

Exmpp, Otomatik Araçlar'ı kullanır. Bu nedenle süreç oldukça yaygındır:

$ ./configure
$ make
$ sudo make install

yazdıktan sonra ./configurehatayı alıyorum

Ac-aux içinde install-sh, install.sh veya shtool bulunamıyor

Google yardımsızdı. Yapmam gereken şeyden emin değilim. Herhangi bir yardım çok takdir edilecektir

Yanıtlar:


109

Aşağıdaki araçları kullanarak configure betiğini yarattım:

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

Tüm bağımlılıklara sahip değilim, bu yüzden şu anda test edemiyorum, ancak bu genellikle bir ac dosyasından configure betiği oluşturacağınız durumdur.


2
README'deki talimatlar muhtemelen başka bir yerden kör bir şekilde kopyalanmıştır. Autoconf alet zincirinin her detayını anlamadığımı itiraf etmeliyim; Temelde configure betiğinizi oluşturmak için üretilmiş ve kullanılan bir makrolar topluluğudur (sırayla derleme ve kurulum sürecinin aşamasını belirler). Bu şeyleri ince ayar yapmak zorunda kalmamıştım, bu yüzden uzman değilim, ama burada oldukça geniş açıklamalar var
sebastian_k

12
Programcılara not: Lütfen automake alet zincirini kullanmayı bırakın. Lütfen .
Qix

1
@Qix, lütfen bize nedenini açıklayabilir misiniz?
Sergei

4
@Sergei dağınık, yavaş ve sürekli kırılıyor. Kesişir ve tanımlar, inanılmaz derecede sihirdir . Bağımlılıklarını ele almanın yolu (veya yokluğu) şifreli hata mesajları verir ve ürettiği dosyalar en iyi şekilde okunamaz ve en kötü ihtimalle de kabustan kırılır.
Qix

4
@ Sergei CMake bence bu noktada en uygun olanıdır. Yakın gelecekte daha iyi bir şeyler olacağına eminim.
Qix

40

Şey, sebastian_k'ın cevabını denedim ve bu işe yaramadı ( ./configureçok garip bir hata ile birlikte çarptı).

Ne yaptı, ancak benim için çalışmam, bulduğum bu derleme günlüğünde kullanılan talimatları kopyalamaktı.

Kısa versiyon (bu nedenle kendiniz üzerinden geçmeniz gerekmez):

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

16
+1. autoreconf -idoğru cevaptır ( vve fgenellikle isteğe bağlıdır)
Nemo

2
+1. Bu benim için çalışan tek cevap.
weberc2

@Hayır güzel biri. Kabul edilen cevap teknik olarak işe yarar, ancak sizinki en basitinden daha kolaydır.
Avindra Goolcharan

9

Bu soru ve buradaki diğer cevapların çoğu, GNU Yapı Sistemini (aka Autotools) kullanan projelerin nasıl dağıtıldığının yanlış anlaşılmasından kaynaklanmaktadır . Aslında, OP tarafından belirtilen Erlang XMPP kütüphanesi durumunda , yanlış anlama geliştiricilerin bir parçası gibi görünmektedir.

Yazılımın doğru şekilde elde edilmesi

Tek yapmanız gereken GNU Autotools ile piyasaya sürülen bir projeyi derleyip kurmaksa, kaynak kontrol sisteminden kontrol etmemelisiniz . Bunun yerine geliştirici tarafından sağlanan paketlenmiş kaynak sürümünü indirmelisiniz . Bunlar normalde projenin web sitesinde dağıtılan tarball şeklini alır. Tamamen GitHub, Savannah veya benzeri bir barındırma hizmeti üzerinde barındırılan projeler için, bu tarball'lar genellikle "İndir" veya "Bültenler" etiketli bir bağlantının arkasında bulunur. Paketi aç ve standart ./configure && make && sudo make installkuluçka makinesinin bir türevini çıkar . Bu kadar; GNU Autotools’un herhangi birini çağırmanıza gerek yoktur ve GNU Autotools’un sisteminizde kurulu olması gerekmez.

Eğer kullanıcı, bir Autotools paketlenmiş projeyi derlemek için GNU Autotools gerekmez nedeni geliştirici olmasıdır zaten herhangi yazılımı oluşturmak için kullanılabilecek bir "dağıtım tarball" üretmek için çeşitli Autotools programları kullanılan Unix benzeri sistem. Dağıtım tarball'u configure, derleme ortamını tarayan, bağımlılıkları denetleyen ve Makefilesisteminize göre özelleştirilmiş bir yapı oluşturan oldukça taşınabilir bir komut dosyası içerir .

Peki, ne zaman Autotools'a ihtiyacınız var?

GNU Autotools'u kendiniz kurmak ve çağırmak için ihtiyacınız olan tek şey, Autotools ile inşa edilmiş bir projede geliştirme çalışması yapmak istiyorsanız . Ve o zaman bile, projenin bağımlılıklarını değiştirmediğiniz sürece muhtemelen Otomatik Araçlara ihtiyacınız olmayacak. Bu durumda, gerçekten, orijinal kaynak kontrol etmeliyiz Autotools özgü girdi dosyaları (gerekli değişiklikleri yapar configure.ac, Makefile.amvs.) ve yeni oluşturmak için üzerlerinde Autotools çalıştırmak configuredosyayı. Gözden geçirilmiş paketi bağımsız olarak yayınlamak istiyorsanız, Autotools tarafından oluşturulan Makefile'ı yeni bir dağıtım tarball'ı oluşturmak için kullanır ve ardından bu tarball'ı çevrimiçi bir yerde yayınlarsınız.

Buradaki sorun, bazı geliştiricilerin kaynak depolarını kamuya açık hale getirmelerine karşın, dağıtım tarball'larını yayınlamayı ihmal etmeleri (veya yayınlandıkları yeri bulmayı zorlaştırmaları). Örneğin, dağıtım tarball'larını GitHub Bültenleri olarak yayınlamak yerine , Erlang XMPP kütüphanesinin GitHub Bültenleri ham kaynak havuzunun tarball'larıdır. Bu, projeyi GNU Autotools olmadan derlemeyi imkansız kılar ve Autotools'u ilk etapta kullanma amacını ortadan kaldırır.

TL; DR özeti

GNU Autotools, geliştiricilerin kullanıcılar için taşınabilir kaynak kod paketleri yapmak için kullandıkları bir şeydir . Kullanıcılar , kaynak kontrol sistemindeki orijinal kodu değil, bu kaynak paketleri indirmeli ve derlemelidir. Geliştiriciler bu kaynak paketleri sağlamazlarsa, Autotools'u doğru şekilde kullanmıyorlar ve yollarının hatasını görene kadar hafifçe alabalıkla tokatlanmaları gerekir .


Bu uzun yazının soru ile ilgisi nedir? OP, otomatik aletler kullanmaya çalıştı mı? Biraz indirdiler ve ./configure && make && sudo make installikinci paragrafta önerildiği gibi koştular .
Pilot6

3
OP tarafından indirilen yazılımın doğru bir config betiği içermemesi (ve kaynak kontrolündeki en son sürüm ile birlikte yayınlanan tarball'ların tümü bir config betiği içermemesi) ile ilgilidir. Buradaki cevapların hemen hepsi OP'ye Autotools çalıştırmasını söylüyor. Bu sorun çözülebilir olsa da, temel nedeni anlamak önemlidir: geliştiriciler Autotools'u kullanmaktan sorumlu olanlardır ve bunu doğru bir şekilde (veya hiç) yapmadılar.
Psychonaut

1
Bu iyi bir cevap ve "nemli bir alabalıkla hafifçe tokatladı" ifadesini sevmeme rağmen, doğru cevabı açıkça belirtmek daha doğru olabilir;
William Pursell

1
@WilliamPursell Anladığım kadarıyla ceza amaçlıdır. :)
Psychonaut

4

Bu sorunu yaşadım ve aşağıdaki satırdan kaynaklandığını gördüm configure.ac:

AC_CONFIG_AUX_DIR([build-aux])

Satır kendi başına fena değildi, ancak configure.acdosyanın üstüne taşınması gerekiyordu .


3

Lütfen bu sorunu çözmek için aşağıdakileri yapın,

sudo apt-get install autogen libtool shtool

Sonra kurulumu yap

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

2

Mercurial deposundan GNU Octave'ı derlemeye çalışırken, bu problemle karşılaşabilirsiniz. Düzeltme, ./bootstrapkaynak ağacın kökündeyken çalıştırmaktır.



0

./configureBir kaynak kodunu denediğimde ve yayınlanan hatayı aldığımda da benzer bir problem yaşadım . Sonunda kodumu girerek sorunlarımı çözdüm:

sudo apt-get install autotools-dev

2
Hata: Otomatik paketler bulunamadı.
Mauricio Scheffer

Burada aynı. Hata: Otomatik paketler bulunamadı. Downvoted. Üzgünüm.
PJunior

Bu paketi zaten yükledim, her neyse. Yapılandırma komut dosyası yine de borked.
Boann

0

autogenPaketi kurduktan sonra bu hata derlemede çözüldü wolfSSL.

sudo apt-get install autogen libtool shtool

0

Biraz farklı bir hatam oldu:

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

Configure bulunamadı bulamadı build-aux/install-sh. Ben böyle bağladım

ln -s build-aux/install-sh .

sonra oluşturur.

Umarım bu orada birine yardım eder!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.