Hook after emerge
emergeした後にhookの設定ができたら便利だなーと思っていたら実はできました.
Ref: https://forums-lb.gentoo.org/viewtopic-t-772340-start-0.html
/etc/portage/bashrcにpost_pkg_postinstというfunctionを定義することで,各パッケージのインストール後に実行してもらえます. 特定パッケージのインストール後のみ実行したい操作がある場合は,$CATEGORY,$PNという変数にそれぞれパッケージカテゴリとパッケージ名が入っているので,これらを利用して処理したい対象のパッケージか判定します.
firefoxのAdobeReaderがC:\nppdf32Log\debuglog.txtというファイル名を作る問題の件も以下のように設定することで,app-text/acroreadがemergeされる毎にnppdf.soの中身を書き換えてくれるので,手動で書き換える手間が省けて大変はかどりますね.
post_pkg_postinst() { if [ "$CATEGORY/$PN" = "app-text/acroread" ]; then cp /opt/netscape/plugins/nppdf.so /opt/netscape/plugins/nppdf.so.orig perl -i'' -pe's{C:\\nppdf32Log\\debuglog\.txt}{"/dev/null"."\0"x17}e' /opt/netscape/plugins/nppdf.so fi }
$ diff <(od -tc /opt/netscape/plugins/nppdf.so.orig) <(od -tc /opt/netscape/plugins/nppdf.so)
8571,8573c8571,8573
< 0414460 e s s a g e \0 a b \0 C : \ n p p
< 0414500 d f 3 2 L o g \ d e b u g l o g
< 0414520 . t x t \0 X X X : G i v i n g
---
> 0414460 e s s a g e \0 a b \0 / d e v / n
> 0414500 u l l \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
> 0414520 \0 \0 \0 \0 \0 X X X : G i v i n g
ちゃんと置換できてます.