লিনাক্স / ওএস এক্স টার অসঙ্গতি - ওএস এক্স-এ তৈরি টারবলগুলি লিনাক্সে অনারিত হওয়ার পরে ত্রুটি দেয়


106

আমি যখন আমার ম্যাকবুকে ফাইলগুলি আপ করি এবং সেগুলি লিনাক্সে অনার্স করি তখন আমি বারবার নিম্নলিখিত সতর্কতাগুলি / ত্রুটিগুলি পাই:


 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

ভাগ্যক্রমে, এটি সংরক্ষণাগারে থাকা ফাইলগুলিকে প্রভাবিত করে না, যা পুরোপুরি পুনরুদ্ধার করা হয়েছে। তবে এটি বেশ কয়েকটি পরিস্থিতিতে সমস্যার সৃষ্টি করে, বিশেষত বিল্ড প্রসেসগুলির সাথে ডিল করার সময় যেখানে 'টার' দ্বারা ফিরে আসা শূন্য-ব্যর্থতার কোডটি অকারণে থামিয়ে দেয় এবং ইনস্টল করে।

বাকি লিনাক্স জগতের সাথে সুন্দরভাবে খেলানো ট্যর ফাইলগুলি তৈরি করতে আমি কীভাবে ওএস এক্স পেতে পারি?

এছাড়াও, বোনাস পয়েন্টগুলির জন্য, এই সমস্যাগুলি সহ একটি সার্বজনীন বিতরণ করা টার ফাইল রয়েছে exists কোনো উপায় আছে লিনাক্স আলকাতরা ফাইল অত্যন্ত শৃঙ্খলার হ্যান্ডেল পেতে হয় ছাড়া উপায় এটা মূলত সংকুচিত হয়েছিল পরিবর্তন?

উত্তর:


71

আমি ত্রুটি বার্তার জন্য গুগল করেছি এবং এটি একটি BSD টর বনাম জিএনইউ tarইস্যুর মতো মনে হচ্ছে ।

tarআপনি যদি ম্যাক ওএসে পারেন তবে জিএনইউ ইনস্টল করুন এবং এটি তৈরি করতে এটি ব্যবহার করুন tar


17
ম্যাক ওএস এক্স 10.6 ডিফল্টভাবে একটি বিএসডি টার ব্যবহার করে তবে এটিতে একটি গনটার সহ জাহাজগুলি /usr/bin/gnutar

@Ned। ধন্যবাদ. এটা ভাল তথ্য।
ডেভ ডপসন

15
এফওয়াইআই: / ইউএসআর / বিন / গুন্টার আর ম্যাক ওএস এক্স (কমপক্ষে ম্যাভেরিক্স হিসাবে) দিয়ে পাঠানো হয় না
foobar

সুডো বন্দর ইন্দোন্ট গুন্টার সিডি / ইউএসআর / বিন সুডো আরএম টার সুডো এলএন-এস / অপ্ট / লোকাল / বিন / গুন্টার টার
বিশৃঙ্খলাবিহীন

যদি ম্যাকপোর্টস ব্যবহার করে থাকেন তবে আপনি / ইউএসআর / বিন থেকে কোনও কিছু অপসারণ বা ম্যানুয়ালি সিমলিংক তৈরি করার পরিবর্তে আপনার প্যাথএইচটির শীর্ষে কেবল / অপ্ট / লোকাল / লিবেক্সেক / জেনুবিন / রাখতে পারেন।
লরিন

62

আপনি যদি মাভেরিক্স বা আরও নতুন ব্যবহার করছেন তবে গুনটার আর ডিফল্টরূপে অন্তর্ভুক্ত থাকবে না।

আশেপাশের কাজগুলি, আপনি যদি হোমব্রু ব্যবহার করেন তবে নিম্নলিখিতটি সম্পাদন করা হবে:

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

Mac OS X সাথে উপলব্ধ করা মূল আলকাতরা পুনরুদ্ধার করতে, উপরে কমান্ড সঞ্চালন করুন কিন্তু প্রতিস্থাপন which gtarসঙ্গেwhich bsdtar

সূত্র:
https://github.com/jordansissel/fpm/issues/576


