2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Debian7 CPANでinstall GDするとjpegテストエラーでこける

Posted at

必要そうなパッケージを入れて準備

apt-get install libjpeg-dev libgd2-xpm-dev libpng-dev 

CPANでインストール実行

perl -MCPAN -e shell
cpan[1]> install GD

make testでtest 10なる項目でこける。

PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/GD.t ........ 1/12 Testing using png support.
t/GD.t ........ Failed 1/12 subtests 
        (less 1 skipped subtest: 10 okay)
t/Polyline.t .. ok   

Test Summary Report
-------------------
t/GD.t      (Wstat: 0 Tests: 12 Failed: 1)
  Failed test:  10
Files=2, Tests=13,  0 wallclock secs ( 0.02 usr  0.00 sys +  0.08 cusr  0.00 csys =  0.10 CPU)
Result: FAIL
Failed 1/2 test programs. 1/13 subtests failed.
make: *** [test_dynamic] エラー 255

t/GD.tのtest10を見てみる

t/GD.t

if (GD::Image->can('newFromJpeg')) {
  compare(test10('frog.jpg'),10);
} else {  
  print "ok ",10," # Skip, no JPEG support\n";
}

~略~

sub test10 {
  my $fn = shift;
  my $im = GD::Image->newFromJpeg($fn);
  return image($im)
}

なんとなく変換した後の画像データが意図したデータになっているかのテストっぽい。
いろいろ調べると以下のフォーラムがヒットした

どうやらlibjpeg8の場合にこのテストエラーが起こるらしい。
Debian7だとlibgd2-xpm-dev (もしくはlibgd2-noxpm-dev)の依存としてlibjpeg8が入ってしまう。
libjpeg64を無理やり入れようとすると、依存関係からlibgd2-xpm-devがremoveされる。
お手上げ。

libjpeg8で変換した画像は実用では特に問題なさげなのでforceでインストールした。

perl -MCPAN -e shell
cpan[1]> force install GD

これだとインストール成功
インストール後、実運用のperlスクリプトでテストしたところでは、jpegの処理に問題はなさそうなのでとりあえずこれでOK。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?