Das Univention App Provider Portal bietet für App-Entwickler die Möglichkeit, eigene Apps für den Univention Corporate Server (UCS) zu erstellen und zu verwalten. Alternativ dazu gibt es ein Skript, über das einige Funktionen der Webseite verfügbar sind.
Im folgenden Howto finden Sie Nützliches, das ich erst durch Ausprobieren oder durch die Unterstützung des Univention-Teams herausbekommen habe.
Um zu den eigenen Apps zu kommen, klickt man nicht auf "App Center", was zu einer Fehlermeldung führt, sondern auf "Software"
und anschließend auf "Apps".
Beim Bewegen des Mauszeigers über das Symbol der eigenen App (im Beispiel "m23 Softwareverteilung") wird ein Icon eingeblendet, über das, nach einem Klick, Werkeuge zum Editieren, Anlegen und Löschen von (neuen) App-Versionen aufgelistet werden. Ein Klick auf das App-Symbol öffnet einen Dialog zum Editieren der App-Informationen.
Das Skript, das zum Automatisieren von Aufgaben bei der App-Freigabe verwendet werden kann, fragt standardmäßig nach Benutzernamen und Paßwort, was einer wirklichen Automatisierung widerspricht. Glücklicherweise ist es möglich, die Zugangsdaten per Kommandozeilenparameter und Paßwortdatei zu übergeben.
Das folgende Wrapper-Skript reicht alle Parameter an das Originalskript weiter, welches als /usr/bin/univention-appcenter-control gespeichert wurde, und übernimmt gleichzeitig die Benutzerauthentifizierung:
#!/bin/bash
/usr/bin/univention-appcenter-control $@ --username <mein Benutzername> --pwdfile /etc/UAPP.pwd
"<mein Benutzername>" wird hierbei durch den eigenen Benutzernamen ersetzt. In der Datei /etc/UAPP.pwd steht alleinig das dazugehörige Paßwort.
Bevor man eine App veröffentlicht, sollte man diese natürlich testen. Dazu gibt es prinzipiell zwei Möglichkeiten:
Hierzu legt man auf dem UCS eine neue Datei unter /etc/apt/sources.list.d/ mit der Dateiendung ".list" an, in die man die lokale Paketquelle einträgt. Dies geschieht nach folgendem Schema:
deb http://192.168.1.2 ./
Nach einem
apt-get update
sollten die eigenen Pakete per APT installierbar sein. Im UCS-App-Center taucht die eigene App dann allerdings nicht auf.
Bei dieser Variante muß man zuerst die eigenen Pakete auf den Univention-Server (per Skript oder Univention App Provider Portal) hochladen und weitere Informationen angeben. Um auf dem eigenen UCS Apps angezeigt zu bekommen, die noch nicht freigegeben (unpublished) sind, muß man die Test-Paketquellen freischalten:
ucr set repository/app_center/server=appcenter-test.software-univention.de
ucr set update/secure_apt=no
ucr set appcenter/index/verify=no
univention-install univention-appcenter-dev
univention-app dev-use-test-appcenter
Anschließend sollte die eigene App im UCS-App-Center auftauchen und sich installieren lassen.
Beim Installieren über das Test-App-Center werden Paketquellen dynamisch in die Dateien unter /etc/apt/sources.list.d eingetragen.
Die App ist also erst nach der Installation über das App-Center durch APT sichtbar. Sollte es zu einem Fehler kommen (z.B. aufgrund nicht verfügbarer unmaintained-Pakete (s.u.)), ist es zum Finden des Fehlers ggf. erforderlich, die nötigen Zeilen für die bereits hochgeladenen Testpakete zur sources.list hinzuzufügen.
Die benötigte "APP-Nummer" kann über das Test-App-Center, nach "Überfahren" des App-Icons und Auswahl von "Edit app version" aus dem Menü ermittelt werden (im Beispiel "m23_20170112112100"). Diese tragen Sie statt "<UCS-Version>" in der neuen Datei /etc/apt/sources.list.d/ucs-test.list folgendermaßen ein:
deb http://appcenter-test.software-univention.de/univention-repository/<UCS-Version>/maintained/component/ <APP-Nummer>/all/
deb http://appcenter-test.software-univention.de/univention-repository/<UCS-Version>/maintained/component/ <APP-Nummer>/amd64/
"<UCS-Version>" ersetzen Sie durch die Version Ihrer UCS-Installation (z.B. 4.2) und falls Sie eine andere Architektur als amd64 verwenden, tauschen Sie "amd64" durch die betreffende (z.B. i386).
Alternativ funcktioniert dies auch über (wobei Sie "m23" durch den Namen Ihrer Paketes und "17.1" durch die zu installierende App-Version ersetzen:
univention-app register m23=17.1 --component
apt-get install -s m23
Nach dem Upload der neuen Pakete muß zusätzlich im Univention App Provider Portal die Versionsnummer unter "Software" ↠ "Advanded software settings" ↠ "Required UCS version for App" geändert werden.
Besonders wichtig ist auch, daß die App-Versionsnummer für die alte und neue UCS-Version identisch ist. Dies kann durch Kopieren der App von der alten zur neuen UCS-Version über das "Univention App Provider Portal" sichergestellt werden.
Sollten sich die Pakete Ihrer App nicht installieren lassen, da diese Abhängigkeiten auf Pakete haben, die von Univention nicht offiziell gepflegt ("unmaintained") sind, so müssen Sie diese zu den Paketen Ihrer App hinzufügen und zusammen mit diesen hochladen.
Schalten Sie zuallererst die unmaintained-Paketquelle frei:
ucr set repository/online/unmaintained="yes"
Entfernen Sie anschließend bereits heruntergeladene Paketdateien, damit nur die Paketdateien im Cache liegen, die zusammen mit Ihren App-Paketen installiert werden:
apt-get clean
Installieren Sie nun Ihre App aus dem appcenter-test-Repository oder lokalen Paketquellen.
#!/bin/bash
# Source the architecture of the Debian packages to variable $DEB_HOST_ARCH_CPU
dpkg-architecture 2> /dev/null > /tmp/arch
. /tmp/arch
rm /tmp/arch
# Run thru the just downloaded packages and check, if there are any of unmaintained branch
ls /var/cache/apt/archives | while read pkg
do
# Get information about the download source
apt-cache policy $(echo $pkg | cut -d'_' -f1) > /tmp/chkunmain.pol
# Check, if the package was downloaded from unmaintained tree
if [ $(grep unmaintained -c /tmp/chkunmain.pol) -gt 0 ]
then
# Get the base url of the unmaintained repo
baseURL=$(grep unmaintained /tmp/chkunmain.pol | head -1 | sed -e 's/[^h]*//' -e 's#/ Packages#/#' -e 's# ##')
# Try to get the packages for all architectures
for debarch in amd64 i386 all
do
url=$(echo $baseURL/$pkg | sed "s/$DEB_HOST_ARCH_CPU/$debarch/g")
echo $url
wget $url
done
fi
done
# Remove duplicated packages with "all" architecture that were downloaded multiple times
rm *.deb.*
rm /tmp/chkunmain.pol