MT::Util::Dependencies にコアモジュールが揃っているかを確認する機能を追加する
Description
Checklists
relates to
Activity

Kenichi IshigakiMay 10, 2024 at 4:23 AM
@Reiko Sato ありがとうございます。マージしました。
Reiko SatoMay 10, 2024 at 2:26 AM
@Kenichi Ishigaki
上記手順どおり、Manifest.pm
がない場合にお使いのPerlはコアモジュールが不足しているため予期せぬ動作をする可能性があります。システム管理者にperl(またはperl-core)を適切にインストールするよう依頼してください。
というメッセージが表示されることを確認。

Kenichi IshigakiMay 9, 2024 at 5:51 AM
@Keita Sugama ありがとうございます。
@Reiko Sato
https://github.com/movabletype/movabletype/pull/3133 で対応しました。以下の手順でご確認おねがいします。
まずは mt-check.cgi や管理画面のシステム情報が不審な警告なく正しく動作していることをご確認おねがいします。mt-check.cgi を表示したときに mt-config.cgi が存在しているので無効になっている旨の表示が出る場合は mt-check-unsafe.cgi にリネームして試してみてください。
確認が済んだら MTが存在している環境に入り、シェルから
perldoc -l ExtUtils::Manifest
を実行してください。You need to install the perl-doc package to use this program.
と言われた場合はapt-get update && apt-get install perl-doc
してから再度実行してください。perldoc -l ExtUtils::Manifest
の結果表示されるパス(/usr/share/perl/(バージョン)/ExtUtils/Manifest.pm
など)をmv
コマンドで適当にリネームしてください(.bak
をあとにつける、など)念のため再度
perldoc -l ExtUtils::Manifest
を実行して、パスが表示されなくなる(No documentation found for "ExtUtils::Manifest"
などのメッセージが出る)ことを確認してくださいブラウザで mt-check.cgi を開いたとき、また管理画面のシステム情報を表示したときに
お使いのPerlはコアモジュールが不足しているため予期せぬ動作をする可能性があります。システム管理者にperl(またはperl-core)を適切にインストールするよう依頼してください。
というメッセージが表示されることを確認してください最後にリネームした ExtUtils/Manifest.pm をもとの名前に戻しておいてください

Keita SugamaMay 8, 2024 at 10:27 AM
@Kenichi Ishigaki
ありがとうございます。良さそうです。

Kenichi IshigakiMay 8, 2024 at 10:26 AM
@Keita Sugama
ありがとうございます。消し忘れていた条件を https://github.com/movabletype/movabletype/pull/3133/commits/58a220d91a14449a9fbc6552f7331cea72f0199e で消しました。
https://movabletype.atlassian.net/browse/SUPPORT-355 より派生。古い CentOS / RHEL 環境では perl-core をインストールしないといくつかのコアモジュールが欠けた状態になることが知られていたが、同様の問題がほかの環境にもある模様。
CentOS / RHEL 時代の perl と amazonlinux の perl-interpreter では同梱されるものが異なる(今回問題になった English / DirHandle などは CentOS の perl には同梱されている)という事情もあり、Module::CoreList ですべてのコアモジュールの存在を確認するのが確実ではあるが(そもそも Module::CoreList が入っていなければアウト)、コアモジュールの数も増えているのでいちいち全部をロードしてまわるのも環境にやさしくない。CentOS7 の perl と amazonlinux 2023 の perl-interpreter を入れて適当に比較してみたところ、 ExtUtils::Manifest 、 ExtUtils::MakaMaker 、 Env あたりが perl 5 の初期から同梱されているうえに共通して省略されているので判別に都合がよさそう。
これらを個別の依存モジュールとして見せる必要はない(ひとつひとつ入れられても困る)ので、揃っていなければコアモジュールが欠けているので想定外の問題が起こる可能性があるという警告を表示するくらいにとどめる。