How to Install Addons?

First time setting up and using Senaite by following the instructions here:

I am running:
Debian 12
Senaite 2.6

I would like to enable LDAP authentication but I don’t understand how to do it. I see there is one post with instructions on installing an addon:

But there is no src folder in my install, those instructions seem look to be for Senaite 1x. Can anyone help point me in the right direction getting LDAP configured?

Better yet, is there an updated install procedure besides this from 4 years ago?

Ok I got it figured out (I think)! For anyone else wanting LDAP support with Senaite 2.6 on Debian 12, do the following:

You will be using this plugin: Client Challenge

  1. #conda activate senaite
  2. #sudo apt install libldap2-dev libsasl2-dev libssl-dev libjpeg-dev -y
  3. #pip install python-ldap
  4. #cd senaitelims/
  5. #vi buildout.cfg

eggs =
Plone==5.2.15
senaite.lims
simplejson
pas.plugins.ldap
python-ldap==3.3.1
yafowil.plone==4.0.0a5

  1. #bin/buildout
  2. #bin/instance start
  3. You will receive errors with memcache.py, just comment out the code blocks with:
    def quit(self) → None:
    -and-
    self.socket.recv(1)

With that I was able to start senaite and configure LDAP successfully via the “LDAP Inspector”.

LDAP still isn’t working, LDAP inspector can see users and groups but when I go to “Users and Groups” in Settings, the group link errors:

Traceback (innermost last):
Module ZPublisher.WSGIPublisher, line 176, in transaction_pubevents
Module ZPublisher.WSGIPublisher, line 385, in publish_module
Module ZPublisher.WSGIPublisher, line 288, in publish
Module ZPublisher.mapply, line 85, in mapply
Module ZPublisher.WSGIPublisher, line 63, in call_object
Module Products.CMFPlone.controlpanel.browser.usergroups_groupsoverview, line 35, in call
Module Products.CMFPlone.controlpanel.browser.usergroups_groupsoverview, line 53, in doSearch
Module Products.PlonePAS.browser.search, line 61, in searchGroups
Module Products.PluggableAuthService.PluggableAuthService, line 360, in searchGroups
Module pas.plugins.ldap.plugin, line 294, in enumerateGroups
Module node.ext.ldap.ugm._api, line 708, in search
Module node.ext.ldap.ugm._api, line 670, in raw_search
Module node.utils, line 281, in wrapped
Module node.ext.ldap._node, line 519, in search
Module node.ext.ldap.session, line 52, in search
Module node.ext.ldap.base, line 290, in search
Module node.ext.ldap.base, line 265, in _search
Module ldap.ldapobject, line 767, in result3
Module ldap.ldapobject, line 774, in result4
Module ldap.ldapobject, line 340, in _ldap_call
Module ldap.ldapobject, line 324, in _ldap_call
OPERATIONS_ERROR: {‘msgid’: 3, ‘ctrls’: , ‘msgtype’: 101, ‘result’: 1, ‘desc’: u’Operations error’}