2010-07-25 13 views
16

make distcheck चलाने के बाद नहीं दिखता है मुझे यह संदेश मिलता है कि मैंने पैकेज सफलतापूर्वक बनाया है और वितरण के लिए तैयार है। अगर मैं tar.gztar -zxvf hello-0.2.tar.gz के साथ अनार करता हूं तो यह सफलतापूर्वक अपनी सभी सामग्री को निकाल देता है। हालांकि, जब मैं उन्हें विभिन्न मशीनों में निकालने का प्रयास करता हूं तो मुझे मिलता है:ऑटोटूल - टैर यह एक टैर आर्काइव

tar: This does not look like a tar archive 
tar: Skipping to next header 
tar: Exiting with failure status due to previous errors 

अजीब बात यह है कि यह पहले काम कर रहा था।

मशीन पर मैं पैकेज बनाने की कोशिश कर रहा हूं, मैंने अपना automake 1.10.1, autoconf 2.61, and tar 1.20 to automake 1.11.1, autoconf 2.65, and tar 1.23 अपडेट किया है और फिर भी वही समस्या है।

कोई विचार क्या समस्या हो सकती है?

+8

क्या यह काम करता है: 'gzip -d hello-0.2.tar.gz' इसके बाद:' tar -xf हैलो-0.2.tar' – SiggyF

+1

@ सिग्गीएफ: यह वास्तव में काम करता है। कोई विचार क्यों इस तरह से काम करता है और दूसरा नहीं? – denim69

उत्तर

14

समस्या निर्माण मशीन पर नहीं है; समस्या लक्ष्य मशीनों पर है।

tar के सभी संस्करण स्वचालित रूप से संकुचित tar फ़ाइल पर लागू होने के लिए डिकंप्रेशन को पहचानते हैं। यह देखते हुए कि gunziptar काम करता है, तो आपकी लक्ष्य मशीन पर tar ऐसा ही है। मुख्यधारा यूनिक्स सिस्टम (एईक्स, एचपी-यूएक्स, सोलारिस) पर tar के संस्करण स्वचालित रूप से संपीड़ित टैर फ़ाइलों को पहचान नहीं पाते हैं। लिनक्स और मैकोज़ एक्स पर लोग करते हैं।

ध्यान दें कि आप का उपयोग कर सकते हैं:

gzip -dc hello-0.2.tar.gz | tar -xf - 

मध्यवर्ती असम्पीडित फ़ाइल बनाने से बचने के लिए।

+0

1. अंत में हाइफ़न सिर्फ एक टाइपो है, या यह कुछ करता है? 2. इस विधि के साथ मुझे त्रुटि मिलती है 'संग्रह: संग्रह संपीड़ित है। उपयोग -z विकल्प '' tar: त्रुटि पुनर्प्राप्त करने योग्य नहीं है: अब बाहर निकलना '। अगर मैं '-z' जोड़ता हूं तो यह मुझे' tar देता है: -z: नहीं खुल सकता: ऐसी कोई फ़ाइल या निर्देशिका नहीं। – lindhe

+0

(1) अंत में हाइफ़न निर्दिष्ट करता है कि इनपुट फ़ाइल मानक इनपुट ('-f -') है। (2) आपके पास एक डबल-संपीड़ित फ़ाइल हो सकती है, हालांकि यह थोड़ा असंभव है। आप 'gunzip hello-0.2.tar.gz' को आजमा सकते हैं और फिर फ़ाइल फ़ाइल हैलो-0.2.tar' का उपयोग करके यह देखने के लिए कि फ़ाइल फ़ाइल किस प्रकार आपको मिलती है। 'Tar' का कौन सा संस्करण आप उपयोग कर रहे हैं जो यह पहचानता है कि संग्रह संपीड़ित है लेकिन इसे डिकंप्रेस नहीं करता है? यदि आप 'tar -xzf -' का उपयोग करते हैं, तो आप ठीक हो सकते हैं। यदि आप 'tar -xf -z' का उपयोग करते हैं, तो आप' tar' कह रहे हैं कि निकालने वाली फ़ाइल '-z' है। –

4

वास्तव में यह तब हो सकता है जब आप जिस सर्वर से डाउनलोड करते हैं, वह GZip के एक और दौर को लागू करता है और जिस फ़ाइल को आप फ़ाइल डाउनलोड करने के लिए उपयोग करते हैं, वह HTTP Content-Encoding हेडर को पढ़/सम्मान नहीं करता है और HTTP पेलोड को तार पर रखता है।

हालांकि फ़ाइल में केवल .tar.gz एक्सटेंशन है, यह वास्तव में .tar.gz.gz है। एक बार जब फ़ाइल .tar एक्सटेंशन प्राप्त हो जाती है तो gunzip चलाए जाने के बाद भी, लेकिन इस बार टैर कमांड tar xf hello-0.2.tar चलाते हुए GZip प्रारूप को पहचानता है और निकालने से पहले एक बार बार बंदूक के माध्यम से फ़ाइल चलाता है।

आप इसे head hello-02.tar.gz और head hello-02.tar चलाकर देख सकते हैं। जीजेआईपी एक बहुत ही बाइनरी प्रारूप है, जबकि टैर काफी मानव पठनीय है। यदि .tar फ़ाइल "बहुत बाइनरी" दिखाई देती है तो आपके हाथों पर एक दोगुनी एन्कोडेड फ़ाइल होती है।

+1

बिल्कुल मेरी समस्या। बहुत बहुत धन्यवाद :) – franzlorenzon

संबंधित मुद्दे