Tiny Core LinuxでPerl CPANモジュールをtcz化する方法 / How to make tcz package from CPAN module in Tiny Core Linux

  • 投稿日:
  • 更新日:2015/02/28
  • by
  • カテゴリ:

(English below)

Tiny Core LinuxでCPANを使ってPerlパッケージを入れたいことがあります。 中にはYAMLのように最初からtczとして用意されているものもあるのですが、すべてあるわけではありませんので。

ところが、frugal install環境では、インストールしても何もしないとリブート時に消えてしまいます。 そこで必要なファイルをtczにパッケージ化したいのですが、せっかく小型軽量のTiny Coreなので、必要最小限のファイルのみをtcz化したいものです。 以下はその手順です。

作業はtcユーザで行います。 なお、以下ではPerlのバージョンが5.14.1になっていますが、自分の持っているバージョンに適宜読み替えてください。

ここではDigest::SHA1モジュールを入れるのを例に説明します。 Digest::SHA1にはYAMLが必須で、これは既にリポジトリにあるので、それを入れるのも参考までにコマンドに入れています。

(コンパイル環境の準備)
% tce-load -wil compiletc
% tce-load -wil squashfs-tools-4.x
(YAMLのインストール)
% tce-load -wi perl_YAML
(作業ディレクトリの準備)
% cd /tmp
% mkdir -p /tmp/pkg/usr/local/lib/perl5/5.14.1/
(tczパッケージを作成するために、インストール先をデフォルトから変更する)
% cpan
cpan[1]> o conf makepl_arg "LIB=/tmp/pkg/usr/local/lib/perl5/5.14.1 \
 PREFIX=/tmp/pkg/usr/local/lib/perl5/5.14.1 \
 INSTALLMAN1DIR=/tmp/man1 INSTALLMAN3DIR=/tmp/man3"
cpan[2]> o conf commit
cpan[3]> o exit

以上が準備作業となります。 で、実際のcpanのパッケージ化が以下となります。

(モジュールのインストール)
% cpan Digest::SHA1
(tcz化)
(この際、/tmp/pkg/usr/local/lib/perl5/5.14.1/share以下にmanファイルが
入っている場合があります。不要ならmksquashfs実行前に削除しても構いません)
% mksquashfs pkg perl_Digest_SHA1.tcz
(リストの作成、これは必須ではありません)
% cd pkg
% find usr -not -type d > ../perl_Digest_SHA1.tcz.list
(リポジトリに格納してロード)
% cp perl_Digest_SHA1.tcz perl_Digest_SHA1.tcz.list /mnt/sda1/tce/optional
% tce-load -i perl_Digest_SHA1.tcz

複数のPerlパッケージをtcz化したい場合は、

% rm -rf /tmp/pkg
% mkdir -p /tmp/pkg/usr/local/lib/perl5/5.14.1/

としていったん作業ディレクトリをクリーンアップしたあと、上記の

% cpan パッケージ名(たとえばArchive::Tar)

から続く作業を繰り返せばいいことになります。

パッケージを作成したら、必要に応じて/mnt/sda1/tce/onboot.list (tceディレクトリが/mnt/sda1にあると仮定)にパッケージ名を追加すれば起動時に読み込むようになります。

(最後に飛ぶ)

You may want to use CPAN to install Perl packages to Tiny Core Linux. Some of them are readily made in tcz packages such as YAML, but not all.

However, in the frugal installation environment, installed packages will be removed when rebooting the system. So you want to make a tcz package for it. Also you may want to package ONLY absolutely necessary files as small is king in Tiny Core Linux. Here is the procedure.

Do it as user tc. The process below temporality assumes Perl version 5.14.1 but adapt it for your own version.

Here is a example to make a package for Digest::SHA1. This package needs YAML as a prerequisite, so the process below contains the installation command of YAML for your reference.

(To prepare compilation environment)
% tce-load -wil compiletc
% tce-load -wil squashfs-tools-4.x
(Installing YAML)
% tce-load -wi perl_YAML
(To prepare working directory, will be removed upon rebooting)
% cd /tmp
% mkdir -p /tmp/pkg/usr/local/lib/perl5/5.14.1/
(Changing installation directory from default, to isolate necessary files to make a tcz package)
% cpan
cpan[1]> o conf makepl_arg "LIB=/tmp/pkg/usr/local/lib/perl5/5.14.1 \
 PREFIX=/tmp/pkg/usr/local/lib/perl5/5.14.1 \
 INSTALLMAN1DIR=/tmp/man1 INSTALLMAN3DIR=/tmp/man3"
cpan[2]> o conf commit
cpan[3]> o exit

The above is the preparation, and the actual making package is described below.

(Installing the module)
% cpan Digest::SHA1
(To make a tcz package)
(At this point, some man files are installed under /tmp/pkg/usr/local/lib/perl5/5.14.1/share, but you can remove them unless you need them and make the package minimal before the following command)
% mksquashfs pkg perl_Digest_SHA1.tcz
(Making a list of files, it is an option process)
% cd pkg
% find usr -not -type d > ../perl_Digest_SHA1.tcz.list
(Copying the tcz package to the repository and loading)
% cp perl_Digest_SHA1.tcz perl_Digest_SHA1.tcz.list /mnt/sda1/tce/optional
% tce-load -i perl_Digest_SHA1.tcz

If you want to make multiple Perl modules into tcz packages, you want to clean the working directory up by:

% rm -rf /tmp/pkg
% mkdir -p /tmp/pkg/usr/local/lib/perl5/5.14.1/

and repeat from

% cpan {module name}(e.g. Archive::Tar)

After making a package, you can add the name of the package in /mnt/sda1/tce/onboot.list (assuming tce in /mnt/sda1) to load it at the booting time.

こちらもよく読まれています