Ubuntu14.04 で Image::Magick



依頼で第三者が作成した CGI を Web サーバに設置した。Webサーバー Apache なので、 cgiモジュール有効にして、 ExecCGI 設定するだけで簡単と思っていたら Perl の ImageMagick モジュールに思いの外てこずったのでメモ。

# パーミッション設定

まずは動作するかチェック

```

# ./index.cgi
bash: ./index.cgi: Permission denied
```


```
# ls -alh
total 100K
drwxr-xr-x 6 hoge hoge 4.0K May  9 08:01 .
drwxr-xr-x 5 hoge hoge 4.0K May 15 23:42 ..
-rw-r--r-- 1 hoge hoge  364 May 15 23:25 common.cgi
-rw-r--r-- 1 hoge hoge 9.2K May 15 23:25 common.css
-rw-r--r-- 1 hoge hoge 2.5K May 15 23:25 common-sys.cgi
drwxr-xr-x 2 hoge hoge 4.0K May  9 08:01 data
-rw-r--r-- 1 hoge hoge  749 May 15 23:25 error.htm
-rw-r--r-- 1 hoge hoge 2.2K May 15 23:25 form.cgi
-rw-r--r-- 1 hoge hoge 2.4K May 15 23:25 form.htm
-rw-r--r-- 1 hoge hoge  12K May 15 23:25 form.js
-rw-r--r-- 1 hoge hoge  111 May 15 23:25 .htaccess
-rw-r--r-- 1 hoge hoge 1.6K May 15 23:25 image.js
drwxr-xr-x 2 hoge hoge 4.0K May  9 08:01 images
-rw-r--r-- 1 hoge hoge   39 May 15 23:25 index.cgi
-rw-r--r-- 1 hoge hoge 1.4K May 15 23:25 insch.cgi
drwxr-xr-x 4 hoge hoge 4.0K May 15 23:46 libpman
-rw-r--r-- 1 hoge hoge 1.4K May 15 23:25 s-common.css
-rw-r--r-- 1 hoge hoge 2.4K May 15 23:25 sel.cgi
-rw-r--r-- 1 hoge hoge 2.2K May 15 23:25 sel.htm
drwxr-xr-x 2 hoge hoge 4.0K May  9 08:01 setting
-rw-r--r-- 1 hoge hoge 1.2K May 15 23:25 style.css
```

ということで、安直に 777 に設定

```

# chmod 777 index.cgi
```

# ImageMagickモジュール
```
# ./index.cgi
Can't locate Image/Magick.pm in @INC (you may need to install the Image::Magick module) (@INC contains: libpman ../lib /etc/perl /usr/local/lib/perl/5.18.2 /usr/local/share/perl/5.18.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl .) at libpman/pkstaff/photo.pl line 19.
BEGIN failed--compilation aborted at libpman/pkstaff/photo.pl line 19.
Compilation failed in require at setting/sys-setting.cgi line 8.
Compilation failed in require at ./common-sys.cgi line 14.
Compilation failed in require at ./form.cgi line 7.
Compilation failed in require at ./index.cgi line 3.

```

試しに form.cgi の中身を見てみる

```

# cat form.cgi
#!/usr/bin/perl

# ʸ�������ɤ�EUC

require './common.cgi';
PMBase::set_cgi_subname('form');
require './common-sys.cgi';

## Header
PMStaff::Base::print_sheader();

## Init
{
	$InsMode = '';
	$CopyMode = '';
}
...

```

更に setting/sys-setting.cgi の中身を見てみる

```
# cat setting/sys-setting.cgi
#!/usr/bin/perl

## �����ƥ�����
##==============

## �����������̾�
##---------------
require 'pkstaff/photo.pl';
PKStaff::Photo::set_read_error('�����ν̾��˼��Ԥ��ޤ�����');

# ���ޤ��Ϲ⤵�������ͤ�Ķ���Ƥ������硢�������̾�����
#
PKStaff::Photo::install_limit(600);

# �����Υե������ɤ������ͤ��Ѥ���
#
#PKStaff::Photo::set_limit_width_and_height_for('photo2', 200, 200);

...

```

