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 のメッセージを読んでそれに従ってください。
Profiles are central to a Gentoo system because they can define core system functionality, and new profiles are made available when there are fundamental changes to the way Gentoo works. A profile is selected at install time, according to the intended use of the system and is usually only changed if necessary, or for an update.
パッケージを更新する
ハンドブックには 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
を使うこともできますが、こちらのオプションでは、一部の USE フラグが現在の Gentoo リポジトリ内の 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 ツリー) が同期されていることを確認してください。
システムが古すぎると、システムを最新の状態にする方法が自明でなくなることがあり、最初から始めるほうが簡単かもしれません。
一般的に、新しいプロファイルが登場してもそれに切り換えるのは必須ではありません。システムは古いプロファイルを使い続けることができ、古いプロファイルのままでも動作しなくなることはないでしょう。しかしながら古いプロファイルが非推奨になったら、もう 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
Keep this chrooted session open and try to update the (old) live system. When failures occur, use this chrooted session to update packages using the build tools available in the intermediate build chroot (which includes recent sys-libs/glibc, sys-devel/gcc, etc.). Tools can be added as needed to the build chroot.
Do not forget to add
--root=/mnt/host --config-root=/mnt/host
to all emerge commands executed within the chroot! Otherwise the chroot itself is updated rather than the (old) live system.For some installations it may be necessary to update configuration files in order to install new software. Make the changes in the chroot environment.
To get the system fully up-to-date before exiting the root, build the @world
set (all packages) into the (old) live system:
(chroot) root #
emerge --root=/mnt/host --config-root=/mnt/host --update --newuse --deep --ask @world
Once finished the system should now be up to date!
関連項目
- Updating old Gentoo installations.
- Can I upgrade Gentoo from one release to another without reinstalling
- Cheat Sheet on updates.
- Handbook on updates.
- Installation — an overview of the principles and the practice 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.