前回まで、パッケージとパッケージ管理ツールについて説明してきたが、実際 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 ツール、アーカイブマネージャなどで展開する事も出来ます。