c++ - अपने सिस्टम पर "'aclocal-1.15' कैसे गायब है" चेतावनी?




github makefile (6)

Im github पर c ++ प्रोग्राम चलाने की कोशिश कर रहा हूं। (निम्नलिखित लिंक https://github.com/mortehu/text-classifier पर उपलब्ध है)

मेरे पास एक मैक है, और मैं इसे टर्मिनल में चलाने की कोशिश कर रहा हूं। मुझे लगता है कि मैंने ऑटोकॉन्फ़ और स्वचालित डाउनलोड किया है लेकिन मुझे यकीन नहीं है। प्रोग्राम को चलाने के लिए मैं टर्मिनल में सही फ़ोल्डर में जा रहा हूं

./configure && make 

लेकिन मुझे त्रुटि मिलती है:

चेतावनी: आपके सिस्टम पर 'aclocal-1.15' गायब है। यदि आपको inc acinclude.m4 ’या 'config.ac’ या m4 फाइलों को। कॉन्फ़िगर .ac ’द्वारा संशोधित किया गया है, तो आपको केवल इसकी आवश्यकता होनी चाहिए। 'एसक्लोकल' प्रोग्राम GNU ऑटोमैटिक पैकेज का हिस्सा है: http://www.gnu.org/software/automake इसे चलाने के लिए GNU ऑटोकॉनफ, GNU m4 और पर्ल की भी आवश्यकता है: http://www.gnu.org/software/autoconf http://www.gnu.org/software/m4/ http://www.perl.org/ बनाना: *** [aclocal.m4: त्रुटि 127

मेरे पास xcode और g ++ है और c प्रोग्राम्स चलाने के लिए आवश्यक सभी चीजें हैं, लेकिन जैसा कि स्पष्ट है, मुझे नहीं पता कि Im क्या कर रहा है।

उपरोक्त लिंक में प्रोग्राम को चलाने का सबसे आसान, सरल तरीका क्या है? मुझे लगता है कि यह एक रीडमी और उदाहरण के उपयोग के साथ आता है लेकिन मुझे वह काम नहीं मिल सकता है।


2017 - हाई सिएरा

मैक पर काम करते हुए ऑटोकॉन्फ़ 1.15 प्राप्त करना वास्तव में कठिन है। हमने इसे काम करने के लिए एक विशेषज्ञ को काम पर रखा है। सब कुछ खूबसूरती से काम किया।

बाद में मैं मैक को हाई सिएरा में अपग्रेड करने के लिए हुआ।

डॉकर पाइपलाइन ने काम करना बंद कर दिया!

भले ही ऑटोकॉन्फ़ 1.15 मैक पर ठीक काम कर रहा हो।

कैसे ठीक करना है,

संक्षिप्त उत्तर, मैंने बस स्थानीय रेपो को ट्रैश किया, और रेपो को फिर से जांचा।

यह सुझाव इस QA पृष्ठ और अन्य जगहों पर मिश्रण में नोट किया गया है।

यह तो ठीक काम किया!

यह aclocal.m4 और इसी तरह की फ़ाइलों के साथ कुछ करने की संभावना है। (लेकिन जो वास्तव में जानता है)। मैंने उन फाइलों की अंतहीन मालिश की ... लेकिन कुछ भी नहीं।

किसी अज्ञात कारण से यदि आप अपने रेपो को खरोंचते हैं और रेपो को फिर से प्राप्त करते हैं: सब कुछ काम करता है!

मैंने घंटों तक प्रत्येक कॉम्बो को छूने / हटाने आदि के लिए कोशिश की। बस खरोंच से रेपो की जांच करें!


2018, अभी तक एक और समाधान ...

https://github.com/apereo/mod_auth_cas/issues/97

कुछ मामलों में बस चल रहा है

$ autoreconf -f -i

और कुछ नहीं .... समस्या हल करती है।

आप निर्देशिका / /pcre2-10.30 में ऐसा करते हैं।

कितना बुरा सपना।

(यह आमतौर पर 2017 में समस्या को हल नहीं करता था, लेकिन अब आमतौर पर समस्या को हल करने के लिए प्रतीत होता है - उन्होंने कुछ तय किया। इसके अलावा, ऐसा लगता है कि आपका डॉकफेराइल अब आमतौर पर "FROM ibmcom / स्विफ्ट-उबंटु" के साथ शुरू होना चाहिए; एक निश्चित संस्करण / देव-निर्माण यह काम करने के लिए।)


आप जिस संस्करण की आवश्यकता है उसे आसानी से स्थापित कर सकते हैं:

पहले स्रोत प्राप्त करें:

$ wget https://ftp.gnu.org/gnu/automake/automake-1.15.tar.gz

इसे अनपैक करें:

$ tar -xzvf automake-1.15.tar.gz

बनाएँ और स्थापित करें:

$ cd automake-1.15
$ ./configure  --prefix=/opt/aclocal-1.15
$ make
$ sudo mkdir -p /opt
$ sudo make install

इसका इस्तेमाल करें:

$ export PATH=/opt/aclocal-1.15/bin:$PATH
$ aclocal --version

एसलोकल (GNU स्वचालित) 1.15

अब जब aclocal कहा जाता है, तो आपको सही संस्करण मिलता है।


एक सामान्य उत्तर जो इस विशिष्ट मामले पर लागू हो या न हो:

त्रुटि संदेश संकेत के रूप में, aclocal-1.15 केवल तभी आवश्यक होना चाहिए जब आप उन फ़ाइलों को संशोधित करें जिनका उपयोग aclocal44 उत्पन्न करने के लिए किया गया था

यदि आप उन फ़ाइलों में से किसी को भी संशोधित नहीं करते हैं (जिसमें config.ac भी शामिल है) तो आपको aclocal-1.15 होने की आवश्यकता नहीं है।

मेरे मामले में, समस्या यह नहीं थी कि उन फ़ाइलों में से किसी को भी संशोधित किया गया था, लेकिन किसी भी तरह config.ac पर टाइमस्टैम्प aclocal.m4 की तुलना में 6 मिनट बाद था।

मुझे पता नहीं क्यों, लेकिन मेरे git रेपो के एक साफ क्लोन ने मेरे लिए इस मुद्दे को हल कर दिया। हो सकता है कि कुछ git से जुड़ा हो और कैसे इसने पहली बार में फाइलें बनाई हों।

आत्मकेंद्रित ऑटोकैफ़ और दोस्तों के बजाय, मैं बस एक साफ क्लोन प्राप्त करने और फिर से प्रयास करना चाहूंगा।

यह भी संभव है कि किसी ने कॉन्फ़िगर करने के लिए एक बदलाव किया हो। लेकिन aclocal.m4 को पुन: उत्पन्न नहीं किया, जिस स्थिति में आपको वास्तव में स्वचालित और दोस्तों को फिर से चलाना है।


चलाने से पहले ./configure autoreconf -f -i चलाने का प्रयास करें। ऑटोरैकोनफ कार्यक्रम स्वचालित रूप से ऑटोहिडर, एसक्लोकल, ऑटोमेक, ऑटोपॉइंट और आवश्यक के रूप में libtoolize चलाता है।

जोड़ने के लिए संपादित करें: यह आमतौर पर .zip या .tar.gz संग्रह से निकालने के बजाय Git से कोड की जाँच करने के कारण होता है। फ़ाइलों को बदलने के दौरान रीइंबर्स को ट्रिगर करने के लिए, Git फाइलों की टाइमस्टैम्प को संरक्षित नहीं करता है, इसलिए configure स्क्रिप्ट पुराना हो सकता है। जैसा कि दूसरों ने उल्लेख किया है, अगर आपके पास autoreconf का हाल ही में पर्याप्त संस्करण नहीं है, तो इसके आस-पास आने के रास्ते हैं।

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


मुझे लगता है कि टच कमांड सही उत्तर है जैसे कुछ करना

touch --date="`date`" aclocal.m4 Makefile.am configure Makefile.in

[./configure && बनाने से पहले]।

साइडबार I: अन्यथा, मैं @kaz से सहमत हूं: aclocal.m4 और / या के लिए निर्भरता जोड़ना और / या Makefile.am और / या Makefile.in लक्ष्य प्रणाली के बारे में धारणा बनाता है जो अमान्य हो सकता है। विशेष रूप से, वे धारणाएँ हैं

1) कि सभी लक्ष्य प्रणालियों में ऑटोटूल हैं,