ちゃんとエラーメッセージ理解すればカンタンなんだけど、ここでは Perl うろ覚えで INC 構文がどこかにあるんだと思い込んで検索したけど該当なし

```

# grep -R INC *
#

```

改めてエラーメッセージ見てみる

```
# ./index.cgi
Can't locate Image/Magick.pm in @INC (you may need to install the Image::Magick module) (@INC contains: libpman ../lib /etc/perl /usr/local/lib/perl/5.18.2 /usr/local/share/perl/5.18.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl .) at libpman/pkstaff/photo.pl line 19.
BEGIN failed--compilation aborted at libpman/pkstaff/photo.pl line 19.
Compilation failed in require at setting/sys-setting.cgi line 8.
Compilation failed in require at ./common-sys.cgi line 14.
Compilation failed in require at ./form.cgi line 7.
Compilation failed in require at ./index.cgi line 3.

```

改めてエラーの場所を特定

```

# grep -R Magick *
libpman/pkstaff/photo.pl:	use Image::Magick;
libpman/pkstaff/photo.pl:	my $image = Image::Magick->new();

```

なるほど、 Perl は　use 構文でこう指定するのですね。
必要なライブラリを、 cgi プログラム作成者がディレクトリ内に全て自前で配置しているということがないかどうか、 use で検索

```

# grep -R use *
common.cgi:use lib '../lib';
common.cgi:use lib 'libpman';
error.htm:      <button type="button" onclick="javascript:history.back()" id="bu-back" class="bu-back" onMouseOut="restoreStyle()" onMouseOver="swapStyle('bu-back','bu-back-on')"><span class="hide">����</span></button>
form.htm:    <td colspan="2"><button type="submit" id="bu-search" 
...
```

余計なのが出てきたので検索しなおし

```
# grep -R 'use ' *
common.cgi:use lib '../lib';
common.cgi:use lib 'libpman';
libpman/pkstaff/photo.pl:	use Image::Magick;
```

なるほど、多分 ImageMagick モジュールがシステムにインストールされていることが前提なのでしょうね。それさえ入れれば良さそうですね。
まずは ImageMagick 本体をインストール

