Univention Bugzilla – Bug 18254
Info mit Pattern zu UCR Variablen wird nur angezeigt, wenn die Variablen gesetzt sind
Last modified: 2013-12-05 11:36:01 CET
Z.B. univention-pam univention-pam.univention-config-registry-variables: [nscd/.*/persistent] Description[de]=Definiert, ob die Cache-Daten bei einem Neustart erhalten bleiben sollen Description[en]=Specifies if the content of the cache should be kept over restarts Type=bool Categories=system-base -> ucr search nscd/group/persistent -> ucr set nscd/group/persistent=yes -> ucr search nscd/group/persistent nscd/group/persistent: yes Specifies if the content of the cache should be kept over restarts Categories: system-base
(In reply to comment #0) > [nscd/.*/persistent] ... > -> ucr search nscd/group/persistent UCR funktioniert derzeit so, daß es für die Beschreibungen in den Info-Dateien eine Fallunterscheidung gibt: Wird darin kein .* verwendet, gilt die Beschreibung für genau eine Variable, die damit dann auch bekannt ist. Bei Verwendung der Pattern wird die Beschreibung an die UCR-Variablen angehängt, die im System gesetzt sind. Mehr macht auch keinen Sinn, denn jeder reguläre Ausdruck beschreibt unendliche viele UCR-Variablen. Das Problem bei der gewünschten Suche ist, daß dabei zwei reguläre Ausdrücke verglichen werden: Sowohl das Argument bei "search" alsauch die info-Sektion sind jeweils reguläre Ausdrücke. Deutlicher wird das ggf. an folgendem Beispiel: [aaa.*] ← die eckigen Klammern kommen vom Format der INI-Datei [bbb.*] ucr search .* Hier würden beide Variablenmöglichkeiten angezeigt werden. ucr search '[abc]{10,10}' Hier wird nach exakt 10 'a's, 'b's, 'c's, gesucht. Die ersten beiden Beschreibungen würden durch obige Patterns abgedeckt werden, allerdings fängt der 'search' Ausdruck hier nicht direkt mit 'a' oder 'b' an, sondern mit der eckigen Klammer, weshalb hier die Suche in beiden Richtungen nicht funktioniert: Weder die info-Pattern passt auf den Suchausdruck, noch passt der Suchausdruck auf eine der beiden info-Pattern! Trotzdem gibt es eine nicht-leere-Schnittmenge der beiden regulären Sprachen. Das ganze ist ein Problem der theoretischen Informatik, nämlich ob die Schnittmenge zweier regulärer Sprachen nicht-leer ist. Das Problem ist prinzipiell lösbar, aber ob man den Algorithmus wirklich in UCR braucht halte ich persönlich eher für fraglich und steht vermutlich in keinem Verhältnis zum Aufwand. Soll heißen: Das ist nicht einfach umsetzbar, weil es keine fertige Python-Funktion gibt, mit der man das annähernd mal eben schnell umsetzen könnte. Hier wäre eine eigene Bibliothek für das Umsetzen von RegExps in Automaten zzgl. die Implementierung des eigentlichen Algorithmus zur Bestimmung des Schnittmenge notwendig. Auch ist das maximale, was man bekommen kann, dann etwa folgendes bei einer Suche nach "^interfaces/": "Für den gesuchten Ausdruck gibt es direkt keine derzeit gesetzt UCR-Variable, aber folgende Beschreibungen _könnten_ passen: [interfaces/eth.*/address] [interfaces/eth.*/broadcast] [interfaces/eth.*/mac] [interfaces/eth.*/netmask] [interfaces/eth.*/network] [interfaces/eth.*/type] [interfaces/eth.*/hosts] [interfaces/eth.*/route/.*] [interfaces/eth.*/options/.*] [interfaces/eth.*/ipv6/.*/address] [interfaces/eth.*/ipv6/.*/prefix] [interfaces/eth.*/ipv6/acceptRA] [interfaces/restart/auto] [interfaces/handler] Das ganze wurde jetzt so umgesetzt, das auf den Suchausdruck die Patterns aus den .info-Dateien angewandt wird und die Treffer zusätzlich angezeigt werden. --non-empty und -shell blenden solche Ergebnisse wieder aus. Sollte das nicht reichen, sind hier die Grundlagen aus der theoretischen Informatik zu finden bzw. gibt es bereits Implementierungen in Python: <http://www.coder-wiki.de/HowTos/Theorie-Schnittmenge-mehrerer-Automaten> <http://qntm.org/greenery> <http://osteele.com/software/python/fsa/> svn34618, univention-config-registry_8.0.1-1.389.201208032206
Changelog: OK Funktioniert wie beschrieben: root@master141:~# ucr search nscd/group/persistent nscd/.*/persistent: <empty> Specifies if the content of the cache should be kept over restarts root@master141:~# ucr set nscd/group/persistent=yes Create nscd/group/persistent File: /etc/nscd.conf root@master141:~# ucr search nscd/group/persistent nscd/.*/persistent: <empty> Specifies if the content of the cache should be kept over restarts nscd/group/persistent: yes Specifies if the content of the cache should be kept over restarts root@master141:~# ucr search --non-empty nscd/group/persistent nscd/group/persistent: yes Specifies if the content of the cache should be kept over restarts root@master141:~#
*** Bug 28563 has been marked as a duplicate of this bug. ***
UCS 3.1-0 has been released: http://forum.univention.de/viewtopic.php?f=54&t=2125 If this error occurs again, please use "Clone This Bug".