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 नहीं मिल सकता है

Google बहुत कम मददगार था। मुझे यकीन नहीं है कि मैं क्या करने वाला हूं। कोई भी सहायताकाफी प्रशंसनीय होगी

जवाबों:


109

मुझे निम्नलिखित टूल का उपयोग करके कॉन्फ़िगर स्क्रिप्ट बनाने के लिए मिला:

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

मेरे पास सभी निर्भरताएं नहीं हैं, इसलिए मैं अभी इसका परीक्षण नहीं कर सकता, लेकिन यह आमतौर पर है कि आप एक एसी फ़ाइल से कॉन्फ़िगर स्क्रिप्ट कैसे बनाएंगे।


2
README के ​​निर्देशों को संभवतः कहीं और से नेत्रहीन रूप से कॉपी किया गया था। मुझे यह स्वीकार करना होगा कि मैं ऑटोकॉन्फ़ टूलकिन के हर विवरण को नहीं समझता; यह मूल रूप से मैक्रोज़ का एक संग्रह है जो आपकी कॉन्फ़िगर स्क्रिप्ट बनाने के लिए उत्पन्न होता है और इसका उपयोग किया जाता है (जो बदले में, संकलन और स्थापना प्रक्रिया के लिए चरण सेट करता है)। मुझे इन चीजों को कभी भी ठीक नहीं करना था, इसलिए मैं एक विशेषज्ञ नहीं हूं, लेकिन यहां कुछ काफी व्यापक व्याख्याएं हैं
sebastian_k

12
प्रोग्रामर पर ध्यान दें: कृपया स्वचालित टूलकिन का उपयोग करना बंद करें। कृपया
Qix

1
@Qix, क्या आप, कृपया, हमें समझा सकते हैं क्यों?
सर्गेई

4
@ सर्गी यह गन्दा, धीमा और लगातार टूटता है। यह परिभाषित करता है और अविश्वसनीय रूप से जादू करता है । निर्भरता को संभालने (या इसके अभाव) का इसका तरीका गुप्त त्रुटि संदेश देता है, और इससे उत्पन्न होने वाली फाइलें सबसे अच्छे रूप में अपठनीय होती हैं और बुरे तरीके से टूट जाती हैं।
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। यह एकमात्र उत्तर है जिसने मेरे लिए काम किया।
वेबर 2

@ नीमो अच्छा है। स्वीकृत उत्तर तकनीकी रूप से काम करता है, लेकिन आपका अब तक का सबसे सरल है।
अविन्द्र गोलचारण ०

9

यह सवाल, और यहां अधिकांश अन्य उत्तर, इस बात की गलतफहमी से उत्पन्न होते हैं कि GNU बिल्ड सिस्टम (उर्फ ऑटोटूलस) का उपयोग करने वाली परियोजनाएं कैसे वितरित की जाती हैं। वास्तव में, ओपी द्वारा उल्लिखित एरलंग एक्सएमपीपी पुस्तकालय के मामले में, डेवलपर्स की ओर से गलतफहमी दिखाई देती है।

सॉफ्टवेयर को सही तरीके से प्राप्त करना

यदि आप सब करना चाहते हैं और जीएनयू ऑटोटूलस के साथ जारी एक परियोजना को संकलित और स्थापित करना चाहते हैं, तो आपको स्रोत नियंत्रण प्रणाली से इसकी जांच नहीं करनी चाहिए । इसके बजाय आपको डेवलपर द्वारा प्रदत्त पैकेज्ड सोर्स रिलीज़ को डाउनलोड करना चाहिए । ये आम तौर पर प्रोजेक्ट की वेबसाइट पर वितरित टारबॉल का रूप लेते हैं। उन परियोजनाओं के लिए जो पूरी तरह से GitHub, Savannah या कुछ इसी तरह की होस्टिंग सेवा पर होस्ट की जाती हैं, ये टारबॉल आमतौर पर "डाउनलोड" या "रिलीज़" लेबल वाले कुछ लिंक के पीछे पाए जाएंगे। आप पैकेज को अनटार करते हैं और मानक ./configure && make && sudo make installझुकाव के कुछ प्रकारों का उच्चारण करते हैं। बस इतना ही; आपको किसी भी GNU ऑटोटूल का आह्वान करने की आवश्यकता नहीं है, और आपके सिस्टम पर स्थापित GNU ऑटोटूल की भी आवश्यकता नहीं है।

कारण यह है कि आप, उपयोगकर्ता, को ऑटोटूलस-पैकेज्ड प्रोजेक्ट को संकलित करने के लिए GNU ऑटोटूलस की आवश्यकता नहीं है, डेवलपर ने पहले से ही "वितरण टारबॉल" बनाने के लिए विभिन्न ऑटोटूलस कार्यक्रमों का उपयोग किया है, जिसका उपयोग किसी भी सॉफ्टवेयर को बनाने के लिए किया जा सकता है। यूनिक्स जैसी प्रणाली। वितरण टारबॉल में एक अत्यधिक पोर्टेबल configureस्क्रिप्ट होती है जो बिल्ड वातावरण को स्कैन करती है, निर्भरता की जांच करती है, और Makefileआपके सिस्टम के लिए एक अनुकूलित निर्माण करती है।

तो आपको ऑटोटूल की आवश्यकता कब होती है?