```

# apt-get install imagemagick
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  gir1.2-gudev-1.0 libfile-copy-recursive-perl libgudev-1.0-0 ttf-dejavu-core
  update-inetd
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  fontconfig fontconfig-config fonts-dejavu-core ghostscript gir1.2-glib-2.0
  gsfonts hicolor-icon-theme imagemagick-common libavahi-client3
  libavahi-common-data libavahi-common3 libcairo2 libcgmanager0 libcroco3
  libcups2 libcupsfilters1 libcupsimage2 libdatrie1 libdjvulibre-text
  libdjvulibre21 libfftw3-double3 libfontconfig1 libgcrypt11
  libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-common libgirepository-1.0-1
  libglib2.0-0 libgnutls26 libgraphite2-3 libgs9 libgs9-common libharfbuzz0b
  libijs-0.35 libilmbase6 libjasper1 libjbig0 libjbig2dec0 libjson-c2 libjson0
  liblcms2-2 liblqr-1-0 libmagickcore5 libmagickcore5-extra libmagickwand5
  libnetpbm10 libopenexr6 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0
  libpaper-utils libpaper1 libpixman-1-0 libplymouth2 librsvg2-2
  librsvg2-common libtasn1-6 libthai-data libthai0 libtiff5 libudev1
  libwmf0.2-7 libx11-6 libxcb-render0 libxcb-shm0 libxcb1 libxml2 libxrender1
  netpbm plymouth poppler-data python-gi ttf-dejavu-core upstart
Suggested packages:
  ghostscript-x hpijs imagemagick-doc autotrace cups-bsd lpr lprng enscript
  ffmpeg gimp gnuplot grads hp2xx html2ps libwmf-bin mplayer povray radiance
  sane-utils texlive-base-bin transfig xdg-utils ufraw-batch cups-common
  libfftw3-bin libfftw3-dev rng-tools gnutls-bin fonts-droid libjasper-runtime
  liblcms2-utils ttf-baekmuk ttf-arphic-gbsn00lp ttf-arphic-bsmi00lp
  ttf-arphic-gkai00mp ttf-arphic-bkai00mp librsvg2-bin libwmf0.2-7-gtk
  poppler-utils fonts-japanese-mincho fonts-ipafont-mincho
  fonts-japanese-gothic fonts-ipafont-gothic fonts-arphic-ukai
  fonts-arphic-uming fonts-unfonts-core python-gi-cairo graphviz
  upstart-monitor
Recommended packages:
  libglib2.0-data shared-mime-info
The following NEW packages will be installed:
  fontconfig fonts-dejavu-core ghostscript gsfonts hicolor-icon-theme
  imagemagick imagemagick-common libavahi-client3 libavahi-common-data
  libavahi-common3 libcairo2 libcgmanager0 libcroco3 libcups2 libcupsfilters1
  libcupsimage2 libdatrie1 libdjvulibre-text libdjvulibre21 libfftw3-double3
  libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-common libgraphite2-3 libgs9
  libgs9-common libharfbuzz0b libijs-0.35 libilmbase6 libjasper1 libjbig0
  libjbig2dec0 libjson-c2 libjson0 liblcms2-2 liblqr-1-0 libmagickcore5
  libmagickcore5-extra libmagickwand5 libnetpbm10 libopenexr6 libpango-1.0-0
  libpangocairo-1.0-0 libpangoft2-1.0-0 libpaper-utils libpaper1 libpixman-1-0
  librsvg2-2 librsvg2-common libtasn1-6 libthai-data libthai0 libtiff5
  libudev1 libwmf0.2-7 libxcb-render0 libxcb-shm0 libxrender1 netpbm
  poppler-data
The following packages will be upgraded:
  fontconfig-config gir1.2-glib-2.0 libfontconfig1 libgcrypt11
  libgirepository-1.0-1 libglib2.0-0 libgnutls26 libplymouth2 libx11-6 libxcb1
  libxml2 plymouth python-gi ttf-dejavu-core upstart
15 upgraded, 59 newly installed, 0 to remove and 411 not upgraded.
Need to get 21.9 MB of archives.
After this operation, 66.7 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://us-east-1.ec2.archive.ubuntu.com/ubuntu/ trusty-updates/main libgcrypt11 amd64 1.5.3-2ubuntu4.4 [238 kB]
Get:2 http://us-east-1.ec2.archive.ubuntu.com/ubuntu/ trusty-updates/main libtasn1-6 amd64 3.4-3ubuntu0.4 [43.6 kB]
Get:3 http://us-east-1.ec2.archive.ubuntu.com/ubuntu/ trusty-updates/main libgnutls26 amd64 2.12.23-12ubuntu2.7 [395 kB]
...

...
Processing triggers for libgdk-pixbuf2.0-0:amd64 (2.30.7-0ubuntu1.6) ...
g_module_open() failed for /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-tiff.so: libjpeg.so.8: cannot open shared object file: No such file or directory
g_module_open() failed for /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-jpeg.so: libjpeg.so.8: cannot open shared object file: No such file or directory
g_module_open() failed for /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-jasper.so: libjpeg.so.8: cannot open shared object file: No such file or directory
```

なんか最後の方出てるけど今回の動作には問題なかった

次には Perl モジュール入れるには？？ ディストリビューションで用意されているパッケージを入れるという方針で。

```

# apt-cache search imagemagick
groff - GNU troff text-formatting system
imagemagick - image manipulation programs
imagemagick-common - image manipulation programs -- infrastructure
imagemagick-dbg - debugging symbols for ImageMagick
...
```

いっぱい出てきたのでフィルターかける。

```

# apt-cache search imagemagick | grep perl
perlmagick - Perl interface to the ImageMagick graphics routines
libchart-gnuplot-perl - module for generating two- and three-dimensional plots
libgraphics-magick-perl - format-independent image processing - perl interface

```
libgraphics-magick-perl 、これかな？

