11
02
2013
OS X MavericksでのPerl依存アプリケーションの対応
OS X MarvericksでPerlライブラリに依存するアプリでトラブル発生
OS X Marvericksにアップデートする際に、幾つかのPerl環境に依存するアプリケーションは動かなくなる可能性があります.私が使っているアプリケーションのうち、”GPSPhotolinker”(V1.6.5) は新しいMavericks環境では動きませんでしたが、ちょっと小細工することでMavericks環境でも動かすことができるようになります.
“GPSPhotolinker”(V1.6.5)をMavericks環境で起動すると、
Process: GPSPhotoLinker [673]
Path: /Applications/GPSPhotoLinker.app/Contents/MacOS/GPSPhotoLinker
Identifier: com.earlyinnovations.GPSPhotoLinker
Version: ???
Code Type: X86 (Native)
Parent Process: launchd [224]
Responsible: GPSPhotoLinker [673]
User ID: 501
Date/Time: 2013-11-02 09:05:23.505 +0900
OS Version: Mac OS X 10.9 (13A598)
Report Version: 11
Anonymous UUID: B5A8D .... C412
Crashed Thread: 0
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000002, 0x0000000000000000
Application Specific Information:
dyld: launch, loading dependent libraries
Dyld Error Message:
Library not loaded: /System/Library/Perl/lib/5.10/libperl.dylib
Referenced from: /Applications/GPSPhotoLinker.app/Contents/MacOS/GPSPhotoLinker
Reason: image not found
のようなメッセージを表示して強制終了してしまいます.どうやらPerlのダイナミックライブラリ “libperl.dylib” が見つからないのでアプリケーションを実行できないようです.GPSPhotoLinker以外にも、”MacVim” などもPerlの実装に依存しているようです.
そこでMavericksでのPerlの実装環境を調べて見ることにします.
MarvericsではPerlの実装環境が変更されたようで、V5.10ではなくV5.16になっています.GPSPhotoLinkerはPerlのライブラリファイルのパスに依存しているため、新しいバージョンの Perlライブラリを見つけられないようです.
そこで 5.16 を無理矢理 5.10 に見せ掛けてGPSPhotoLinkerを起動できるようにしてみたところPerlライブラリが見つからなくてトラップされるエラーは発生しなくなったものの、アプリケションそのものはまともに動作する環境ではありませんでした.
無理矢理旧バージョン(V5.10)に見せ掛けてみる → 失敗
iMac27:Perl root# ls -la
total 0
drwxr-xr-x 5 root wheel 170 Nov 2 10:03 .
drwxr-xr-x 78 root wheel 2652 Nov 2 08:45 ..
drwxr-xr-x 158 root wheel 5372 Nov 2 08:40 5.12
drwxr-xr-x 130 root wheel 4420 Nov 2 08:40 5.16
drwxr-xr-x 4 root wheel 136 Nov 2 08:36 Extras
iMac27:Perl root# ln -s 5.16 5.10
iMac27:Perl root# ls -la
total 8
drwxr-xr-x 6 root wheel 204 Nov 2 10:04 .
drwxr-xr-x 78 root wheel 2652 Nov 2 08:45 ..
lrwxr-xr-x 1 root wheel 4 Nov 2 10:04 5.10 -> 5.16
drwxr-xr-x 158 root wheel 5372 Nov 2 08:40 5.12
drwxr-xr-x 130 root wheel 4420 Nov 2 08:40 5.16
drwxr-xr-x 4 root wheel 136 Nov 2 08:36 Extras
iMac27:Perl root# mkdir lib
iMac27:Perl root# mkdir lib/5.10
iMac27:Perl root# ln -s /System/Library/Perl/5.16/darwin-thread-multi-2level/CORE/libperl.dylib /System/Library/Perl/lib/5.10/libperl.dylib
Mountain LionのPerl環境(V5.10)のフォルダ毎Marverics環境にコピー → 成功
iMac27:Perl root# cp -rp /Volumes/OSXSub/System/Library/Perl/5.10 . (←別なボリューム上のMountain LionのPerl環境をそっくりそのままコピーする)
iMac27:Perl root# ln -s /System/Library/Perl/5.10/darwin-thread-multi-2level/CORE/libperl.dylib /System/Library/Perl/lib/5.10/libperl.d (← Mountain LionのPerl環境に合わせる)