2) कि सभी लक्ष्य प्रणालियों में ऑटोटूल का एक ही संस्करण है (उदाहरण के लिए इस मामले में auto.1.15)।

3) कि अगर या तो (1) या (2) किसी भी उपयोगकर्ता के लिए सही नहीं है, कि उपयोगकर्ता एक अनुरक्षक-निर्मित TAR या ज़िप प्रारूप से पैकेज निकाल रहा है जो प्रासंगिक फाइलों के टाइमस्टैम्प को बनाए रखता है, जिस स्थिति में सभी ऑटोटूल / कॉन्फ़िगर करें /Makefile.am/Makefile.in कॉन्फ़िगर-जनरेटेड मेकफाइल में निर्भरता मेक कमांड जारी होने से पहले संतुष्ट हो जाएगी।

दूसरी धारणा कई मैक सिस्टम पर विफल हो जाती है क्योंकि ओटोमेक्स.1.14 OSX के लिए "नवीनतम" है (कम से कम जो मैं मैकपोर्ट्स में देख रहा हूं, और जाहिर तौर पर वही काढ़ा के लिए सच है)।

तीसरी धारणा गिथूब के साथ एक दुनिया में शानदार ढंग से विफल हो जाती है। यह विफलता "सभी को लगता है कि वे आदर्शवादी हैं" मानसिकता का एक उदाहरण है; विशेष रूप से, अनुचर, जो उपयोगकर्ताओं के एकमात्र वर्ग हैं जिन्हें Makefile.am को संपादित करने की आवश्यकता है, ने अब सभी को उस वर्ग में डाल दिया है

