本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーは,
長期間にわたって開発・
本稿のサンプルコードは,
Perlのアプリケーションでの依存モジュール管理
まず,
Cartonを使ったモジュール管理
Cartonは,
Cartonがモジュール管理のために利用するファイルがcpanfileとcpanfile.
そのうち,
cpanfile
# List::MoreUtilsの0.418以上を要求する
requires 'List::MoreUtils', '0.418';
# DateTimeの1.50を要求する
requires 'DateTime', '== 1.50';
# JSON::XSの3.00以下を要求する
requires 'JSON::XS', '<= 3.00';
# テストフェーズでのみ要求するモジュール
on test => sub {
# Test::Moreをバージョンを問わず要求する
requires 'Test::More';
};
cpanfileを用意したのちにcarton install
を実行すると,
cpanfile.snapshot
# carton snapshot format: version 1.0
DISTRIBUTIONS
(中略)
List-MoreUtils-0.419
pathname: R/RE/REHSACK/List-MoreUtils-0.419.tar.gz
provides:
List::MoreUtils 0.419
List::MoreUtils::PP 0.419
requirements:
Exporter::Tiny 0.038
ExtUtils::MakeMaker 0
上記のcpanfile.List::MoreUtils
部分のみを抜粋しています。List-MoreUtils
の0.
このようにCartonは,carton install
を実行しても結果は変わりません。
本番環境の更新がゴール
アプリケーションの依存モジュールを更新するゴールは,
冒頭のcpanfileでのList::MoreUtils
について状況を整理すると,
- 本稿執筆時において,
CPANで公開されている最新版は0. 428である - cpanfileでは,
0. 418以上という範囲を要求している - cpanfile.
snapshotには, cpanfileでの要求範囲を満たす0. 419が記録されている - 本番環境のサーバには,
cpanfile. snapshotの指定に基づいて0. 419がインストールされている
本番環境のサーバで動いているバージョンは0.List::MoreUtils
については更新成功となります。
その際に,
最新のモジュールを使うことの重要性
ここでは,
新しいことは良いこと
モジュールが新しくリリースされる理由は,
このようにモジュールの更新は,
脆弱性はいつ発見されるかわからない
利用中のモジュールに脆弱性が発見され,