```

# apt-get install libgraphics-magick-perl
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  gir1.2-gudev-1.0 libfile-copy-recursive-perl libgudev-1.0-0 ttf-dejavu-core
  update-inetd
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  libgraphicsmagick3
Suggested packages:
  graphicsmagick-dbg
The following NEW packages will be installed:
  libgraphics-magick-perl libgraphicsmagick3
0 upgraded, 2 newly installed, 0 to remove and 411 not upgraded.
Need to get 1,094 kB of archives.
After this operation, 3,852 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://us-east-1.ec2.archive.ubuntu.com/ubuntu/ trusty/universe libgraphicsmagick3 amd64 1.3.18-1ubuntu3 [1,041 kB]
Get:2 http://us-east-1.ec2.archive.ubuntu.com/ubuntu/ trusty/universe libgraphics-magick-perl amd64 1.3.18-1ubuntu3 [53.2 kB]
Fetched 1,094 kB in 0s (19.2 MB/s)            
Selecting previously unselected package libgraphicsmagick3.
(Reading database ... 37289 files and directories currently installed.)
Preparing to unpack .../libgraphicsmagick3_1.3.18-1ubuntu3_amd64.deb ...
Unpacking libgraphicsmagick3 (1.3.18-1ubuntu3) ...
Selecting previously unselected package libgraphics-magick-perl.
Preparing to unpack .../libgraphics-magick-perl_1.3.18-1ubuntu3_amd64.deb ...
Unpacking libgraphics-magick-perl (1.3.18-1ubuntu3) ...
Processing triggers for man-db (2.6.1-2ubuntu1) ...
Setting up libgraphicsmagick3 (1.3.18-1ubuntu3) ...
Setting up libgraphics-magick-perl (1.3.18-1ubuntu3) ...
Processing triggers for libc-bin (2.15-0ubuntu10.7) ...
ldconfig deferred processing now taking place

```

これでどうかな？

```

# ./index.cgi 
Can't locate Image/Magick.pm in @INC (you may need to install the Image::Magick module) (@INC contains: libpman ../lib /etc/perl /usr/local/lib/perl/5.18.2 /usr/local/share/perl/5.18.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl .) at libpman/pkstaff/photo.pl line 19.
BEGIN failed--compilation aborted at libpman/pkstaff/photo.pl line 19.
Compilation failed in require at setting/sys-setting.cgi line 8.
Compilation failed in require at ./common-sys.cgi line 14.
Compilation failed in require at ./form.cgi line 7.
Compilation failed in require at ./index.cgi line 3.

```

あれ、違った！　ググると、libimage-magick-perl というものが正解らしい。


