hnwの日記

pearコマンドのキャッシュと仲良くなる

openpearってプログラマ視点で非常に素晴らしいですよね。自分のライブラリをPEARパッケージにすると他のマシンにインストールするのが楽になるので、個人レベルでもコードの再利用が進むと思います。大人数で使うようなものなら尚更メリットは大きいと思います。


最近、ごく小さいイテレータを何個かリリースしました。数十行とかのサイズでも、自分が再利用できそうだと思ったらcommitしていいと思うんですよね。


そんなopenpearですが、作業中に悩むことがありました。短い間隔でパッケージのリリースを繰り返すと、pear upgradeしても最新版がインストールされないことがあるのです。


これは、pearコマンドがリモートサーバから取得したパッケージ情報をキャッシュするのが原因です。pearのデフォルトのキャッシュ間隔は3600秒になっています。

$ sudo pear config-get cache_ttl
3600


ユーザーの立場であれば、最新パッケージの存在に気づくのが1時間遅れたところであまり困らないと思います。しかし、パッケージ作者としてはパッケージが正しくできているかどうか今すぐ確認したいわけで、デフォルトの設定は少し不便です。


これは、キャッシュ時間を変更すれば解決します。

$ sudo pear config-set cache_ttl 1
config-set succeeded


こうすれば、5分前にリリースしたパッケージのupgradeが成功します。普段からキャッシュ間隔を1秒にしてしまうのはネットワーク負荷の面で問題がありそうですから、パッケージリリースが済んだら適切なキャッシュ間隔に戻しておくのが良いと思います。

$ sudo pear config-set cache_ttl 3600
config-set succeeded