hogeとはワイルドカードのようなものです。日々起こった、さまざまなこと −すなわちワイルドカード− を取り上げて日記を書く、という意味で名付けたのかというとそうでもありません。適当に決めたらこんな理由が浮かんできました。
08/06/2003 む
■ [Gentoo][戯言] SLOT
昔の風博士の ebuild を見て「あーそういや昔は libxml2 に DEPEND してたんだっけ」 → 「そういや libxml って libxml と libxml2 で別パッケージになってるんだよなぁ」 → 「そういやなかのさんもそんなこと言ってたような…」と連鎖.
自分的には,別パッケージにするこの方法*1と,今の否応なしにアップグレードする方法の中間が良いと思う.新規インストールやアップグレードの動作は別パッケージのごとく,それでいてパッケージ自体は統合される.
すなわち,
- どのバージョンもインストールされていない場合
通常 apache と言えば apache1 を指し,apacheバージョン2の場合はちゃんと apache2 と断る場合が多いので apache1 をインストール(パッケージ側で,どれを優先するかを決定しておくべき).もちろん emerge apache2 とすれば apache2 がインストールされる.
- どちらかがインストールされている場合のアップグレード
インストールされている SLOT のもののみアップグレード
- どちらもインストールされている場合のアップグレード
どちらもアップグレード
が理想.
# 自分で実装できないヘタレなので AC …はできないので戯言
■ うーむ
もしもこんなことができる場合,/usr/portage/profiles/package.mask のように /usr/portage/profiles/virtuals みたいなものを用意して SLOT の優先度(?)を
net-www/apache =net-www/apache-1*
dev-libs/libxml =dev-libs/libxml-1*
x11-libs/gtk+ =x11-libs/gtk+-1*
というように書いて予め rsync サーバに用意しておく.emerge はそれを読みとって諸々の作業をこなす.emerge 実行時,/var/cache/edb/virtuals は,/usr/portage/profiles/virtuals とマージされて解釈される感じ.
できれば /etc/portage 以下にも virtuals 情報を置いて,ユーザが自分で設定できるようにしておくのが望ましい.ただし今の virtuals の記述方法ではキャンセルができないっぽいので,
x11-libs/gtk+ -x11-libs/gtk+-2
といったようにキャンセルする機構を作らなければならない.
まぁ,無理に virtuals にする必要はなくて,あくまで virtuals「みたいなもの」を想像してます.virtuals をそのまま流用できるなら使った方が簡単かなー,とか思っただけで.
# またしても自分で実装できないヘタレなので AC …はできないので戯言
■ [日記] む
部屋がコタツとヒーターと扇風機と毛布と冬用掛け布団とタオルケットが同居してて,クーラーをかけているという謎な状態になっていたのだが,今日コタツセットをしまったら部屋がすっきりした.ふう,あとはヒーターと毛布と掛け布団をどこかへ押しやってしまおう.
あー残った灯油どうしよう.
■ [Linux][ニュース] SCO税は早期割引でも$699
高っ.
対象はどうやらディストリビューションが配布するバイナリのカーネルのみで、自分でコンパイルしたカーネルの為の免罪符にはならなさそうだ。
免罪符がどうのこうのってとこの意味がちょっとよく分からんのだけど,自前コンパイルのカーネルは対象外ってこと? だとするとディストリビュータがまとめて払うことを奨めてるのかな?
自前コンパイルのカーネルが対象外なら Gentoo は ISO 以外大丈夫じゃん(わら
■ [Linux] オープンソース童話 「ふしぎな ごみばこ」
あーコレよくできてるなぁ,面白い.
*1 ただ libxml の場合は SLOT が生まれる前のものだった気がする
08/06/2007 あー
08/06/2010 ふむ
■ [日記] ふむ
最近 git をちょくちょく使っているのだけれど,git の何が便利なのかがまだイマイチよく分からん... 正直今のところ git って github がなかったら流行ってなくね? というイメージ.
まあ,cvs や svn と同じような使い方しかしてないから便利さが分からないだけなんだと思うけど. cvs や svn に慣れた身では commit なんてそう易々と実行しないので,commit と push が大体同じタイミングになって単にめんどくせーだけになってしまっている.
ただ,今日はいつもと違ってネットワークをよく切ったり張ったりする環境で使ったのだけれど,こういう環境ではアリかなとは思う.
けどそれだけでそんな大絶賛するほどのことかという気もするので, もっと何か便利なことがあるんだろう,多分.
とか言ってたら
思いっきりハマったのでメモ.
git log 見たらコミッタの名前とかアドレスとかがおかしなことになってた (何も設定してなかったら,マシンのユーザ名とマシン名になるっぽい) ので,どうにかして直せないかなーと思って調べてみたところ,filter-branch なんてのがあることを知る.
こちらの記事 などを参考に,
$ git filter-branch --commit-filter ' if [ "$GIT_COMMITTER_NAME" = "atzm" ]; then GIT_AUTHOR_NAME="atzm" GIT_AUTHOR_EMAIL="atzm@xxx" GIT_COMMITTER_NAME="atzm" GIT_COMMITTER_EMAIL="atzm@xxx" fi git commit-tree "$@" '
とかやってから git push してみたら,リモートから reject された.
なんじゃそら,と思いながら pull → push したら,修正されたコミットログと修正前のコミットログとで,コミットログが 2 重になるという珍事.うわーマージしちゃったよ! しかも push までしちゃったよ!
こりゃいかん,と思って,まず元に戻す方法を模索. すると reflog,reset などというものがあることを知る. reflog で戻したいポイントを探して,
$ git reset --hard HEAD~2
とかやったら (ローカルは) 元に戻った.やれやれ.
しかし本題はログの改竄であって,そんなことではない.
filter-branch 結果をマージせずにリモートに送りつけるには... と思って調べてみると,どうも receive.denyNonFastForwards なるものが効いているから reject されてるくさいことを知る.
というわけで,リモート側で
$ git config receive.denyNonFastForwards false
で一時的に無効化した後,先ほど filter-branch で修正したローカルの上で
$ git push -f
これで世は事もなし. もちろん事が済んだ後は receive.denyNonFastForwards を元に戻しておく.
いやーこえーこえー. まあどうせ大した物入れてないからどうでもいいっちゃいいんだけどね. 後学のためにあがいてみた次第.
しかしこんなんできてしまうとか,git はやりたい放題だな.
□ なかの [1.が微妙なのですよねぇ。http://bugs.gentoo.org/show_bug.cgi?id=4698 の..]
□ なかの [お名前間違えた・・。すみません。 ]
□ atzm [そこが一番のネックなんですよねぇ…別パッケージにして virtual に PROVIDE というのも本末転倒ですし...]