सवाल लिनक्स / ओएस एक्स टैर असंगतता - ओएस एक्स पर बनाए गए टैरबॉल लिनक्स में अनचाहे होने पर त्रुटियां देते हैं


जब मैं अपनी मैकबुक पर फ़ाइलों को टैर करता हूं और उन्हें लिनक्स में छोड़ देता हूं, तो मुझे बार-बार निम्नलिखित चेतावनियां / त्रुटियां मिलती हैं:


 tar: Ignoring unknown extended header keyword `SCHILY.ino'
 tar: Ignoring unknown extended header keyword `SCHILY.nlink'
 tar: Ignoring unknown extended header keyword `SCHILY.dev'
 tar: Ignoring unknown extended header keyword `SCHILY.ino'
 tar: Ignoring unknown extended header keyword `SCHILY.nlink'
 tar: Ignoring unknown extended header keyword `SCHILY.dev'
 tar: Ignoring unknown extended header keyword `SCHILY.ino'
 tar: Ignoring unknown extended header keyword `SCHILY.nlink'
 tar: Ignoring unknown extended header keyword `SCHILY.dev'
 tar: Ignoring unknown extended header keyword `SCHILY.ino'
 tar: Ignoring unknown extended header keyword `SCHILY.nlink'
 tar: Ignoring unknown extended header keyword `SCHILY.dev'
 tar: Ignoring unknown extended header keyword `SCHILY.ino'
 tar: Ignoring unknown extended header keyword `SCHILY.nlink'
 tar: Ignoring unknown extended header keyword `SCHILY.dev'
 tar: Ignoring unknown extended header keyword `SCHILY.ino'
 tar: Ignoring unknown extended header keyword `SCHILY.nlink'
 tar: Error exit delayed from previous errors

सौभाग्य से, यह संग्रह में संग्रहीत फ़ाइलों को प्रभावित नहीं करता है, जो पूरी तरह से बहाल किए जाते हैं। हालांकि, यह कई परिदृश्यों में समस्याएं पैदा करता है, खासकर जब निर्माण प्रक्रियाओं से निपटने के दौरान जहां 'टैर' द्वारा लौटाए गए गैर-शून्य विफलता कोड अनावश्यक रूप से रोकने के लिए बनाता है और स्थापित करता है।

मैं टीएस फाइलों को बनाने के लिए ओएस एक्स कैसे प्राप्त कर सकता हूं जो बाकी लिनक्स दुनिया के साथ अच्छी तरह से खेलता है?

इसके अलावा, बोनस अंक के लिए, इन मुद्दों के साथ सार्वजनिक रूप से वितरित टैर फ़ाइल मौजूद है। टैर फ़ाइल को गर्वपूर्वक संभालने के लिए लिनक्स पाने का कोई तरीका है के बिना जिस तरह से इसे मूल रूप से संपीड़ित किया गया था उसे बदल रहा है?


93
2017-08-03 21:47


मूल




जवाब:


मैं त्रुटि संदेश के लिए googled और यह एक बीएसडी टैर बनाम जीएनयू की तरह लगता है tar मुद्दा।

जीएनयू स्थापित करें tar यदि आप मैक ओएस पर कर सकते हैं और इसे बनाने के लिए उपयोग कर सकते हैं tar


65
2017-08-03 22:00



मैक ओएस एक्स 10.6 डिफ़ॉल्ट रूप से बीएसडी टैर का उपयोग करता है लेकिन एक gnutar के साथ जहाज भी /usr/bin/gnutar।
@Ned। धन्यवाद। यह अच्छी जानकारी है। - Dave Dopson
एफवाईआई: / यूएसआर / बिन / gnutar अब मैक ओएस एक्स (कम से कम Mavericks के रूप में) के साथ भेज दिया नहीं है - foobar
सुडो पोर्ट स्थापित gnutar सीडी / usr / बिन सुडो आरएम tar sudo ln -s / opt / local / bin / gnutar tar - chaosless
यदि मैकपॉर्ट्स का उपयोग करते हैं, तो आप / usr / bin से मैन्युअल रूप से सिमलिंक बनाने या मैन्युअल रूप से बनाने के बजाय अपने पैथ के शीर्ष पर / opt / local / libexec / gnubin / डाल सकते हैं। - Lorrin


यदि आप मैवरिक्स या नए का उपयोग कर रहे हैं, तो डिफ़ॉल्ट रूप से gnutar अब शामिल नहीं है।

यदि आप होमब्रू का उपयोग करते हैं, तो आसपास के काम को निम्नलिखित निष्पादित करना है:

brew install gnu-tar

फिर आप कमांड का उपयोग कर सकते हैं gtar लिनक्स संगतता के लिए।


यदि आप प्रतिस्थापित करना चाहते हैं tar साथ में gtar, बस सिम्लिंक को प्रतिस्थापित करें

tar --version
ll `which tar`
sudo unlink `which tar`
sudo ln -s `which gtar` /usr/bin/tar
tar --version

मैक ओएस एक्स के साथ प्रदान किए गए मूल टैर को पुनर्स्थापित करने के लिए, उपरोक्त आदेश चलाएं लेकिन प्रतिस्थापित करें which gtar साथ में which bsdtar

स्रोत:
https://github.com/jordansissel/fpm/issues/576


54
2017-12-14 02:31



ब्रूव निर्देशों के रूप में अब और अनलिंक करने की आवश्यकता नहीं है, आप इसे अपने पैथ में जोड़ सकते हैं .bashrc (या आपका समतुल्य): PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH" - Bryan Petty
या बस एक बनाएँ tar में लिंक /usr/local/bin द्वारा cd /usr/local/bin ; ln -s gtar tar - संभवतः सबसे सरल विकल्प - Karthik T


जीएनयू टैर कुछ वैकल्पिक जानकारी पसंद नहीं करता है जो डिफ़ॉल्ट ओएसएक्स बीएसडी टैर शामिल है।

जीएनयू टैर आपको विकल्प के साथ उन चेतावनियों को दबाने देगा:

--warning=no-unknown-keyword

देख: https://www.gnu.org/software/tar/manual/html_section/tar_27.html

ध्यान दें कि बीएसडी टैर उस ध्वज का समर्थन नहीं करता है, इसलिए यदि आपको सभी प्लेटफार्मों पर एक ही अनपॅकिंग कोड चलाने की आवश्यकता है तो आप इस तरह कुछ उपयोग कर सकते हैं:

isGnuTar=$(tar --version | grep -q 'gnu')
if [ $? -eq 0 ]
then
    echo "Detected GNU tar"
    tar --warning=no-unknown-keyword -zxf my.tar.gz
else
    tar -zxf my.tar.gz
fi

21
2018-06-03 14:30



यह सही जवाब होना चाहिए क्योंकि इसमें एक चेतावनी दबाने के लिए एक पूरी तरह से नया उपकरण स्थापित करना शामिल नहीं है। - c z


लिनक्स सिस्टम पर किसी भी त्रुटि के बिना टैर फ़ाइल को ठीक से निकालने के लिए आप bsdtar का उपयोग कर सकते हैं।

sudo apt-get install bsdtar

फिर सामान्य के रूप में उपयोग करें।

bsdtar -xvf file.tar कहा पे file.tar वह टैर फ़ाइल है जिसे आप निकालना चाहते हैं।

स्रोत:  https://bugs.launchpad.net/ubuntu/+source/tar/+bug/129314

वैकल्पिक रूप से आप गनोम फ़ाइल रोलर का भी उपयोग कर सकते हैं।


9
2018-05-06 17:36





COPYFILE_DISABLE=1 tar cf filename.tar

या

tar --disable-copyfile cf filename.tar

यह ओएस एक्स पर टैर की सबसे कम खोज योग्य विशेषता है जिसे मैं व्यक्तिगत रूप से जानता हूं।

यह भी देखें मुझे ओएस एक्स पर मेरी टैरबॉल में ._foo जैसी फ़ाइलें क्यों मिलती हैं?


संपादित करें: ऐसा लगता है कि यह केवल अवांछित के निर्माण को रोक सकता है ._fooटाइप करें, यह हेडर निर्माण को रोकता नहीं है (कम से कम योसमेट / 10.10 पर); इसे इंगित करने के लिए धन्यवाद टिप्पणीकार। हालांकि, (बोनस प्वाइंट्स के लिए :) आप उन्हें इस तरह निकालने के द्वारा इस तरह के टैरबॉल को सुदृढ़ रूप से संभाल सकते हैं:

tar xf filename.tar --pax-option=delete=SCHILY.*,delete=LIBARCHIVE.*

यह gnu tar 1.15.1 का उपयोग करके काम करता है, जो कि बहुत पुराना है! वैकल्पिक रूप से, आप इसके बजाय पैक्स का उपयोग कर सकते हैं, जो (मेरे लिए) अतिरिक्त जानकारी को एक में फेंकता है PaxHeader निर्देशिका, लेकिन कम से कम त्रुटि के बिना बाहर निकलता है:

pax -rf filename.tar

5
2018-03-04 20:30



अफसोस की बात है, यह gnutar के साथ untarring जब विस्तारित हेडर कीवर्ड चेतावनियों को रोकने के लिए प्रतीत नहीं होता है। - JJC
इनमें से कोई भी योसमेट पर काम नहीं करता है (tar --version इंगित करता है bsdtar 2.8.3 - libarchive 2.8.3)। इसके अलावा मुझे पहले एक डैश चाहिए cf बाद के मामले में। - tripleee


MacOSX पहले से ही gnutar के साथ आता है। यदि आप एक त्वरित और गंदे समाधान चाहते हैं तो इसे जोड़ें ~/.bash_profile

alias tar='gnutar'

और भाग खड़ा हुआ source ~/.bash_profile अद्यतन करने के लिए

इसके अतिरिक्त, जीएसयू और बीएसडी टैर दोनों के साथ ओएसएक्स जहाजों। तो आप bsd से gnu तक tar के ref को अनलिंक भी कर सकते हैं:

sudo unlink /usr/bin/tar;
sudo ln -s /usr/bin/gnutar /usr/bin/tar

3
2018-02-21 16:25



क्यों अंदर /etc/hosts? /etc/hosts होस्ट / आईपी मैपिंग के लिए है, है ना? - BenjiWiebe
@BenjiWiebe क्या कहा। यहां तक ​​कि odder बिट संपादन / आदि / मेजबान है। मुझे लगता है कि आप ~ / .bashrc मतलब था - Dave Dopson
ओएस एक्स पर, .bashrc टर्मिनल सत्रों के लिए लोड नहीं किया गया है। आप की जरूरत है .bash_profile, क्योंकि एक नई टर्मिनल विंडो के साथ एक लॉगिन खोल शुरू किया गया है। / सीसी @ बेन्जीविबे - slhck
सही :-) मैं उस समय / etc / hosts में भी काम कर रहा था, इसलिए यह कीबोर्ड पर फंस गया। अच्छी पकड़ - Du3


धन्यवाद। यह धागा बहुत उपयोगी था। यदि आप यहां मैकपॉर्ट्स का उपयोग कर रहे हैं तो यह एक त्वरित तरीका है:

sudo port install gnutar

sudo ln -s /usr/local/opt/gnu-tar/libexec/gnubin/tar /usr/bin/gnutar

sudo ln -s /opt/local/libexec/gnubin/tar /usr/bin/gnutar

निम्नलिखित पंक्ति को /Users/[yourname]/.profile में जोड़ें

alias tar='/opt/local/libexec/gnubin/tar'

पूर्ववत करें और अपनी टर्मिनल विंडो को पुनरारंभ करें।


2
2018-01-04 15:08





हां, मैक की अंतर्निहित टैर बाइनरी अतिरिक्त सामानों का एक गुच्छा जोड़ती है जो सेंटोस पसंद नहीं करती है। इसे ठीक करने के लिए निम्न कार्य करें:

sudo mv /usr/bin/tar /usr/bin/darwintar
sudo ln -s /usr/bin/gnutar /usr/bin/tar
ls -l /usr/bin/tar

उम्मीद है की वो मदद करदे!


1
2018-02-07 18:28



यह एक तरीका है। मैंने जीएनयू / बीएसडी मुद्दे को अधिक व्यापक रूप से हल किया github.com/ddopson/dotfiles। मेरे पास पथ में जल्दी ~ / bin / coreutils है और वहां की तरह छोटे शिम हैं github.com/ddopson/dotfiles/blob/master/bin/coreutils/tar जो लिनक्स बनाम मैक के आधार पर सही निष्पादन योग्य चुनता है और यदि COREUTILS पर्यावरण चर सेट किया गया है - Dave Dopson
आप लोगों को अपने कामकाजी टैर को स्थानांतरित करने से पहले / usr / bin / gnutar के अस्तित्व की जांच करने के लिए कहने के लिए अपने निर्देशों को संशोधित करना चाहेंगे। न्यूबीज इसे Google का उपयोग करके ढूंढ सकते हैं और नहीं जानते कि कैसे उनके सिस्टम को तोड़ना है। - msouth
शायद कुछ कारणों से यह एक अच्छा विचार नहीं है। 1) अब ऐप्पल पैकेज नहीं जानते हैं कि मूल टैर कहां मिलना है, टैर जो जानता है कि ऐप्पल फ़ाइल विशेषताओं को कैसे संभाला जाए। 2) यदि आपको जीएनयू टैर का उपयोग करना होगा, तो इसे आपके खोज पथ में आगे बढ़ाने के लिए उचित स्थान, जैसे / usr / local / bin, या कुछ, और 3) यह संभवतः विदेशी को कॉल करना सुरक्षित है tar मैक की तरह कार्य करने के लिए मैक की अपेक्षा करने वाले भ्रमित सॉफ़्टवेयर से बचने के लिए प्रोग्राम gnutar। $ 0.02। -Erik - Erik Bennett


ठीक है, मैंने Google खोज का उपयोग किया, लेकिन शीर्ष तीन लिंक ने पुष्टि की कि मुझे क्या संदेह है

  1. अपने टैर और / OR में बग
  2. दो टैर उपयोगिताओं के बीच असंगतता
    देख यह लिंक। वहां कोई रिपोर्ट करता है कि "उपयोग" bsdtar -xvf "काम किया।" 

संपादित करें: आप मैक सिस्टम पर हैं, मैंने दूसरे तरीके से सोचा था। आपको gnutar का उपयोग करने की आवश्यकता होगी, इसे पहले से इंस्टॉल किया जाना चाहिए, अगर इसे इंस्टॉल नहीं किया गया है। बेशक, आप स्वयं को खोजकर अन्य लिंक देख सकते हैं।


0
2017-08-03 22:04





मैक ओएसएक्स पर gnu-tar इंस्टॉल करें

brew install gnu-tar

फिर अपने लिनक्स संगत टैर के साथ बनाएँ:

gtar -c -f your_tar_file files

या आप अपने संग्रह को पैक्स प्रारूप के साथ बना सकते हैं

tar -c --format pax -f your_tar_file files

0
2017-08-06 06:50