Gentoo チートシート

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Gentoo Cheat Sheet and the translation is 100% complete.

これはGentoo システムを管理するための便利なコマンドとヒントからなるリファレンスカードです。初心者も熟練者も、便利なヒントがあればぜひ下に追加してください。

関連
FAQPortage FAQ も参照してください。

パッケージ管理

同期の手段

重要
リポジトリを同期した後に表示されるニュース項目がある場合は、それをすべて読んで従うことが重要です。アップグレードに関する詳細な手順を参照してください。

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

qlistapp-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 ファイルに次の行を追加してください (ファイルが存在しない場合は作成してください)。最新の安定版より古いパッケージをマスクする場合は先頭に大なり演算子 (>) を接頭辞として使用して、より新しいバージョンをマスクする場合は小なり演算子 (<) を接頭辞として使用して、バージョンを指定します:

ファイル /etc/portage/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

equeryapp-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.confPORTAGE_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 関連ファイル

ログ管理

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 に追加してください:

ファイル /etc/eixrc/00-eixrc
OVERLAY_CACHE_METHOD="assign"

Portage 内のパッケージを正規表現で検索する

Portage 内のパッケージを正規表現で検索し、インストールされているバージョン付きで表示するには:

root #emerge -s "%^python$"

または

root #emerge --search "%^python$"

qcheck

qcheck を使用してインストール済みのパッケージを検証する:

root #qcheck vim-core

qcheckapp-portage/portage-utils に含まれており、このコマンドを実行することでインストールできます:l

root #emerge -a app-portage/portage-utils

qcheck について、マニュアルページを読んで詳しく知る:

user $man qcheck

関連項目

外部資料