Problem:
univention-run-join-scripts on a primary server just died out, leaving no message on commandline but a traceback in the join.log
univention-run-join-scripts started
Fr 3. Jul 11:06:57 CEST 2026
univention-join-hooks: looking for hook type "join/pre-joinscripts" on dc-primary.ucs.test.schule.schein.me
Found hooks:
cn=ucsschool-join-hook.py,cn=data,cn=univention,dc=ucs,dc=test,dc=schule,dc=schein,dc=me
Running: ucsschool-join-hook.py (cn=ucsschool-join-hook.py,cn=data,cn=univention,dc=ucs,dc=test,dc=schule,dc=schein,dc=me) in /tmp/tmplqn0czyq/tmpqxnyo2gs
Traceback (most recent call last):
File "/usr/share/univention-join/univention-join-hooks", line 146, in <module>
main()
File "/usr/share/univention-join/univention-join-hooks", line 136, in main
p1 = subprocess.Popen(cmd, close_fds=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/subprocess.py", line 1024, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/lib/python3.11/subprocess.py", line 1901, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmplqn0czyq/tmpqxnyo2gs'
**************************************************************************
* Running join scripts failed! *
**************************************************************************
* Message: join/pre-joinscripts failed, see /var/log/univention/join.log
**************************************************************************
Investigation:
During join in school environments schook-hooks are replicated as python scripts on objects, they can be read like this:
univention-ldapsearch 'cn=ucsschool-join-hook.py' univentionData | sed -n 's/^univentionData:: //p' | base64 -d | bzip2 -d | less
Her we saw that there was a python 2.7 script at the object, which is outdated on a 5.2 environment. So these scripts come from the ucs-school-metapackages. Each role has its own scripts.
Solution:
On the primary e.g you can have ucs-school-multiserver or ucs-school-singleserver installed. If this metapackage is missing the join-hooks are not updated anymore.
Check your system for installed school metapackages:
dpkg -l | grep -E 'ucs-school-(multiserver|singleserver|replica|central-replica|nonedu-replica)'
univention-install -s ucs-school-multiserver or apt-s install ucs-school-multiserver will show you which packages will be addionally installed and removed, for testing.
Installation of the package with univention-install ucs-school-multiserver
!!! Hint !!!
Installing these package will execute a slapindex on the system, and this could take some time, making ldap unavailable, so please consider a maintenance window for this.