Gentoo Linuxにおけるパッケージ管理について(スロット、tbz2ファイル)
スロット
複数バージョンが共存できる一部のパッケージ*1には、同時に入れられるバージョンの「枠」(スロット)が設けられている。
例えば、GUIツールキットと呼ばれるGTK+やQtには、大きなバージョン系統*2ごとにスロットが設けられていて、2008年10月現在では、GTK+は「1」と「2」、Qtは「3」と「4」にそれぞれ1つずつのバージョンをインストールできる。wxGTKのように、「2.6」「2.8」という系統*3でスロットになっているものや、gtkhtmlのように互換性のある範囲ごとに幾つも細かく*4スロットが分かれているものもある。他には、カーネルのソースは全てのebuildのバージョン/リビジョンごとにスロットが用意されている。
新しいスロットにパッケージがインストールされる場合にはemergeによるインストール時に
[ebuild NS ] [分野名]/[パッケージ名]-[バージョン]...
のように表示される。
例として、GCCのバージョン4.1.2と4.2.4がシステムにインストールされていて、4.1.2のほうが要らなくなったとしたら
(バージョンによる指定) $ sudo emerge -aC "=sys-devel/gcc-4.1.2" (スロットによる指定) $ sudo emerge -aC "sys-devel/gcc:4.1"
のようにバージョンやスロットによる指定を行って削除することができる。バージョンやスロットの指定をしないと全てのバージョンが消える。
バイナリパッケージ(.tbz2ファイル)
ビルド/インストール済みのパッケージをバイナリパッケージとして.tbz2ファイル*5にまとめることができる。バイナリパッケージを使用すると、ビルド作業を行わずにインストールが行え、Gentoo Linuxを複数台のマシンで使用しているときには便利かもしれないが、不特定多数に配布する用途だとGentooの自由度という特徴が活かされない。USEフラグの構成は、パッケージを作成したシステムとインストールするシステムとで同じものにしておくとよい。
バイナリ配布サーバ(後述)を用いることで、ビルド済みパッケージをダウンロード/インストールすることもできる。
(インストール済みパッケージの.tbz2ファイル化・設定付き) $ sudo quickpkg --include-config=y [パッケージ名] (インストール済みパッケージの.tbz2ファイル化・設定無し) $ sudo quickpkg --include-config=n [パッケージ名] (パッケージのビルド/インストール時に.tbz2ファイルも作成) $ sudo emerge -avb [パッケージ名] (パッケージをビルドして.tbz2ファイルを作成するが、システムにはインストールしない) $ sudo emerge -avB [パッケージ名] (ローカル上にバイナリパッケージがある場合に使用する) $ sudo emerge -avK [パッケージ名] (バイナリ提供サーバ上にバイナリパッケージがある場合に使用する) $ sudo emerge -avg [パッケージ名] (バイナリ提供サーバ上にバイナリパッケージがある場合で全てバイナリを使用したいとき) $ sudo emerge -avG [パッケージ名]
バイナリパッケージが利用できるときには、インストール確認時に
[binary N ] [分野名]/[パッケージ名]-[バージョン]...
のように表示される。インストールはその後あっという間に終わる。
emergeの-Bオプションはパッケージをインストールせずに.tbz2ファイルを作成するが、これは「x86_64版Gentoo Linuxの32bitライブラリを自前で管理(概要と、ビルド方法について)」から行っていたような、x86_64上でx86_32版ライブラリを(直接システムにインストールせずに)ビルドする作業などで使える。
.tbz2ファイルの読み書きに使用される場所は/etc/make.confの変数PKGDIRの場所で、省略時の既定の場所は/usr/portage/packages/。
バイナリ提供サーバにあるバイナリパッケージを使用する場合
- http://www.gentoo.org/doc/ja/handbook/handbook-x86.xml?part=2&chap=3#doc_chap4
- http://gentoo-wiki.com/TIP_Using_PORTAGE_BINHOST
の通りにインストールする。
2008年10月現在、Gentooのミラーサーバ群はバイナリパッケージの配布は行っておらず、個人などが個別に公開・配布しているサーバから取ってくることになる。この配布者が信用できて、かつUSEフラグの構成が配布者が指定したものでよければ、使用する価値がある。
なお、配布されているバイナリパッケージは「USE=bindist」でビルドされている点にも注意。「USE=bindist」については「Gentoo Linuxにおけるパッケージ管理について(USEフラグ)」を参照。
初めてバイナリパッケージ配布サーバからパッケージをインストールしようとしたときには、その情報をダウンロードして保存(キャッシュ)しておくための処理にかなり時間がかかる(2回目からは多少短くなる)。また、/var/cache/edb/に巨大なファイル(metadata.idx.most_recentやremote_metadata.pickle)を作成するため、パーティション分けをしている場合は容量にも注意。
手元の環境で、x86_64で利用可能と書かれていたサーバ(packages.ututo.org/k8/)を試したが、うまくいかなかった。そもそも.tbz2ファイルの中身がx86_32*6で、適当なパッケージをインストールしようとしたがバイナリパッケージが使用されない上、「Failed to inject remote binary package:[パッケージatom]」などのメッセージも出ていた。実際にはx86_64向けの利用可能サーバは存在しないようだ。
関連記事:
- Gentoo Linuxにおけるパッケージ管理について(パッケージ、バージョンとその識別子)
- Gentoo Linuxにおけるパッケージ管理について(USEフラグ)
- Gentoo Linuxにおけるパッケージ管理について(Overlay)
- Gentoo Linuxにおけるパッケージ管理について(systemとworldのprofile、未インストールパッケージのインストール済みマーク付け)
- Gentoo Linuxにおけるパッケージ管理について(実際のコマンド操作)
- Gentoo Linux 2008.0 ライブCDのGUIインストーラでGUI構成のインストールをしてみた
- Gentoo Linuxにおけるパッケージ管理について(サービス、ランレベル、環境変数など)