4
আর লিঙ্ক তৈরি করার দরকার নেই, ব্রিউয়ের নির্দেশাবলী হিসাবে, আপনি কেবল এটিকে .bashrc(বা আপনার সমতুল্য) আপনার রাস্তায় যুক্ত করতে পারেন :PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"
ব্রায়ান পেটি

1
অথবা শুধু একটি তৈরি tarলিংকে /usr/local/binদ্বারা cd /usr/local/bin ; ln -s gtar tarসম্ভবত সবচেয়ে সহজ বিকল্প -
কার্তিক টি

27

জিএনইউ ট্যারে ডিফল্ট ওএসএক্স বিএসডি টার অন্তর্ভুক্ত someচ্ছিক কিছু তথ্য পছন্দ করে না।

জিএনইউ টার আপনাকে সেই সতর্কতাগুলি বিকল্প দিয়ে দমন করতে দেবে:

--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

5
এটি সঠিক উত্তর হওয়া উচিত কারণ এটিতে কোনও এক সতর্কতা দমনের জন্য সম্পূর্ণ নতুন সরঞ্জাম ইনস্টল করা জড়িত না।
সিজেড

10

লিনাক্স সিস্টেমে কোনও ত্রুটি ছাড়াই ডায়ার ফাইলটি সঠিকভাবে বের করতে আপনি বিএসডিটার ব্যবহার করতে পারেন।

sudo apt-get install bsdtar

তারপরে স্বাভাবিক হিসাবে ব্যবহার করুন।

bsdtar -xvf file.tarfile.tarআপনি যে ট্যাটার ফাইলটি বের করতে চান তা কোথায় ।

সূত্র: https://bugs.launchpad.net/ubuntu/+source/tar/+bug/129314

বিকল্পভাবে আপনি জিনোম ফাইল রোলারও ব্যবহার করতে পারেন।


6
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

দুঃখের বিষয়, গুনটারের সাথে তাল মিলানোর সময় এটি বর্ধিত শিরোনাম কীওয়ার্ড সতর্কতাগুলি বন্ধ করে দেবে বলে মনে হয় না।
জেজেসি

এগুলির কোনওটিই ইয়োসেমাইটে ( tar --versionইঙ্গিত bsdtar 2.8.3 - libarchive 2.8.3) কাজ করে না বলে মনে হয় । cfপরবর্তী ক্ষেত্রে আমার আগে একটি ড্যাশ দরকার ।
ট্রিপলি

4

ম্যাকোএসএক্স ইতিমধ্যে গুন্নার নিয়ে আসে। আপনি যদি একটি দ্রুত এবং নোংরা সমাধান চান তবে এটিকে যুক্ত করুন~/.bash_profile

alias tar='gnutar'

এবং source ~/.bash_profileআপডেট করতে চালান

অতিরিক্তভাবে, ওএনএক্স জাহাজগুলি জিএনইউ এবং বিএসডি উভয়ই ট্যারি সহ। সুতরাং আপনি বিএসডি থেকে জিএনইওতে ট্যারের রেফারিকে লিঙ্কমুক্ত করতে পারেন:

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

1
ভিতরে কেন /etc/hosts? /etc/hostsহোস্ট / আইপি ম্যাপিংয়ের জন্য, তাই না?
বেনজিওবি

1
@ বেনজিওয়েব কি বলেছেন এমনকি বিজোড় বিট সম্পাদনা করছে / ইত্যাদি / হোস্টগুলি। আমি মনে করি আপনি meant / .bashrc বলতে চেয়েছিলেন
ডেভ ডপসন

2
ওএস এক্স-এ, .bashrcটার্মিনাল সেশনের জন্য লোড করা হয়নি। আপনার প্রয়োজন .bash_profile, যেহেতু লগইন শেলটি একটি নতুন টার্মিনাল উইন্ডো দিয়ে শুরু হয়েছে। / সিসি @ বেনজিওবি
স্ল্যাক করুন

সঠিক :-) আমি সেই সময়ে / ইত্যাদি / হোস্টগুলিতেও কাজ করছিলাম তাই এটি কীবোর্ডে স্প্যাড। ভাল ক্যাচ
ডু 3

2

ধন্যবাদ. এই থ্রেড খুব দরকারী ছিল। আপনি যদি এখানে ম্যাকপোর্টস ব্যবহার করছেন তবে তা দ্রুত উপায়:

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

