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.

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

# emerge - a t v package

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 U D ] 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 を参照してください。

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

パッケージは、 emerge コマンドに、どのパッケージをインストールするか (と、任意でバージョン、スロット、および取得元の ebuild リポジトリ を指定できます) を示す バージョン指定子 を続けて使用することで、インストールされます ("emerge" されます)。 emerge は root 権限 で実行されます。

パッケージの機能は USE フラグ によって規定され、これはソフトウェアの利用目的に応じて、 /etc/portage/package.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 よりも多くの結果を表示する状況では、このことは混乱を招くかもしれません。
関連
より高度なパッケージの検索方法については、 eix 、 equery 、そして packages.gentoo.org も参照してください。

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

user $ emerge --search proxy

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

user $ emerge --searchdesc proxy

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

user $ emerge -s '%^python$'

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

user $ emerge -s '@^net-ftp/'

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

Gentoo ではパッケージをアンインストールすることを、俗に depclean するとも言います。 --depclean ( -c ) オプションは、指定されたパッケージを削除します。

depclean オプションは、他のインストール済みパッケージ ( @system または @profile 集合に含まれるもの) の依存になっているパッケージを削除することはありません。

重要
--ask または --pretend オプションを使用することで、 --depclean が削除することになる パッケージの一覧を確認 してください。

--depclean は、指定されたパッケージがアンインストールされることで不要になった依存パッケージ、システム上に存在していた孤立したパッケージ、および、 仮想パッケージ の仮想依存を解決するパッケージがインストールされたときに、その仮想パッケージのデフォルト依存であることの結果としてシステム上に存在していただけのパッケージを削除するでしょう。純粋にこれらの機構のうちのいずれかによってシステム上に存在するパッケージは、それを指定して ( @world 集合に含まれるように) インストールしていないにもかかわらず、利用可能であることが期待されていたかもしれません。そのような場合は、 --noreplace オプションを使用して、そのようなパッケージを world 集合に追加するのが望ましいかもしれません。

システム更新 などの一部の Portage の操作は、孤立した重要なパッケージ (例えばコンパイラやカーネル) を削除する場合があります。例えば、そうしたコアパッケージのより新しいバージョンが emerge されたが、最新版を使用するためのシステムの移行をまだ行っていないときに、このようなことが起こるかもしれません。そのような場合は --depclean オプションを使用して、 重要なシステムパッケージの削除 を試みることもできます。現行のカーネルソースや必要なバージョンの GCC などを削除しないように、細心の注意を払ってください。

以下は 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 オプションとともに使用して構成変更の効果を プレビュー するのには有用ですが、 実際にパッケージをインストールしたり更新したりするのに使用するべきではありません 。


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

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

関連項目