Solaris tar:「シンボルリンクに失敗しました:ディレクトリではありません」

Solaris tar:「シンボルリンクに失敗しました:ディレクトリではありません」

Solaris 10 でシンボリックリンクを使用して tar アーカイブを解凍すると、次のエラーが発生します。

tar: lib/jre/: symbolic link failed: Not a directory

シンボリックリンクlib/jreが指すファイルはlib/jre1.8.0_46tarアーカイブにもあります。 GNU tarを使用すると、tarを解凍できます。それでは、ここで問題は何ですか?

答え1

Solaris で gnu tar を使用する場合。その後、インラインで見てください。

  • Solaris 10:該当するものがあることを確認してくださいpkginfo SUNWgtar 。一般的なパスは次のとおりです。/usr/sfw/bin/gtar
  • pkg info gnu-tar Solaris 11:「通常のパスは/usr/gnu/bin/tar2つのシンボリックリンクを使用します」を実行して、そのパスが存在することを/usr/sfw/bin/gtar確認します。/usr/bin/gtar

コメントに基づいて情報を更新します。 gnu tarが利用できない場合は、POSIX準拠のtar--format=posixオプションを作成できます。

これはGNU tarバージョン1.14から利用可能です。詳細は以下で確認できます。グヌタール

答え2

発生したエラーを見ると、Not a directorytarアーカイブのシンボリックリンクは次のようになります。

lib/jre/ -> lib/jre1.8.0_46

これは、あなたが文字で教えてくれたものとは異なります。

gtarリンクに不満がない場合は、リンクが壊れています。

残念ながら、制限に関する十分な情報を提供していません。

私たちは次のことを知る必要があります。

  • どのタイプのtarアーカイブについて話していますか?タイプを取得できます。star -t -print-artype < foo.tar.gz
  • アーカイブの正確なエントリは何ですか?を通じて答えを得ることができます。star -tv < foo.tar.gz pat='*jre*'

使用して作成されたアーカイブはgtarPOSIXと互換性がなく、アーカイブの途中でアーカイブの種類を変更することもできます。これが非常に奇妙な結果を生み出す可能性があることを理解する必要があります。

これを達成するには、star以下から最新バージョンを入手することをお勧めしますschilytoolshttps://sourceforge.net/projects/schilytools/files/そしてそれらをコンパイルしてください。

関連情報