নীচের লাইনটি / ব্যবহারকারীর / পর্যালোচনা নাম / প্রোফাইলে যুক্ত করুন

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

আনড ছেড়ে যান এবং আপনার টার্মিনাল উইন্ডোটি পুনরায় চালু করুন।


1

হ্যাঁ, ম্যাকের অন্তর্নির্মিত টার বাইনারিটিতে একগুচ্ছ অতিরিক্ত জিনিস যুক্ত করা হয়েছে যা সেন্টোস পছন্দ করে না। এটি ঠিক করার জন্য নিম্নলিখিতটি করুন:

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

আশা করি এইটি কাজ করবে!


এটি এক উপায়। আমি জিএনইউ / বিএসডি সমস্যাটি আরও বিস্তৃতভাবে github.com/ddopson/dotfiles এ সমাধান করেছি । আমার কাছে প্রথম দিকে ~ / বিন / কোরিউটিল রয়েছে এবং সেখানে github.com/ddopson/dotfiles/blob/master/bin/coreutils/tar এর মতো ছোট শিমস রয়েছে যা লিনাক্স বনাম ম্যাকের উপর ভিত্তি করে সঠিক নির্বাহযোগ্য চয়ন করে এবং যদি পরিবেশের পরিবেশ পরিবর্তনশীল সেট করা হয়েছে
ডেভ ডপসন

লোকেরা তাদের কাজের হার সরিয়ে নেওয়ার আগে / usr / bin / gnuar এর অস্তিত্ব পরীক্ষা করতে বলার জন্য আপনার নির্দেশাবলী পরিবর্তন করতে চাইতে পারেন। Newbies গুগল ব্যবহার করে এটি খুঁজে পেতে পারে এবং তাদের সিস্টেমটি কীভাবে ভাঙতে হয় তা জানে না।
মিশ্র

এটি বেশ কয়েকটি কারণে সম্ভবত একটি ভাল ধারণা নয়। 1) এখন অ্যাপল প্যাকেজগুলি জানে না যে দেশীয় টারটি কোথায় পাওয়া যাবে, যে টারটি অ্যাপল ফাইলের বৈশিষ্ট্যগুলি পরিচালনা করতে জানে। ২) আপনার যদি অবশ্যই জিএনইউ টার ব্যবহার করতে চান তবে এটির যথাযথ স্থানটি আপনার অনুসন্ধানের পথে যেমন / ইউএসআর / লোকাল / বিন, বা অন্য tarকোনও কিছু, এবং 3) বিভ্রান্তিকর সফ্টওয়্যার এড়ানোর জন্য বিদেশী প্রোগ্রামটিকে গুন্নার বলা সম্ভবত নিরাপদ হতে পারে ম্যাকের মতো ম্যাকের মতো কাজ করার প্রত্যাশা করা। $ 0.02। -এরিক
এরিক বেনেট

0

ঠিক আছে, আমি গুগল অনুসন্ধান ব্যবহার করেছি, তবে শীর্ষ তিনটি লিঙ্ক আমার সন্দেহের বিষয়টি নিশ্চিত করেছে

  1. আপনার টারে এবং / OR এ বাগ করুন
  2. দুটি ট্যার ইউটিলিটির মধ্যে অসঙ্গতি এই লিঙ্কটি
    দেখুন । সেখানে কেউ রিপোর্ট করেছেন যে "" bsdtar -xvf "ব্যবহার করে কাজ হয়েছে।"

সম্পাদনা: আপনি ম্যাক সিস্টেমে আছেন, আমি অন্যভাবে ভাবলাম। আপনাকে গুনটার ব্যবহার করতে হবে, এটি ইনস্টল না হলে এটি ইতিমধ্যে ইনস্টল করা উচিত। অবশ্যই, আপনি নিজের অনুসন্ধান করে অন্যান্য লিঙ্কগুলি দেখতে পারেন।


0

ম্যাক ওএসএক্স-এ gnu-tar ইনস্টল করুন

brew install gnu-tar

তারপরে আপনার লিনাক্সের সাথে সামঞ্জস্যপূর্ণ টার তৈরি করুন:

gtar -c -f your_tar_file files

অথবা আপনি প্যাক্স ফর্ম্যাট দিয়ে আপনার সংরক্ষণাগার তৈরি করতে পারেন

tar -c --format pax -f your_tar_file files
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.