一部のソフトウェアは新しいアーカイブ形式で配布されているようです。
$ file node-v18.7.0-linux-x64.tar.xz
node-v18.7.0-linux-x64.tar.xz: XZ compressed data
可能であれば、tar(gzipまたはbzip2を使用できるように)を使用してどのように解凍できますか?
答え1
いくつかのtar
実装(少なくともGNUtar
とstar
libarchive bsdtar
)はすでにこの圧縮形式を処理しているので、次のことができます。
形式を明示的に指定しないで、tarが自動的に圧縮を検出するようにします(gtar²、bsdtar、またはstar³を使用)。
tar -xf node-v18.7.0-linux-x64.tar.xz
または、進行状況を確認するには、次の手順を実行します。
tar -xvf node-v18.7.0-linux-x64.tar.xz
-J
--xz
GNUまたはlibarchiveで/を使用するか、XZを期待するように指示するには、-xz
withを使用します。star
tar
tar -xJf node-v18.7.0-linux-x64.tar.xz
gtar -xJf node-v18.7.0-linux-x64.tar.xz
bsdtar -xJf node-v18.7.0-linux-x64.tar.xz
star -x -xz -f node-v18.7.0-linux-x64.tar.xz
これらの特定の実装がない場合、またはtar
標準pax
コマンド(tar
実装間の非互換性が多すぎてUNIX標準から削除されている)を使用している場合は、⁴を使用してアーカイブを解凍し、xz
アーカイブをパイプします。
xz -dc node-v18.7.0-linux-x64.tar.xz | tar -xvf -
xz -dc node-v18.7.0-linux-x64.tar.xz | pax -rv
1通常、tar
GNUシステムで呼び出されますが、そのシステムの隣にインストールされている場合は、gtar
他のシステムで頻繁に呼び出されますgnutar
。gnu-tar
-
²GNU tarの場合、ファイルがstdinからファイル名に渡されるか、ファイルを検索できない場合(この場合は渡す必要があります)、このオプションは効果がありません-J
。
³アスタリスクの場合、ファイルが見つからないと効果はありません。この場合、実際にこの-xz
オプションを使用する必要があります。tar -xf -
stdinを検索できる限り、まだ有効です。
xz
⁴この場合、エラーが常に検出されない可能性があることに注意してください。ほとんどのBourne様シェルは、pipefail
ここで役に立つksh93のオプションをサポートしていますset -o pipefail
。