जीएनयू ऑटोटॉल्स को स्वयं स्थापित करने और इनवॉइस करने का एकमात्र कारण यह है कि यदि आप ऑटोटूलस के साथ निर्मित परियोजना पर विकास कार्य करना चाहते हैं । और तब भी, आपको शायद ऑटोटूलस की ज़रूरत नहीं होगी जब तक कि आप परियोजना की निर्भरता को नहीं बदलते। उस मामले में, आप वास्तव में मूल स्रोत की जाँच करने के लिए, Autotools-विशिष्ट इनपुट फ़ाइलें (करने के लिए उपयुक्त बदलाव करने की आवश्यकता होगी configure.ac, Makefile.amआदि) एक नया उत्पन्न करने के लिए उन पर Autotools चलाते हैं, और configureफ़ाइल। यदि आप संशोधित पैकेज को स्वतंत्र रूप से प्रकाशित करना चाहते हैं, तो आप एक नया वितरण टारबॉल उत्पन्न करने के लिए ऑटोटूलस द्वारा निर्मित मेकफाइल का उपयोग करेंगे, और फिर उस टारबॉल को ऑनलाइन कहीं भी प्रकाशित करेंगे।

समस्या यह है कि कुछ डेवलपर्स अपने स्रोत रिपॉजिटरी को सार्वजनिक रूप से उपलब्ध कराते हैं लेकिन अपने वितरण तारकोल को प्रकाशित करने के लिए उपेक्षा करते हैं (या जहां वे प्रकाशित होते हैं, यह खोजना मुश्किल है)। उदाहरण के लिए, GitHub Releases के रूप में उनके वितरण टारबॉल को प्रकाशित करने के बजाय , Erlang XMPP लाइब्रेरी के GitHub Releases कच्चे स्रोत भंडार के टारबॉल हैं। यह GNU ऑटोटॉल्स के बिना प्रोजेक्ट को संकलित करना असंभव बनाता है, पहले स्थान पर ऑटोटूल का उपयोग करने के पूरे उद्देश्य को पराजित करता है।

टीएल; डीआर सारांश

GNU ऑटोटॉल्स कुछ ऐसी चीजें हैं जो डेवलपर्स उपयोगकर्ताओं के लिए पोर्टेबल स्रोत कोड पैकेज बनाने के लिए उपयोग करते हैं। उपयोगकर्ताओं को इन स्रोत पैकेजों से डाउनलोड और संकलन करना चाहिए, न कि स्रोत नियंत्रण प्रणाली से मूल कोड। यदि डेवलपर्स इन स्रोत पैकेजों को प्रदान नहीं करते हैं, तो वे ऑटोटूलस का सही तरीके से उपयोग नहीं कर रहे हैं, और जब तक वे अपने तरीकों की त्रुटि नहीं देखते हैं, तब तक उन्हें गीले ट्राउट के साथ थप्पड़ मारा जाना चाहिए ।


यह लंबी पोस्ट प्रश्न से संबंधित कैसे है? क्या ओपी ने ऑटोटूल का उपयोग करने की कोशिश की? ./configure && make && sudo make installजब आप दूसरे पैराग्राफ में सुझाव देते हैं, तो वे कुछ नरम डाउनलोड करते हैं और भाग जाते हैं।
पायलट ६

3
यह प्रासंगिक है क्योंकि ओपी द्वारा डाउनलोड किए गए सॉफ़्टवेयर में एक सही कॉन्फ़िगर स्क्रिप्ट नहीं थी (और स्रोत नियंत्रण में सबसे हाल का संस्करण, साथ ही जारी तारकोल, एक कॉन्फ़िगर स्क्रिप्ट बिल्कुल नहीं है)। यहाँ लगभग सभी जवाब ओपी को ऑटोटूल चलाने के लिए कह रहे हैं। हालांकि यह समस्या के आसपास काम कर सकता है, मूल कारण को समझना महत्वपूर्ण है: डेवलपर्स ऑटोटूलस चलाने के लिए जिम्मेदार हैं, और उन्होंने इसे सही तरीके से (या बिल्कुल) नहीं किया है।
साइकोनॉट

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

जब जीआरयू ऑक्टेव को मर्क्यूरियल रिपॉजिटरी से संकलित करने की कोशिश की जा रही है, तो आप इस समस्या से घिर सकते हैं। ./bootstrapस्रोत वृक्ष की जड़ में रहते हुए फिक्स को चलाना है ।



0

जब मैं ./configureएक स्रोत कोड की कोशिश करता था तो मुझे ऐसी ही समस्या होती थी और पोस्ट के समान त्रुटि मिलती थी । अंत में कोड दर्ज करके मेरे मुद्दों को हल किया:

sudo apt-get install autotools-dev

2
त्रुटि: पैकेज ऑटोटूल का पता लगाने में असमर्थ।
मौरिसियो शेफ़र

मुझे भी। त्रुटि: पैकेज ऑटोटूल का पता लगाने में असमर्थ। Downvoted। माफ़ करना।
जून जूनियर

मेरे पास पहले से ही वह पैकेज स्थापित है, चाहे वह कुछ भी हो। कॉन्फ़िगर स्क्रिप्ट को फिर भी बोर्क किया जाता है।
Boann

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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.