[Gentoo] あれ? missing keyword?
いつものように Gentoo Linux のアップデート確認をしようとした時のことです.
$ sudo layman -S (中略) $ sudo emerge -puD --newuse world These are the packages that would be merged, in order: Calculating world dependencies \ !!! Ebuilds for the following packages are either all !!! masked or don't exist: x11-misc/beryl-settings x11-plugins/beryl-dbus x11-wm/beryl x11-wm/beryl-core x11-wm/aquamarine x11-misc/beryl-manager x11-plugins/beryl-plugins ... done! $
あれ? と思って詳細なエラーを出力してみると以下の通り.
$ sudo emerge =beryl-9999 Calculating dependencies !!! All ebuilds that could satisfy "=beryl-9999" have been masked. !!! One of the following masked packages is required to complete your request: - x11-wm/beryl-9999 (masked by: missing keyword) For more information, see MASKED PACKAGES section in the emerge man page or refer to the Gentoo Handbook. $
ん? キーワードは指定しているはずなのに... と思いつつ一応確認 (以下の結果は関係のあるパッケージの部分だけを抜粋しています).
$ cat /etc/portage/package.keywords =x11-wm/beryl-9999 -* =x11-wm/beryl-core-9999 -* =x11-plugins/beryl-plugins-9999 -* =x11-plugins/beryl-dbus-9999 -* =x11-misc/beryl-manager-9999 -* =x11-misc/beryl-settings-9999 -* =x11-wm/aquamarine-9999 -* $
ちゃんと指定してあります.ダメもとでキーワードを * や ~* に変えてもやはりダメ.
Google 先生に尋ねると,即刻答えが得られました.どうやら新しい portage を入れて,/etc/portage/package.keywords のキーワードを ** に書き換えてくださいとのこと.
SVN ebuilds require Portage 2.1.2-r4 or higher (currently in ~arch) and the xeffects overlay.
では早速 portage を upgrade... あれ? portage-2.1.2 はあれども portage-2.1.2-r4 がない...
ここら辺で嫌な予感がしてきたので,emerge --sync を実行.そして流れる実行ログの多さ(=emerge --sync のログの量は,この先起こるであろうアップデート地獄の凄まじさにたぶん比例)に打ちひしがれる自分.
$ sudo emerge --sync (大量のログ.中略) Number of files transferred: 16935 Total file size: 159136632 bytes Total transferred file size: 39119138 bytes (中略) sent 404067 bytes received 18849475 bytes 41992.46 bytes/sec total size is 159136632 speedup is 8.27 $
なぜだー なぜパッケージ情報の同期が行われていなかったんだー.と,日々の同期を行うために用意した crontab をチェック.
0 6 * * * root /usr/bin/layman -S > /dev/null 2>&1 30 6 * * * root /usr/sbin/eix-sync > /dev/null 2>&1
ほっ... ちゃんと eix-sync が実行されるようになってるじゃないか... と思いつつ恐いので which eix-sync を実行.
$ which eix-sync /usr/bin/eix-sync $
「場所(ディレクトリ)が変わってる!」 標準エラー出力を捨てていたため command not found エラーに気づきませんでした.なんということでしょう(加藤みどりさん風に).
気を取り直して portage-2.1.2-r5 をインストールした後,emerge -puD --newuse world を実行.途中,masked package のエラーが発生する度に /etc/portage/package.keywords を修正していきます.そして最後の修正が完了したときの実行結果は... やはり大量のアップグレード候補が出力されました.とはいっても半分(85 個中 46 個)は自分で ~x86 指定をした KDE 関連のパッケージですが.残りの 39 個は標準エラー出力を捨てた代償というわけです.
教訓: 「cron による実行のログはどこかに残して,定期的に確認しましょう.」
トラックバック
トラックバック URI: https://www.pakunet.jp/hoge/trackback/2007020402
トラックバックはありません.