web-dev-qa-db-ja.com

プロジェクトの構成後のエラー「モジュールLDAPが存在しません」

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 pmlbeta3がまだインストールされていることを示しているため、これは未解決のままです。

3
hotwebmatter

その理由は、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モジュールをインストールする人は、この問題に遭遇しません。

3
hansfn