圧縮されたアーカイブファイルが展開出来ない!(ソースコードを自分でコンパイルした時のトラブルシューティング)

LINEで送る
Pocket

前回記事(rpm を手動でインストール)

前回まで、パッケージとパッケージ管理ツールについて説明してきたが、実際 Linux 上で作業をしていて問題に直面した時、どのようにパッケージと付き合っていけば良いかトラブルの例を上げるので一緒に解決していきましょう。

# tar xvfz  httpd-2.4.29.tar.bz2

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now

# gzip -d httpd-2.4.29.tar.bz2
gzip: httpd-2.4.29.tar.bz2: unknown suffix -- ignored

複数のファイルを受け渡す為に私たちは複数のファイルを圧縮した一つのアーカイブファイルにします。最近は、zip がよく利用されていますが、Linux でもいくつかの形式が使用されています。

・ZIP (拡張子 .zip, .Z)
Phillip W. Katz により開発された世界でもっとも利用されている圧縮形式、Windows, Mac OS, Linux で利用されている。

・gzip (GNU Zip) (拡張子 .gz)
GNUプロジェクトにより開発された圧縮形式。 UNIX, Linux 上ではデファクトスタンダードとなっている。

bzip2 (bunzip ver.2) (拡張子 .bz2)
Julian Seward により開発された ZIP, gzip より高い圧縮率を誇る圧縮形式。

xz (xz) (拡張子 .xz)
LZMA2圧縮アルゴリズムを利用している。gzip, bzip2より圧縮時時間がかかるが、伸張速度がgzipより多少遅いがbzip2よりは速いため、最近よく利用されている。

tar (拡張子 .tar)
tar は、ユーザ情報、グループ情報、パーミッション、最終更新日時、ディレクトリ構造などの情報を同時にアーカイブすることが出来る事が出来ます。 UNIX, Linux で、デファクトスタンダードとなっていますが、圧縮する機能はありません。そのため上記 4 つの圧縮方法と組み合わせて使用されています。

tar + ZIP (拡張子 .tar.Z)
tar + gzip (拡張子 .tar.gz, tgz)
tar + bzip2 (拡張子 .tar.bz2)
tar + xz (拡張子 .tar.xz)

これらの圧縮されたアーカイブファイルを通称 ターボール (tarball)と呼びます。

オープンソースのソースコードは基本的にターボールで公開されています。そのソフトウェアをコンパイルしようにもコンパイルする為の方法はターボルの中の README ファイル等に記述されているので、これらのファイルをどのように展開すればよいのか紹介していきましょう。

http://httpd.apache.org/ から3つのファイルをダウンロードしてきました。
拡張子でどのフォーマットのファイルか分かりますが、file コマンドでも確認する事が出来ます。

# file httpd-2.2.34-win32-src.zip httpd-2.4.29.tar.bz2 httpd-2.4.29.tar.gz
httpd-2.2.34-win32-src.zip: Zip archive data, at least v1.0 to extract
httpd-2.4.29.tar.bz2:       bzip2 compressed data, block size = 900k
httpd-2.4.29.tar.gz:        gzip compressed data, was "httpd-2.4.29.tar", from Unix, last modified: Wed Oct 18 03:53:30 2017, max compression

展開方法は次の通りです。

$ unzip httpd-2.2.34-win32-src.zip

$ tar fvxz httpd-2.4.29.tar.gz
もしくは、
$ gunzip -d httpd-2.4.29.tar.gz
$ tar fvx httpd-2.4.29.tar


$ tar fjvx httpd-2.4.29.tar.bz2
もしくは、
$ bunzip2 httpd-2.4.29.tar.bz2
$ tar fvx httpd-2.4.29.tar

apache は、xz 形式のターボルは配布していませんが、Linux kernel は xz 形式のターボルを配布しています。

$ xz -d linux-4.14.4.tar.xz
$ tar fvx linux-4.14.4.tar

tar のオプション
f アーカイブファイルのファイル名、デバイスファイル名を指定する。
j アーカイブをbizp2にフィルターする。
v 処理したファイルの一覧を詳しく出力する。
x アーカイブからファイルを抽出する。
z アーカイブをgzipにフィルターする。
 
ここではコマンドラインでの展開方法を紹介しましたが、図のような GUI ツール、アーカイブマネージャなどで展開する事も出来ます。
 

LINEで送る
Pocket

  • このエントリーをはてなブックマークに追加

アマゾン

LINEで送る
Pocket

記事が面白かった。為になったと思ったら。下記リンクより商品を購入頂くと筆者は喜び記事を更新致します。


LINEで送る
Pocket

コメントを残す

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください