Problem
Trying to install an app through UMC stalls at 100% but the installation fails.
Environment
Looking at /var/log/univention/appcenter.log you will see a message like this:
8279 actions.install 20-03-05 16:23:22 [ ERROR]: Type or value exists: univentionAppInstalledOnServer: value #3 provided more than once
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/univention/appcenter/actions/__init__.py", line 226, in call_with_namespace
result = self.main(namespace)
File "/usr/lib/python2.7/dist-packages/univention/appcenter/actions/install.py", line 84, in main
return self.do_it(args)
File "/usr/lib/python2.7/dist-packages/univention/appcenter/actions/install_base.py", line 119, in do_it
self._do_it(app, args)
File "/usr/lib/python2.7/dist-packages/univention/appcenter/actions/docker_install.py", line 71, in _do_it
ret = super(Install, self)._do_it(app, args)
File "/usr/lib/python2.7/dist-packages/univention/appcenter/actions/install.py", line 104, in _do_it
self._register_app(app, args)
File "/usr/lib/python2.7/dist-packages/univention/appcenter/actions/register.py", line 438, in _register_app
ldap_object.add_localhost()
File "/usr/lib/python2.7/dist-packages/univention/appcenter/udm.py", line 245, in add_localhost
self._udm_obj.modify()
File "/usr/lib/python2.7/dist-packages/univention/admin/handlers/__init__.py", line 651, in modify
dn = self._modify(modify_childs, ignore_license=ignore_license, response=response)
File "/usr/lib/python2.7/dist-packages/univention/admin/handlers/__init__.py", line 1328, in _modify
self.dn = self.lo.modify(self.dn, ml, ignore_license=ignore_license, serverctrls=serverctrls, response=response)
File "/usr/lib/python2.7/dist-packages/univention/admin/uldap.py", line 902, in modify
raise univention.admin.uexceptions.ldapError(_err2str(msg), original_exception=msg)
ldapError: Type or value exists: univentionAppInstalledOnServer: value #3 provided more than once
10436 actions.upgrade-search 20-03-05 17:11:09 [ DEBUG]: Calling upgrade-search
10436 actions.upgrade-search.progress 20-03-05 17:11:09 [ DEBUG]: 0
10436 actions.update 20-03-05 17:11:09 [ DEBUG]: Calling update
Solution
The attribute of univentionAppInstalledOnServer
is already set to a value. It might be an issue with the the capitalization of the entry. However, delete the attribute value and restart the installation.
Step 1
Identify the object with univention-ldapsearch
and use for the next steps the object for the app in question (here samba4, note take care to use the correct version):
univention-ldapsearch "univentionAppInstalledOnServer" dn
root@master:~# univention-ldapsearch "univentionAppInstalledOnServer=*" dn
# extended LDIF
#
# LDAPv3
# base <dc=multi,dc=ucs> (default) with scope subtree
# filter: univentionAppInstalledOnServer=*
# requesting: dn
#
# nagios_4.3, nagios, apps, univention, multi.ucs
dn: univentionAppID=nagios_4.3,cn=nagios,cn=apps,cn=univention,dc=multi,dc=ucs
# samba4_4.7, samba4, apps, univention, multi.ucs
dn: univentionAppID=samba4_4.7,cn=samba4,cn=apps,cn=univention,dc=multi,dc=ucs
# samba4_4.10, samba4, apps, univention, multi.ucs
dn: univentionAppID=samba4_4.10,cn=samba4,cn=apps,cn=univention,dc=multi,dc=ucs
# search result
search: 3
result: 0 Success
Step 2
Get the attribute values of the object:
univention-ldapsearch "univentionAppID=samba4_4.10"
[...]
univentionAppID: samba4_4.10
univentionAppVersion: 4.10
univentionAppWebsiteMaintainer: [en] http://www.univention.com
univentionObjectType: appcenter/app
univentionAppServerRole: domaincontroller_master
univentionAppServerRole: domaincontroller_slave
univentionAppServerRole: domaincontroller_backup
univentionAppInstalledOnServer: master.multi.ucs
univentionAppInstalledOnServer: backup.multi.ucs
univentionAppInstalledOnServer: Slave.multi.ucs
Step 3
Modify the object by deleting the entry of the host with the issue:
root@master:~# ldapmodify -D "$( ucr get ldap/hostdn )" -y /etc/machine.secret <<EOR
dn: univentionAppID=samba4_4.10,cn=samba4,cn=apps,cn=univention,dc=multi,dc=ucs
changetype: modify
delete: univentionAppInstalledOnServer
univentionAppInstalledOnServer: Slave.multi.ucs
EOR
Step 4
Retry the installation on the server now:
univention-app install samba4