3

I've inherited a tarball-based Drupal 8.7.8 project.

I'm moving it to new hosting, and assuming responsibility for updates and maintenance.

After updating core to 8.8.2, and updating all contrib themes and modules to their latest versions, I used the amazing new core-based tool to convert the tarball to a Composer-based project.

This worked well, with one exception: Composer refuses to install the latest 8.x-3.0-beta7 of the LDAP module, and insists on installing 8.x-3.0-beta3. But now Drush is showing messages like:

$ lando drush en new_custom_module

In ExtensionList.php line 522:

  The module ldap does not exist.  

And if I try to enable it, I get this:

$ lando drush en ldap      

In PmCommands.php line 247:

  Unable to install modules ldap due to missing modules ldap.  

I have rebuilt caches about a million times. (It used to be that you needed to do a registry rebuild if you did funny business like move an installed module to a different path in the filesystem. But now that is just part of the drush cr process.)

LDAP is not actually a module per se, it's a project that contains all of its "submodules."

It's very odd that the maintainer added an ldap.info.yml file but there is no ldap.module file.

I wish I could just uninstall it, but LDAP auth is a client requirement. They are locking down the site logins unless users are in their Active Directory Domain.

The weird thing is ... it might still work, since all the submodules are installed. (Can't test in my local; deploy environment not set up yet.)

Comparing my new dev branch with the production site (before composerization and the downgrade from beta7 to beta3) I have verified that all the same LDAP submodules are installed:

$ 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  

How do I proceed to troubleshoot this situation?

Is it safe to manually remove all traces of the LDAP module in the database, since all the submodules seem to be installed and enabled?

I've written about this in the LDAP project's issue queue, but I have no responses after a week so I brought it here.

I'm grateful in advance for any guidance.

UPDATE (2020-03-01):

The package maintainer has responded to the Drupal.org thread, suggesting that I should run the following command:

composer update drupal/ldap drupal/ldap_authentication drupal/ldap_authorization drupal/ldap_servers drupal/ldap_query drupal/ldap_user --with-dependencies

This command executes without error, but claims there is "nothing to install or update":

    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

After running this command, drush pml shows that I still have beta3 installed, so this remains unresolved.

3

The reason is that 8.x-3.0-beta3 doesn't define a separate ldap module. You need version 8.x-3.0-beta7 which defines ldap as a "meta" module.

composer why-not drupal/ldap 8.x-3.0-beta7 will probably tell you that you need the dev version of drupal/authorization.

Added:

I'm unable to explain why, but composer why-not (or composer prohibits if you prefer) doesn't actually report that you need the dev version of drupal/authorization.

Anyway, just install the dev version and everything works:

composer require drupal/authorization:1.x-dev
composer update drupal/ldap drupal/ldap_servers [...]  --with-dependencies

PS! Someone installing the ldap module directly, not converting from a tar ball, will not get this issue.

| improve this answer | |
  • Yes, I commented on the Drupal.org issue queue with this dependency conflict. I’ll see if I can resolve it by first upgrading drupal/authorization module to dev version. – hotwebmatter Feb 28 at 11:51
  • I've updated my question to reflect the latest developments. @hansfn, your answer is quite correct, but unfortunately insufficient information to resolve the problem ... so you get an upvote, but I cannot accept the answer as a solution. – hotwebmatter Mar 1 at 14:56
  • 1
    I updated my answer. – hansfn Mar 2 at 9:02
  • +1 We have a winner! Thanks @hansfn :) – hotwebmatter Mar 2 at 18:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.