Debian etch から lenny にアップグレードしてから、
定期実行していた perl スクリプトがコケる!

と思ったら "Can't locate Jcode.pm in @INC" だった。
はいはいライブラリがみつからないのね。インストールしますよ。

というわけで、まずはパッケージを検索。
lenny に移行するときに apt-get から aptitude 派に *しょうがなく* 転向したので、apt-get search じゃなくて aptitude search を使う。


# aptitude search Jcode
v   jcodepl                              -
p   libjcode-perl                        - Perl library for Japanese character code conver
p   libjcode-pm-perl                     - Perl extension interface to convert Japanese te

パッケージを3つ発見。
それぞれの内容を aptitude show で調べる。


# aptitude show jcodepl
No current or candidate version found for jcodepl
Package: jcodepl
State: not a real package
Provided by: libjcode-perl
 
# aptitude show libjcode-perl
Package: libjcode-perl
State: not installed
Version: 2.13-2
Priority: optional
Section: perl
Maintainer: Atsushi KAMOSHIDA <kamop@debian.org>
Uncompressed Size: 77.8k
Depends: perl5
Conflicts: jcodepl
Replaces: jcodepl
Provides: jcodepl
Description: Perl library for Japanese character code conversion
 The libjcode-perl package provides jcode.pl which is perl library for Japanese character
 code conversion.
 
# aptitude show libjcode-pm-perl
Package: libjcode-pm-perl
State: not installed
Version: 2.06-1
Priority: optional
Section: perl
Maintainer: Atsushi KAMOSHIDA <kamop@debian.org>
Uncompressed Size: 123k
Depends: perl (>= 5.6.0-16)
Description: Perl extension interface to convert Japanese text
 Jcode.pm is a Perl module that handles various Japanese charsets. It has all features
 available on jcode.pl PLUS
 * Object-oriented approach on Japanese text handling
 * mime header handling
 * Unicode feature (UCS2 and UTF8)

jcodepl が仮想パッケージ?
jcodepl をインストールすると libjcode-perl が自動でインストールされる。

何をまちがえたか jcodepl をインストールしてしまった。


# aptitude install jcodepl
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Note: selecting "libjcode-perl" instead of the
      virtual package "jcodepl"
The following NEW packages will be installed:
  libjcode-perl
0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 15.2kB of archives. After unpacking 77.8kB will be used.
Writing extended state information... Done
Get:1 http://cdn.debian.or.jp lenny/main libjcode-perl 2.13-2 [15.2kB]
Fetched 15.2kB in 0s (46.8kB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously deselected package libjcode-perl.
(Reading database ... 49547 files and directories currently installed.)
Unpacking libjcode-perl (from .../libjcode-perl_2.13-2_all.deb) ...
Setting up libjcode-perl (2.13-2) ...
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Writing extended state information... Done

apt-utils も入れたほうがいいのかな、ってことでインストール。


# aptitude install apt-utils
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
The following NEW packages will be installed:
  apt-utils
0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 192kB of archives. After unpacking 467kB will be used.
Writing extended state information... Done
Get:1 http://cdn.debian.or.jp lenny/main apt-utils 0.7.20.2+lenny1 [192kB]
Fetched 192kB in 0s (402kB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously deselected package apt-utils.
(Reading database ... 49553 files and directories currently installed.)
Unpacking apt-utils (from .../apt-utils_0.7.20.2+lenny1_amd64.deb) ...
Processing triggers for man-db ...
Setting up apt-utils (0.7.20.2+lenny1) ...
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Writing extended state information... Done

必要だったのは Jcode.pm のはずなのに、
なぜか jcode.pl をインストールしたことにここで気づく。

Jcode.pm もインストールする。


# aptitude install libjcode-pm-perl
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
The following NEW packages will be installed:
  libjcode-pm-perl
0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 30.9kB of archives. After unpacking 123kB will be used.
Writing extended state information... Done
Get:1 http://cdn.debian.or.jp lenny/main libjcode-pm-perl 2.06-1 [30.9kB]
Fetched 30.9kB in 0s (74.7kB/s)
Selecting previously deselected package libjcode-pm-perl.
(Reading database ... 49569 files and directories currently installed.)
Unpacking libjcode-pm-perl (from .../libjcode-pm-perl_2.06-1_amd64.deb) ...
Processing triggers for man-db ...
Setting up libjcode-pm-perl (2.06-1) ...
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Writing extended state information... Done

これでやっと Jcode.pm を必要とするスクリプトが動くようになった。

tags: zlashdot Perl Debian Linux Perl

Posted by NI-Lab. (@nilab)