Subscribed unsubscribe Subscribe Subscribe

emerge -avuD worldするたびにパッケージのバージョンが上下するとき

Gentoo

あるパッケージPがバージョンの上げ下げを繰り返すときがある.これは何か他のパッケージQが最新バージョンより前のパッケージPに依存しているために起こる.

Qがどのパッケージかを確認するには,たいていの場合

$ emerge -avuDt world

として依存関係のツリーを表示すればよい.問題のパッケージPの親ノードにあたるパッケージがQとなっている.

ただ,このツリーにはパッケージQが現れないこともある.たとえばこの前dbusがこの状態になったとき,依存関係のツリーにはdbusに直接依存しているパッケージが出てこなかった*1.こういう場合はdbusの最新バージョン以外のすべてのパッケージを/etc/portage/package.maskでマスクしてemerge -avuD worldすればよい.こうすることで依存関係を満たすebuildがないとエラーを吐き,そのメッセージ中にdbusの特定バージョンに依存しているパッケージの名前が出てくる.

パッケージQがわかったらあとはQをバージョンアップするかPへの依存を切るか,あるいはPの最新版をマスクするか,必要ないなら削除するかなど適当に対処する.

*1:バグかな? 仕様かもしれない.worldの依存関係がどのように記録されているのかわからないので何ともいえない.