5.32以降のdocker-perlでのcpanmは`https://www.cpan.org`に繋ぎに行くようになります

2022/06/13 追記

一旦この修正はrevertされたので、現在はhttpsで繋ぎにいかなくなっています

2022/06/03 23:46追記

skajiさんの指摘でPERL_CPANM_OPTを指定した状態だと、cpanmの一部の挙動に制限がかかることがPRに書かれました。 この状態だとmetacpanやcpanmetadbのresolverが使用できなくなるので、今後変更があるかもしれません。

github.com

追記ここまで


表題がすべてですが、 library/perl: Update for cpanm update and HTTPS install by default by zakame · Pull Request #12569 · docker-library/official-images · GitHub のPRがmergeされ次第、5.32以降のdocker-perlでのcpanmはhttps://www.cpan.orgに繋ぎに行くようになります。

これは先日docker-perlでインストールされるcpanmのバージョンを最新にしたところ、docker-perlのメンテナのzakameさんが以前のCPAN脆弱性対応のために乗り気で入れたものです。

具体的に何をしたかというと、環境変数としてPERL_CPANM_OPT"--from https://www.cpan.org"を設定しています。 これはcpanmがデフォルトで接続に行く先をhttps://www.cpan.orgにする設定です。

この変更によって表題のことが行われます。

影響のあるPerlバージョン

5.32以降の安定バージョンです。 正確に言うと5.32.1, 5.34.1, 5.36.0の3バージョンが影響を受けます。  docker-perlのtagの関係上、5.32と指定した場合は5.32.1と同じ意味になりますので、5.32以降のPerlをdocker-perlで使っている方は影響があります。

https://hub.docker.com/_/perl

対して5.30以前のPerl Imageは影響を受けません。 これはdocker-perlの現在の開発方針が、「EOLを迎えていないPerlバージョンのみImageの積極的に更新を行う」方針であるためです。

endoflife.date

(そのため現在でもDebian11(bullseye)ベースのイメージは5.30以前のPerlバージョンはなかったりします。)

以下にこの変更による影響をまとめます。

DockerImage自体

ca-certificatescurlがslimのImageでもインストールされたままになります。

github.com

cpanm

cpanmのバージョンが最新になります。

特に問題なくcpanmでモジュールインストールが可能です。 テストではMojoliciousをインストールしています。

github.com

ciの結果を見る限りしっかりhttpsでインストールされてます。

carton

Cartonに関しては環境変数が別となるのでhttpのままになります。

github.com

いやでもhttpsで接続したいんだが...!? という方はCartonの後継プロジェクトとなっているCarmelの方をお使いください。 CarmelはCartonと同じ機能を持ちながら、デフォルトでhttps://cpan.metacpan.org/に繋ぎに行くので安心です。

github.com

cpm

特に影響はないと思われます。

まとめ

  • 5.32以降のdocker-perlでのcpanmはhttps://www.cpan.orgに繋ぎに行くようになります
  • 同時にcpanmも最新になります
  • docker-perlはEOLを迎えてないPerlのバージョンのみ面倒を見ているので、docker-perlを使う方はバージョンに注意しましょう

現場からは以上です