emerge

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

emerge は、Gentoo のパッケージマネージャである Portage との、主たるコマンドラインインターフェースです。

emerge は、Gentoo Linux 上でソフトウェアパッケージのダウンロード、インストール、更新、および保守を行うために使用されます。

emerge は非常に強力で柔軟なコマンドです。特に、パッケージを「ソースから」自動的にビルドおよびインストール、「すぐに使える」バイナリパッケージの取得およびインストール、バイナリパッケージの作成、パッケージの検索、システム情報の報告などを行うことができます。

ヒント
emerge コマンドには多くの可能なオプションがあります。広範なドキュメントと、すべてのオプションの完全な一覧については、man emerge を参照してください。
関連

emerge コマンドの範囲を超えた Portage の使用法については、Portage の記事を参照してください。

ハンドブックの Gentoo での作業および Portage での作業の章には、emerge コマンドの使用に付いての節があります。

emerge コマンドについてのよくある質問の一部は、FAQPortage 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 (上を参照) の短い形です。出力の各部の説明を見るには、赤い点線のボックスにマウスカーソルをホバーしてください:

# emerge -atv package

These are the packages that would be merged, in reverse order:

Calculating dependencies... done! [ebuild U ] category/package-3.0-r2 [2.0] USE="enabled -disabled toggled* new% (-unavailable)" MAKE_OPTIONS="-disabled" 777 kB [ebuild UD ] category/package-2.0 [3.0] 777 kB [ebuild R ] category/package-1.0 777 kB [ebuild N ] category/package-0.5 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 を参照してください。

パッケージをインストールする

--ask--verbose オプションを付けて、net-proxy/tinyproxy パッケージをインストールしてください:

root #emerge --ask --verbose net-proxy/tinyproxy

どのパッケージの、どのバージョンが、どのスロットとして、どの ebuild リポジトリからインストールされるかが version specifier を使って示されます。

ヒント
--ask (-a) オプションは非常に有用です。実際の操作を始める前に、emerge が行うことを確認することができます。--verbose (-v) オプションは、Portage が行うことについてより詳細な情報を表示し、これも便利に使えることが多いです。望むなら、オプションはデフォルトとして設定することもできます。デフォルトのオプションは、例えば --ask=n のようにして、コマンドライン上で上書きすることができます。
警告
--ask オプションを渡さなかった場合、要求された操作は確認されずに実行されます。--pretend オプションを使うこともできます。
メモ
依存パッケージなど、ものによってはこの方法でインストールすべきでないものもあります。依存関係を world ファイルに追加しないの節を参照してください。

パッケージの機能はインストール時に USE フラグによって規定され、これはソフトウェアの利用目的に応じて、設定したり設定を解除したりすることができます。

パッケージを検索する

メモ
ここで説明する emerge コマンドの組み込みの検索機能は、他のツールと比べて限られた結果しか表示しないかもしれません。Latest version availableACCEPT_KEYWORDS (現在の プロファイルmake.confpackage.accept_keywords 等から導出されます) によって制約されます。さらに、Latest version availableLatest installed version はスロットを考慮しないため、スロットによって分けられた複数のバージョンを表示しません。eixeshowkw などのツールが emerge --search よりも多くの結果を表示する状況では、このことは混乱を招くかもしれません。
関連
より高度なパッケージの検索方法については、eixequery、そして packages.gentoo.org も参照してください。

名前に proxy を含むパッケージを検索します:

user $emerge --search proxy

名前または説明 (description) に proxy を含むパッケージを検索します:

user $emerge --searchdesc proxy

正規表現を利用してパッケージを検索します:

user $emerge -s '%^python$'

カテゴリ内のすべてのパッケージを一覧表示します:

user $emerge -s '@net-ftp'

パッケージを削除 (アンインストール) する

依存関係を考慮する --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 オプションを使用してください。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 に一時的な設定を渡す

警告
コマンドライン上で環境変数を Portage に渡しても、これはシステム構成に対する一時的な変更にしかならないので、システム更新などの定期的な保守によってそのような変更はすべて差し戻されるでしょう。この節の内容は --pretendオプションとともに使用して構成変更の効果をプレビューするのには有用ですが、実際にパッケージをインストールしたり更新したりするのに使用するべきではありません


Portage の構成の変更を行う正しい方法は、/etc/portage/make.conf/etc/portage/package.accept_keywords/etc/portage/package.use などの Portage 構成ファイルを介する方法です。

呼び出しの挙動に影響を加えるために、コマンドライン上で環境変数を宣言することによって、emerge コマンドに一時的な設定値を渡すことができます。例えば、app-editors/emacssvg 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

特定のファイルを提供するパッケージを再 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 を参照してください。

関連項目