```

# apt-get install libimage-magick-perl
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'perlmagick' instead of 'libimage-magick-perl'
The following packages were automatically installed and are no longer required:
  gir1.2-gudev-1.0 libfile-copy-recursive-perl libgudev-1.0-0 ttf-dejavu-core
  update-inetd
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  libperl5.18 perl perl-base perl-modules
Suggested packages:
  perl-doc libterm-readline-gnu-perl libterm-readline-perl-perl make
  libb-lint-perl libcpanplus-dist-build-perl libcpanplus-perl
  libfile-checktree-perl liblog-message-perl libobject-accessor-perl
  imagemagick-doc
The following NEW packages will be installed:
  libperl5.18 perlmagick
The following packages will be upgraded:
  perl perl-base perl-modules
3 upgraded, 2 newly installed, 0 to remove and 408 not upgraded.
Need to get 6,608 kB of archives.
After this operation, 585 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://us-east-1.ec2.archive.ubuntu.com/ubuntu/ trusty-updates/main perl amd64 5.18.2-2ubuntu1.1 [2,648 kB]
Get:2 http://us-east-1.ec2.archive.ubuntu.com/ubuntu/ trusty-updates/main perl-base amd64 5.18.2-2ubuntu1.1 [1,146 kB]
Get:3 http://us-east-1.ec2.archive.ubuntu.com/ubuntu/ trusty-updates/main perl-modules all 5.18.2-2ubuntu1.1 [2,673 kB]
Get:4 http://us-east-1.ec2.archive.ubuntu.com/ubuntu/ trusty-updates/main libperl5.18 amd64 5.18.2-2ubuntu1.1 [1,332 B]
Get:5 http://us-east-1.ec2.archive.ubuntu.com/ubuntu/ trusty-updates/main perlmagick amd64 8:6.7.7.10-6ubuntu3.6 [139 kB]
Fetched 6,608 kB in 0s (21.1 MB/s)
(Reading database ... 37319 files and directories currently installed.)
Preparing to unpack .../perl_5.18.2-2ubuntu1.1_amd64.deb ...
Unpacking perl (5.18.2-2ubuntu1.1) over (5.18.2-2ubuntu1) ...
Preparing to unpack .../perl-base_5.18.2-2ubuntu1.1_amd64.deb ...
Unpacking perl-base (5.18.2-2ubuntu1.1) over (5.18.2-2ubuntu1) ...
Processing triggers for man-db (2.6.1-2ubuntu1) ...
Setting up perl-base (5.18.2-2ubuntu1.1) ...
(Reading database ... 37319 files and directories currently installed.)
Preparing to unpack .../perl-modules_5.18.2-2ubuntu1.1_all.deb ...
Unpacking perl-modules (5.18.2-2ubuntu1.1) over (5.18.2-2ubuntu1) ...
Selecting previously unselected package libperl5.18.
Preparing to unpack .../libperl5.18_5.18.2-2ubuntu1.1_amd64.deb ...
Unpacking libperl5.18 (5.18.2-2ubuntu1.1) ...
Selecting previously unselected package perlmagick.
Preparing to unpack .../perlmagick_8%3a6.7.7.10-6ubuntu3.6_amd64.deb ...
Unpacking perlmagick (8:6.7.7.10-6ubuntu3.6) ...
Processing triggers for man-db (2.6.1-2ubuntu1) ...
Setting up libperl5.18 (5.18.2-2ubuntu1.1) ...
Setting up perl-modules (5.18.2-2ubuntu1.1) ...
Setting up perl (5.18.2-2ubuntu1.1) ...
Setting up perlmagick (8:6.7.7.10-6ubuntu3.6) ...
Processing triggers for libc-bin (2.15-0ubuntu10.7) ...
ldconfig deferred processing now taking place
```

cgi実行してみる

```
# ./index.cgi Can't load '/usr/lib/perl5/auto/Image/Magick/Magick.so' for module Image::Magick: libgomp.so.1: cannot open shared object file: No such file or directory at /usr/lib/perl/5.18/DynaLoader.pm line 184.
 at libpman/pkstaff/photo.pl line 19.
Compilation failed in require at libpman/pkstaff/photo.pl line 19.
BEGIN failed--compilation aborted at libpman/pkstaff/photo.pl line 19.
Compilation failed in require at setting/sys-setting.cgi line 8.
Compilation failed in require at ./common-sys.cgi line 14.
Compilation failed in require at ./form.cgi line 7.
Compilation failed in require at ./index.cgi line 3.
&Image::Magick::constant not defined. The required ImageMagick libraries are not installed or not installed properly.
END failed--call queue aborted at ./index.cgi line 3.
```

こんどは共有オブジェクトライブラリが無い。
ここから少し迷走してしまう。

```

# apt-get intall perlmagick
E: Invalid operation intall
```

ミスタイプしたり

```
# apt-get install perlmagick
Reading package lists... Done
Building dependency tree       
Reading state information... Done
perlmagick is already the newest version.
The following packages were automatically installed and are no longer required:
  gir1.2-gudev-1.0 libfile-copy-recursive-perl libgudev-1.0-0 ttf-dejavu-core
  update-inetd
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 408 not upgraded.
```

別のパッケージが必要なのかと思ったり。実際は perlmagick は Ubuntu 14.04 においては先程インストールした libimage-magick-perl と同じものを指すので意味がなかった。

```

# apt-get install libmagick-devel
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package libmagick-devel
```

develパッケージが必要かなと探してみたり。

