Dockerfile 内で、実行時にインストールされる Perl モジュールを次のように設定しています。
RUN ["cpanm", "Carp", "Carp::Heavy", "Class::Data::Inheritable"]
ただし、1 つのモジュールについては、最新のモジュールではなく、特定のバージョンのモジュールが必要です。上記の行でそのバージョンを指定するにはどうすればよいですか?
私は何時間もオンラインで検索してきましたが、まだ有用なものは何も見つかりませんでした.
Dockerfile 内で、実行時にインストールされる Perl モジュールを次のように設定しています。
RUN ["cpanm", "Carp", "Carp::Heavy", "Class::Data::Inheritable"]
ただし、1 つのモジュールについては、最新のモジュールではなく、特定のバージョンのモジュールが必要です。上記の行でそのバージョンを指定するにはどうすればよいですか?
私は何時間もオンラインで検索してきましたが、まだ有用なものは何も見つかりませんでした.
将来この同じ答えを探している人のために、別のオプションが次のドキュメントにありますcpanm
。
cpanm Plack@0.9990
モジュールのリストが長い場合は、Dockerfile にすべてをリストするのではなく、にフィードするcpanfile
ことを検討してください。cpanm
モジュールの特定のバージョン番号を a で指定する最も簡単な方法cpanfile
は次のとおりです。
requires 'Text::ParseWords', '==3.1';
モジュールの最新バージョンを要求するための構文は次のとおりです。
requires 'Text::ParseWords';
最小バージョンのリクエスト: (「==」がないことに注意してください)
requires 'Text::ParseWords', '3.1';
他の方法で特定のバージョンを要求するための構文については、こちらで十分に説明されています。
cpanm
と aの使用に関する別の素晴らしい記事は、cpanm と cpanfile による cpan モジュールのインストールにありcpanfile
ます。
モジュール名を指定する代わりに、URL を指定します。たとえば、代わりにClass::Data::Inheritable
を使用しますhttps://cpan.metacpan.org/authors/id/T/TM/TMTM/Class-Data-Inheritable-0.06.tar.gz
metacpan のモジュール ページに移動し、必要なバージョンを選択して、ダウンロード リンクをコピーすると、該当する URL を見つけることができます。
PS:を使用してのみダウンロードするPERL_CPANM_OPT=--from https://cpan.metacpan.org/
ように環境に設定することもできます。cpanm
HTTPS
モジュールの特定のバージョンを CPAN にインストールさせるには、作成者を含む完全なモジュール配布ファイル名を提供する必要があります。たとえば、モジュールSet::Object
versionをインストールする1.28
には、コマンド ラインで次のように入力します。
cpan SAMV/Set-Object-1.28.tar.gz
同じことが Docker にも当てはまります。追加するだけです
RUN cpan SAMV/Set-Object-1.28.tar.gz