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 は更新に関する独自のアプローチを持っています。この文書では、Gentoo をアップグレード (更新) する方法とともに、よく保守されたシステムを目指すための方法について説明します。
Gentoo を最新の状態に保つのは重要です。最新のセキュリティパッチを適用する必要性に加えて、Gentoo システムが現行バージョンとあまりにも同期していなさすぎると、更新するのが複雑になることがあります。
Gentoo Linux がインストールされたシステムを最新のセキュリティ更新を適用しつつ順調に動作させるには、毎日から毎週の間の周期で Gentoo Linux の更新を行ってください。更新に数週間以上の間隔が空いてしまうと、更新作業が多少複雑になることがあります。サーバの負荷を避けるため、1 日 1 回より頻繁には同期しないでください。
10 年以上前のシステムにのみ影響する説明はここには保存されません。以前の版についてはページの履歴を参照してください。
Gentoo のアーキテクチャとアップグレードについて
Gentoo は更新のこととなると、他の大部分の Linux ディストリビューションとは異なります。多くのディストリビューションは数ヶ月または数年ごとに定期的なリリースを行い、ディストリビューションによっては待ち遠しいイベントとなっているでしょう。
Gentoo はそれらとは対照的に、ローリングリリースのディストリビューションです。パッケージの最新版を得るために、リリースがやってくるのを待つ必要はありません。ソフトウェアが安定版となったらすぐにインストール可能になります。Gentoo は初めからこの迅速な増分的更新のコンセプトのもとに設計されていて、Gentoo のソフトウェアはいつでも新しい更新されたパッケージが頻繁に更新されています。リリースと Gentoo、そして Gentoo らしさについての Gentoo に固有な事項についてのさらなる情報は、FAQ 内で見つかります。
ソフトウェアをインストールしたら、あとは定期的な更新によってすべてのパッケージが利用可能な最新版に保たれるでしょう。
まれなケースとして、コアシステムへの変更、特定のパッケージへの変更、プロファイルの変更、または Portage の特定の更新によって、更新中または更新後に人の手による介入が必要になることがあります。そのような重大なケースではニュース項目が発行され、Gentoo リポジトリの同期後に通知されるでしょう。必ずニュース項目と Portage のメッセージを読んでそれに従ってください。
プロファイルはコアシステムの機能を定義することができ、また新しいプロファイルは Gentoo が機能する仕組みに根本的な変更があるときに利用可能になることから、プロファイルは Gentoo システムの中核的存在であると言えます。プロファイルはシステムの利用目的に応じてインストール時に選択され、通常は、どうしても必要な場合または更新のためだけに変更されます。
パッケージを更新する
ハンドブックには Gentoo リポジトリの更新とシステムの更新についての詳しい情報があります。さらに詳しい情報については man emerge を参照してください。リポジトリを同期するために emaint を使う方法に関する完全な情報については、リポジトリの同期を参照してください。
リポジトリの同期を行った後にニュース項目が表示されたら、それらをすべて読んで、指示に従うことが重要です。
インストールされているすべてのパッケージを利用可能な最新版に更新するには、まず emaint で Gentoo リポジトリを更新してください:
root #
emaint --auto sync
または、短い形式では:
root #
emaint -a sync
このとき、特に先述のニュース項目のような、よく読んで従うべきメッセージが出力されることがあります。前回の更新時から保留されている設定ファイルの更新がある場合は、設定ファイルを更新するように注意してくるかもしれません。
システム全体をその依存関係も含めて更新するには、emerge を実行してください:
root #
emerge --ask --verbose --update --deep --newuse @world
または、短い形式では:
root #
emerge -avuDN @world
バイナリパッケージをビルドしない場合に限り、--newuse
の代わりに --changed-use
を使うこともできます。--changed-use
は、無効化された USE フラグがパッケージに追加または削除された場合に、再インストールをトリガーしません。バイナリパッケージガイドを参照してください。
ビルド時依存も含めて更新するには、--with-bdeps=y
を使用することができます。
更新の最後に Portage によって提供されるあらゆる情報に注意してください。この情報の一部は Portage ログ内でも確認できます。
Portage が依存関係の問題を報告する場合は、--backtrack=30
(またはより大きい数値) を使うと解決することがあります。デフォルトでは Portage がどこまで依存関係を解決するかの制限は比較的低くなっていて (パフォーマンス上の理由のためです)、場合によってはこれが十分でないことがあります。
対処すべき設定ファイルの変更があるときは、dispatch-conf によって管理することができます:
root #
dispatch-conf
更新後の後片付け
更新のあと、Portage は emerge --depclean を実行することを推奨してきます。emerge --depclean の実行は非常に注意深く行ってください。重要なパッケージ (例えばカーネルソースや、代替パッケージがマージされたときの仮想パッケージのオプション依存など) を削除することがあります。
emerge --depclean を使って、潜在的に使用されていないパッケージを安全に削除する方法についての情報は、remove orphaned packages を参照してください。Portage FAQ もお読みください。
プロファイル更新手順
プロファイルの変更を実行する前に、関連するドキュメントを読んでください。
あらゆるプロファイル変更を行う前に、メインの Gentoo リポジトリ (Portage ツリー) が同期されていることを確認してください。
新しいプロファイルが利用可能になったとき、Portage はユーザにニュース項目で通知するでしょう (最近のニュース項目はウェブサイト上でも列挙されています)。
システムが古すぎると、システムを最新の状態にする方法が自明でなくなることがあり、最初から始めるほうが簡単かもしれません。
一般的に、新しいプロファイルが登場してもそれに切り換えるのは必須ではありません。システムは古いプロファイルを使い続けることができ、古いプロファイルのままでも動作しなくなることはないでしょう。しかしながら古いプロファイルが非推奨になったら、もう Gentoo 開発者がそれをサポートする計画が無いということなので、Gentoo としてはプロファイル更新することを強く推奨します。
プロファイルの更新は手動で実行されます。プロファイルを更新する方法は大きく異なることがあります; どれだけ異なるかは、新しいプロファイルでどれだけ深く変更が入っているかに依存します。最も単純な場合では eselect ツールを使って /etc/portage/make.profile シンボリックリンクを変更するだけで済みますが、最悪の場合は、重大な構成変更を行った上でシステム全体を最初から再コンパイルする必要があるかもしれません。しかし通常はこの変更は難しいものではなく、詳しく説明されます - 覚えておくべきことは、適切に手順に従うことです。
新しいプロファイルに移行するために厳密に何が必要かは、関連するニュース項目で詳細に書かれています。
一般的な手順
以下はプロファイルを更新するために行われることの汎用的な概略です。前述の通り、新しいプロファイルごとに特有の手順がニュース項目によって提供されるでしょう。プロファイル更新は、単純にプロファイルのバージョンを切り換えるだけでなく、手動での介入を必要とすることが多いです。
多くのアーキテクチャ向けに desktop サブプロファイルがあります。これらのプロファイルは、極めて最小限なデフォルトのプロファイルと比較して高い要求に応えることができるので、よく確認してください。
developer サブプロファイルは Gentoo Linux の開発作業のために特化したものです。一般的な開発環境を構築するための助けになるという意味ではありません。
eselect でプロファイルを切り換える
親セクションの警告を読んだことを確認してください。
自動ツールでプロファイルを切り換えるには、app-admin/eselect をインストールする必要があります。eselect ユーティリティを使うと、シンボリックリンクを手動で作成したり削除したりする必要がなく、プロファイルの一覧と選択を簡単に行えます:
root #
eselect profile list
root #
eselect profile set <number>
手動でプロファイルを切り換える
親セクションの警告を読んだことを確認してください。
手動でのプロファイル変更も依然としてサポートされています:
root #
rm /etc/portage/make.profile
root #
cd /etc/portage
root #
ln -s ../../var/db/repos/gentoo/profiles/<selected profile> make.profile
17.1 プロファイルに更新する
適切なニュース項目を確認してください。現時点で、すべてのインストールはすでに 17.1 プロファイルを使用しているべきなので、移行作業は手強いかもしれません。
17.0 プロファイルに更新する
適切なニュース項目を確認してください。現時点で、すべてのインストールは 17.1 プロファイルを使用しているべきなので、移行作業は手強いかもしれません。
古いシステムを更新する
システムがあまりにも古くなりすぎると、簡単にはアップグレードできないことがあります。古いシステムを手動で更新することは可能かもしれませんが、最初からやり直して、古いシステムから新しいシステムにシステム設定ファイルをコピーしたほうがいいかもしれません。
以下は古いシステムを更新するためのざっくりとしたガイドです。他の方法はこちらでも見つかります。
概要
このアップグレードアプローチのアイディアは、ビルド用につなぎの chroot 環境を作成して、最新の stage3 をそこで展開する、というものです。次に、stage3 chroot 環境内で利用できるツールを利用して、元のシステム上のパッケージをアップグレードします。
以下のコマンド群は不完全かもしれません。作業手順というよりは、方針として機能するものです。このアプローチが明確と思われないなら、重要なファイルをバックアップして、Gentoo を再インストールしたほうが早いでしょう。
ビルド用のつなぎの chroot 環境を準備する
まずビルド用のつなぎの chroot 環境の場所を作成し (/mnt/build とします)、最新の stage3 アーカイブをその中に展開しましょう。
root #
mkdir -p /mnt/build
root #
tar -xf /path/to/stage3-somearch-somedate.tar.bz2 -C /mnt/build
root #
mount --rbind /dev /mnt/build/dev
root #
mount --rbind /proc /mnt/build/proc
root #
mount --rbind /sys /mnt/build/sys
次に、この chroot 環境の中にマウントポイントを作成し、そこに元の (古い) 環境を bind マウントします。
root #
mkdir -p /mnt/build/mnt/host
root #
mount --rbind / /mnt/build/mnt/host
これで、元の (古い) システムに /mnt/build/mnt/host 以下でアクセスできるようになりました。これにより、ビルド用のつなぎの chroot 環境の中からでも、元の (古い) システムにアクセスしてパッケージを更新することができます。
ネットワーク、chroot、そして更新
新しい環境をネットワークにアクセスできるようにする必要があるので、ネットワーク関連情報をコピーしてください:
root #
cp -L /etc/resolv.conf /mnt/build/etc/
それではビルド用のつなぎの環境に chroot して、元のシステムが (ビルド用のつなぎの chroot 環境を通してではなく) 元のシステムの中から更新できるようになるまで、重要なパッケージを更新していってください:
root #
chroot /mnt/build
root #
source /etc/profile
root #
export PS1="(chroot) ${PS1}"
(chroot) root #
emerge --sync
(古い) 元のシステムと chroot 環境の間で、プロファイルと Portage の設定に互換性があるか確認するといいでしょう。
それでは、(古い) 元のシステムの中へのパッケージのビルドとインストールを開始してください。Portage が古いか存在しない場合は、そこから始めるのがよいでしょう:
(chroot) root #
emerge --root=/mnt/host --config-root=/mnt/host --verbose --oneshot sys-apps/portage
この chroot セッションは開いたままにしておき、(古い) 元のシステムの更新を試してください。失敗した場合は、ビルド用のつなぎの chroot 環境で利用できるビルドツール (新しい sys-libs/glibc や sys-devel/gcc など) を利用してパッケージを更新するために、この chroot セッションを利用してください。ビルド用 chroot 環境には必要に応じてツールを追加してかまいません。
chroot の中での emerge コマンドの実行にはすべて、
--root=/mnt/host --config-root=/mnt/host
を付けるのを忘れないでください! そうしないと、(古い) 元のシステムではなく、chroot 環境自身が更新されます。システムによっては、新しいソフトウェアをインストールするために設定ファイルを更新する必要があるかもしれません。chroot 環境の中で変更を行ってください。
システムを完全に最新の状態してルートから抜けるために、@world
集合 (すべてのパッケージ) を (古い) 元のシステムの中にビルドしてください:
(chroot) root #
emerge --root=/mnt/host --config-root=/mnt/host --update --newuse --deep --ask @world
完了したら、これでシステムは最新の状態になっているはずです!
関連項目
- 古いGentooシステムの更新方法
- FAQ
- Gentoo_Cheat_Sheet
- Handbook:AMD64/Working/Portage
- Installation — an overview of the principles and practices of installing Gentoo on a running system.
外部資料
This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Gregorio Guidi, Chris Gianelloni, Joshua Saddler
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.