```

# apt-cache search libmagick
libmagick++-dev - object-oriented C++ interface to ImageMagick - development files
libmagick++5 - object-oriented C++ interface to ImageMagick
libmagickcore-dev - low-level image manipulation library - development files
libmagickcore5 - low-level image manipulation library
libmagickcore5-extra - low-level image manipulation library - extra codecs
libmagickwand-dev - image manipulation library - development files
libmagickwand5 - image manipulation library
graphicsmagick-libmagick-dev-compat - image processing libraries providing ImageMagick interface
```

迷路から戻って、改めてエラーメッセージを見てみる。

```

# ./index.cgi Can't load '/usr/lib/perl5/auto/Image/Magick/Magick.so' for module Image::Magick: libgomp.so.1: cannot open shared object file: No such file or directory at /usr/lib/perl/5.18/DynaLoader.pm line 184.
 at libpman/pkstaff/photo.pl line 19.
Compilation failed in require at libpman/pkstaff/photo.pl line 19.
BEGIN failed--compilation aborted at libpman/pkstaff/photo.pl line 19.
Compilation failed in require at setting/sys-setting.cgi line 8.
Compilation failed in require at ./common-sys.cgi line 14.
Compilation failed in require at ./form.cgi line 7.
Compilation failed in require at ./index.cgi line 3.
&Image::Magick::constant not defined. The required ImageMagick libraries are not installed or not installed properly.
END failed--call queue aborted at ./index.cgi line 3.
```

なんだ、 libgomp1.so.1 が無いと出てるじゃん。
Ubuntu パッケージ検索で探すと libgomp1 で収録だそうで。
http://packages.ubuntu.com/ja/ 


```
# apt-get install libomp1
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package libomp1
```

おっと

```

# apt-get install libgomp1
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  gir1.2-gudev-1.0 libfile-copy-recursive-perl libgudev-1.0-0 ttf-dejavu-core
  update-inetd
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  gcc-4.8-base
The following NEW packages will be installed:
  gcc-4.8-base
The following packages will be upgraded:
  libgomp1
1 upgraded, 1 newly installed, 0 to remove and 407 not upgraded.
Need to get 39.3 kB of archives.
After this operation, 227 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
...
```

実行してみる

```

# ./index.cgi 
Can't load '/usr/lib/perl5/auto/Image/Magick/Magick.so' for module Image::Magick: libltdl.so.7: cannot open shared object file: No such file or directory at /usr/lib/perl/5.18/DynaLoader.pm line 184.
 at libpman/pkstaff/photo.pl line 19.
Compilation failed in require at libpman/pkstaff/photo.pl line 19.
BEGIN failed--compilation aborted at libpman/pkstaff/photo.pl line 19.
Compilation failed in require at setting/sys-setting.cgi line 8.
Compilation failed in require at ./common-sys.cgi line 14.
Compilation failed in require at ./form.cgi line 7.
Compilation failed in require at ./index.cgi line 3.
&Image::Magick::constant not defined. The required ImageMagick libraries are not installed or not installed properly.
END failed--call queue aborted at ./index.cgi line 3.

```

今度は libltdl.so.7 が無いと出たので同様に



```
# apt-get install libltdl7
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  gir1.2-gudev-1.0 libfile-copy-recursive-perl libgudev-1.0-0 ttf-dejavu-core
  update-inetd
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  libltdl-dev
Suggested packages:
  libtool-doc
The following packages will be upgraded:
  libltdl-dev libltdl7
2 upgraded, 0 newly installed, 0 to remove and 405 not upgraded.
Need to get 192 kB of archives.
After this operation, 20.5 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
...
```

今度はどうかな

```
# ./index.cgi 
defined(%hash) is deprecated at ../lib/charcode/jcode.pl line 700.
	(Maybe you should just omit the defined()?)
defined(%hash) is deprecated at ../lib/charcode/jcode.pl line 709.
	(Maybe you should just omit the defined()?)
Content-type: text/html; charset=euc-jp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
...
```

動いた

あとはパーミッションなどを設定して、やれやれ。