Univention Bugzilla – Bug 15082
(exitcode 1) aus /usr/sbin/univention-run-join-scripts unschoen
Last modified: 2009-12-21 08:47:11 CET
Wenn alles OK ist gibt /usr/sbin/univention-run-join-scripts Zeilen wie diese aus: Running 01univention-ldap-server-init.inst (exitcode 1) Das ist irritierend, da exitcode 1 oft auf einen Fehler hinweist.
Berichtet in Ticket#2009071310000188
Vielleicht sollten wir hier Exitcode 1 auf einen anderen Ausgabestring umsetzen (z.B. "executed").
Hier hab ich mal die Ist-Situation zusammengefasst: https://billy.knut.univention.de/uniwiki/index.php/Joinskripte#Exit-Code-Konventionen Die Überladung des Exit-Code 1 ist hier das Problem, das das Fixen nicht ganz so einfach macht. Das Umsetzen des Strings auf "executed" würde dann dazu führen, dass einige Skripte mit "done" und einige mit "executed" quitiert würden, was IMHO auch nicht ganz schön ist, aber eine Lösung wäre, zumindest wenn man die Strings umdreht, also "executed" für komplett durchgelaufen und "done" oder "checked" bei exitcode 1.
exitcode 1 durch skipped ersetzt. changelogeintrag erstellt.
(In reply to comment #4) > exitcode 1 durch skipped ersetzt. > changelogeintrag erstellt. Ich öffne den Bug noch mal da ich "skipped" aus Benutzersicht auch für wenig intuitiv halte (ich denke das wird halt erstmal auch zu der Frage führen: "Warum wird Joinscript ABC übersprungen?"). Die einfachste Lösung für dieses Problem ist in meinen Augen ein Hinweis vor oder nach der Programmausgabe der beschreibt was welcher Status bedeutet, z.B: (skipped) - Das Join-Script wurde in der aktuell vorliegenden Version bereits ausgeführt.
ok, jetzt gibts die beiden Ausgaben: "done" und "skipped (already executed)" was IMHO ausreichend unmissverständlich ist.
(In reply to comment #5) > Ich öffne den Bug noch mal da ich "skipped" aus Benutzersicht auch für wenig > intuitiv halte (ich denke das wird halt erstmal auch zu der Frage führen: > "Warum wird Joinscript ABC übersprungen?"). > Die einfachste Lösung für dieses Problem ist in meinen Augen ein Hinweis vor > oder nach der Programmausgabe der beschreibt was welcher Status bedeutet, z.B: > > (skipped) - Das Join-Script wurde in der aktuell vorliegenden Version bereits > ausgeführt. So einfach ist das leider nicht, da wir anhand des Exitcodes nicht entscheiden können, ob das Joinscript mit einem Fehler abgebrochen ist, oder bereits ausgeführt wurde. Langfristig sollten wir hier die Entscheidung aus dem Join-Skript auch in die externen Tools (hier univention-run-all-joinscripts) implementieren. Der Exitcode, der bei erneuter Ausführung zurückgegeben wird, sollte auch auf etwas "exotischeres" geändert werden.
(In reply to comment #7) > Langfristig sollten wir hier die Entscheidung aus dem Join-Skript auch in die > externen Tools (hier univention-run-all-joinscripts) implementieren. Der > Exitcode, der bei erneuter Ausführung zurückgegeben wird, sollte auch auf etwas > "exotischeres" geändert werden. Bitte in univention-run-all-joinscripts auf die Shellskript-Library zurückgreifen und vor dem Ausführen überprüfen, ob das Joinskript bereits in der aktuellen Version durchgelaufen ist. Falls dies der Fall ist, den Text "skipped (already executed)" ausgeben, falls nicht das jeweilige Joinskript aufrufen und je nach Exitcode "done" oder "failed (exitcode: XXX)" zurückgeben.
In Revision 12380 jetzt folgende Änderungen eingepflegt: - joinscripthelper.lib so erweitert, dass auch nicht-joinskripte auf die Funktionen zugreifen können - univention-run-all-joinscripts nutzt dies jetzt, und prüft vor dem Ausführen von jedem Joinskript, ob dieses bereits ausgeführt wurde und gibt dies ggf. entsprechend aus, ohne das Joinskript selbst nochmals aufzurufen. Außerdem wurde die Wiki-dokumentation entsprechend erweitert. Ich setze den Bug jetzt mal wieder auf fixed...
Irgendwie ist hier die Logik in univention-run-all-joinscripts verdreht. Alle in .index.txt aufgeführten Joinskripte werden ausgeführt und beenden sich mit Exitcode 1. Alle anderen Skripte werden als "skipped (already executed)" übersprungen. ---[cut]--- root@master:/var/log/univention# univention-run-join-scripts univention-run-join-scripts: runs all join scripts existing on local computer. copyright (c) 2001-2009 Univention GmbH, Germany Running 01univention-ldap-server-init.inst failed (exitcode: 1) Running 02univention-directory-notifier.inst failed (exitcode: 1) Running 03univention-directory-listener.inst failed (exitcode: 1) Running 04univention-ldap-client.inst failed (exitcode: 1) Running 05univention-bind.inst failed (exitcode: 1) Running 08univention-apache.inst failed (exitcode: 1) Running 10univention-ldap-server.inst failed (exitcode: 1) Running 11univention-heimdal-init.inst failed (exitcode: 1) Running 15univention-directory-notifier-post.inst failed (exitcode: 1) Running 15univention-heimdal-kdc.inst failed (exitcode: 1) Running 20univention-directory-policy.inst failed (exitcode: 1) Running 25univention-dhcp.inst failed (exitcode: 1) Running 25univention-directory-manager.inst failed (exitcode: 1) Running 26univention-nagios-server.inst skipped (already executed) Running 26univention-samba.inst failed (exitcode: 1) Running 30univention-nagios-client.inst skipped (already executed) Running 34univention-management-console-server.inst failed (exitcode: 1) Running 41univention-updater.inst failed (exitcode: 1) Running 44univention-management-console-system-info.inst skipped (already executed) Running 50univention-pkgdb.inst failed (exitcode: 1) Running 65univention-kolab2-framework.inst failed (exitcode: 1) Running 67univention-mail-postfix-kolab2.inst failed (exitcode: 1) Running 68univention-spamassassin.inst failed (exitcode: 1) Running 71univention-quota.inst failed (exitcode: 1) Running 78univention-kde.inst failed (exitcode: 1) Running 79univention-printserver.inst skipped (already executed) Running 81univention-mail-cyrus-kolab2.inst failed (exitcode: 1) Running 81univention-nfs-server.inst failed (exitcode: 1) Running 81univention-server-installation.inst failed (exitcode: 1) Running 90univention-bind-proxy.inst failed (exitcode: 1) Running 91univention-client-boot-pxe.inst failed (exitcode: 1) Running 91univention-join.inst failed (exitcode: 1) Running 98univention-pkgdb-tools.inst failed (exitcode: 1) ---[cut]--- ---[.index.txt]--- univention-ldap-server-init v1 successful univention-directory-notifier v1 successful univention-directory-listener v1 successful univention-ldap-client v1 successful univention-bind v1 successful univention-apache v1 successful univention-ldap-server v1 successful univention-heimdal-init v1 successful univention-directory-notifier-post v1 successful univention-heimdal-kdc v1 successful univention-directory-policy v1 successful univention-dhcp v1 successful univention-directory-manager v1 successful univention-samba v2 successful univention-management-console-server v3 successful univention-updater v2 successful univention-pkgdb v1 successful univention-kolab2-framework v1 successful univention-mail-postfix-kolab2 v1 successful univention-spamassassin v1 successful univention-quota v1 successful univention-kde v3 successful univention-mail-cyrus-kolab2 v1 successful univention-nfs-server v2 successful univention-server-installation v1 successful univention-bind-proxy v1 successful univention-client-boot-pxe v1 successful univention-join v1 successful univention-pkgdb-tools v1 successful ---[cut]---
Ursache ist, daß der Symlink aus Bug 14846 noch nicht gesetzt wurde und somit 2 Status-Dateien existieren: root@master:/usr/lib/univention-install# ls -la .index.txt -rw-r--r-- 1 root root 1104 19. Okt 15:59 .index.txt root@master:/usr/lib/univention-install# ls -la /var/univention-join/status -rw-r--r-- 1 root root 171 19. Okt 16:10 /var/univention-join/status root@master:/usr/lib/univention-install# cat /var/univention-join/status univention-nagios-server v3 successful univention-nagios-client v2 successful univention-management-console-system-info v1 successful univention-printserver v5 successful
Funktioniert. -> univention-run-join-scripts 44univention-management-console-system-info.inst skipped (already executed) 50univention-pkgdb.inst skipped (already executed) 65univention-kolab2-framework.inst skipped (already executed) 67univention-mail-postfix-kolab2.inst skipped (already executed) 68univention-spamassassin.inst skipped (already executed) 70univention-thin-client-ltsp.inst skipped (already executed) 71univention-quota.inst skipped (already executed) 77univention-debmirror.inst skipped (already executed) 78univention-kde.inst done 79univention-printserver.inst failed (exitcode: 1) 80univention-application-server.inst skipped (already executed) 81univention-mail-cyrus-kolab2.inst skipped (already executed) 81univention-nfs-server.inst skipped (already executed) 81univention-server-installation.inst skipped (already executed) 90univention-bind-proxy.inst skipped (already executed) 91univention-client-boot-pxe.inst skipped (already executed) 91univention-join.inst skipped (already executed) 98univention-pkgdb-tools.inst done In 78univention-kde.inst wurde die Version erhöht. In 79univention-printserver.inst wurde die Version erhöht und ein exit 1 eingebaut. 98univention-pkgdb-tools.inst wurde aus der .index.txt entfernt. Changelog Eintrag fehlt.
Changelogeintrag war schon vorhanden, war nur nicht im Bug vermerkt :-/
Ja, alles da.
UCS 2.3 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer neueren Version von UCS erneut auftreten, so sollte der Bug dupliziert werden: "Clone This Bug".