Portageの利用
ミラーサイトの変更

東京大学のミラーサイトをメインで利用するように変更する。

Gentoo ~ # vi /etc/make.conf <= 設定ファイルの編集
GENTOO_MIRRORS="ftp://ftp.ecc.u-tokyo.ac.jp/GENTOO/ \
http://mirror.gentoo.gr.jp \
http://ftp.jaist.ac.jp/pub/Linux/Gentoo/"
SYNC="rsync://rsync.jp.gentoo.org/gentoo-portage/"
emergeの利用

Portageツリーの更新

パッケージをインストールする際、Portageツリーが最新の情報を知ることが出来るようにする。
この作業は定期的に行うのが望ましい。

Gentoo ~ # emerge --sync

emergeコマンドの利用

「Gentoo」ではemergeコマンドを利用し、パッケージの管理を行う。
書式は以下の通り。

Gentoo ~ # emerge オプション パッケージ名

主なオプションは以下の通り。

オプション 説明
無し インストール
-s パッケージの検索
-S DESCRIPTIONも検索
-p インストールせず、何が行われるか確認
-a pオプションを実行後、インストールするか問い合わせる
-v -p や -a と合わせて使う。パッケージが使うUSEフラグ、OVERLAYも表示
-f ソースのダウンロードのみ
-t 依存関係をツリー形式で表示(p や a オプションと合わせて使う)
-C アンインストール
-c 古いバージョンを削除
-k バイナリパッケージからインストール(バイナリパッケージが無い場合、普通にコンパイル)
-K バイナリパッケージからインストール(バイナリパッケージが無い場合、アボート)
-u パッケージの更新、必要に応じてダウングレードも行う
-b バイナリパッケージを作成しつつインストール
-B バイナリパッケージの作成のみ
-e 依存パッケージも遡って全てコンパイルし直す
-O 依存関係を無視してパッケージのインストールを試みる

残された依存関係の削除

-Cオプションでパッケージを削除した場合、依存関係にあるものは削除されない。
そこで、次のようにして依存関係を削除する。

gentoolkitパッケージのインストール

revdep-rebuildを使う為にgentoolkitパッケージをインストールする。

Gentoo ~ # emerge gentoolkit

依存関係の削除

Gentoo ~ # emerge --depclean <= 依存関係の削除(不要なパッケージの削除)
Gentoo ~ # revdep-rebuild <= 削除したパッケージに動的リンクされていたアプリケーションをリビルド

不要ファイルの削除

/usr/portage/distfiles/ にソースファイル等を保存するが、不要なものが削除されない。
そこで、以下のコマンドにより利用されていないバージョンのファイルを削除する。

Gentoo ~ # eclean distfiles
システムの更新

システムの更新には「system」と「world」があるが、それぞれの違いは以下の通り。

system Gentooが指定したパッケージ(重要なパッケージ群)
world 自分が(明示的に)インストールした全パッケージも対象

この為、system に入っているパッケージはworld にも入っている。
なお、worldの対象となるパッケージは
/var/lib/portage/world
に記述されている。

システムを更新するには上記のパッケージを選択してアップグレードするが、emergeコマンドを利用する。
この時のオプションは以下の通り。

オプション 説明
-u 自分が(明示的に)インストールしたパッケージだけアップグレード
-u --deep(-uD) 依存関係も含めてアップグレード
-u --deep --newuse(-uDN) 既にインストールしているパッケージも最新のUSEフラグの状態でemergeし直す(完全な更新)

完全なシステムの更新

システムを完全に更新するには、以下の手順で行う。
この作業はマシン性能にも因るが非常に時間が掛かる。
なお、設定ファイルの更新に dispatch-conf を利用しているが、初めて利用する場合、以下の「dispatch-confの利用」を参照。

Gentoo ~ # emerge -u --deep --newuse world <= システムを完全に更新する
Gentoo ~ # emerge --depclean <= 依存関係の削除(不要なパッケージの削除)
Gentoo ~ # revdep-rebuild <= 削除したパッケージに動的リンクされていたアプリケーションをリビルド
Gentoo ~ # dispatch-conf <= 設定ファイルの更新

上記の
Gentoo ~ # emerge -u --deep --newuse world
の途中でエラーとなった場合、設定ファイルを修正する等して再度実行するが、 普通に実行するとエラー以前のものまでリビルドされてしまう。
そこで、以下のように実行する。

Gentoo ~ # emerge --resume

これで前回中断したemergeを再開するので、時間の短縮になる。
なお、この間に他のemergeを実行すると再開情報が失われるので注意。

「dispatch-conf」の利用

「Gentoo」では設定ファイルの更新は自動で行われない為、emerge コマンドでパッケージをアップデートした場合、 「dispatch-conf」で設定ファイルを更新する。

「RCS」のインストール

設定ファイルの履歴を取るために「RCS」を利用する。

Gentoo ~ # emerge rcs <= 「RCS」のインストール

「dispatch-conf」の設定

Gentoo ~ # vi /etc/dispatch-conf.conf <= 設定ファイルの編集
use-rcs=no
↓
use-rcs=yes <= 変更(履歴管理に「RCS」を利用する)

replace-wscomments=no
↓
replace-wscomments=yes <= 変更(空白やコメントが変更されただけのときに自動処理する)

replace-unmodified=no
↓
replace-unmodified=yes <= 変更(ユーザーが変更していないファイルは自動処理する)

「dispatch-conf」の実行

Gentoo ~ # dispatch-conf

自動処理できないファイルは差分が表示され、コマンドの入力待ちの状態になる。
この時に利用できるコマンドは以下の通り。

コマンド 説明
u 更新ファイルで置き換える
z 更新ファイルを削除し、古いファイルを維持する
n なにも処理せずにスキップする
e 更新ファイルを編集する($EDITORを利用)
m 対話的なマージを行う
l 古いファイルと更新ファイルの差分を表示する
t 更新ファイルをトグルで切り替える
h ヘルプを表示する
q 「dispatch-conf」を終了する

m コマンドで、マージを行う場合、以下のコマンドが利用できる。

コマンド 説明
ed ヘッダで装飾して両方の変更を編集
eb ヘッダなしで両方の変更を編集
el 古いバージョンを編集
er 新しいバージョンを編集
e 新規にその部分を入力する
l 古いバージョンを利用する
r 新しいバージョンを利用する
s 結果を表示せず共通行を含む
v 結果を表示して共通行を含む
q 終了

m コマンドで編集が終わると最初のプロンプトに戻るが、ここではマージ後のファイルが更新後のファイルとして扱われる。

▲ページのトップへ