Macbook上のファイルをLinuxでtar化して解凍すると、以下のような警告/エラーが何度も出てきます
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
幸いなことに、これはアーカイブに保存されているファイルには影響を与えず、完全に復元されます。しかし、これは多くのシナリオで問題を引き起こします。特に、ビルドプロセスを扱う際に ‘tar’ が返すゼロではない失敗コードによってビルドやインストールが不必要に停止してしまうような場合に問題が発生します
OS XでLinuxの世界の他の部分とうまく遊ぶtarファイルをビルドするにはどうすればいいのでしょうか?
また、ボーナスポイントとして、これらの問題がある tar ファイルが公開されています。元々圧縮されていた方法を変えずに、このtarファイルをLinuxが優雅に扱うようにする方法はありますか?
111 Dave Dopson 2011-08-03
エラーメッセージをググってみたら、BSD tar vs. GNU tar
の問題のようです
Mac OS上で可能であればGNU tar
をインストールし、それを使ってtar
を作成してください
73 holygeek 2011-08-03
Mavericks またはそれ以降を使用している場合、gnutar はデフォルトでは含まれなくなります
homebrewを使用している場合の回避策は、以下のように実行することです
brew install gnu-tar
その後、Linuxとの互換性を保つために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で提供されているオリジナルのtarを復元するには、上記のコマンドを実行しますが、which gtar
をwhich bsdtar
に置き換えてください
ソースは以下の通りです。 https://github.com/jordansissel/fpm/issues/576
66 spuder 2013-12-14
GNU tar は、デフォルトの OSX BSD tar に含まれるオプション情報のいくつかが気に入らないようです
GNU tar はオプションで警告を抑制することができます
--warning=no-unknown-keyword
ご覧ください。https://www.gnu.org/software/tar/manual/html_section/tar_27.html
BSD tar はこのフラグをサポートしていないので、すべてのプラットフォームで同じ解凍コードを実行する必要がある場合は、次のようなものを使うことができます
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
30 Chris 2015-06-03
Linuxシステム上でエラーなく適切にtarファイルを展開するには、bsdtarを使用することができます
sudo apt-get install bsdtar
その後は通常通りに使用してください
bsdtar -xvf file.tar
ここで、file.tar
は抽出したいtarファイルです
ソースは以下の通りです。https://bugs.launchpad.net/ubuntu/+source/tar/+bug/129314
また、GNOME ファイルローラーを使用することもできます
10 daka 2016-05-06
COPYFILE_DISABLE=1 tar cf filename.tar
or
tar --disable-copyfile cf filename.tar
これは私が個人的に意識しているOS Xのtarの中で最も発見しにくい機能です
OS X の tar ボールに ._foo のようなファイルが入っているのはなぜですか?
編集: これは不要な ._foo
タイプのファイルの生成を止めるだけのように見えますが、ヘッダの生成は止められません (少なくとも Yosemite/10.10 では)。しかし、(ボーナスポイントとして:)このように抽出することで、このようなタールボールを優雅に扱うことができます
tar xf filename.tar --pax-option=delete=SCHILY.*,delete=LIBARCHIVE.*
これは gnu tar 1.15.1 を使って動作しました。代わりに pax を使うこともできます。これは(私にとっては)余分な情報を PaxHeader
ディレクトリに投げますが、少なくともエラーなしで終了します
pax -rf filename.tar
6 Zac Thompson 2015-03-04
MacOSX にはすでに gnutar が付属しています。手っ取り早くて汚い解決策が欲しい場合は、~/.bash_profile
にこれを追加してください
alias tar='gnutar'
を実行し、source ~/.bash_profile
を実行して更新します
さらに、OSX には GNU と BSD の両方の tar が同梱されています。そのため、BSD から gnu への tar の ref のリンクを解除することもできます
sudo unlink /usr/bin/tar;
sudo ln -s /usr/bin/gnutar /usr/bin/tar
4 Du3 2013-02-21
ありがとうございました。このスレッドはとても参考になりました。MacPortsをお使いの方には、簡単なハウツーをご紹介します
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'
Quit undを終了し、ターミナルウィンドウを再起動します
2 howdytom 2016-01-04
Mac のビルトイン tar バイナリには、CentOS が嫌う余分なものがたくさん追加されています。これを修正するには、次のようにします
sudo mv /usr/bin/tar /usr/bin/darwintar
sudo ln -s /usr/bin/gnutar /usr/bin/tar
ls -l /usr/bin/tar
役に立つことを願っています
1 Shaheen Ghiassy 2013-02-07
さて、Google検索を使ってみましたが、上位3つのリンクは私が疑っていたことを確認しました
- tar AND/ORのバグ
- 2 つの tar ユーティリティ間の非互換性
このリンク を参照してください。誰かが「”bsdtar -xvf” を使うとうまくいった」と報告しています
編集: あなたはMacシステムを使っていますが、私は他の方法を考えました。gnutarを使う必要があるでしょう、すでにインストールされているはずです。もちろん、自分で検索して他のリンクを見ることもできます
0 Sudhi 2011-08-03
MAC OSX に gnu-tar をインストールします
brew install gnu-tar
で linux 互換の tar を作成してください
gtar -c -f your_tar_file files
または、pax形式でアーカイブを作成することができます
tar -c --format pax -f your_tar_file files
0 msadek 2018-08-06