鈴木です。 On Thu, 18 Jun 2009 22:44:04 +0900 HARADA Kazutaka <kazutaka@xxxxxxxxxxxxxxxx> wrote: > (2009年06月14日 01:12), HARADA Kazutaka さんは書きました: > > で、これを改善する方法を考えてみているのですが、 > > 案1. apt のスロットにスクリプトを仕込んで、install/remove の > > 後に自動的に gtk-update-icon-cache を実行 > > 案2. cron で daily でチェックして gtk-update-icon-cache を実行 > > 辺りを思いついたものの、もっと良い方法が無いかなと。 > > とりあえずこんな感じのスクリプトを回そうと考えています。 出遅れましたが、Mandriva では filetriggers をつかってこれらの 処理をしているようです。(patchが必要なのでちょっと。。) http://wiki.mandriva.com/en/Rpm_filetriggers パターンにマッチしたファイルが更新された場合に、処理を実行する という感じらしいです。オーバーヘッドが大きそうなので、微妙かも しれません。 > ---<ここから>--- > #!/bin/sh > > for d in `find /usr/share/icons -maxdepth 1 -type d`; do > if [ ! -e "$d/index.theme" ] ; then > # if cache is not genereted, then create it > /usr/bin/gtk-update-icon-cache --quiet --ignore-theme-index $d > elif [ `find "$d" -type f -newer "$d/index.theme" > /dev/null` ] ; then > # if cache is exist but not up to date, then update it > /usr/bin/gtk-update-icon-cache --quiet --ignore-theme-index $d > fi > done > ---<ここまで>--- > > find で cache ファイルとのタイムスタンプを比較しているので、 > 最新の状態に cache が更新されていれば、チェック自体は > 一瞬で終わりますから、cron で daily で回しても問題無い > レベルだと思います。 > if [ ! -e "$d/index.theme" ] ; then > elif [ `find "$d" -type f -newer "$d/index.theme" > /dev/null` ] ; then cache は index.theme じゃなくて、icon-theme.cache ではないですか? あと、実際に icon がはいっていない Inherits でほかのテーマを指定 しているだけのテーマだと毎回 gtk-update-icon-cache が走ってしま いますね。まあすぐおわるので問題はないとはおもいますが。。 それから、タイムスタンプだけだとダメかもしれません。アイコンファイルは 元のタイムスタンプが保存されているので、古いタイムスタンプのファイルが 追加されても更新されなくなってしまいます。 # %post とかで実行しているときに touch しているのはそのためです 結構微妙な問題というか、、%post に trigger 用のファイルかなんかをtouch させるように仕込んで、apt にまとめて処理させるというのがいいかもしれま せん。(既存のテーマに新たについかされるケースは hicolor がほとんどなの で、全部のテーマをチェックしなくてもhicolorだけキャッシュつくりなせば 十分という気もしなくもないです) > 後、/usr/share/themes にも同様に cache を作っておくと良い > らしいので、実際のスクリプトではこちらも cache を作るように > しようと考えています。 themes には cache いらんのではないでしょうか。 -- Daisuke SUZUKI | daisuke@{linux.or.jp,dicey.org,vinecaves.com} GnuPG Fingerprint = 7DE6 9AC6 5E5B 1AF8 B38E 0992 90BF 4C09 7432 2CB0 Founder & President, Project Vine. http://vinelinux.org/ Founder & President, Vine Caves, Ltd. http://vinecaves.com/ Founder & Trustee, Japan Linux Association. http://jla.linux.or.jp/