emerge
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
emerge は、Gentoo のパッケージマネージャである Portage との、主たるコマンドラインインターフェースです。
emerge は、Gentoo Linux 上でソフトウェアパッケージのダウンロード、インストール、更新、および保守を行うために使用されます。
emerge は非常に強力で柔軟なコマンドです。特に、パッケージを「ソースから」自動的にビルドおよびインストール、「すぐに使える」バイナリパッケージの取得およびインストール、バイナリパッケージの作成、パッケージの検索、システム情報の報告などを行うことができます。
emerge コマンドには多くの可能なオプションがあります。広範なドキュメントと、すべてのオプションの完全な一覧については、man emerge を参照してください。
emerge コマンドの範囲を超えた Portage の使用法については、Portage の記事を参照してください。
ハンドブックの Gentoo での作業および Portage での作業の章には、emerge コマンドの使用に付いての節があります。
emerge コマンドについてのよくある質問の一部は、FAQ と Portage FAQ で回答されています。
使い方
呼び出し
emerge コマンドの実行には、適切なオプション、アクション、およびパッケージの集合を渡すべきです。emerge が引数あるいはパッケージをまったく渡されずに実行された場合、コマンドはヘルプテキストを印字して終了するでしょう。
多くの使用法では、emerge はスーパーユーザ特権で実行する必要があるでしょう。単に情報を報告するために使用される場合は、特権の無いユーザとして実行できる場合がありますが。
emerge がパッケージとともに、オプション無しで実行された場合、コマンドはただちに、ユーザの確認を求めることなく、対応するパッケージのインストールを試みます。これは望ましい挙動でない場合が多いので、おそらく以下のオプションのうちのいずれかが必要になるでしょう。
--ask
(-a
) および --pretend
(-p
) オプションを使用すると、システムに対して計画された変更を、実際に反映させる前に確認することができます。--ask
オプションを使用すると、emerge は行う変更を表示し、続行する前に確認を求めます。--pretend
オプションを使用すると、行う変更を単に表示して停止します。スーパーユーザ特権は必要ありません。
--ask
オプションを使用していて、処理中に Enter キーを誤って押してしまった場合、確認プロンプトはスキップされる結果になるでしょう。さらなる情報については man emerge の --ask
オプションのセクションを参照してください。emerge は、個別のパッケージまたはシステム全体についての情報と警告を含む、リッチな出力を提供します。--verbose
オプションは Portage に、パッケージのインストールまたは更新にどの USE フラグが使用されるか、各パッケージごとにどんな USE フラグが利用できるか、パッケージダウンロードのサイズ、オーバーレイの名前など、さらに多くの情報を表示させるために有用です。
emerge を --help
オプション付きで実行すると、コマンドラインオプションについての情報を提供します:
user $
emerge --help
emerge: command-line interface to the Portage system Usage: emerge [ options ] [ action ] [ ebuild | tbz2 | file | @set | atom ] [ ... ] emerge [ options ] [ action ] < @system | @world > emerge < --sync | --metadata | --info > emerge --resume [ --pretend | --ask | --skipfirst ] emerge --help Options: -[abBcCdDefgGhjkKlnNoOpPqrsStuUvVwW] [ --color < y | n > ] [ --columns ] [ --complete-graph ] [ --deep ] [ --jobs JOBS ] [ --keep-going ] [ --load-average LOAD ] [ --newrepo ] [ --newuse ] [ --noconfmem ] [ --nospinner ] [ --oneshot ] [ --onlydeps ] [ --quiet-build [ y | n ] ] [ --reinstall changed-use ] [ --with-bdeps < y | n > ] Actions: [ --depclean | --list-sets | --search | --sync | --version ] For more help consult the man page.
以下は "package" というパッケージをインストールする場合の emerge の実行例です。オプション -atv
は --ask
(上を参照)、--tree
(インストールされるパッケージの依存関係ツリーを表示します)、そして --verbose
(上を参照) の短い形です。出力の各部の説明を見るには、赤い点線のボックスにマウスカーソルをホバーしてください:
These are the packages that would be merged, in reverse order:
Calculating dependencies... done! [ebuild U ] category/package-3.0-r2::gentoo [2.0::gentoo] USE="enabled -disabled toggled* new% (-unavailable)" MAKE_OPTIONS="-disabled" 777 kB [ebuild UD ] category/package-2.0::gentoo [3.0::gentoo] 777 kB [ebuild R ] category/package-1.0::gentoo 777 kB [ebuild N ] category/package-0.5::some-overlay-name 777 kB
Total: 4 packages (1 new, 1 reinstall, 1 upgrade, 1 downgrade), Size of downloads: 3108 kB
Would you like to merge these packages? [Yes/No]U シンボルはアップグレードされるパッケージを示し、D はダウングレードされるパッケージで、R は再 emerge され、N は新しいパッケージです。角括弧の中は、すでにインストールされているパッケージのバージョンです。world ファイルにあるパッケージは太字で示されます。これらはユーザによってインストールされたパッケージで、他はその依存か、system 集合からのパッケージでしょう。
Portage の出力の読み方の完全な説明については、emerge man ページの OUTPUT セクションと
--pretend
オプションを参照してください。Portage の文脈では、「パッケージ」という用語は「アトム」("atom") と似た意味を持ちます。version specifier を参照してください。
パッケージをインストールする
Packages are installed ("emerged") using the emerge command followed by a version specifier that indicates which package to install (and optionally a specific version, slot, and from which ebuild repository). emerge is executed with root privileges.
パッケージの機能はインストール時に USE フラグによって規定され、これはソフトウェアの利用目的に応じて、設定したり設定を解除したりすることができます。
--ask
(-a
) オプションは非常に有用です。実際の操作を始める前に、emerge が行うことを確認することができます。--verbose
(-v
) オプションは、Portage が行うことについてより詳細な情報を表示し、これも便利に使えることが多いです。望むなら、オプションはデフォルトとして設定することもできます。デフォルトのオプションは、例えば --ask=n
のようにして、コマンドライン上で上書きすることができます。--ask
オプションを渡さなかった場合、要求された操作は確認されずに実行されます。--pretend
オプションを使うこともできます。依存パッケージなど、ものによってはこの方法でインストールすべきでないものもあります。依存関係を world ファイルに追加しないの節を参照してください。
--ask
と --verbose
オプションを付けて、net-proxy/tinyproxy パッケージをインストールしてください:
root #
emerge --ask --verbose net-proxy/tinyproxy
パッケージを検索する
ここで説明する emerge コマンドの組み込みの検索機能は、他のツールと比べて限られた結果しか表示しないかもしれません。Latest version available は ACCEPT_KEYWORDS (現在の プロファイル、make.conf、package.accept_keywords 等から導出されます) によって制約されます。さらに、Latest version available と Latest installed version はスロットを考慮しないため、スロットによって分けられた複数のバージョンを表示しません。eix や eshowkw などのツールが emerge --search よりも多くの結果を表示する状況では、このことは混乱を招くかもしれません。
名前に proxy を含むパッケージを検索します:
user $
emerge --search proxy
名前または説明 (description) に proxy を含むパッケージを検索します:
user $
emerge --searchdesc proxy
正規表現を利用してパッケージを検索します:
user $
emerge -s '%^python$'
カテゴリ内のすべてのパッケージを一覧表示します:
user $
emerge -s '@^net-ftp/'
パッケージを削除 (アンインストール) する
To uninstall a package in Gentoo is colloquially said to depclean them. The --depclean
(-c
) option will remove specified packages along with any of their dependencies that are no longer required as dependencies of other installed packages.
The depclean option will not remove any packages that are currently dependencies of other installed packages, of the @system, or @profile sets.
{{{1}}}
依存関係を考慮する --depclean
(-c
) オプションを使用して、net-proxy/tinyproxy パッケージを削除します:
root #
emerge --ask --verbose --depclean net-proxy/tinyproxy
パッケージをアンインストールするのに --depclean
を使用する代わりに、次の節で説明する通り、emerge --deselect (または -W
オプション) を使用して孤立したパッケージを整理することもできます。
--depclean
の短縮形である小文字の -c
スイッチ (こちらは安全です) と、システムに損傷を加えるリスクがあり、絶対に必要な場合にのみ使用すべき大文字の -C
スイッチを混同しないでください (下の警告を参照してください)。(その特定の挙動が特別に必要と理解している場合を除いて)
--unmerge
(-C
) オプションを使用しないでください。このオプションは、システムが機能するのに必要となる重要なパッケージを、警告無しで削除します。孤立したパッケージを整理する
emerge --depclean を使って、潜在的に使用されていないパッケージを削除する方法についての情報は、remove orphaned packages を参照してください。Portage FAQ もお読みください。
パッケージを更新する
パッケージを更新する方法については Gentoo のアップグレードの手順を参照してください。
システム情報を取得する
emerge はトラブルシューティングに有用なシステム情報を出力することができます。この情報はサポートを求めるときや、バグ報告を提出するときに、投稿することがよく求められます。
user $
emerge --info
--verbose
フラグを使用することで、さらなる情報が出力されるかもしれません。
ヒント
distfile を検証して (再) ダウンロードする
現在インストールされているすべてのパッケージについて distfile の整合性を再検証し、以前に削除された、または破損した distfile を再ダウンロードするには、次を実行してください:
root #
emerge --ask --fetchonly --emptytree @world
依存関係を world ファイルに追加しない
依存対象を再インストールする必要がある場合は、--oneshot
(-1
) オプションを使用してください。emerge package コマンドで依存対象をインストールすると、依存対象を world ファイルに追加してしまうため、それにより問題を引き起こす場合があります。
ソフトウェアをソースからコンパイルするために、その依存対象を Portage を使ってインストールすることは、推奨されません。ebuild を書くほうがより好ましいです。
さらなる情報については、User:Sam/Portage help/Maintaining a Gentoo_system を参照してください。
emerge を再開する
複数のパッケージの emerge が (Ctrl+C やクラッシュなどで) 割り込まれた場合、--resume
オプションを付けることで、失敗したパッケージから emerge を再開することができます。--keep-going
と --skipfirst
のオプションにも興味を持たれるかもしれません。詳細については emerge の man ページを参照してください。
環境変数を介して Portage に一時的な設定を渡す
呼び出しの挙動に影響を加えるために、コマンドライン上で環境変数を宣言することによって、emerge コマンドに一時的な設定値を渡すことができます。例えば、app-editors/emacs を svg USE フラグを有効化してマージしつつ、この USE フラグ設定を永続化させないようにするには:
root #
USE='svg' emerge app-editors/emacs
あるいは、ebuild 内で econf
関数を使用するパッケージに追加の設定オプションを渡すには:
root #
EXTRA_ECONF='--without-compress-install' emerge app-editors/emacs
emerge を呼び出すために sudo を使用している場合、sudo は通常それが実行されたときの環境を保持しないので、sudo の呼び出しの後で環境変数を設定する必要があるかもしれません:
user $
sudo USE='svg' emerge -av app-editors/emacs
コマンドライン上で環境変数を Portage に渡しても、これはシステム構成に対する一時的な変更にしかならないので、システム更新などの定期的な保守によってそのような変更はすべて差し戻されるでしょう。この節の内容は
--pretend
オプションとともに使用して構成変更の効果をプレビューするのには有用ですが、実際にパッケージをインストールしたり更新したりするのに使用するべきではありません。
特定のファイルを提供するパッケージを再 emerge する
特定のファイルを指定するだけで、そのファイルを提供したパッケージを再 emerge できると便利なことがあります。
例えばユーザが /usr/lib/libunwind.a を再インストールしたいが、このファイルを提供したパッケージがどれか分からないという場合、emerge にそのファイルパスを指定するだけで、そのファイルを提供したパッケージを特定することができます:
user $
emerge -p /usr/lib/libunwind.a
These are the packages that would be merged, in order: Calculating dependencies... done! Dependency resolution took 2.76 s (backtrack: 0/20). [ebuild R ] sys-libs/llvm-libunwind-17.0.6
この方法では、現在インストールされているパッケージによって提供されるファイルだけを再 emerge することができます。ファイルがどのパッケージに「属する」可能性があるかを探る他の方法については、Pfl を参照してください。
トラブルシューティング
Portage の問題に関する話題については、User:Sam/Portage help も参照してください。
パッケージの emerge が 'unpack' ステージで失敗する
パッケージを emerge するときに、次のメッセージが表示されることがあります:
* Error messages for package dev-libs/libinput-1.16.0: * The ebuild phase 'unpack' has exited unexpectedly. This type of behavior * is known to be triggered by things such as failed variable assignments * (bug #190128) or bad substitution errors (bug #200313). Normally, before * exiting, bash should have displayed an error message above. If bash did * not produce an error message above, it's possible that the ebuild has * called `exit` when it should have called `die` instead. This behavior * may also be triggered by a corrupt bash binary or a hardware problem * such as memory or cpu malfunction. If the problem is not reproducible or * it appears to occur randomly, then it is likely to be triggered by a * hardware problem. If you suspect a hardware problem then you should try * some basic hardware diagnostics such as memtest. Please do not report * this as a bug unless it is consistently reproducible and you are sure * that your bash binary and hardware are functioning properly.
この問題は、上の出力に列挙されている通りの理由で起こることもありますが、Portage が ebuild のソースファイルを展開するパスを含むディスクの容量不足によって発生することも、よくあります。この場所は PORTAGE_TMPDIR 変数を介して設定され、Portage に問い合わせることですぐに知ることができます:
user $
portageq envvar PORTAGE_TMPDIR
/var/tmp
PORTAGE_TMPDIR がマウントされているパーティション (おそらくルート (/) パーティションでしょう) で利用できるディスク容量を確認するためには、df コマンドを使用できます。ディスク容量を空ける方法の詳細については、Freeing disk space を参照してください。
関連項目
- dispatch-conf — Portage に含まれるユーティリティで、パッケージ更新後の設定ファイルを安全かつ便利に操作するために使用されます。
- Portage — Gentoo のための公式のパッケージマネージャであり、ディストリビューションシステムです。