トップ «前の日記(01/22/2004) 最新 次の日記(01/25/2004)» 編集

本 日 の h o g e

hogeとはワイルドカードのようなものです。日々起こった、さまざまなこと −すなわちワイルドカード− を取り上げて日記を書く、という意味で名付けたのかというとそうでもありません。適当に決めたらこんな理由が浮かんできました。

更新情報の取得には rdflirs を使ってもらえると嬉しいです.


01/23/2004 ねむ [長年日記]

tDiary 456日目

[日記] あー

久しぶりに研究室で寝たな.やっぱ眠りが浅いとみえて,起きたときすっきりしない.

[日記] 最近

全然へぇと思えるようなものでない日記が「へぇ」を獲得してたりして,訪問者の嗜好が読めません.うーむ….

[Gentoo] あら?

emerge --usepkg hogehoge

とかやると,KEYWORDS が ~x86 だろうがなんだろうが PKGDIR に存在する hogehoge パッケージの最新をインストールしてしまう模様.--usepkg の場合って ebuild 見ないのか? だとしたら恐くて BINHOST を迂闊に設定して emerge -gK なんて,stable 環境じゃできんぞ….

…と思って emerge をちらっと読んでみたら binary と ebuild できっぱり分かれてるみたいね.うーん,これは嬉しくないなあ.

つか,emerge の 903 行目,

if portage.pkgcmp(myeb_s, myeb_pkg_s) > 0: # eb is newer than pkg
    myeb_pkg = None
else:
    myeb = None

が悪さしてんじゃん.

  • myeb は Portage ツリーにある,KEYWORDS や MASK を考慮した最新の ebuild
  • つまり myeb より新しいバージョンは unstable or masked
  • myeb_pkg は KEYWORDS や MASK を無視した最新のバイナリパッケージ
  • myeb_pkg が myeb よりも新しかったとしても,myeb_pkg をインストールするのはおかしい

ということから,この部分を

if portage.pkgcmp(myeb_s, myeb_pkg_s) > 0: # eb is newer than pkg
    myeb_pkg = None
else:
    myeb_pkg = myeb
    myeb = None

とすると良いと思うんだがどうか.else 以下に一行加えただけだけど.

まぁバイナリパッケージもちゃんと KEYWORDS を理解してくれるようになる (binarytree.dep_bestmatch() を改造する) のがベストなんだけど.

と思って Bugs 探索をしてみると,似たようなのが bug#26314 にあった.これパッチ作って投稿してみよかな? たった一行だけど.

[小ネタ] 武器はビーム・ライフル

あっはっはっは! すんげー強そうな白雪姫だ!

from 今日のなんでやねん

[Gentoo] うひゃ

確かにその通りでした. しかも --usepkgonly の場合に対処できてませんでした.いつもながらの思慮不足….

…ので,修正してパッチにしてみました. --usepkgonly の場合を考慮するとちょっと日記に書くには量が多かったので….

あ,ちなみに portage-2.0.49-r21 向けのパッチですが,2.0.50_pre16 でも行番号が違うだけでコードは一緒っぽいので適当に差し替えるだけだと思います.

つか,--usepkgonly だと myeb が None になっちゃってるからめんどくさい.やっぱ binarytree.dep_bestmatch() が KEYWORDS や MASK を見てくれると楽っていうかそもそもこんなことしなくて済むんだけど.

本日のツッコミ(全3件) [ツッコミを入れる]
なかの (01/23/2004 10:47)

それだと、myeb<myeb_pkgのときに、存在しない(可能性のある)バイナリパッケージをインストールしに行ってしまいません?

なかの (01/23/2004 23:17)

そうですねぇ。バージョン番号だけでは判断できないですからねぇ・・。bestmatchを変えてもいいのですが、それも結構大変なんですよね。バイナリがリモートにある場合どうやって情報を取得するか・・など。全部ダウンロードするわけにはいかないですし・・。いい解決方法あったら教えてください。そのパッチもbugsにあげてもらえれば検討します(今は見ている余裕がないので、忘れてしまうかもしれないので)

atzm (01/24/2004 04:54)

うーん,bestmatch の方も今回僕が使った方法 (portage.portdb.xmatch("bestmatch-visible",pkg) で得られる Portage ツリーの最新バージョンと比較するなど) を使えばなんとかなるかも…?
リモートのも考慮するとなると getbinpkg.py もいじらなきゃならなくなるかもしれないですが.
それと binarytree から portagetree を参照できる必要がありますね.

あ,パッチはいつものヘタレ英語と共に投稿しておきました.