Plagger を Mac に簡単にインストールする

September 6th, 2006

本当は GUI をつけたいんだけど、まずは Plagger 単体を Universal Binary な CPAN モジュール群といっしょに配布できるかどうか試してみた。

http://8-p.info/Plagger/ から tarball をダウンロードして、

% tar zxvf Plagger-Mac-0.1.tar.gz
...
% cd Plagger-Mac-0.1/
% ls
CPAN/           assets/         plagger*
% (config.yaml を書く)
% ./plagger -c config.yaml

で動くと思います。プラグインは少なめです。assets/ はフォルダの直下にあるので、

global:
  assets_path: assets/

してください。

Intel, PowerPC 問わず、インストール直後の Mac OS X 10.4 ですぐ使えるはずです。たぶんだけど。

(9/9 追記)

すみません。バグを見つけました。「"Can't locate Plagger.pm in @INC..." で動かない!」という方は plagger の

  PERL5LIB="$PLAGGER_MAC_ROOT/CPAN/lib"

の行を

  export PERL5LIB="$PLAGGER_MAC_ROOT/CPAN/lib"

と書き換えればうまくいくかと思います。

つくりかた

まず、~/.cpan/CPAN/MyConfig.pm の makepl_arg で PREFIX=~/CPAN と指定して、Plagger とその他もろもろを CPAN からインストール。

このままだと Intel Mac に持っていけないので、ls ~/CPAN/**/*.bundle で PowerPC でしか動かないモジュールを確認して、手動で tarball をダウンロード。Universal Binary として make し直す。

% perl Makefile.PL PREFIX=/Users/kzys/CPAN/
...
% make install_site CC='gcc -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk' LD='env MACOSX_DEPLOYMENT_TARGET=10.3 gcc -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk'

Net::SSLeay は Makefile.PL の引数の解釈がほかと違う。

% perl Makefile.PL /usr -- PREFIX=/Users/kzys/CPAN/

expat も Universal Binary として make する。

% CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc" ./configure --disable-dependency-tracking

XML::Parser::Expat に、さっきの expat を静的リンクする。

% perl Makefile.PL PREFIX=/Users/kzys/CPAN/ EXPATLIBPATH=/Users/kzys/expat-2.0.0/ EXPATINCPATH=/Users/kzys/expat-2.0.0/lib
...
% make install_site CC='gcc -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk' LD='env MACOSX_DEPLOYMENT_TARGET=10.3 gcc -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk' OTHERLDFLAGS=/Users/kzys/expat-2.0.0/.libs/libexpat.a

バイナリがすべて universal になっていること確認する。

% file CPAN/**/*.bundle | grep 'fat file' | wc -l
      22
% ls CPAN/**/*.bundle | wc -l
      22

tarball にまとめるフォルダに ~/.cpan/build/Plagger-0.7.10/assets/ と ~/CPAN をコピー。なんとなく CPAN/ のなかを整理。man とかは消しちゃう。

  • CPAN/usr/bin/ → CPAN/bin/
  • CPAN/lib/perl5/site_perl/ → CPAN/lib/

最後に CPAN/bin/plagger を実行するシェルスクリプトを置いて完成。

% ls
CPAN/           assets/         plagger*