Gentoo Linuxをアップグレードする最適な手順は?


23

これが私が長い間Gentooをアップグレードしてきた方法です。これは推奨される方法ですか?使用すべき落とし穴やより良い方法はありますか?

emerge --sync
emerge -uDav --tree world
emerge -av --depclean
revdep-rebuild -v -- --ask
dispatch-conf
glsa-check -t all
glsa-check -f all

6
個人的に出てくる上に、私は、-Nフラグを追加
トム・リッター

2
--tree(-t)も何が起こっているのかを理解するのに便利です
lkraav

回答:


5

覆われているようです。他の唯一のヒントは、ブラインドホールセールアップデートよりも少し遅くすることです。emerge -DNuav <atom>代わりに、パッケージまたは依存関係チェーンをいつでも個別に更新できますworld(たとえば、システムライブラリなど、worldファイルに追加したくないものには--oneshotを使用します)。

数か月ごとにモノリシックなバッチ更新を行うよりも、定期的に最新の状態を維持する方が常に簡単です。また、あまりにも多くの驚きを避けるために、あなたはそれが役に立つようなメーリングリストのいずれかに加入するかもしれませんgentoo-userほとんどすべてのメジャーアップデートの問題がありそうで、リストに表示されるので、:(〜100通のメールこのリスト上の日WARNING)それらを解決する方法を説明する多くの議論。

次の主要な「問題」のアップデートは、openrcが安定したら移行することだと思います(主にネットワークの変更など、いくつかの問題を抱えてiircが昨年の半ばに行われました)。


2
うん、間違いなく巨大な塊ではなく定期的に最新情報を得ることに+1。たまに大きな変化をもたらす変更が時々あります。github.com/lkraav/gentoo-cron-weeklyは、私の単純な週報レポートツールセットです。
lkraav

8

私はあなたと同じステップに近いものを使用していますが、以下を除きます:

  • eix-sync代わりemerge --syncに、Portageツリーの変更を見るのが好きだからです。これは、インストールしたいパッケージがツリーに新しく追加されたことに気付くのに特に便利です。

  • layman -S (ときどき)メインが現れる前に、オーバーレイの変更を同期します。

  • eclean-dist -drevdep-rebuild廃止されたtarballをきれいにした後。パッケージのダウングレードはそれほど一般的ではないため、出現するたびにこれを行います。

  • eix-test-obsolete/ etc / portageファイルを整理して最新の状態に保つための最後のステップとして。これはまた、Portageから完全に削除されたパッケージをいつインストールしたかを知らせてくれるので、リポジトリからebuildを取得する必要があります。最近の例では、Xen VPSで古いカーネルが実行されているため、iproute2のすべてのバージョン> 2.6.22.20070710をマスクする必要がありますが、最近portageから削除されました。

eix-syncそしてeix-test-obsolete、app-portage / eixにあります。

eclean-dist app-portage / gentoolkitにあります。


eix-syncの+1
ティム

5
  1. emerge --syncまたはeix-syncまたはemerge-delta-webrsynceix-update
  2. emerge -av portage
  3. eclean-dist

linux-headersの1つであるglibc、binutils、libtool、またはgccにmagorの更新(4.6から4.8へのgccの更新など)があることを確認します。手順11に進まない場合。

