2012/02/24

Debianパッケージについて調べてみた

Debian自身について勉強していきたい。そこで、まずはパッケージから。 この文書には、誤りが含まれる可能性があります。 また、網羅性もありません。

知識として...

Debianのポリシーは非常にわかりやすくて(シンプルという意味ではない)、文書化されている。 例えば、

などがある。非常に厳格に、フリーであろうとしているようだ。 (DFSGは非常に有名である。後に オープンソースの定義 を作る際のひな形になったため。 Debianはそういう意味でもフリーであるというポリシーのはしりだったわけらしい。) そのため以下でも述べるように、 "フリーなソフトウェアのパッケージ"と、"フリーでないソフトウェアのパッケージ" は明確にわかれている。

パッケージの種類

パッケージはDebian Projectによって配布される。現状29000くらいのパッケージがあるらしい。 パッケージにはいくつかの分類がある。
  1. アーカイブエリア: フリーかどうか
    • main: DFSGにおいてフリーなもの
    • contrib: non-freeに強く依存するもの
    • non-free: フリーでないもの
  2. セクション: 機能による分類
    • admin, cli-mono, comm,… たくさん。エリアがmainのとき、<section>という書式で、それ以外は<area>/<section>で書かれる。
  3. ディストリビューション: 安定度による分類
    • stable: リリースされて以降はFixされていて、バグやセキュリティ対策のアップデート(※)のみ。
    • testing: unstableに入ってから一定期間バグが報告されないときに、自動的にtestingに追加される
    • unstable: 開発用。頻繁な更新がある。
    • experimental: 実験的。上の3つはDebian自身のリリースと関係があるが、ここは直接関係ない。
  4. 優先度: 依存関係の様子、システムにどれくらい必須か。以下の順番で優先度が高く、優先度高位のものが、低位のものには依存しない(例:requiredがextraに依存しない)ようになっている。
    • required: これがないと適切に動作しないもの。
    • inportant: UNIXシステムの最低限のために必要と思われるパッケージ。
    • standard: UNIXシステムとして、十分に機能するために必要と思われるパッケージ。
    • optional: 他に入らないもの。
    • extra: 目的化されているもの、他の優先度のパッケージと衝突しているもの。

パッケージの形態

次の2つに分かれる。
  • バイナリパッケージ
  • ソースパッケージ
それらは、Debianポリシーマニュアルに従った構造をもつ。

バイナリパッケージ

ソフトウェアをコンパイルするなど、利用可能な形式にして配布されるもの。 .debという識別子がついているため、debパッケージ,debファイルともいう。 さて、バイナリパッケージは単一のファイルとして配布されているが、実際には3つのファイルのアーカイブになっている。
  • debian-binary: パッケージのフォーマットのバージョン
  • control.tar.gz: アーキテクチャや依存関係や、パッケージメンテナの名前など
  • data.tar.gz: データそのもの
このことを実際に見てみたい。以下ではtmuxというパッケージについて行う。 適宜読み替えて自分の好きなパッケージでやってほしい。
  1. バイナリパッケージをダウンロードする。
    $ sudo apt-get download tmux
    
  2. lessコマンドで説明を見てみる。以下では、ダウンロードしたファイルなどを、<tmux>.debとか書くことにする。
    $ less <tmux>.deb
    
  3. アーカイブの展開
    $ ar xv <tmux>.deb
    
以上で、構造がわかると思う。 Debianでなくともパッケージの展開ができることもわかるだろう。

ソースパッケージ

元々のソフトウェアのソース、バイナリパッケージのための変更(パッチファイル)、ソースパッケージについての情報からなる。 ソースパッケージからバイナリパッケージを構築することができる。


続きはまた今度。

0 件のコメント:

コメントを投稿