Gentoo パッケージ操作マニュアル

8 分で読了
このページの目次

Portage 専用の手冊。リポジトリ情報、目標設定、インストール済み版、world の選択を分けて再構築と depclean を考える。保守権限のある端末で実行し、profile 変更や全再構築を日常修復にしない。

やりたいこと参照先
更新と競合を見る解決結果の確認
USE・keyword を変更範囲を絞った設定
不要パッケージの削除world と依存関係
ビルド失敗・設定統合保守と根拠

情報を同期して変更予定を見る

環境記録・repository 同期・移行通知

# profile・toolchain・全体の build 設定を記録する
emerge --info

調査用に全出力を保存し、共有前に固有情報を確認する。保守には対応する権限が必要。

# 設定済み repository の metadata を更新する
emerge --sync

インストール済み package は更新しない。同期失敗を直してから更新計画を読む。

# 同期後の新しい保守通知を見る
eselect news list
# 一覧のうち本機に関係する通知を読む
eselect news read 1

1 は実番号に置き換える。profile・Python・toolchain 移行の前提作業を先に行う。

依存解決を確認して同じ範囲を更新する

# world 更新と USE による再 build を予覧する
emerge -pvuDN @world --verbose-conflicts

-p は予覧、-v は詳細、-u は更新、-D は依存を深く調べ、-N は new USE を確認する。blocker・slot・降格・再 build 理由を読む。

# 確認した範囲を再確認して更新する
emerge -avuDN @world

-a が -p の代わり。設定・repository が変わった場合は新計画を確認する。設定を merge し主要 service を検証してから depclean を考える。

目的に応じて package を調べる

# インストール済み package を列挙する
equery list '*'

equery は app-portage/gentoolkit に含まれる。以下は独立した照会。

# 対象 package の USE flag を読む
equery uses app-editors/neovim
# この package へ依存するものを調べる
equery depends app-editors/neovim

逆依存の確認で、neovim 自身の必要 package 一覧ではない。

# package の設置 file を確認する
equery files app-editors/neovim

equery は gentoolkit、eix/qlist は任意。追加・更新・降格・再構築・slot・blocker を確認し、news を読んでから emerge -avuDN @world を実行する。構築依存の保持方針も揃える。

USE・keyword・mask の役割を分ける

設定目的注意
package.useビルド機能equery uses で対応フラグを確認
package.accept_keywords選択パッケージの testing 等を許可パッケージ・版を限定し全体 ** を避ける
package.mask / package.unmask候補版の制限・指定 atom の解除unmask だけで keyword や依存競合は解決しない

別々の file 内容例。既存の directory・単一 file 構成に合わせて統合し、一つの file に連結しない。先に下の照会で flag 対応を確認する。

/etc/portage/package.use/editor

app-editors/vim python

/etc/portage/package.accept_keywords/editor

app-editors/neovim ~amd64

~amd64 は対応 architecture の testing keyword。必要な時だけ使い、全機の既定値にしない。

package 単位の変更前後を確認する

# 対応 flag と現状を確認する
equery uses app-editors/vim

python は Vim の例。現 ebuild の対応を確認してから上の file へ統合する。

# 変更後に選ばれる版・USE を予覧する
emerge -pv app-editors/vim

想定と違えば詳細な package.use・profile・mask を確認し、全体 USE を安易に増やさない。

USE 再 build の方針を選ぶ

# 有効な USE 状態変化による更新を予覧する
emerge -pvuD --changed-use @world

実状態の変化を中心に扱い、下の --newuse と選択する。

# 追加・削除 flag の影響も含めて予覧する
emerge -pvuDN @world

本機の方針に合う一方を選び、実行時は他の選択肢を保って -p を -a にする。

--newuse と --changed-use の予覧は同一ではない。newuse は未有効フラグの追加・削除でも再構築し得る。changed-use は実際の変更を重視する。一時 USE 指定は package.use に保存されず、autounmask-write の出力も確認が必要。

world にないから削除可能とは限らない

図を準備しています
world の選択が依存を保持する仕組み

deselect は uninstall ではない。depclean は保護集合からの依存到達性で候補を決め、別 package の必要 library は残す。

明示選択を確認して不要な目標を外す

# 明示的に選んだ package を読む
cat /var/lib/portage/world

ユーザーの選択一覧で、@world の全依存ではない。選択 set・system/profile も関係する。

# 選択解除前の削除候補を予覧する
emerge --pretend --depclean
# 不要な場合にだけ明示保持を解除する
emerge --ask --deselect app-editors/neovim

選択だけを変更し、アンインストールしない。誤った場合は emerge --ask --noreplace app-editors/neovim で再選択できる。

再解決してから削除する

# 新しい選択に対して削除を再計算する
emerge --pretend --depclean

service・一時 tool・build 依存を確認する。他から必要なら deselect しても残る。

# 全一覧を確認して不要な package を削除する
emerge --ask --depclean

更新と依存問題を先に解決し、--unmerge で一覧を強制しない。

# 必要に応じ保持された共有 library の利用側を再 build する
emerge --ask @preserved-rebuild

emerge の案内に従い、主要 program・service を確認する。全障害を直す万能操作ではない。

更新後に清理予定全体を確認する。deselect は明示選択の解除だけで、他の依存があれば残る。-1 は world に追加しない。unmerge は依存保護を回避し得る。preserved-rebuild は保存済み共有ライブラリの利用者を再構築する。

設定統合・リポジトリ・ビルド失敗

設定更新:差分を探して統合する

# merge 待ちの設定 file を探す
find /etc -name '._cfg*'

権限エラーの場合、更新対象なしとは判断できない。

# 対話的に設定を確認・統合する
dispatch-conf

diff と本機固有設定を確認し、影響する service を検証してから reload/restart する。

repository・toolchain を確認する

# repository 一覧と有効状態を見る
eselect repository list

対応 module が必要。有効化と同期済みは別。

# 全 repository 同期の別入口を使う
emaint sync -a

emerge --sync と機械的に連続実行しない。単体なら -r NAME を使う。

# 切替せず現 profile を読む
eselect profile show
# compiler 一覧と選択を確認する
gcc-config -l

失敗復旧:最初の error と計画を残す

# 時刻から失敗 package と段階を特定する
less /var/log/emerge.log

q で終了。詳細は PORTAGE_TMPDIR 配下の package temp/build.log にあり、掃除前に保存する。

# 原因修正後に中断した merge 一覧を予覧する
emerge --resume --pretend

対象を確認して emerge --resume --ask。必須 package の失敗を skipfirst で隠さず、設定目標が変われば再解決する。

問題保存する根拠対応
ビルド失敗emerge --info; build.log対象の temp/build.log と最初の実エラーを保存
保護された設定の更新._cfg*dispatch-conf / etc-update で審査。自動承認という意味ではない
profile・Python・GCC 移行eselect news; emerge --info移行手順に従う。コマンド切替だけでは依存移行にならない

overlay の出所と上書き範囲を確認して有効化・同期する。MAKEOPTS と emerge の同時ジョブ数はメモリ負荷を重ねるため観測で決める。内核削除では起動確認済みの旧版を残す。カーネル手冊を参照。

Gentoo Portage · USE · emerge manual