完全な再構築:

  1. rm -rf PKGDIR/* PKGDIRをパッケージdirへのパスに置き換えます!
  2. emerge -av linux-headers glibc binutils gcc-config libtool gcc
  3. gcc-config <number of new gcc> 新しいgccに切り替える
  4. source /etc/profile
  5. emerge -avb glibc binutils gcc libtool
  6. emerge -avbke system
  7. emerge -avbke world

手順10または11で問題が発生した場合は、修正して再試行してください

世界を更新:

  1. /var/lib/portage/world不要なパッケージからワールドファイルを削除し、/etc/portageエンティティを確認します
  2. fixpackages
  3. emerge -avuDN world
  4. eselect python update
  5. python-updater -- -av
  6. perl-cleaner --all -- -av
  7. emerge -a --depclean
  8. revdep-rebuild -i -- -av

手順14〜18で問題が発生した場合は、それを修正し、手順13からのすべての手順を繰り返します。

  1. etc-update または dispatch-conf
  2. glsa-check -vp affected 更新後に影響を受けるパッケージをスロットに入れることができます
  3. emaint --check all

3

あなたの目標がすべてのパッケージの絶対的な最新版を持つことであるなら、はい、それはすべてのベースをカバーしているようです。しかし、これが長い間あなたのために働いていたことに驚いています、なぜなら、あなたがブロック、壊れた深さなどに頻繁に噛まれることを想像するからです。代わりに、更新ツリーを表示した後に断片的に実行することを選択します。Gentooの開発は全盛期を過ぎたようです。たぶん、Ubuntuの台頭によるものでしょう。

とにかく、あなたが試みるかもしれないもう一つのことは、ただプロセス全体を本当に気にするために、あなたのdistfileを一掃することです。検索すると、そこにスクリプトがあります。


1
マスクされていないebuildに固執するなら、Gentooは私の意見では非常に安定しており、同期とemergeの世界を行うことによってすべてが本当に壊れることはありません。あなたは何をしているのかを知る必要がありますが、aptまたはyumについても同じことが言えます。私は彼らの両方に噛まれました。
ジョンダウニー

1
私が考えることができる3つのごく最近の閉塞/破損は、libcomerr / e2fsprogs、firefox2 / 3、およびxorg 1.3 / 1.5です。これらのすべてのケースで、大規模な更新を機能させるために非自明なマッサージが必要であり、キーワードは関係していませんでした。
アダムD'Amicoの

2
Portageの最新バージョン(過去6か月以内など)は、ほぼすべてのブロックとブレークを自動的に解決します。libcomerr / e2fsprogsを含む。
ダンキャリー

3
glsa-check -t all
glsa-check -f all

それが最初に実行する必要があるものです。すべてのパッケージをアップグレードする場合は不要です。

ああ、私はcfg-updateを好む;)


1

これが私がすることです:

emerge --sync         //Synchronize the package manager with the latest 
                      //version of each package.


emerge -aDvNu system  //updates the system, but only important if you want the
                      //latest stable version of the actual compiler and libraries
                      //with the core system.

emerge -uDNav world   //world means everything we've asked to be emerged before
                      //this does not include things that came pre installed.
                      //N means if you change your use directives in 
                      //your make.conf file to pull in the new packages.

emerge -av depclean   //removes libraries or programs that don't have any other 
                      //dependencies because of an update.


revdep-rebuild        //means if something is broken by an update, it 
                      //recompiles it.  Fixes dynamic and static linking problems.

コメントを完全に理解していない場合は、これがgentooパッケージの更新方法に関する権限であるため、これをお読みください。

http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=1


0

すべてのコマンドを実行する必要はないと思われますが、通常は同期と更新の世界を実行するだけです。Emergeは、通常、Pythonのメジャーアップグレード中などにスクリプトを実行してファイルを再構築する必要がある場合に通知し、構成変更をマージするタイミングも通知します。Gentooには実際にはバージョンからバージョンへのアップグレードパスがないためです。世界に出た瞬間に、最新バージョンが手に入ります。


0

長い間、私は常にこの手順を使用していました。

emerge -f --update --newuse --deep world && emerge --update --newuse --deep world

私にとっては、一晩更新することを好みます。しかし、何かが失敗することが時々起こるので、すべての(またはいくつかの)プログラムを再度ダウンロードする必要があります。

おそらく--newuseスイッチは不要ですが、make.confを編集することが多いので、それは私にとって理にかなっています。


「--newuse」の代わりに「--reinstall changed-use」を使用できます。これにより、明示的に変更した使用フラグでパッケージが再インストールされます。廃止される代わりに、使用フラグなどを追加しました。ただし、時々「--newuse」で実行する必要があります。
hayalci 09

0

depcleanを実行するのはそれほど簡単ではありませんが、問題ありません。

HDDの空き容量が少ないなどの要件がない限り、定期的に間隔を空けて戻ってdepcleanを実行できます。短期間、それらを使用しても害はありません。更新後に壊れたパッケージに気付くほど運が悪かった場合は、それらがゆるい依存関係を削除した結果ではないことを確認できます。


0

それは私が私のVPSでそれを行う方法です:

ステップ0(/ etc / crontabから)

0 0   * * *     root    emerge --sync &> /dev/null

ステップ1:

emerge --update --deep --newuse world -av

ステップ2:

emerge --depclean && revdep-rebuild && eclean-pkg && rm /usr/portage/distfiles/*
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.