Gentoo チートシート
emerge — configuration — ebuild repository — dispatch-conf
world file — USE flags — ebuilds — profiles
upgrades — using testing packages — binary packages
tools — gentoolkit — eselect
Portage FAQ — cheat sheet — FAQ
all articles
これはGentoo システムを管理するための便利なコマンドとヒントからなるリファレンスカードです。初心者も熟練者も、便利なヒントがあればぜひ下に追加してください。
パッケージ管理
同期の手段
Portage
Gentoo ebuild リポジトリも含めて、auto-sync に設定されているすべてのリポジトリを同期する:
root #
emaint --auto sync
または、短い形式では:
root #
emaint -a sync
ミラーから (長くとも) 一日以内のスナップショットを取得して Gentoo ebuild リポジトリを同期する:
root #
emerge-webrsync
emerge --sync は現在 emaint sync モジュールを --auto
オプション付きで実行します。Portage の同期操作を参照してください。
eix
eix を使用して設定済みのパッケージリポジトリと Gentoo ebuild リポジトリを同期する:
root #
eix-sync
これはリポジトリを同期するだけでなく、eix がクエリを行うために使用するキャッシュも更新します。自動的にキャッシュを更新するように portage を設定するほうがより好ましいかもしれません。
パッケージの一覧表示
qlist
インストールされているパッケージを、バージョン、使用されているオーバーレイの名前付きで一覧表示する:
root #
qlist -IRv
qlist は app-portage/portage-utils によって提供されます。
eix
world 集合のパッケージの一覧を、利用可能なバージョンの一覧とともに確認するために、eix を使うことができます:
root #
eix --world | less
出力の色を保持するには、--color
スイッチを使用してください:
root #
eix --color -c --world | less -R
Portage
以下を実行することで、パッケージ集合を使って、selected 集合のパッケージを一覧表示します:
user $
emerge --pretend --quiet --emptytree --nodeps @selected
すべての (*)、または指定された名前を持つ、複数のスロットを使用するパッケージを一覧表示する:
user $
equery list --duplicates '*'
パッケージのインストール
以下の例では www-client/firefox パッケージを使用していますが、この部分はインストールしたいパッケージで置き換えてください。
どのパッケージがインストールされることになるか、実際にインストールせずに一覧表示する:
user $
emerge --pretend --verbose www-client/firefox
または、短い形式では:
user $
emerge -pv www-client/firefox
どのパッケージがインストールされることになるか一覧表示し、インストールする前に確認を求める:
root #
emerge --ask --verbose www-client/firefox
または、短い形式では:
root #
emerge -av www-client/firefox
特定のバージョンをインストールする
パッケージの特定のバージョンをインストールする ("=" 文字に特別な意味を付加するシェルでは "\=" (バックスラッシュとイコール) を使用してください)。例えば:
root #
emerge --ask =www-client/firefox-96.0.1
これはシステムが更新されるまでの間一時的にのみ機能するでしょう。更新中に Portage は、現在どのバージョンがインストールされているか、つまりパッケージが先行する = 演算子付きで emerge されたかに関係なく、パッケージの最新の安定版をインストールしようとします。
Portage が自動的にパッケージを更新しないようにするには、/etc/portage/package.mask/package.mask ファイルに次の行を追加してください (ファイルが存在しない場合は作成してください)。最新の安定版より古いパッケージをマスクする場合は先頭に大なり演算子 (>
) を接頭辞として使用して、より新しいバージョンをマスクする場合は小なり演算子 (<
) を接頭辞として使用して、バージョンを指定します:
<www-client/firefox-96.0.1
パッケージのマスキングに関するさらなる情報については /etc/portage/package.mask を参照してください。
world ファイルに追加せずにインストールする
world ファイルに追加せずにパッケージを emerge します:
root #
emerge --ask --oneshot www-client/firefox
または、短い形式では:
root #
emerge -a1 www-client/firefox
パッケージの削除
完全な情報については、パッケージの削除に関する emerge ドキュメンテーションを参照してください。
--deselect
指定されたパッケージを @world 集合から削除する (そのパッケージはもういらないことを示す) には emerge --deselect (または短縮形の -W
オプション) を使用してください:
root #
emerge --deselect www-client/firefox
次に emerge --depclean (または短縮形の -c
オプション) を実行してください。--pretend
(-p
) オプションはどのようなアクションが取られるかを emerge に表示させます。必要なパッケージが削除されないことを確かめるには、この出力を確認する必要があります:
user $
emerge --pretend --depclean
emerge --depclean をしばらく実行しなかった場合、多数のパッケージを削除しようとするかもしれません - 注意してください。emerge --depclean が不要なパッケージだけを削除することを確認したら、次を実行してください:
root #
emerge --ask --depclean
--ask
オプションは、--pretend
による確認後であれば実際には必要ありませんが、上の例を「コピペ」したときの事故を軽減するために追加しています。
--depclean
の短縮形である小文字の -c
スイッチ (こちらは安全です) と、システムに損傷を加えるリスクがあり、絶対に必要な場合にのみ使用すべき大文字の -C
スイッチを混同しないでください (下の節の警告を参照してください)。--depclean
他のパッケージに依存されていないパッケージを直接削除するには:
root #
emerge --ask --verbose --depclean www-client/firefox
Calculating dependencies... done! >>> Calculating removal order... >>> These are the packages that would be unmerged: www-client/firefox selected: 68.5.0 protected: none omitted: none All selected packages: =www-client/firefox-68.5.0 >>> 'Selected' packages are slated for removal. >>> 'Protected' and 'omitted' packages will not be removed. Would you like to unmerge these packages? [Yes/No]
安全策として、depclean はすべての必要な依存が解決されていない限り、どのパッケージも削除しません。その結果として、まず以下を実行する必要があることがあります:
root #
emerge --ask --verbose --update --newuse --deep @world
変更がリポジトリへの USE フラグの追加・削除のみである場合に再ビルドを避けるために、--newuse
(-N
) の代わりに --changed-use
(-U
) を使用します。より簡潔な実行のために --quiet
(-q
) フラグを使用します:
root #
emerge --ask --quiet --update --changed-use --deep @world
--unmerge
オプション (-C
) もありますが、これは注意せずに使うとシステムを破損するおそれがあるため推奨されません。それが何を行うのか正しく理解したうえで、どうしても必要な場合のみ'これを使用するべきです。対象のパッケージによっては他のソフトウェアやシステムを破損することがあります。Gentoo でパッケージを削除する正しい方法は、実質的には常に --depclean
オプションを使う上述した方法です。一時的にハードブロックを除去するために、--unmerge
オプションが有用な場合もあります。パッケージの更新
world 集合のすべてのパッケージ、それらの依存 (--deep
)、および USE フラグの変更があるパッケージを (USE 変更が何の影響も及ぼさない場合は不必要な再ビルドを避けつつ) アップグレードする:
root #
emerge --ask --verbose --update --deep --changed-use @world
すべてのパッケージの USE フラグが Gentoo リポジトリの現在の状態を反映していることを確実にするために、--changed-use
の代わりに --newuse
を使用することができますが、これはより多くのパッケージの再ビルドを発生させるでしょう。ビルド時依存も更新するためには、--with-bdeps=y
を使用することができます。
より詳しい情報については Gentoo のアップグレードを参照してください。
パッケージのトラブルシューティング
欠けているライブラリが無いか確認し、再ビルドする (通常は必要ありません):
root #
revdep-rebuild -v
equery は app-portage/gentoolkit に含まれます。このコマンドを実行してインストールしてください:
root #
emerge -a gentoolkit
equery を使って、インストールされたどのパッケージがコマンドを提供しているか確認する:
user $
equery b `which vim`
もし必要であれば、qfile を equery のより高速な代替とすることができます。
e-file を使って、(インストールされていなくてもよい) どのパッケージがコマンドを提供しているか確認する:
user $
e-file vim
次で e-file をインストールする:
root #
emerge -a app-portage/pfl
equery を使用して、特定のパッケージ (例では cat/pkg です) にどのパッケージが依存しているか確認する:
user $
equery d www-client/firefox
eix を使ってパッケージについての情報を得る:
root #
eix www-client/firefox
sys-libs/glibc を unmerge しないでください。これはほとんどすべてのパッケージに必要とされています。うっかり削除してしまった場合はレスキュースティック/ディスクが必要になるかもしれません。/etc/portage/make.conf に
PORTAGE_BINHOST="http://packages.gentooexperimental.org/packages/amd64-stable/"
を設定していれば、glibc を取ってくるすることができるかもしれません。再ビルド
パッケージを正しく機能させるために、再ビルドが必要になることがあります。以下はよくある再ビルドの方法です:
新しいカーネルをインストールした後は:
root #
emerge @module-rebuild
新しいバージョンの Go にアップグレードした後は:
root #
emerge @golang-rebuild
root #
emerge @preserved-rebuild
Portage の改良
emerge 完了後に、設定ファイルへの変更を管理する:
root #
dispatch-conf
インストールまたは更新後
perl-core パッケージを更新した後は:
root #
perl-cleaner --all
または、上の効果が無い場合は:
root #
perl-cleaner --reallyall -- -av
haskell パッケージに関しては:
root #
haskell-updater
USE フラグ
euse を使用して、USE フラグ X
の説明と使用状況を取得する:
user $
euse -i X
マニュアルページを読むことで euse についてさらなる情報を収集する:
user $
man euse
どのパッケージが mysql
USE フラグを持っているか表示する:
user $
equery hasuse mysql
どのパッケージが現在 mysql
USE フラグとともにビルドされているか表示する:
user $
eix --installed-with-use mysql
特定のパッケージに対してどの USE フラグが利用できるか表示する:
user $
equery uses <package-name>
パッケージインストールのために必要な USE フラグを手っ取り早く追加する:
root #
echo 'dev-util/cmake -qt5' >> /etc/portage/package.use
重要な Portage 関連ファイル
- /etc/portage - Portage の主要設定のディレクトリ。
- /etc/portage/make.conf - グローバル設定 (USE フラグ、コンパイラオプション)。
- /etc/portage/package.use - 個々のパッケージの USE フラグ。複数のファイルを含むフォルダにすることもできます。
- /etc/portage/package.accept_keywords - 個々のパッケージのキーワード; 例えば ~amd64、~x86、または ∼arm。
- /etc/portage/package.license - 受諾したライセンス
- /etc/portage/profile/use.mask - ロックされた USE フラグをマスク/マスク解除するために。
- /var/lib/portage/world - 明示的にインストールされたパッケージアトムのリスト。
- /var/db/pkg - インストールされたすべてのパッケージに対する、インストールについての情報ファイルの集合を含んでいます。
ログ管理
genlop
genlop は Portage ログ処理プログラムで、パッケージを emerge したときのビルド時間を推測することもできます。
次を実行して app-portage/genlop をインストールしてください:
root #
emerge -a app-portage/genlop
マニュアルページを読むことで genlop についてさらなる情報を収集する:
root #
man genlop
最後に emerge (インストール) された 10 パッケージを表示する:
root #
genlop -l | tail -n 10
LibreOffice の emerge にどれだけの時間がかかったかを表示する:
root #
genlop -t libreoffice
emerge -uND --with-bdeps=y @world にどれだけの時間がかかりそうか推測する:
root #
emerge -pU @world | genlop --pretend
システムアップグレード中に、最新の ebuild マージ状況を監視する:
root #
watch genlop -unc
オーバーレイ
eselect repository
以下を実行することで app-eselect/eselect-repository をインストールできます:
root #
emerge -a app-eselect/eselect-repository
存在するすべてのオーバーレイを一覧表示する:
user $
eselect repository list
インストールされているすべてのオーバーレイを一覧表示する:
user $
eselect repository list -i
さらなる情報については Eselect/Repository を参照してください。
サービス
root シェルを取得する (現在のユーザが sudoers リストに含まれていない場合):
user $
sudo -i
OpenRC
ブート時に default ランレベルで ssh デーモンを開始する:
root #
rc-update add sshd default
今すぐ sshd サービスを開始する:
root #
rc-service sshd start
sshd サービスが実行中か確認する
root #
rc-service sshd status
sshd サービスを再起動する:
root #
rc-service sshd restart
sshd サービスを停止する:
root #
rc-service sshd stop
サービス、それらのステータス、それらが属しているランレベルを一覧表示する:
root #
rc-status --all
有効化されているサービス、それらが属しているランレベルを表示する (実行中かどうかではなく、有効化されているもののみ):
root #
rc-update show
systemd
ssh デーモンをブート時に開始する:
root #
systemctl enable sshd
sshd サービスを今すぐ開始する:
root #
systemctl start sshd
sshd サービスが実行中か確認する:
root #
systemctl status sshd
ヒント
メタデータキャッシュを生成する
ebuild リポジトリは小さなものから大きなものまでさまざまです。その結果として Portage の操作の大部分の処理速度を低下させます。これが起こるのは、オーバーレイがメタデータキャッシュを持っていないからです。キャッシュは検索と依存ツリーの構築を高速化するために使用されます。オーバーレイを同期した後はローカルメタデータキャッシュを生成するのが良い戦略です。
root #
emerge --regen
この技は eix と組み合わせて使うこともできます。eix-update は処理を高速化するために、emerge --regen によって生成されたメタデータキャッシュを使用することができます。これを有効化するには、次の変数を /etc/eixrc/00-eixrc に追加してください:
OVERLAY_CACHE_METHOD="assign"
Portage 内のパッケージを正規表現で検索する
Portage 内のパッケージを正規表現で検索し、インストールされているバージョン付きで表示するには:
root #
emerge -s "%^python$"
または
root #
emerge --search "%^python$"
qcheck
qcheck を使用してインストール済みのパッケージを検証する:
root #
qcheck vim-core
qcheck は app-portage/portage-utils に含まれており、このコマンドを実行することでインストールできます:l
root #
emerge -a app-portage/portage-utils
qcheck について、マニュアルページを読んで詳しく知る:
user $
man qcheck