hoge diary - February 4, 2007

[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 による実行のログはどこかに残して,定期的に確認しましょう.」

コメント

名前(何でも可):

テキスト(http:// を含む内容は投稿できません):

トラックバック

トラックバック URI: https://www.pakunet.jp/hoge/trackback/2007020402

トラックバックはありません.


Valid XHTML 1.1! Valid CSS!
© 2004-2009 ぱくちゃん.
Last modified: Thu Nov 01 01:17:17 JST 2007