शायद ऑटोहैटर में एक विकल्प है जो इन निर्भरताओं को Makefile.in और / या Makefile में जोड़े जाने से बचाता है।

साइडबार II [Why @kaz is right]: बेशक यह स्पष्ट है, मेरे लिए और अन्य कॉग्नोसेन्ट्री के लिए, पुन: चलने वाले कॉन्फ़िगर और ऑटोटूल से कॉन्फ़िगर-निर्मित मेकफाइल को मूर्ख बनाने के लिए [स्पर्श] आदेशों के अनुक्रम का प्रयास करने के लिए। लेकिन यह कॉन्फ़िगर की बात नहीं है; कॉन्फ़िगर करने की बात यह है कि जितने संभव हो उतने अलग-अलग सिस्टम पर जितने भी उपयोगकर्ता हैं, बस यह सुनिश्चित करें कि [.configure && मेक] करें और आगे बढ़ें; अधिकांश उपयोगकर्ता "शेविंग द याक" में रुचि नहीं लेते हैं, जैसे ऑटोटूलर्स डेवलपर्स की दोषपूर्ण मान्यताओं को डीबग करना।

साइडबार III: यह तर्क दिया जा सकता है कि ./configure, अब जब ऑटोटूलस इन निर्भरताओं को जोड़ता है, तो गिथब-वितरित पैकेज के साथ उपयोग करने के लिए गलत बिल्ड टूल है।

साइडबार IV: शायद कॉन्फिग-बेस्ड गितुब रिपोज को आवश्यक टच कमांड को उनके रीडमे में रखना चाहिए, जैसे https://github.com/drbitboy/Tycho2_SQLite_RTree