Solaris 10 でシンボリックリンクを使用して tar アーカイブを解凍すると、次のエラーが発生します。
tar: lib/jre/: symbolic link failed: Not a directory
シンボリックリンクlib/jre
が指すファイルはlib/jre1.8.0_46
tarアーカイブにもあります。 GNU tarを使用すると、tarを解凍できます。それでは、ここで問題は何ですか?
答え1
Solaris で gnu tar を使用する場合。その後、インラインで見てください。
- Solaris 10:該当するものがあることを確認してください
pkginfo SUNWgtar
。一般的なパスは次のとおりです。/usr/sfw/bin/gtar
pkg info gnu-tar
Solaris 11:「通常のパスは/usr/gnu/bin/tar
2つのシンボリックリンクを使用します」を実行して、そのパスが存在することを/usr/sfw/bin/gtar
確認します。/usr/bin/gtar
コメントに基づいて情報を更新します。 gnu tarが利用できない場合は、POSIX準拠のtar--format=posix
オプションを作成できます。
これはGNU tarバージョン1.14から利用可能です。詳細は以下で確認できます。グヌタール
答え2
発生したエラーを見ると、Not a directory
tarアーカイブのシンボリックリンクは次のようになります。
lib/jre/ -> lib/jre1.8.0_46
これは、あなたが文字で教えてくれたものとは異なります。
gtar
リンクに不満がない場合は、リンクが壊れています。
残念ながら、制限に関する十分な情報を提供していません。
私たちは次のことを知る必要があります。
- どのタイプのtarアーカイブについて話していますか?タイプを取得できます。
star -t -print-artype < foo.tar.gz
- アーカイブの正確なエントリは何ですか?を通じて答えを得ることができます。
star -tv < foo.tar.gz pat='*jre*'
使用して作成されたアーカイブはgtar
POSIXと互換性がなく、アーカイブの途中でアーカイブの種類を変更することもできます。これが非常に奇妙な結果を生み出す可能性があることを理解する必要があります。
これを達成するには、star
以下から最新バージョンを入手することをお勧めしますschilytools
。https://sourceforge.net/projects/schilytools/files/そしてそれらをコンパイルしてください。