試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

Gentoo Linuxにおけるパッケージ管理について(systemとworldのprofile、未インストールパッケージのインストール済みマーク付け)

world profileとsystem profile

最小限構成のベースシステムを構成するパッケージ(システムパッケージ)と、それらのパッケージが要求するパッケージの集まりの一覧を「system profile」という。*1
system profileのシステムパッケージは、シンボリックリンク/etc/make.profileのリンク先によって指定されるプロファイルから決められている。これはGentoo Linuxの設定の1つで、アーキテクチャや用途、OSのバージョンによって異なるプロファイルが用意されている。
emergeで(--oneshot(-1)オプションを付けずに)パッケージを追加すると、そのパッケージは/var/lib/portage/worldというパッケージ名一覧に追加され、その後Portageツリーの更新で新しいバージョンが利用可能になったときに最新版へ更新することができる。こちらの一覧は「world profile」という。
これらは、emergeの引数に「system」「world」の名前で指定できる。
-sオプションで指定してみたところ、下のような説明が見られた。「system」の説明には選択されているプロファイルも表示される。

*  system
      Description:   System packages for profile /usr/portage/profiles/default/linux/amd64/2008.0/desktop
*  world
      Description:   Set of packages that were directly installed by the user

一覧は

$ emerge -pe system > system_list.txt
$ emerge -pe world > world_list.txt

のようにして参照することもできる(「| less」などでも可)。

未インストールのパッケージがインストールされていることにする

あるパッケージが依存関係によって要求されているが、事情によってそのパッケージをインストールしたくない、という場合がある。
そういったときに、そのパッケージが実際にシステム上にない場合であってもインストールされているようにPortageに見せかけることができ、
ファイル名: /etc/portage/profile/package.provided

[分野名]/[パッケージ名]-[バージョン、リビジョン]

の書式で記述する。*2インストールされているとしたいバージョン/リビジョンのみを具体的に記述するため、先頭には等号、不等号、チルダなどは付かず、後ろにも何も書かない。
この方法はトラブルの原因となる場合もある*3ため、注意して使用する。もし、あるパッケージの更新を避けたい(インストール済みバージョンを高く見せかけたい)のであれば、手動で対象パッケージをマスクしたほうがより好ましい。

関連URL:

関連記事:

*1:USEフラグの構成によって範囲が大きく変わる・例えば、GCCに「USE="gcj gtk"」を付けると、GTK+とその関連パッケージ(X Window Systemなども含む)もsystem profileに含まれる

*2:ディレクトリが/etc/portage/の中にあるprofileという場所(恐らくは新規に作成する)である点に注意

*3:そのパッケージを要求するパッケージ側がビルド時に必要としている場合はうまくいかないかもしれないし、動作時に何か問題が起こるかもしれない