今日は息子の運動会だったので、撮ってきた写真をiPhotoに取り込んで、自前スクリプトでNASにコピー。しようと思ったらエラーが出て進まない。
最近OSとかXcodeのバージョンアップがあったからそのせい?とか思いながら、足りないものをMacPortsでインストールする。
しかし、DBI.pmだけは何度インストールしても見つからないと言われる。
これが悪いのはわかったが、p5-dbi を何度アンインストール/インストールしても変わらない。
さらによく見ると、unintallしてもファイルが消えていない。installしてもファイルの日付は古いまま。
p5-dbiのPortfileを見ても良くわからないし、どうしたもんかと思って port list installed してみたら、p5-dbi の他に p5.12-dbi と言うものがインストールされていることがわかる。
p5.12-dbiをuninstallしようとすると、p5-dbiが依存しているから駄目よ的なことを言われる。
どうやら、p5-dbiはバージョンを隠蔽するためのダミーportで、p5.12-dbiが本体のようだ。
そこで、p5.12-dbi(とそれに依存しているもの)をuninstallしてみたところ、ちゃんと /opt/local/lib/perl5/vendor_perl/5.12.4/darwin-multi-2level/ からファイルが消えた。この状態で、pt-dbiをinstallすると、今度は /opt/local/lib/perl5/vendor_perl/5.12.4/darwin-thread-multi-2level の方にインストールされた。
しかし、p5-dbiが依存している他のパッケージは古いディレクトリのままだったので、一度古いディレクトリにあった以下のportsを全てuninstallして、installしなおしたら全て新しい場所に入り、スクリプトも動くようになった。
と思ったけど、ちょっと調べたら最後にスクリプトを動かしたのは10/6で、10/7にgnucashをインストールするときにperlが新しくなっているようなので、10/7から動かなくなったとすると、今回はタイミングがあってるのかなあ。
最近OSとかXcodeのバージョンアップがあったからそのせい?とか思いながら、足りないものをMacPortsでインストールする。
しかし、DBI.pmだけは何度インストールしても見つからないと言われる。
Can't locate DBI.pm in @INC (@INC contains: /opt/local/lib/perl5/site_perl/5.12.4/darwin-thread-multi-2level /opt/local/lib/perl5/site_perl/5.12.4 /opt/local/lib/perl5/vendor_perl/5.12.4/darwin-thread-multi-2level /opt/local/lib/perl5/vendor_perl/5.12.4 /opt/local/lib/perl5/5.12.4/darwin-thread-multi-2level /opt/local/lib/perl5/5.12.4 /opt/local/lib/perl5/site_perl/5.12.3 /opt/local/lib/perl5/site_perl /opt/local/lib/perl5/vendor_perl/5.12.3 /opt/local/lib/perl5/vendor_perl .) at /Users/false/bin/photocp.pl line 42. BEGIN failed--compilation aborted at /Users/false/bin/photocp.pl line 42.で、/opt/local/lib/perl5に行って、DBI.pmを探してみたところ、以下のように見つかる。
% cd /opt/local/lib/perl5 % find . -name DBI.pm ./vendor_perl/5.12.4/darwin-multi-2level/Bundle/DBI.pm ./vendor_perl/5.12.4/darwin-multi-2level/DBI.pmで、エラーメッセージの @INC と良く見比べると、@INC の方は /opt/local/lib/perl5/vendor_perl/5.12.4/darwin-thread-multi-2level となっていて、ファイルがあるのは /opt/local/lib/perl5/vendor_perl/5.12.4/darwin-multi-2level/ である。
これが悪いのはわかったが、p5-dbi を何度アンインストール/インストールしても変わらない。
さらによく見ると、unintallしてもファイルが消えていない。installしてもファイルの日付は古いまま。
p5-dbiのPortfileを見ても良くわからないし、どうしたもんかと思って port list installed してみたら、p5-dbi の他に p5.12-dbi と言うものがインストールされていることがわかる。
p5.12-dbiをuninstallしようとすると、p5-dbiが依存しているから駄目よ的なことを言われる。
どうやら、p5-dbiはバージョンを隠蔽するためのダミーportで、p5.12-dbiが本体のようだ。
そこで、p5.12-dbi(とそれに依存しているもの)をuninstallしてみたところ、ちゃんと /opt/local/lib/perl5/vendor_perl/5.12.4/darwin-multi-2level/ からファイルが消えた。この状態で、pt-dbiをinstallすると、今度は /opt/local/lib/perl5/vendor_perl/5.12.4/darwin-thread-multi-2level の方にインストールされた。
しかし、p5-dbiが依存している他のパッケージは古いディレクトリのままだったので、一度古いディレクトリにあった以下のportsを全てuninstallして、installしなおしたら全て新しい場所に入り、スクリプトも動くようになった。
- p5(.12)-clone
- p5(.12)-params-util
- p5(.12)-sql-statement
- p5(.12)-dbi
- p5(.12)-dbd-sqlite
と思ったけど、ちょっと調べたら最後にスクリプトを動かしたのは10/6で、10/7にgnucashをインストールするときにperlが新しくなっているようなので、10/7から動かなくなったとすると、今回はタイミングがあってるのかなあ。