TarballベースのDrupal 8.7.8プロジェクトを継承しました。
私はそれを新しいホスティングに移動し、アップデートとメンテナンスの責任を引き受けます。
コアを8.8.2に更新し、すべてのcontribテーマとモジュールを最新バージョンに更新した後、驚くべき新しい core-based tool を使用してtarballをComposerベースのプロジェクトに変換しました。
ComposerはLDAPモジュールの最新の8.x-3.0-beta7
のインストールを拒否し、8.x-3.0-beta3
のインストールを要求します。ただし、Drushは次のようなメッセージを表示します。 :
$ lando drush en new_custom_module
In ExtensionList.php line 522:
The module ldap does not exist.
そしてそれを有効にしようとすると、私はこれを取得します:
$ lando drush en ldap
In PmCommands.php line 247:
Unable to install modules ldap due to missing modules ldap.
私は約100万回キャッシュを再構築しました。 (以前は、インストールされたモジュールをファイルシステムの別のパスに移動するなどの面倒な作業をした場合、レジストリの再構築を行う必要がありましたが、現在はdrush cr
プロセスの一部にすぎません。)
LDAPは実際にはモジュール自体ではありません。これは、「サブモジュール」のすべてを含むプロジェクトです。
メンテナがldap.info.yml
ファイルを追加したのにldap.module
ファイルがないのは非常に奇妙です。
アンインストールできればいいのですが、LDAP認証はクライアントの要件です。ユーザーがActive Directoryドメインに属していない限り、サイトログインをロックダウンしています。
すべてのサブモジュールがインストールされているので、奇妙なことに...mightはまだ機能します。 (私のローカルではテストできません。デプロイ環境はまだセットアップされていません。)
新しいdevブランチを本番サイトと比較します(composerizationおよびbeta7からbeta3へのダウングレード前)。同じLDAPサブモジュールがすべてインストールされていることを確認しました。
$ lando drush pml |grep ldap
Lightweight Directory Access Protocol LDAP Authentication (ldap_authentication) Enabled 8.x-3.0-beta3
Lightweight Directory Access Protocol LDAP Authorization Provider (ldap_authorization) Enabled 8.x-3.0-beta3
Lightweight Directory Access Protocol LDAP Help (ldap_help) Enabled 8.x-3.0-beta3
Lightweight Directory Access Protocol LDAP Query (ldap_query) Enabled 8.x-3.0-beta3
Lightweight Directory Access Protocol LDAP Servers (ldap_servers) Enabled 8.x-3.0-beta3
Lightweight Directory Access Protocol LDAP Users (ldap_user) Enabled 8.x-3.0-beta3
この状況をトラブルシューティングするにはどうすればよいですか?
すべてのサブモジュールがインストールされて有効になっているように見えるため、データベース内のLDAPモジュールのすべてのトレースを手動で削除しても安全ですか?
私は これについてLDAPプロジェクトの課題キューに書き込まれました ですが、1週間たっても応答がないので、ここに持ってきました。
事前のご案内をお待ちしております。
[〜#〜]更新[〜#〜](2020-03-01):
パッケージのメンテナがDrupal.orgスレッドに応答し、次のコマンドを実行するように提案しました。
composer update drupal/ldap drupal/ldap_authentication drupal/ldap_authorization drupal/ldap_servers drupal/ldap_query drupal/ldap_user --with-dependencies
このコマンドはエラーなしで実行されますが、「インストールまたは更新するものがない」と主張します。
Finished: success: 12, skipped: 0, failure: 0, total: 12
Package "drupal/ldap_authentication" listed for update is not installed. Ignoring.
Package "drupal/ldap_authorization" listed for update is not installed. Ignoring.
Package "drupal/ldap_servers" listed for update is not installed. Ignoring.
Package "drupal/ldap_query" listed for update is not installed. Ignoring.
Package "drupal/ldap_user" listed for update is not installed. Ignoring.
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
このコマンドを実行した後、drush pml
はbeta3
がまだインストールされていることを示しているため、これは未解決のままです。
その理由は、8.x-3.0-beta3が個別のLDAPモジュールを定義していないためです。 ldapを「メタ」モジュールとして定義するバージョン8.x-3.0-beta7が必要です。
composer why-not drupal/ldap 8.x-3.0-beta7
はおそらく、drupal/authorizationのdevバージョンが必要であることを伝えます。
追加:
理由は説明できませんが、composer why-not
(またはcomposer prohibits
必要に応じて)実際には、開発バージョンのdrupal/authorizationが必要であることを報告しません。
とにかく、devバージョンをインストールするだけで、すべてが機能します。
composer require drupal/authorization:1.x-dev
composer update drupal/ldap drupal/ldap_servers [...] --with-dependencies
PS! tarモジュールから変換せずに直接ldapモジュールをインストールする人は、この問題に遭遇しません。