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

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

Gentoo Linuxにおけるパッケージ管理について(Overlay)

Gentoo Linuxの「公式」のパッケージは、Gentooのミラーサーバと同期して更新するパッケージ情報のツリー(Portageツリー)を使用してインストールするが、これ以外の非公式なパッケージ情報ツリー(Overlay)を利用することもできる。
同名・同バージョンのパッケージがPortageツリーとOverlayにあった場合はOverlayのほうが優先される。

layman

laymanを使用すると、幾つかのOverlayが登録/更新/削除できる。パッケージ「layman」をインストールすると利用できる。
設定ファイル内の「storage」行に記述されたディレクトリ以下にOverlayのディレクトリツリーが配置される。
ファイル名: /etc/layman/layman.cfg

storage   : /usr/local/portage/layman

となっている場合、/usr/local/portage/layman/[Overlay名]ディレクトリが作成される。

(利用可能Overlayを一覧)
$ sudo layman -L
(Overlayを追加)
$ sudo layman -a [Overlay名]
(追加済みOverlayを削除)
$ sudo layman -d [Overlay名]
(追加済みOverlayを個別に同期)
$ sudo layman -s [Overlay名]
(追加済みOverlayを全て同期)
$ sudo layman -S [Overlay名]
ローカルOverlay

自作ebuildのテストや、Portageツリー内のebuildの編集などを行いたいときには、ローカル用の自作Overlayを用意しておくと役に立つ。Portageツリーや他のOverlayなどと同じディレクトリツリーを作成して、その中にebuildファイルなどを配置して使用する。
自作ebuildをインストールできるようにするには、このOverlayの作成と、後述するOverlayの登録の他に、ebuildファイルに対してebuildコマンドを使用して、関連ファイルのハッシュ(ダイジェスト)を取らなくてはならない。

$ sudo ebuild [ローカルOverlay]/[分野名]/[パッケージ名]/[パッケージ名]-[バージョン](-r[リビジョン]).ebuild digest

ここで、ebuild内で変数SRC_URIに指定した場所から必要なファイルがダウンロードされ、関連ファイルのダイジェストが計算され、情報がファイルに保存される。
Portageツリー内のebuildをローカルOverlayにコピーして編集する場合、ebuildファイルだけでなくfilesディレクトリ内のファイル(群)が必要なこともあり、その場合、ダイジェスト作成前にローカルOverlay側にコピーもしくはリンクしておく必要がある。
下はPortageツリーのmedia-video/mplayerebuildをコピーして修正後、ダイジェストを取るまでの作業例。

$ sudo mkdir [ローカルOverlay]/media-video/mplayer/files -p
$ sudo cp /usr/portage/media-video/mplayer/mplayer-[バージョン](-r[リビジョン]).ebuild [ローカルOverlay]/media-video/mplayer/
(ここでmplayer-[バージョン](-r[リビジョン]).ebuildの内容を修正する)
$ sudo ln -s /usr/portage/media-video/mplayer/files/* [ローカルOverlay]/media-video/mplayer/files/
$ sudo ebuild [ローカルOverlay]/media-video/mplayer/mplayer-[バージョン](-r[リビジョン]).ebuild digest

ローカルOverlayの別の使い方として、laymanから利用可能なOverlayの内、規模の大きなものを登録するのを避けて、使いたいパッケージだけをローカルOverlayにコピーするかリンクを張るというものがある(使用しないパッケージのebuildを処理する無駄を省く目的)。
例えば、「sunrise」のOverlayを登録せずに「media-gfx/xaralx」をローカルOverlayで使用するには

$ sudo mkdir [ローカルOverlay]/media-gfx -p
$ sudo ln -s [laymanのstorage]/sunrise/media-gfx/xaralx [ローカルOverlay]/media-gfx/ 

とする。
ただし、Overlayによってはeclassディレクトリ内のファイルもローカルOverlay上に置かないといけない場合があるので注意。

Overlayの登録

Overlayのディレクトリツリーの場所を/etc/make.confに変数PORTDIR_OVERLAYに記述することで利用可能になる。
下は/usr/local/portage/layman/desktop-effects//usr/local/portage/local/という場所に用意した2つのOverlayを使用する例。

PORTDIR_OVERLAY="\
/usr/local/portage/layman/desktop-effects \
/usr/local/portage/local"

ここまでを行うと、通常のパッケージをインストールする要領でemergeによってOverlay内のパッケージがインストールできるようになる。

関連記事: