<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.sachsen.schule/dwiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lars</id>
	<title>Delixs - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sachsen.schule/dwiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lars"/>
	<link rel="alternate" type="text/html" href="https://wiki.sachsen.schule/dwiki/index.php/Spezial:Beitr%C3%A4ge/Lars"/>
	<updated>2026-05-02T05:24:21Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://wiki.sachsen.schule/dwiki/index.php?title=Benutzer:Lars&amp;diff=658</id>
		<title>Benutzer:Lars</title>
		<link rel="alternate" type="text/html" href="https://wiki.sachsen.schule/dwiki/index.php?title=Benutzer:Lars&amp;diff=658"/>
		<updated>2007-03-16T00:05:31Z</updated>

		<summary type="html">&lt;p&gt;Lars: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Aufgrund einer externen Bitte die Benutzerseite zu füllen, gebe ich mich hiermit zu erkennen: mein Name ist Lars Vogdt (ehem. Rupp) und wo(ran) ich arbeite, kann man am einfachsten [http://en.opensuse.org/User:Lrupp hier] erkennen.&lt;br /&gt;
&lt;br /&gt;
Da mein Wille zur Mitarbeit an Arktur von Erwin Flohr als &amp;quot;taktische Einmischung&amp;quot; angesehen wird und meine Hilfsangebote seiner Meinung nach nur darauf ausgerichtet sind &amp;quot;Leute abzuwerben&amp;quot; (siehe eine entsprechende [http://www.celvina.de/arktur/schan-developer/0603/7324.html Email]), habe ich die entsprechenden [http://www.celvina.de/arktur/schan-developer/0603/7325.html Konsequenzen] gezogen und meine Mitarbeit eingestellt. &lt;br /&gt;
&lt;br /&gt;
Ich bitte dies bei eventuellen Anfragen/ Rückfragen zu berücksichtigen.&lt;/div&gt;</summary>
		<author><name>Lars</name></author>
	</entry>
	<entry>
		<id>https://wiki.sachsen.schule/dwiki/index.php?title=FAQ:Arktur4/SUSEInstallationsserver&amp;diff=2658</id>
		<title>FAQ:Arktur4/SUSEInstallationsserver</title>
		<link rel="alternate" type="text/html" href="https://wiki.sachsen.schule/dwiki/index.php?title=FAQ:Arktur4/SUSEInstallationsserver&amp;diff=2658"/>
		<updated>2006-03-23T20:25:14Z</updated>

		<summary type="html">&lt;p&gt;Lars: Link korrigiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arktur als SUSE-Installationsserver ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ich würde gerne mal die &amp;quot;Installationsserver&amp;quot;-Fähigkeiten von Arktur testen wollen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dazu wäre nötig:&lt;br /&gt;
&lt;br /&gt;
* eine SUSE LINUX Distribution (ab 9.1 bis 10.1), welche auf Arktur ins FTP-Verzeichnis kopiert und damit freigegeben wird&lt;br /&gt;
* eine Boot-CD (sollte der CD1 der entsprechenden Distri entsprechen)&lt;br /&gt;
* eine der XML-Dateien von hier: http://www.linux-schulserver.de/download/Linux/suse/xml/ Diese sollte auch in ein Verzeichnis auf dem FTP-Server kopiert werden.&lt;br /&gt;
&lt;br /&gt;
Dann die Boot-CD einlegen und unter den Optionen den Bootprompt (das &lt;br /&gt;
Feld unterhalb der normalen Installationsoptionen) öffnen und dort &lt;br /&gt;
folgende Zeile (also alles in eine! Zeile) eingeben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
load_ramdisk=1 autoyast=ftp://arktur/&amp;lt;pfad_zum_xml_file&amp;gt;  &lt;br /&gt;
install=ftp://arktur/&amp;lt;pfad_zu_den_Instalationsdateien_der_DVD_oder_CD&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Über Rückmeldungen wäre ich sehr erfreut. Dann könnten wir ggf. über eine extra-Boot-CD (wie beim OSS) oder ein PXE-Image für die Installation über PXE nachdenken. Auch ein Betrieb von Diskless Clients über Arktur und einen separaten Terminalserver wäre dann denkbar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- aus einer Mail von Lars Rupp&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;[[FAQ|zurück]] | [[Hauptseite]]&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lars</name></author>
	</entry>
	<entry>
		<id>https://wiki.sachsen.schule/dwiki/index.php?title=Hilfe:Angabe_von_Wiki-_und_Weblinks&amp;diff=4395</id>
		<title>Hilfe:Angabe von Wiki- und Weblinks</title>
		<link rel="alternate" type="text/html" href="https://wiki.sachsen.schule/dwiki/index.php?title=Hilfe:Angabe_von_Wiki-_und_Weblinks&amp;diff=4395"/>
		<updated>2006-01-26T13:20:16Z</updated>

		<summary type="html">&lt;p&gt;Lars: fix type&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Hinweis zum Namensraum ==&lt;br /&gt;
&lt;br /&gt;
=== interne Links im wiki ===&lt;br /&gt;
&lt;br /&gt;
Links sollten immer eine einheitliche Schreibweise haben, also&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;Woher:Wohin|Anzeigename&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabei ist zu beachten, daß Links &#039;&#039;&#039;immer&#039;&#039;&#039; mit einem Großbuchstaben anfangen müssen. Das heißt, sowohl das &amp;quot;Woher&amp;quot; als auch das &amp;quot;Wohin&amp;quot; müssen unbedingt groß geschrieben werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Am einfachsten ist es an einem Beispiel erklärt.&lt;br /&gt;
&lt;br /&gt;
Wird aus Tools auf Klausurumgebung verwiesen, dann sollte der Link so aussehen:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;[[Tools:Klausurumgebung|Klausurumgebung]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
* [[Tools:Klausurumgebung|Klausurumgebung]]&lt;br /&gt;
&lt;br /&gt;
Wird dann aus der Klausurumgebung auf einen weiteren Unterpunkt verlinkt, dann:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;[[Klausurumgebung:Automatisches Erstellen und Abspeichern|Automatisches Erstellen und Abspeichern]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Und das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
* [[Klausurumgebung:Automatisches Erstellen und Abspeichern|Automatisches Erstellen und Abspeichern]]&lt;br /&gt;
&lt;br /&gt;
=== Externe Links (Weblinks) ===&lt;br /&gt;
&lt;br /&gt;
Diese können einfach in den laufenden Text ohne jegliche Formatierung eingefügt werden.&lt;br /&gt;
&lt;br /&gt;
Auch dazu ein Beispiel:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Das ist ein Link zu http://www.heise.de/ct/schan den man anklicken kann.&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und so sieht er dann im Text aus:&lt;br /&gt;
&lt;br /&gt;
* Das ist ein Link zu http://www.heise.de/ct/schan den man anklicken kann.&lt;/div&gt;</summary>
		<author><name>Lars</name></author>
	</entry>
	<entry>
		<id>https://wiki.sachsen.schule/dwiki/index.php?title=Entwickler-Hinweise&amp;diff=532</id>
		<title>Entwickler-Hinweise</title>
		<link rel="alternate" type="text/html" href="https://wiki.sachsen.schule/dwiki/index.php?title=Entwickler-Hinweise&amp;diff=532"/>
		<updated>2005-06-09T15:49:25Z</updated>

		<summary type="html">&lt;p&gt;Lars: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier gibt es einige Informationen über die Entwickler von Arktur und auch die entsprechenden Dokumente, um an Arktur selbst mitzuentwickeln:&lt;br /&gt;
&lt;br /&gt;
* Die [http://arktur.schul-netz.de/team.php Personen], die an der Arktur-Entwicklung beteiligt sind&lt;br /&gt;
&lt;br /&gt;
* Dokumentation über einzelne, wichtige [[Skripte und Dateien]]&lt;br /&gt;
&lt;br /&gt;
* [[Entwickler-Dokumentation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Präambel&lt;br /&gt;
&lt;br /&gt;
Bestimmung des Projekts c&#039;t/ODS-Schulserver (alias Arktur); Zweck und Ziel; &#039;Arktur-Community&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Allgemeine Richtlinien der Zusammenarbeit&lt;br /&gt;
&lt;br /&gt;
* Einteilung und Struktur der [[Arbeitsgruppen]]&lt;br /&gt;
* Beschreibung der technischen Hifsmittel: &lt;br /&gt;
** [[SVN-Repository]]&lt;br /&gt;
** [[Mantis]] - ein System zur Fehlermeldung&lt;br /&gt;
** [[FTP-Server]]&lt;br /&gt;
** [[Entwickler-Mailingliste]]&lt;br /&gt;
** ...&lt;/div&gt;</summary>
		<author><name>Lars</name></author>
	</entry>
	<entry>
		<id>https://wiki.sachsen.schule/dwiki/index.php?title=Arktur:SVN-Repository&amp;diff=4454</id>
		<title>Arktur:SVN-Repository</title>
		<link rel="alternate" type="text/html" href="https://wiki.sachsen.schule/dwiki/index.php?title=Arktur:SVN-Repository&amp;diff=4454"/>
		<updated>2005-06-09T15:48:21Z</updated>

		<summary type="html">&lt;p&gt;Lars: Link zum Repository eingefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Entwicklung der &amp;quot;Arktur 3.5.x&amp;quot;-Versionen erfolgt mit Hilfe des Versionsverwaltungssystems &amp;quot;subversion&amp;quot; (SVN). Durch dieses System wird sowohl die gleichzeitige Arbeit mehrere Entwickler an dem Projekt, als auch die Verwaltung mehrere unterschiedlicher Versionen ermöglicht.&lt;br /&gt;
&lt;br /&gt;
Das SubVersion-Repository für Arktur liegt hier:&lt;br /&gt;
:::&#039;&#039;&#039;http://fsn.by.schule.de:81/svn/arktur4/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wer erst einmal ein wenig testen möchte, für den ist ein Sandkasten eingerichtet:&lt;br /&gt;
:::http://fsn.by.schule.de:81/svn/sandbox&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Informationen für SVN-Einsteiger ==&lt;br /&gt;
&lt;br /&gt;
* http://subversion.tigris.org        -  Die subversion-Projektseite&lt;br /&gt;
* http://svnbook.red-bean.com         -  Die offizielle SVN-Dokumentation (englisch)&lt;br /&gt;
* http://tortoisesvn.tigris.org       -  Windows-Client für SVN&lt;br /&gt;
* c&#039;t Artikel &amp;quot;Check it out! - CVS-Nachfolger: Versionierung mit Subversion&amp;quot;, Ausgabe 18/2004, S. 180f&lt;br /&gt;
&lt;br /&gt;
== Das &amp;quot;Arktur 3.5&amp;quot; - Repository ==&lt;br /&gt;
&lt;br /&gt;
* [[kurze Schritt-für-Schritt-Anleitung zur Erzeugung eines eigenen Arktur-CD-Images]]&lt;br /&gt;
* [[Aufbau der Entwicklungsumgebung]]&lt;br /&gt;
* http://fsn.by.schule.de:81/svn/arktur35 - HTTP-Link zum Repository&lt;br /&gt;
* http://fsn.by.schule.de/cgi-bin/viewcvs.cgi/?root=arktur35&lt;/div&gt;</summary>
		<author><name>Lars</name></author>
	</entry>
	<entry>
		<id>https://wiki.sachsen.schule/dwiki/index.php?title=Fehlermeldungen:Mantis&amp;diff=4434</id>
		<title>Fehlermeldungen:Mantis</title>
		<link rel="alternate" type="text/html" href="https://wiki.sachsen.schule/dwiki/index.php?title=Fehlermeldungen:Mantis&amp;diff=4434"/>
		<updated>2005-06-09T15:44:28Z</updated>

		<summary type="html">&lt;p&gt;Lars: Layout&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Keine Software ist ohne Fehler. Und gerade ein solch komplexes System wie ein Schulserver, auf welchem Software läuft, die Millionen von Codezeilen umfasst, wird wahrscheinlich immer Fehler haben.&lt;br /&gt;
&lt;br /&gt;
Um Fehler zielgerichtet und schnell beseitigen zu können und auch auf zusätzliche Wünsche von Anwendern reagieren zu können, gibt es sogenannte &amp;quot;Bugtracking&amp;quot;-Systeme wie Mantis.&lt;br /&gt;
&lt;br /&gt;
Für Arktur wurde ein solches Bugtracking-System eingerichtet wo Benutzer gefundene Fehler melden können:&lt;br /&gt;
:::&#039;&#039;&#039;http://arktur.schul-netz.de/mantis/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Was ist überhaupt ein Bug? ==&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich sind Software-Bugs sind nicht nur Fehler, sondern können auch Anforderungen oder Wünsche an eine Software sein. Wer sich detailliert über Bugs informieren möchte, den verweisen wir einmal direkt an [http://de.wikipedia.org/wiki/Programmfehler Wikipedia].&lt;br /&gt;
&lt;br /&gt;
== Warum macht man BugTracking? ==&lt;br /&gt;
&lt;br /&gt;
In Projekten mit mehreren Leuten ist Kommunikation sehr wichtig darüber:&lt;br /&gt;
* was gemacht werden soll/kann&lt;br /&gt;
* wer daran arbeitet (oder wofür niemand verantwortlich ist)&lt;br /&gt;
* wie Bugs voneinander abhängig sind&lt;br /&gt;
* was Andere davon halten&lt;br /&gt;
&lt;br /&gt;
== Wie Mantis funktioniert ==&lt;br /&gt;
&lt;br /&gt;
Mantis beinhaltet u.a. folgende Features:&lt;br /&gt;
&lt;br /&gt;
* komplett Internetbasiert &lt;br /&gt;
* Verwaltet verschieden Projekte und Komponenten (u.a. Arktur 3.4, 3.5 und 4)&lt;br /&gt;
* Erfasst u.a.:&lt;br /&gt;
** den BugStatus (Neu, Bestätigt, Gelöst, Irrelevant, ...), &lt;br /&gt;
** Bug Reporter,&lt;br /&gt;
** Bug Verantwortlicher,&lt;br /&gt;
** Beobachter&lt;br /&gt;
* Bugs können voneinander abhängen (ein Bug kann z.B. die Lösung eines anderen blockieren)&lt;br /&gt;
* Jeder kann Kommentare zu Bugs eingeben / Dateien anhängen&lt;br /&gt;
* ein Bug hat eine Priorität ( P1 = sehr wichtig .. P5 = unwichtig)&lt;br /&gt;
* enthält eine Email Benachrichtigung zum Beobachten von Bugs (nach Wunsch)&lt;br /&gt;
*  Sehr starke Suchoptionen&lt;br /&gt;
&lt;br /&gt;
Eine gute Anleitung zu Mantis gibt es u.a. bei der [https://helpdesk.pdv-systeme.de/mantis/pdv_doc_de.html PDV-SYSTEME Gesellschaft für Systemtechnik mbH]&lt;/div&gt;</summary>
		<author><name>Lars</name></author>
	</entry>
	<entry>
		<id>https://wiki.sachsen.schule/dwiki/index.php?title=Fehlermeldungen:Mantis&amp;diff=4433</id>
		<title>Fehlermeldungen:Mantis</title>
		<link rel="alternate" type="text/html" href="https://wiki.sachsen.schule/dwiki/index.php?title=Fehlermeldungen:Mantis&amp;diff=4433"/>
		<updated>2005-06-09T15:34:35Z</updated>

		<summary type="html">&lt;p&gt;Lars: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Keine Software ist ohne Fehler. Und gerade ein solch komplexes System wie ein Schulserver, auf welchem Software läuft, die Millionen von Codezeilen umfasst, wird wahrscheinlich immer Fehler haben.&lt;br /&gt;
&lt;br /&gt;
Um Fehler zielgerichtet und schnell beseitigen zu können und auch auf zusätzliche Wünsche von Anwendern reagieren zu können, gibt es sogenannte &amp;quot;Bugtracking&amp;quot;-Systeme wie Mantis.&lt;br /&gt;
&lt;br /&gt;
Für Arktur wurde ein solches Bugtracking-System eingerichtet wo Benutzer gefundene Fehler melden können:&lt;br /&gt;
http://arktur.schul-netz.de/mantis/&lt;br /&gt;
&lt;br /&gt;
== Was ist überhaupt ein Bug? ==&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich sind Software-Bugs sind nicht nur Fehler, sondern können auch Anforderungen oder Wünsche an eine Software sein. Wer sich detailliert über Bugs informieren möchte, den verweisen wir einmal direkt an [http://de.wikipedia.org/wiki/Programmfehler Wikipedia].&lt;br /&gt;
&lt;br /&gt;
== Warum macht man BugTracking? ==&lt;br /&gt;
&lt;br /&gt;
In Projekten mit mehreren Leuten ist Kommunikation sehr wichtig darüber:&lt;br /&gt;
* was gemacht werden soll/kann&lt;br /&gt;
* wer daran arbeitet (oder wofür niemand verantwortlich ist)&lt;br /&gt;
* wie Bugs voneinander abhängig sind&lt;br /&gt;
* was Andere davon halten&lt;br /&gt;
&lt;br /&gt;
== Wie Mantis funktioniert ==&lt;br /&gt;
&lt;br /&gt;
Mantis beinhaltet u.a. folgende Features:&lt;br /&gt;
&lt;br /&gt;
* komplett Internetbasiert &lt;br /&gt;
* Verwaltet verschieden Projekte und Komponenten (u.a. Arktur 3.4, 3.5 und 4)&lt;br /&gt;
* Erfasst u.a.:&lt;br /&gt;
** den BugStatus (Neu, Bestätigt, Gelöst, Irrelevant, ...), &lt;br /&gt;
** Bug Reporter,&lt;br /&gt;
** Bug Verantwortlicher,&lt;br /&gt;
** Beobachter&lt;br /&gt;
* Bugs können voneinander abhängen (ein Bug kann z.B. die Lösung eines anderen blockieren)&lt;br /&gt;
* Jeder kann Kommentare zu Bugs eingeben / Dateien anhängen&lt;br /&gt;
* ein Bug hat eine Priorität ( P1 = sehr wichtig .. P5 = unwichtig)&lt;br /&gt;
* enthält eine Email Benachrichtigung zum Beobachten von Bugs (nach Wunsch)&lt;br /&gt;
*  Sehr starke Suchoptionen&lt;br /&gt;
&lt;br /&gt;
Eine gute Anleitung zu Mantis gibt es u.a. bei der [https://helpdesk.pdv-systeme.de/mantis/pdv_doc_de.html PDV-SYSTEME Gesellschaft für Systemtechnik mbH]&lt;/div&gt;</summary>
		<author><name>Lars</name></author>
	</entry>
	<entry>
		<id>https://wiki.sachsen.schule/dwiki/index.php?title=Entwickler-Hinweise&amp;diff=531</id>
		<title>Entwickler-Hinweise</title>
		<link rel="alternate" type="text/html" href="https://wiki.sachsen.schule/dwiki/index.php?title=Entwickler-Hinweise&amp;diff=531"/>
		<updated>2005-06-09T15:20:32Z</updated>

		<summary type="html">&lt;p&gt;Lars: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier gibt es einige Informationen über die Entwickler von Arktur und auch die entsprechenden Dokumente, um an Arktur selbst mitzuentwickeln:&lt;br /&gt;
&lt;br /&gt;
* Die [[Personen]], die an der Arktur-Entwicklung beteiligt sind&lt;br /&gt;
&lt;br /&gt;
* Dokumentation über einzelne, wichtige [[Skripte und Dateien]]&lt;br /&gt;
&lt;br /&gt;
* [[Entwickler-Dokumentation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Präambel&lt;br /&gt;
&lt;br /&gt;
Bestimmung des Projekts c&#039;t/ODS-Schulserver (alias Arktur); Zweck und Ziel; &#039;Arktur-Community&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Allgemeine Richtlinien der Zusammenarbeit&lt;br /&gt;
&lt;br /&gt;
* Einteilung und Struktur der [[Arbeitsgruppen]]&lt;br /&gt;
* Beschreibung der technischen Hifsmittel: &lt;br /&gt;
** [[SVN-Repository]]&lt;br /&gt;
** [[Mantis]] - ein System zur Fehlermeldung&lt;br /&gt;
** [[FTP-Server]]&lt;br /&gt;
** [[Entwickler-Mailingliste]]&lt;br /&gt;
** ...&lt;/div&gt;</summary>
		<author><name>Lars</name></author>
	</entry>
	<entry>
		<id>https://wiki.sachsen.schule/dwiki/index.php?title=Arktur:Entwickler-Mailingliste&amp;diff=444</id>
		<title>Arktur:Entwickler-Mailingliste</title>
		<link rel="alternate" type="text/html" href="https://wiki.sachsen.schule/dwiki/index.php?title=Arktur:Entwickler-Mailingliste&amp;diff=444"/>
		<updated>2005-06-09T15:19:31Z</updated>

		<summary type="html">&lt;p&gt;Lars: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die [http://arktur.schul-netz.de/cgi-bin/mailman/listinfo/arktur4 Entwickler-Mailingliste] wurde eingerichtet, damit sich die unterschiedlichen Entwickler von Arktur besser und schneller koordinieren können.&lt;br /&gt;
&lt;br /&gt;
Das [http://wvbg.bndlg.de/pipermail/arktur4/ Archiv der Liste] ist zwar öffentlich - aber eine Anmeldung in der Liste selbst muss erst genehmigt werden. Dazu ein Ausschnitt aus einer Email:&lt;br /&gt;
&lt;br /&gt;
== Philosophie und Konfiguration dieser Liste ==&lt;br /&gt;
&lt;br /&gt;
Ziel war und ist, mit dieser Liste mehrere Beiträge dafür zu leisten, dass die Nutzer von Arktur wieder Vertrauen in die Entwickler und die Entwicklung von Arktur haben können.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Problem: Versions-Chaos &lt;br /&gt;
&lt;br /&gt;
Version 3.5 ist fertig, alle Entwickler dieser Version haben erklärt, an der Version 4 mitzuarbeiten. Damit entspricht m.E. die Version 3.5 dem &amp;quot;stable&amp;quot;-Zweig und die Version 4.0 der developer-Version. Da nun alle Entwickler mehr oder weniger an der gleichen Version arbeiten, aber auf jedem Fall im gleichen Team sind, sollte diese Linie deutlich werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Problem: Streitereien in schan-dev und inzwischen auch schan-user&lt;br /&gt;
&lt;br /&gt;
Da es eine geschlossene und private Liste ist, mit klar definierten Verhaltenskodex, den jeder mit der Anmeldung akzeptiert hat, dürften diese Probleme hier nicht auftreten oder können im Keim erstickt werden.&lt;br /&gt;
&lt;br /&gt;
Da der Gedankenaustausch hier in dieser Liste erfolgt, sollte schon wegen der geringeren Präsenz in schan-dev weniger Reibungspotential vorhanden sein. Außerdem besteht die Chance, das Informationen aus dieser Liste nach&lt;br /&gt;
schan-dev bzw. schan-user deutlich ausgereiftere Lösungen oder durchdachtere Konzepte darstellen und somit auch weniger Angriffsfläche für Pauschalurteile und oberflächliche Kritiken bieten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Problem: Verunsicherung der Anwender durch andere Entwickler&lt;br /&gt;
&lt;br /&gt;
Die Entwicklung von vorgestellten Lösungen sollte für den Anwender nachvollziehbar sein. Dazu wird m.E. ein wichtiger Beitrag durch das öffentliche Listenarchiv geleistet. Ebenso, wenn die Informationen aus dieser Liste nach schan-user (möglichst regelmäßig) in hoher Qualität und seriöser Form bereitgestellt werden. Auf sachliche Hinweise und Kritik sollte reagiert, alles andere ausnahmslos ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Problem: Arktur 4 wird nicht fertig = unendliche Geschichte&lt;br /&gt;
&lt;br /&gt;
Es wurde mehrfach zum Ausdruck gebracht, das ein Feature-Freeze nicht nur ausgerufen, sondern unbedingt einhalten werden sollte. (Als eine positive Erfahrung der Version 3.5 bietet sich m.E. der gezielte Einsatz von Mantis an. Dabei würden nebenbei noch zu lösende Aufgaben aufgelistet und es würde die Übernahme von Aufgaben durch andere Entwickler transparent.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. Problem: nur Reiner kennt sich mit dieser Version aus und kann helfen&lt;br /&gt;
&lt;br /&gt;
Schon durch diese Liste, das gemeinsame Ziel (eben Arktur 4), die Arbeit in der Liste und nicht mehr per PM (Transparenz), und durch &amp;quot;gemeinsames&amp;quot; Erstellen der Doku sollte deutlich werden, dass die Weiterentwicklung &lt;br /&gt;
durch eine größere Zahl von Entwicklern gewährleistet ist. Dieser Punkt bedeutet für mich, dass die Teilnehmerliste ebenso wie das Archiv offen zugänglich sein sollte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6. Problem: Arbeitsweise wird durch andere aufgezwungen &lt;br /&gt;
&lt;br /&gt;
Außer den unter Punkt 2 und 3 genannten Problemen wurde die eigentliche Funktion einer Liste zum Gedankenaustausch und der Koordination nicht mehr gerecht. Deshalb geschah vieles per PM, auch der Aufbau dieser Liste.&lt;br /&gt;
&lt;br /&gt;
Mit der Einrichtung dieser Liste wurde m.E. der erste Schritt getan, das Ruder selbst in die Hand zu nehmen. Und es sind die Voraussetzungen  vorhanden, das Ruder nicht mehr aus der Hand zu geben. Dieses Selbstvertrauen wird von den Entwicklern erwartet und sollte auch gezeigt werden. Das bedeutet neben der schon erwähnten offenen Teilnehmerliste und dem offenen Archiv sollte m.E. auch auf dem Portal diese Liste präsent sein (ohne gleich aufdringlich und dominierend zu werden).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7. Problem: die Angst von Entwicklern vor weiteren Störungen&lt;br /&gt;
&lt;br /&gt;
Ich wurde in mehreren Antworten auf die Gefahr eines gerichtlichen Vorgehens zum Erzwingen der Teilnahme an dieser Liste gewarnt, was sicher keiner will. Der Hinweis auf eine private Liste war für mich überzeugend. Um dieser konkreten Gefahr auch eine schlüssige Argumentation entgegen setzen zu können, habe ich ganz bewußt die Zustimmung zu diesen Verhaltenskodex vollständig und ohne jegliche Änderung als eine Bedingung für diese Liste gemacht. Da es eine private Liste ist, ist es die Liste zur Unterstützung von Arktur 4 (und 3.5) und in diese _private_ Liste &lt;br /&gt;
kommt nur, wer von Reiner, Thomas oder jemanden, der durch diese beiden beauftragt wurde, eingeladen ist.&lt;br /&gt;
&lt;br /&gt;
Da mit dem Erstellen dieser Liste sich Reinhold und ich sich sehr weit aus dem Fenster gelehnt (und auch schon zu spüren bekommen) haben, ist mein Vorschlag, dass Reiner, Thomas, Reinhold und ich die Aufnahme, im hoffentlich nie eintretenden Fall aber auch den Ausschluss aus dieser Liste, übernehmen. &lt;br /&gt;
&lt;br /&gt;
So die Philosophie zum Erstellen dieser Liste und entsprechend wurde diese vorerst konfiguriert. Diese Konfiguration ebenso wie die Philosophie steht hiermit zur Diskussion. &lt;br /&gt;
&lt;br /&gt;
Ich stehe aber auch auf dem Standpunkt, dass wir diese Liste nicht zum Selbstzweck geschaffen haben. Das bedeutet, dass die Diskussion über diese Liste zügig über die Runden gebracht wird. Das läßt sich m.E. auf zweierlei Weise beschleunigen: da es als private Liste zur Unterstützung der Arbeit von Reiner und Thomas deklariert ist, sollten ihre Entscheidung respektiert werden (= Machtwort). Die zweite Möglichkeit sehe ich darin, dass man sich per PM darüber verständigt. Sollten sich neue Überzeugungen oder Sichtweisen ergeben, werden diese in der Liste dargestellt. Ich habe selbstverständlich auch nichts gegen die Diskussion darüber in der Liste. &lt;br /&gt;
&lt;br /&gt;
Mir geht es nur darum, dass wir uns in dieser Liste nicht ewig mit der Liste selbst beschäftigen, sondern diese Liste zur eigentlichen Arbeit an Arktur 4 und 3.5 genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Ein technischer Hinweis: wenn man mit einem Zeichensatz anders als ISO-8859-1 schreibt, wird die Signatur als Anhang mitverschickt. Das ist nicht ganz optimal, lässt sich aber nicht anders lösen, außer man verzichtet ganz auf die Signatur.&lt;br /&gt;
&lt;br /&gt;
Das Webinterface für die Liste einschließlich Archiv und Teilnehmerliste erreicht man über&lt;br /&gt;
&lt;br /&gt;
   http://arktur.schul-netz.de/cgi-bin/mailman/listinfo/arktur4&lt;br /&gt;
&lt;br /&gt;
Sollten alle mit dieser Lösung leben können, wäre das von meiner Seite alles in Hinblick auf die Liste gewesen. Ansonsten bitte ich Probleme in die Liste zu posten oder per PM an mich heranzutragen.&lt;/div&gt;</summary>
		<author><name>Lars</name></author>
	</entry>
	<entry>
		<id>https://wiki.sachsen.schule/dwiki/index.php?title=Entwickler-Hinweise&amp;diff=530</id>
		<title>Entwickler-Hinweise</title>
		<link rel="alternate" type="text/html" href="https://wiki.sachsen.schule/dwiki/index.php?title=Entwickler-Hinweise&amp;diff=530"/>
		<updated>2005-06-09T15:11:02Z</updated>

		<summary type="html">&lt;p&gt;Lars: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier gibt es einige Informationen über die Entwickler von Arktur und auch die entsprechenden Dokumente, um an Arktur selbst mitzuentwickeln:&lt;br /&gt;
&lt;br /&gt;
* Die [[Personen]], die an der Arktur-Entwicklung beteiligt sind&lt;br /&gt;
&lt;br /&gt;
* Dokumentation über einzelne, wichtige [[Skripte und Dateien]]&lt;br /&gt;
&lt;br /&gt;
* [[Entwickler-Dokumentation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Präambel&lt;br /&gt;
&lt;br /&gt;
Bestimmung des Projekts c&#039;t/ODS-Schulserver (alias Arktur); Zweck und Ziel; &#039;Arktur-Community&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Allgemeine Richtlinien der Zusammenarbeit&lt;br /&gt;
&lt;br /&gt;
* Einteilung und Struktur der [[Arbeitsgruppen]]&lt;br /&gt;
* Beschreibung der technischen Hifsmittel: &lt;br /&gt;
** [[SVN-Repository]]&lt;br /&gt;
** [[FTP-Server]]&lt;br /&gt;
** [[Entwickler-Mailingliste]]&lt;br /&gt;
** ...&lt;/div&gt;</summary>
		<author><name>Lars</name></author>
	</entry>
	<entry>
		<id>https://wiki.sachsen.schule/dwiki/index.php?title=Entwickler-Hinweise&amp;diff=529</id>
		<title>Entwickler-Hinweise</title>
		<link rel="alternate" type="text/html" href="https://wiki.sachsen.schule/dwiki/index.php?title=Entwickler-Hinweise&amp;diff=529"/>
		<updated>2005-06-09T14:56:38Z</updated>

		<summary type="html">&lt;p&gt;Lars: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier gibt es einige Informationen über die Entwickler von Arktur und auch die entsprechenden Dokumente, um an Arktur selbst mitzuentwickeln:&lt;br /&gt;
&lt;br /&gt;
* Die [[Personen]], die an der Arktur-Entwicklung beteiligt sind&lt;br /&gt;
&lt;br /&gt;
* Dokumentation über einzelne, wichtige [[Skripte und Dateien]]&lt;br /&gt;
&lt;br /&gt;
* [[Entwickler-Dokumentation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Präambel&lt;br /&gt;
&lt;br /&gt;
Bestimmung des Projekts c&#039;t/ODS-Schulserver (alias Arktur); Zweck und Ziel; &#039;Arktur-Community&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Allgemeine Richtlinien der Zusammenarbeit&lt;br /&gt;
&lt;br /&gt;
* Einteilung in Arbeitsgruppen&lt;br /&gt;
* Struktur der Arbeitsgruppen &lt;br /&gt;
* Verhältnis der Entwickler zu den Maintainern, zum Gesamtprojektprojekt-Maintainer&lt;br /&gt;
* Beschreibung der technischen Hifsmittel: &lt;br /&gt;
  * deren Nutzung; z.B. ein CVS;&lt;br /&gt;
  * Umfang dessen, was dort niedergelegt und bearbeitet wird p.p&lt;/div&gt;</summary>
		<author><name>Lars</name></author>
	</entry>
	<entry>
		<id>https://wiki.sachsen.schule/dwiki/index.php?title=Delixs:Entwickler-Dokumentation&amp;diff=4447</id>
		<title>Delixs:Entwickler-Dokumentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.sachsen.schule/dwiki/index.php?title=Delixs:Entwickler-Dokumentation&amp;diff=4447"/>
		<updated>2005-06-09T14:49:30Z</updated>

		<summary type="html">&lt;p&gt;Lars: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Derzeit ist diese Seite eine Kopie der Entwickler-Dokumentation von des [http://www.eisfair.de Eisfair]-Projektes. Nach einigen Diskussionen dürfte hier aber bald die &amp;quot;Arktur-Dokumentation für Entwickler&amp;quot; stehen.&lt;br /&gt;
&lt;br /&gt;
== Grundlagen ==&lt;br /&gt;
&lt;br /&gt;
Arktur 4 basiert auf einer glibc mit der Versionsnummer 2.3; diese wird von allen modernen Distributionen unterstützt. Daher können die meisten Binaries direkt kopiert und auf Arktur ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Falls jemand genauere Informationen zu den betroffenen Distributionen hat, soll er sich bitte melden. Binärdateien von SUSE 9.0 sind ohne Probleme zu benutzen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Der Umfang der Arktur-Basis-Pakete ===&lt;br /&gt;
&lt;br /&gt;
Das Base-Package ist recht reichhaltig mit Tools ausgestattet (viel mehr als während der Beta-Versionen); im Normalfall sollte man mit den Programmen, die darin enthalten sind, gut auskommen. Falls allerdings bestimmte Programme von vielen Package-Entwicklern genutzt werden, die nicht im Base-Package enthalten sind, kann über eine Integration in das Base-Package nachgedacht werden. Es sollte auf jeden Fall vermieden werden, dass bestimmte Packages dasselbe Programm enthalten.&lt;br /&gt;
&lt;br /&gt;
== Erstellung eines Installationspackages ==&lt;br /&gt;
&lt;br /&gt;
Ein Installationspaket für Arktur ist im wesentlichen ein mit gzip komprimiertes Tar-Archiv, in dem neben den eigentlichen Dateien des Paketes noch einige weitere Informationen/ Scripts enthalten sein müssen. Diese sind:&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
!Bestandteile&lt;br /&gt;
!Status&lt;br /&gt;
|-&lt;br /&gt;
| Paket-Info-Datei&lt;br /&gt;
| zwingend&lt;br /&gt;
|-&lt;br /&gt;
|Installationsscripts&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
|Menüs für Setup&lt;br /&gt;
|optional&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Paket selbst spiegelt den Dateibaum ab dem root-Verzeichnis, also ``/&#039;&#039; wieder. Eine zu installierende Datei /usr/bin/foo muss also im Tar-Archiv als usr/bin/foo (ohne absoluten Pfad, also relativ!) abgespeichert sein. Als Beispiel denken wir uns ein Paket ``bar&#039;&#039;, welches als Dienst unter eisfair laufen soll. Der dazughörige Daemon soll ``bard&#039;&#039; heissen. Ausserdem soll noch eine Konfigurationsdatei etc/bard.conf und eine Shared-Library usr/lib/foo.so.1 dazugehören.&lt;br /&gt;
&lt;br /&gt;
Dokumentation zu diesem Package können wir im Verzeichnis /usr/share/doc/bar ablegen. Dort legen wir die selbstgeschriebene Hilfedatei ``bar.txt&#039;&#039; ab.&lt;br /&gt;
&lt;br /&gt;
Damit dieser Dienst gestartet wird, braucht man noch eine rc-Datei, welche unter /etc/init.d/bard gespeichert werden soll. Dann sieht der ``Baum&#039;&#039; im Archiv folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
etc/bard.conf 	Konfiguration&lt;br /&gt;
etc/init.d/bard 	rc-Datei&lt;br /&gt;
usr/sbin/bard 	Executable als Daemon&lt;br /&gt;
usr/lib/foo.so.1 	Shared Library&lt;br /&gt;
&lt;br /&gt;
Nun zu den zusätzlichen Dateien, welche die Installation/ Administration des Pakete regeln.&lt;br /&gt;
&lt;br /&gt;
=== Paket-Info-Datei ===&lt;br /&gt;
&lt;br /&gt;
dev-info-naming Diese Datei ist zwingend, d.h. sie sollte immer im tar-Archiv enthalten sein. Sie muss in var/install/packages liegen und den Namen des Packages haben. Als Package-Name sollten nur die Kleinbuchstaben a-z, die Zahlen 0-9 und der Bindestrich verwendet werden. Eine Versionsnummer sollte nicht mit im Paketnamen enthalten sein, damit man nicht bei Updates plötzlich mehrere verschiedene Packages auf seinem Arktur sieht. Beispiel für Package ``bar&#039;&#039;: var/install/packages/bar - Dateiname entspricht Paketname!&lt;br /&gt;
&lt;br /&gt;
Der Aufbau dieser Paket-Info-Datei entspricht vollständig dem Format der Info-Datei, die auch für die Paketbeschreibungen zuständig sind.&lt;br /&gt;
&lt;br /&gt;
=== Installationsscripts ===&lt;br /&gt;
&lt;br /&gt;
Man kann zwei Installationsskripte im Tar-Archiv unterbringen, nämlich&lt;br /&gt;
&lt;br /&gt;
tmp/preinstall.sh 	Script vor dem Auspacken&lt;br /&gt;
tmp/install.sh 	Script nach dem Auspacken&lt;br /&gt;
&lt;br /&gt;
Diese Scripts sind optional, sie müssen also nicht zwingend vorhanden sein. PACKAGE ist der Paketname, z.B. apache. Das Archiv wird beim Herunterladen im Verzeichnis /tmp gespeichert. Anschließend wird versucht, die Datei tmp/preinstall.sh zu extrahieren. Wenn sie existiert, wird sie anschließend ausgeführt. Der Zweck ist einfach: Hier können vorbereitende Kommandos ausgeführt werden (z.B. Löschen einer alten Version). Anschließend wird das komplette tar-Archiv ausgepackt, und zwar immer vom Root-Verzeichnis ``/&#039;&#039; ausgehend, so daß alle Dateien im richtigen Verzeichnis landen. Als letztes wird versucht, die Datei /tmp/install.sh auszuführen, falls sie existiert. Diese kann beim Aktivieren von Services (z.B. unseres bard-Programmes) genutzt werden, hier ein Beispiel:&lt;br /&gt;
&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
cd /etc/rc2.d         \# in&#039;s rc-Verzeichnis, Runlevel 2&lt;br /&gt;
ln -sf ../init.d/bard S50bard     \# Boot-Script linken&lt;br /&gt;
ln -sf ../init.d/bard K50bard     \# Kill-Script linken&lt;br /&gt;
&lt;br /&gt;
# Menüs für eis-Administration erweitern, s.u.:&lt;br /&gt;
&lt;br /&gt;
/var/install/bin/add-menu                  \&lt;br /&gt;
   /var/install/menu/setup.services.menu   \&lt;br /&gt;
   /var/install/bin/setup.services.bard    \&lt;br /&gt;
                            ``Foo Services&#039;&#039;&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
=== Deinstallation ===&lt;br /&gt;
/var/install/deinstall/&amp;lt;PACKAGE&amp;gt; Das Script muss zwingend vorhanden sein. Seine Aufgabe besteht in der Entfernung aller Paketdateien und der entsprechenden Menüeinträge. Dazu zählen auch:&lt;br /&gt;
* Chronjobs&lt;br /&gt;
* Systembenutzer&lt;br /&gt;
* Benutzergruppen&lt;br /&gt;
Sonstige eingefügte Einträge in paketfremden Dateien.&lt;br /&gt;
Bei der Entfernung von Bibliotheken ist gegebenenfalls eine Abhängigkeitsprüfung zu anderen Paketen durzuführen.&lt;br /&gt;
&lt;br /&gt;
=== Dokumentation und Changelog ===&lt;br /&gt;
&lt;br /&gt;
Im Verzeichnis /usr/share/doc/&amp;lt;PACKAGE&amp;gt; ist eine Datei changes.txt anzulegen, in dem die Veränderungen, die von Version zu Version am Paket durchgeführt werden, kurz beschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Bewährt hat sich eine Form wie in folgendem Beispiel:&lt;br /&gt;
&lt;br /&gt;
1.0.6 --&amp;gt; 1.0.7&lt;br /&gt;
---------------&lt;br /&gt;
- added file /bin/bigone&lt;br /&gt;
- deleted obsolete variable ONE in&lt;br /&gt;
  /etc/config.d/master&lt;br /&gt;
- renamed /etc/old to /etc/new&lt;br /&gt;
-&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
1.0.5 --&amp;gt; 1.0.6&lt;br /&gt;
---------------&lt;br /&gt;
- modified some comments in /etc/this&lt;br /&gt;
-&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
Es sollten also die letzten Änderungen jeweils oben in der Datei changes.txt stehen. Uralte Änderungen können mit der Zeit entfallen.&lt;br /&gt;
&lt;br /&gt;
Die eigentliche Dokumentation soll ebenfalls im Verzeichnis /usr/share/doc/&amp;lt;PACKAGE&amp;gt; abgelegt werden, ebenfalls im Textformat und PACKAGE.txt heissen. Weiteres siehe Dokumentation. Zusätzliche Dokumentation, die den Originalquellen normalerweise beiliegt (man-Pages, README, etc.), sollte nicht mitgeliefert werden.&lt;br /&gt;
&lt;br /&gt;
=== Menüs für SysAdm ===&lt;br /&gt;
&lt;br /&gt;
Auch die Menüs sind optional und werden nur für eine spätere Administration benötigt. Das SysAdmin-Menü basiert auf einfachen Shell-Scripts und ist als Übergangslösung gedacht, bis eine komfortable Oberfläche (über Browser bedienbar) zur Verfügung steht. Unter /var/install befinden sich auf dem eisfair-Server folgende Unterverzeichnisse:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|bin 	&lt;br /&gt;
|Shell-Scripts&lt;br /&gt;
|-&lt;br /&gt;
|menu &lt;br /&gt;
|Menü-Dateien&lt;br /&gt;
|-&lt;br /&gt;
|packages&lt;br /&gt;
|Paket-Info-Dateien, s.o.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Menü-Dateien haben folgende Struktur:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!TITEL&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|Kommando&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|Kommando&lt;br /&gt;
|Beschreibung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel des Hauptmenüs setup.menu:&lt;br /&gt;
&lt;br /&gt;
  EIS/FAIR simple setup&lt;br /&gt;
  /var/install/bin/setup.packages     Package administration&lt;br /&gt;
  /var/install/bin/setup.services     Service administration&lt;br /&gt;
  /var/install/bin/setup.users        User administration&lt;br /&gt;
&lt;br /&gt;
Die Menüs sind hierarchisch. Die Struktur wird durch den Dateinamen klar:&lt;br /&gt;
&lt;br /&gt;
setup.menu 	Hauptmenü&lt;br /&gt;
setup.packages.menu 	Untermenü Packages&lt;br /&gt;
setup.services.menu 	Untermenü Services&lt;br /&gt;
setup.users.menu 	Untermenü Users&lt;br /&gt;
&lt;br /&gt;
Diese Strukturen kann man beliebig tief führen und auch an gewünschter Stelle erweitern. Der Befehl&lt;br /&gt;
&lt;br /&gt;
    /var/install/bin/add-menu                 \&lt;br /&gt;
      /var/install/menu/setup.services.menu   \&lt;br /&gt;
      /var/install/bin/setup.services.bard    \&lt;br /&gt;
                                ``Foo Services&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
im Installationsskript erweitert nun das Menü setup.services.menu um eine weitere Zeile, nämlich:&lt;br /&gt;
&lt;br /&gt;
/var/install/bin/setup.services.bard  ``Foo Services&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es erscheint also dann unter ``Service administration&#039;&#039; ein weiterer Menüpunkt ``Foo Services&#039;&#039;. Das Shell-Script /var/install/bin/setup.services.bard ist einfach ein weiterer Start eines Untermenüs. Es kann z.B. so aussehen:&lt;br /&gt;
&lt;br /&gt;
#! /bin/sh&lt;br /&gt;
/var/install/bin/show-menu  \&lt;br /&gt;
  /var/install/menu/setup.services.bard.menu&lt;br /&gt;
&lt;br /&gt;
Und setup.services.bard.menu folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
    Foo administration&lt;br /&gt;
    /var/install/bin/bard-status Show status of inetd&lt;br /&gt;
    /var/install/bin/bard-stop Stop inetd&lt;br /&gt;
    /var/install/bin/bard-start Start inetd&lt;br /&gt;
&lt;br /&gt;
Die 3 Scripts bard-status usw. starten nun keine weiteren Untermenüs, sondern führen dann tatsächlich Funktionen aus. Sie können z.B. so aussehen:&lt;br /&gt;
&lt;br /&gt;
    ------------------ schnipp -------------------------&lt;br /&gt;
    #! /bin/sh&lt;br /&gt;
    # bard-status&lt;br /&gt;
    pid=`cat /var/run/bard.pid 2&amp;gt;/dev/null`&lt;br /&gt;
&lt;br /&gt;
    status=dead&lt;br /&gt;
&lt;br /&gt;
    if [ ``$pid&#039;&#039; != ``&#039;&#039; ]&lt;br /&gt;
    then&lt;br /&gt;
        kill -0 \$pid&lt;br /&gt;
        if [ \$? = 0 ]&lt;br /&gt;
        then&lt;br /&gt;
            status=alive&lt;br /&gt;
        fi&lt;br /&gt;
    fi&lt;br /&gt;
&lt;br /&gt;
    if [ $status = alive ]&lt;br /&gt;
    then&lt;br /&gt;
        echo ``bard is running&#039;&#039;&lt;br /&gt;
    else&lt;br /&gt;
        echo ``bard is not running&#039;&#039;&lt;br /&gt;
    fi&lt;br /&gt;
    echo&lt;br /&gt;
    /var/install/bin/anykey&lt;br /&gt;
    ------------------ schnapp -------------------------&lt;br /&gt;
    ------------------ schnipp -------------------------&lt;br /&gt;
    #! /bin/sh&lt;br /&gt;
    # bard-start&lt;br /&gt;
    sh /etc/init.d/bard start&lt;br /&gt;
    echo&lt;br /&gt;
    /var/install/bin/anykey&lt;br /&gt;
    ------------------ schnapp -------------------------&lt;br /&gt;
    ------------------ schnipp -------------------------&lt;br /&gt;
    #! /bin/sh&lt;br /&gt;
    # bard-stop&lt;br /&gt;
    sh /etc/init.d/bard stop&lt;br /&gt;
    echo&lt;br /&gt;
    /var/install/bin/anykey&lt;br /&gt;
    ------------------ schnapp -------------------------&lt;br /&gt;
&lt;br /&gt;
Das Shell-Script /var/install/bin/anykey fragt den Benutzer lediglich nach der ENTER-Taste als Bestätigung.&lt;br /&gt;
&lt;br /&gt;
Zusammenfassend noch mal alle Dateien in unserem bard-Package:&lt;br /&gt;
&lt;br /&gt;
Dateiname 	Funktion&lt;br /&gt;
etc/bard.conf 	Konfiguration&lt;br /&gt;
etc/init.d/bard 	rc-Datei&lt;br /&gt;
usr/sbin/bard 	Executable als Daemon&lt;br /&gt;
usr/lib/foo.so.1 	Shared Library&lt;br /&gt;
var/install/bin/setup.services.bar 	Knoten im Menü-Baum&lt;br /&gt;
var/install/bin/bard-status 	Blatt im Menü-Baum&lt;br /&gt;
var/install/bin/bard-stop 	Blatt im Menü-Baum&lt;br /&gt;
var/install/bin/bard-start 	Blatt im Menü-Baum&lt;br /&gt;
var/install/menu/setup.services.bar.menu 	Menü-Datei&lt;br /&gt;
var/install/packages/bar 	Package-Info-Datei&lt;br /&gt;
usr/share/doc/bar/bar.txt 	Dokumentation zum Pacakge&lt;br /&gt;
usr/share/doc/bar/changes.txt 	Changelog-Datei&lt;br /&gt;
&lt;br /&gt;
== Standardskripte ==&lt;br /&gt;
&lt;br /&gt;
In der aktuellen Version von Arktur sind folgende Skripte verfügbar, die man benutzen sollte, um Standardfunktionen anzubieten.&lt;br /&gt;
&lt;br /&gt;
/var/install/bin/anykey 	wartet auf ENTER&lt;br /&gt;
/var/install/bin/add-group 	fügt eine neue Gruppe zum System hinzu&lt;br /&gt;
/var/install/bin/add-menu 	erstellt einen Menüeintrag für das Setup&lt;br /&gt;
/var/install/bin/add-user 	fügt einen neuen Benutzer zum System hinzu&lt;br /&gt;
/var/install/bin/ask 	wartet auf Eingabe von y(es) oder n(o)&lt;br /&gt;
/var/install/bin/check-version 	überprüft ein Paket auf seine Version&lt;br /&gt;
/var/install/bin/del-menu 	entfernt einen Menüeintrag aus dem Setup&lt;br /&gt;
/var/install/bin/edit 	startet den Editor zum Editieren der Konfiguration&lt;br /&gt;
/var/install/bin/remove-user 	entfernt einen Benutzer vom System&lt;br /&gt;
&lt;br /&gt;
Damit wird vermieden, dass diese Sachen von jedem Paketentwickler neu implementiert werden müssen. Welche Parameter das Skript jeweils erwartet, ist im Skript selbst am Anfang beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration von Paketen ==&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration von Paketen kann in der Datei /etc/config.d/PACKAGE festgehalten werden. Die einzelnen Zeilen sollten folgender Notation entsprechen: VARIABLE=&#039;Wert&#039;&lt;br /&gt;
&lt;br /&gt;
Kommentare können mit `#&#039; eingeleitet werden. Beispiel für /etc/config.d/inet (Package ``inet&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
    #---------------------------------------------------&lt;br /&gt;
    # Configuration of inet package&lt;br /&gt;
    #---------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
    START_TELNETD=&#039;no&#039;&lt;br /&gt;
    START_FTPD=&#039;yes&#039;&lt;br /&gt;
    START_SSH=&#039;yes&#039;&lt;br /&gt;
&lt;br /&gt;
Beispiel für /etc/config.d/apache (Package ``apache&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
    #---------------------------------------------------&lt;br /&gt;
    # Configuration of apache package&lt;br /&gt;
    #---------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
    START_APACHE=&#039;yes&#039;&lt;br /&gt;
    DOCUMENT_ROOT=&#039;/var/www&#039;&lt;br /&gt;
&lt;br /&gt;
Beispiel für /etc/config.d/mail (Package ``mail&#039;&#039;, auszugsweise)&lt;br /&gt;
&lt;br /&gt;
    #---------------------------------------------------&lt;br /&gt;
    # Configuration of mail package&lt;br /&gt;
    #---------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
    START_POP3=&#039;yes&#039;&lt;br /&gt;
    START_IMAP=&#039;yes&#039;&lt;br /&gt;
&lt;br /&gt;
    POP3IMAP_CREATE_MBX=&#039;no&#039;&lt;br /&gt;
&lt;br /&gt;
    POP3IMAP_USE_MAILONLY_PASSWORDS=&#039;no&#039;&lt;br /&gt;
    POP3IMAP_TRANSPORT=&#039;default&#039;&lt;br /&gt;
&lt;br /&gt;
== INFO-Datei ==&lt;br /&gt;
&lt;br /&gt;
Diese Datei soll eine bessere Übersicht über die verfügbaren Pakete und notwendige Verwaltungsdaten bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Die bisherige Info-Datei, die im Package selbst enthalten ist, bleibt erhalten. An ihrem Format ändert sich nichts.&lt;br /&gt;
&lt;br /&gt;
Damit ein späterer Umstieg auf einen XML-Parser möglich ist, bitte die Sonderzeichen, die XML eine Sonderbedeutung haben, entsprechend maskieren oder vermeiden.&lt;br /&gt;
&lt;br /&gt;
=== Namen und Pfad ===&lt;br /&gt;
&lt;br /&gt;
Der Info-Datei erhält den Dateinamen des Packages zuzüglich ,,.info``. Sie steht im selben Verzeichnis wie das zugehörige Package.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Wenn der Pfad zum Package ,,slrn.tar.gz`` ,,http://www.meine-domain.de/eisfair/``lautet (also die Adresse das Paketes ,,http://www.meine-domain.de/eisfair/slrn.tar.gz``ist), dann heisst die zugehörige Info-Datei ,,slrn.tar.gz.info``; deren Adresse lautet somit ,,http://www.meine-domain.de/eisfair/slrn.tar.gz.info``.&lt;br /&gt;
&lt;br /&gt;
=== Format ===&lt;br /&gt;
&lt;br /&gt;
Die Info-Datei hat eine XML-Struktur, die folgendermassen aussieht:&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;package&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;lt;/package&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Innerhalb des Package-Tags sind die unten beschriebenen Tags erlaubt. Die Werte sind, soweit nicht anders gekennzeichnet, Freitext. Werte, die nicht Freitext sind, sind case-sensitiv (auf Groß- und Kleinschreibung achten!). Freitexte dürfen folgende Zeichen nicht enthalten: ``&amp;lt;&#039;&#039;, ``&amp;gt;&#039;&#039;,&#039;&#039;$&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Jedes Tag (bis auf &amp;lt;description&amp;gt;) muss mit Starttag, Wert und Endtag in genau einer Zeile stehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;name&amp;gt;&lt;br /&gt;
    : Der Name des Packages &lt;br /&gt;
&amp;lt;short&amp;gt;&lt;br /&gt;
    : Eine Kurzbeschreibung (max 60 Zeichen) &lt;br /&gt;
&amp;lt;version&amp;gt;&lt;br /&gt;
    : Die Version des Packages; Kein Freitext (siehe unten) &lt;br /&gt;
&amp;lt;date&amp;gt;&lt;br /&gt;
    : Das Releasedatum dieser Version &lt;br /&gt;
&amp;lt;author&amp;gt;&lt;br /&gt;
    : Der Name des Authors, inklusive EMail-Adresse &lt;br /&gt;
&amp;lt;status&amp;gt;&lt;br /&gt;
    : Der Status des Packages (siehe unten); Kein Freitext &lt;br /&gt;
&amp;lt;section&amp;gt;&lt;br /&gt;
    : Der Bereich, dem dieses Package angehört (siehe unten); Kein Freitext URL zur Homepage &lt;br /&gt;
&amp;lt;require-package&amp;gt;&lt;br /&gt;
    : Der Name eines Packages, das zur korrekten Funktion dieses Packages zwingend vorausgesetzt wird &lt;br /&gt;
&amp;lt;sub-package&amp;gt;&lt;br /&gt;
    : ... &lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
    : Eine ausführlichere Beschreibung des Programmes, Hinweise, Tips, Patches ... &lt;br /&gt;
&lt;br /&gt;
Die Reihenfolge der Tags ist beliebig. Die Tagnamen müssen in Kleinbuchstaben gesetzt sein. Im folgenden weitere Beschreibungen der Tags.&lt;br /&gt;
&lt;br /&gt;
version&lt;br /&gt;
&lt;br /&gt;
Dieser Wert muss folgendem Schema entsprechen: X.Y.Z, wobei&lt;br /&gt;
&lt;br /&gt;
X 	Hauptversion&lt;br /&gt;
Y 	Unterversion&lt;br /&gt;
Z 	Patchlevel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;status&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Wert besteht aus einem der folgenden Möglichkeiten:&lt;br /&gt;
&lt;br /&gt;
unstable&lt;br /&gt;
    Das Paket wurde noch nicht getestet. Eine Installation ist nur Experten zu empfehlen, da dieses Paket noch erhebliche Fehler und Ungereimtheiten enthalten kann. Jedes Paket erhält zu Beginn diesen Status.&lt;br /&gt;
&lt;br /&gt;
testing&lt;br /&gt;
    Dieses Paket wurde schon getestet und die gröbsten Fehler wurden beseitigt. Es können allerdings noch Fehler auftreten, allerdings läuft es im Standardbetrieb stabil. Ein Package erhält erst diesen Status, wenn mindestens 5 Benutzer dieses Package installiert haben und alle gemeldeten Fehler vom Autor beseitigt wurden.&lt;br /&gt;
&lt;br /&gt;
stable&lt;br /&gt;
    Dieses Paket ist ausreichend getestet, daß es auch in vielen Kombinationen mit anderen Programmen und Treibern wie erwartet arbeitet. Dokumentation ist vorhanden. Ein Paket erhält erst diesen Status, wenn es vorher den Status ``testing&#039;&#039; besaß und ein allgemeiner Konsens (in der Developer-Mailingliste o.ä.) darüber besteht. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Wert ordnet das Package in eine bestimmte Kategorie ein. Darüber lässt sich eine Menüauswahl o.ä. realisieren. Es existieren folgende Möglichkeiten für diesen Wert:&lt;br /&gt;
&lt;br /&gt;
    * admin - admin-tools zum installieren und konfigurieren&lt;br /&gt;
    * utils - sed, grep, links und co - alles was auf der console hilft&lt;br /&gt;
    * devel - gcc und co&lt;br /&gt;
    * game - spieleproxies etc&lt;br /&gt;
    * interpreter - perl, ruby, python und co.&lt;br /&gt;
    * lib - zlib, openssl und co&lt;br /&gt;
    * net - alles rund ums netzwerk&lt;br /&gt;
    * news - alles rund um news&lt;br /&gt;
    * mail - alles rund um mail&lt;br /&gt;
    * misc - alles andere&lt;br /&gt;
    * web - alles rund ums web&lt;br /&gt;
    * database - Datenbanken und Frontends&lt;br /&gt;
    * drivers - Treiber, Kernel-Module&lt;br /&gt;
&lt;br /&gt;
(danke an Oliver Dawid)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;require-package&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Wert definiert eine Abgängigkeit zwischen dem beschriebenen Package und einem anderen Package. Dieses Package wird durch seinen Dateinamen (inklusive relativem Pfad zum aktuellen Package oder absoluter URL) angegeben. Sollte eine bestimmte Mindestversion gefordert werden, so kann diese optional durch ein Leerzeichen getrennt hinter dem Dateinamen angegeben werden.&lt;br /&gt;
&lt;br /&gt;
Ist das beschriebene Package von mehrere Packages abhängig, so kann das &amp;lt;require-package&amp;gt;-Tag mehrfach vorkommen. Gibt es keine Abhängigkeiten, so kann es entfallen.&lt;br /&gt;
&lt;br /&gt;
Die (immer vorhandene) Abhängigkeit zum Package &#039;&#039;base&#039;&#039; muss nicht explizit genannt werden, es sein denn, eine bestimmte Version wird vorausgesetzt.&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;require-package&amp;gt;inet.tar.gz.info&amp;lt;/require-package&amp;gt;&lt;br /&gt;
   &amp;lt;require-package&amp;gt;../updates/update.tar.gz.info 1.0.5&amp;lt;/require-package&amp;gt;&lt;br /&gt;
   &amp;lt;require-package&amp;gt;http://download.eisfair.org/packages/updates/update.tar.gz.info 1.0.5&amp;lt;/require-package&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sub-package&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Tag &amp;lt;sub-package&amp;gt; gibt an, welche Unterpakete vom Hauptpaket selbständig geladen werden. Diese Angaben dienen lediglich der Information, z.B. für eisfair-Download-Mirror-Systeme.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sub-package&amp;gt;LOCATION&amp;lt;/sub-package&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Form von LOCATION entspricht derselben wie für &amp;lt;require-package&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Update eines Packages&lt;br /&gt;
&lt;br /&gt;
Wenn ein Package upgedatet wird, sind folgende Punkte zu beachten:&lt;br /&gt;
&lt;br /&gt;
    * updaten des &amp;lt;version&amp;gt;-tags&lt;br /&gt;
    * eventuell Rückstufung des &amp;lt;status&amp;gt;-Tags&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
&lt;br /&gt;
Anbei ein kleines Beispiel, daß obige Definitionen illustrieren soll.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;package&amp;gt;&lt;br /&gt;
   &amp;lt;name&amp;gt;inet&amp;lt;/name&amp;gt;&lt;br /&gt;
   &amp;lt;short&amp;gt;Inet services (pure-ftpd \&amp;amp; ssh, inetd, telnet)&amp;lt;/short&amp;gt;&lt;br /&gt;
   &amp;lt;version&amp;gt;0.10.4&amp;lt;/version&amp;gt;&lt;br /&gt;
   &amp;lt;date&amp;gt;2002/01/02&amp;lt;/date&amp;gt;&lt;br /&gt;
   &amp;lt;author&amp;gt;Joerg Hoh, joerg@joerghoh.de&amp;lt;/author&amp;gt;&lt;br /&gt;
   &amp;lt;status&amp;gt;stable&amp;lt;/status&amp;gt;&lt;br /&gt;
   &amp;lt;section&amp;gt;net&amp;lt;/section&amp;gt;&lt;br /&gt;
   &amp;lt;require-package&amp;gt;base tools&amp;lt;/require-package&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;&lt;br /&gt;
   Dieses Package beinhaltet einen Grundstock an Internet-Diensten:&lt;br /&gt;
&lt;br /&gt;
   -pureftpd: FTP-Server (pure-ftpd.sourceforge.net, Version 1.0.2)&lt;br /&gt;
   -sshd: SSH-Server, inklusive Generator für eigenen SSH-Keys,&lt;br /&gt;
   SSH-Client&lt;br /&gt;
   (www.openssh.org, Version 3.0.2p1)&lt;br /&gt;
   -inetd: Wird von vielen anderen Diensten benötigt&lt;br /&gt;
   -telnet: Dienst zur Fernadministration; SICHERHEITSRISIKO!!&lt;br /&gt;
   Für weitere Informationen:&lt;br /&gt;
   http://www.joerghoh.de/eisfair/doc/inet.html&lt;br /&gt;
   &amp;lt;/description&amp;gt;&lt;br /&gt;
   &amp;lt;/package&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Dokumentation ==&lt;br /&gt;
&lt;br /&gt;
Zu jedem Paket sollte es Dokumentation geben, in der zumindest folgende Punkte genauer erklärt werden:&lt;br /&gt;
&lt;br /&gt;
    * Welche weiteren Pakete werden benötigt?&lt;br /&gt;
    * Der Installationsablauf&lt;br /&gt;
    * Eventuelle Konfigurationsdateien und die in ihr definierten Variablen&lt;br /&gt;
    * Die Punkte im Setup-Programm, soweit sie dieses Paket betreffen&lt;br /&gt;
    * Die Funktionen des Pakets&lt;br /&gt;
    * Wie arbeitet dieses Paket mit anderen Pakete zusammen?&lt;br /&gt;
&lt;br /&gt;
Die Texte, die in dieser Dokumentation enthalten sind, wurden mithilfe von LATEXverfasst. Daraus lassen sich sehr einfach andere Formate (wie PDF und das geforderte Textformat für die Dokumentation unter /usr/share/doc) erzeugen.&lt;br /&gt;
&lt;br /&gt;
Wer ebenfalls LATEXbenutzen will, der kann sich von Jörg Hoh (joerg@eisfair.org) das dazu notwendige Style-File besorgen.&lt;br /&gt;
&lt;br /&gt;
== Gruppen- und User-IDs ==&lt;br /&gt;
&lt;br /&gt;
Um weiteres Chaos zu vermeiden, wurde jetzt eine Liste von uids und gids festgelegt, an die sich alle weiteren Packages halten sollte. Die Liste wurde aus den Einträgen von Debian Woody und SuSE gemischt, wobei im Zweifelsfall Debian das letzte Wort hatte.&lt;br /&gt;
&lt;br /&gt;
Username 	uid 	gid&lt;br /&gt;
root 	0 	0&lt;br /&gt;
daemon 	1 	1&lt;br /&gt;
bin 	2 	2&lt;br /&gt;
sys 	3 	3&lt;br /&gt;
lp 	4 	7&lt;br /&gt;
games 	5 	5&lt;br /&gt;
man 	6 	100&lt;br /&gt;
mail 	8 	8&lt;br /&gt;
news 	9 	9&lt;br /&gt;
uucp 	10 	10&lt;br /&gt;
proxy 	13 	13&lt;br /&gt;
at 	25 	-&lt;br /&gt;
postgres 	26 	26&lt;br /&gt;
majordom 	30 	31&lt;br /&gt;
postgres 	31 	32&lt;br /&gt;
wwwrun 	30 	33&lt;br /&gt;
backup 	34 	34&lt;br /&gt;
operator 	37 	37&lt;br /&gt;
list 	38 	38&lt;br /&gt;
irc 	39 	39&lt;br /&gt;
ftp 	40 	49&lt;br /&gt;
gnats 	41 	41&lt;br /&gt;
exim 	42 	42&lt;br /&gt;
named 	44 	44&lt;br /&gt;
postfix 	51 	51&lt;br /&gt;
mysql 	60 	2&lt;br /&gt;
zope 	64 	2&lt;br /&gt;
sshd 	71 	65&lt;br /&gt;
firebird 	84 	84&lt;br /&gt;
nobody 	65534 	65534&lt;br /&gt;
identd 	100 	65534&lt;br /&gt;
&lt;br /&gt;
Gruppenname 	gid&lt;br /&gt;
root 	0&lt;br /&gt;
daemon 	1&lt;br /&gt;
bin 	2&lt;br /&gt;
sys 	3&lt;br /&gt;
adm 	4&lt;br /&gt;
tty 	5&lt;br /&gt;
cdisk 	6&lt;br /&gt;
lp 	7&lt;br /&gt;
mail 	8&lt;br /&gt;
news 	9&lt;br /&gt;
uucp 	10&lt;br /&gt;
proxy 	13&lt;br /&gt;
kmem 	15&lt;br /&gt;
dialout 	20&lt;br /&gt;
fax 	21&lt;br /&gt;
voice 	22&lt;br /&gt;
cdrom 	24&lt;br /&gt;
floppy 	25&lt;br /&gt;
tape 	26&lt;br /&gt;
sudo 	27&lt;br /&gt;
audio 	29&lt;br /&gt;
dip 	30&lt;br /&gt;
majordom 	31&lt;br /&gt;
postgres 	32&lt;br /&gt;
www-data 	33&lt;br /&gt;
backup 	34&lt;br /&gt;
operator 	37&lt;br /&gt;
list 	38&lt;br /&gt;
irc 	39&lt;br /&gt;
src 	40&lt;br /&gt;
gnats 	41&lt;br /&gt;
trusted 	42&lt;br /&gt;
utmp 	43&lt;br /&gt;
video 	44&lt;br /&gt;
ftp 	49&lt;br /&gt;
staff 	50&lt;br /&gt;
postfix 	51&lt;br /&gt;
maildrop 	59&lt;br /&gt;
games 	60&lt;br /&gt;
man 	62&lt;br /&gt;
sshd 	65&lt;br /&gt;
users 	100&lt;br /&gt;
maschines 	777&lt;br /&gt;
nobody 	65533&lt;br /&gt;
nogroup 	65534&lt;br /&gt;
&lt;br /&gt;
Wer meint, daß in dieser Liste ein Eintrag fehlt, der solle sich melden.&lt;br /&gt;
&lt;br /&gt;
== Definition regulärer Ausdrücke ==&lt;br /&gt;
&lt;br /&gt;
Reguläre Ausdrücke sind wie folgt definiert:&lt;br /&gt;
&lt;br /&gt;
Regulärer Ausdruck: Eine oder mehrere Alternativen, getrennt durch &#039;|&#039;, z.B. &#039;ro|rw|no&#039;. Trifft eine der Alternativen zu, trifft der ganze Ausdruck zu (hier wären &#039;ro&#039;, &#039;rw&#039; und &#039;no&#039; gültige Ausdrücke).&lt;br /&gt;
&lt;br /&gt;
Eine Alternative ist eine Verkettung mehrerer Teilstücke, die einfach aneinandergereiht werden.&lt;br /&gt;
&lt;br /&gt;
Ein Teilstück ist ein ``Atom&#039;&#039;, gefolgt von einem einzelnen &#039;*&#039;, &#039;+&#039;, &#039;?&#039; oder &#039;{min, max}&#039;. Die Bedeutung ist wie folgt:&lt;br /&gt;
&lt;br /&gt;
    * &#039;a*&#039; - beliebig viele a&#039;s einschließlich kein a&lt;br /&gt;
    * &#039;a+&#039; - mindestens ein a, sonst beliebig viele a&#039;s&lt;br /&gt;
    * &#039;a?&#039; - kein oder ein a&lt;br /&gt;
    * &#039;a{2,5} - zwei bis 5 a&#039;s&lt;br /&gt;
    * &#039;a{5} - 5 a&#039;s&lt;br /&gt;
    * &#039;a{2,} - mindestens 2 a&#039;s&lt;br /&gt;
&lt;br /&gt;
Ein ``Atom&#039;&#039; ist ein&lt;br /&gt;
&lt;br /&gt;
    * regulärer Ausdruck eingeschlossen in Klammern, z.B. (a|b)+ trifft auf eine beliebige Zeichenkette zu, die mindestens ein a oder b enthält, sonst aber beliebig viele und in beliebiger Reihenfolge&lt;br /&gt;
    * ein leeres Paar Klammern steht für einen ``leeren&#039;&#039; Ausdruck&lt;br /&gt;
    * ein Ausdruck mit eckigen Klammern &#039;[]&#039; (siehe weiter unten)&lt;br /&gt;
    * ein Punkt &#039;.&#039;, der auf irgend ein einzelnes Zeichen zutrifft, z.B. &#039;.+&#039; trifft auf eine beliebige Zeichenkette zu, die mindestens ein Zeichen enthält&lt;br /&gt;
    * ein &#039;^&#039; steht für den Zeilenanfang, z.B. &#039;^a.*&#039; trifft auf eine Zeichenkette zu, die mit einem a anfängt und in der beliebige Zeichen folgen, &#039;a&#039; oder &#039;adkadhashdkash&#039;&lt;br /&gt;
    * ein &#039;$&#039; steht für das Zeilenende&lt;br /&gt;
    * ein &#039;&lt;br /&gt;
      &#039; gefolgt von einem der Sonderzeichen &#039;^.[$()|*+?{&#039;` steht für genau das zweite Zeichen ohne seine spezielle Bedeutung&lt;br /&gt;
    * ein normales Zeichen trifft auf genau das Zeichen zu, z.B. &#039;a&#039; trifft auf genau &#039;a&#039; zu.&lt;br /&gt;
&lt;br /&gt;
Ein Ausdruck mit rechteckigen Klammern bedeutet folgendes&lt;br /&gt;
&lt;br /&gt;
    * &#039;[x-y]&#039; - trifft auf irgend ein Zeichen zu, das zwischen x und y liegt, z.B. &#039;[0-9]&#039; steht für alle Zeichen zwischen 0 und 9; &#039;[a-zA-Z]&#039; für alle Buchstaben, egal ob groß oder klein&lt;br /&gt;
&lt;br /&gt;
    * &#039;[^x-y]&#039; - trifft auf irgendein Zeichen zu, das nicht im angegebenen Intervall liegt&lt;br /&gt;
&lt;br /&gt;
    * &#039;[:character_class:] - trifft auf ein Zeichen der Zeichen-Klasse zu. Relevante Standardzeichenklassen sind: alnum, alpha, blank, digit, lower, print, punct, space, upper, xdigit.&lt;br /&gt;
&lt;br /&gt;
Beispiele für Reguläre Ausdrücke&lt;br /&gt;
&lt;br /&gt;
Sehen wir uns das mal an einigen Beispielen an:&lt;br /&gt;
&lt;br /&gt;
Numerisch: Ein numerischer Wert besteht aus mindestens einer, aber beliebig vielen Zahlen. Mindestens ein, aber beliebig viele drückt man mit &#039;+&#039; aus, eine Zahl hatten wir schon als Beispiel. Zusammengesetzt ergibt das:&lt;br /&gt;
&lt;br /&gt;
        &lt;br /&gt;
        NUMERIC = &#039;[0-9]+&#039; oder alternativ&lt;br /&gt;
        NUMERIC = &#039;[[:digit:]]+&#039;&lt;br /&gt;
&lt;br /&gt;
NOBLANK: Ein Wert, der keine Leerzeichen enthält ist ein beliebiges Zeichen (außer dem Leerzeichen) und davon beliebig viele:&lt;br /&gt;
&lt;br /&gt;
        NOBLANK = &#039;[^ ]*&#039;&lt;br /&gt;
&lt;br /&gt;
bzw. wenn der Wert zusätzlich auch nicht leer sein soll:&lt;br /&gt;
&lt;br /&gt;
        NOBLANK = &#039;[^ ]+&#039;&lt;br /&gt;
&lt;br /&gt;
Disk und Partition: Gültige Bezeichner für eine Disk beginnen mit hd bei IDE-Disks bzw sd bei SCSI-Disks. Dann folgen Buchstaben von a-z (a für die erste Disk, b für die 2., ...) und bei Partitionen die Zahlen 1-8 (1-4 für die ersten 4 Partitionen, die Primär bzw. Extended (nur eine) sein können und 5-8 für die logischen Partitionen innerhalb einer extended Partition). Die Ausdrücke sehen dann wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
        DISK      = &#039;(hd|sd)[a-z]&#039;&lt;br /&gt;
        PARTITION = &#039;(hd|sd)[a-z][1-8]&#039;&lt;br /&gt;
&lt;br /&gt;
Sehen wir uns das ganze nochmal am Beispiel der IP-Addresse an. Eine IP-Adresse besteht aus 4 Octets, die mit einem &#039;.&#039; getrennt sind. Ein Octet kann eine Zahl zwischen 0 und 255 sein. Definieren wir als erstes ein Octet. Es kann&lt;br /&gt;
&lt;br /&gt;
eine Zahl zwischen 0 und 9 sein: 	[0-9]&lt;br /&gt;
eine Zahl zwischen 00 und 99: 	[0-9][0-9]&lt;br /&gt;
eine Zahl zwischen 100 und 199: 	1[0-9][0-9]&lt;br /&gt;
eine Zahl zwischen 200 und 249: 	2[0-4][0-9]&lt;br /&gt;
eine Zahl zwischen 250 und 255 sein: 	25[0-5]&lt;br /&gt;
&lt;br /&gt;
Da sich die ersten drei Teile stark ähneln, kann man sie zusammenfassen:&lt;br /&gt;
&lt;br /&gt;
    * ein Zahl zwischen 0 und 199: 1?[0-9]?[0-9] (die ersten beiden Stellen können, aber müssen nicht da sein)&lt;br /&gt;
&lt;br /&gt;
Das ganze sind Alternativen, also fassen wir sie einfach mittels &#039;|&#039; zu einem Ausdruck zusammen: &#039;1?[0-9]?[0-9]|2[0-4][0-9]|25[0-5]&#039; und haben damit ein Octet. Daraus können wir nun eine IP-Adresse machen, 4 Octets mit Punkten voneinander getrennt (der Punkt muß mittels backslash gequotet werden, da er sonst für ein beliebiges Zeichen steht). Basierend auf der Syntax der Exp-Files sieht das ganze dann wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
        OCTET  = &#039;1?[0-9]?[0-9]|2[0-4][0-9]|25[0-5]&#039;&lt;br /&gt;
        IPADDR = &#039;((RE:OCTET)\.){3}(RE:OCTET)&#039;&lt;br /&gt;
&lt;br /&gt;
== Erweiterte Prüfungen der Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
Manchmal ist es notwendig, komplexere Überprüfungen durchzuführen. Beispiele für solche komplexeren Dinge wären z.B. Abhängigkeiten zwischen Paketen oder Bedingungen, die nur erfüllt sein müssen, wenn Variablen bestimmte Werte annehmen. So muß z.B. bei Auswahl eines PCMCIA-ISDN-Adapters auch das PCMCIA-Paket installiert werden.&lt;br /&gt;
&lt;br /&gt;
Um diese Überprüfungen durchführen zu können, kann man in /etc/check.d/&amp;lt;PACKAGE&amp;gt;.ext kleinere Tests schreiben. Die Sprache besteht aus folgenden Elementen:&lt;br /&gt;
&lt;br /&gt;
   1. Schlüsselwörter:&lt;br /&gt;
&lt;br /&gt;
          * Kontrollfluß:&lt;br /&gt;
&lt;br /&gt;
                o if (expr) then statement else statement fi&lt;br /&gt;
                o foreach var in set_var do statement done&lt;br /&gt;
                o foreach var in var_n do statement done&lt;br /&gt;
&lt;br /&gt;
          * Abhängigkeiten:&lt;br /&gt;
                o provides package version x.y.z&lt;br /&gt;
                o depends on package version x.y&lt;br /&gt;
&lt;br /&gt;
          * Aktionen:&lt;br /&gt;
                o warning ``warning&#039;&#039;&lt;br /&gt;
                o error ``error&#039;&#039;&lt;br /&gt;
                o fatal_error ``fatal error&#039;&#039;&lt;br /&gt;
                o set var = value&lt;br /&gt;
                o stat (filename, res)&lt;br /&gt;
                o split (string, set_variable, character)&lt;br /&gt;
   2. Datentypen: strings, numerische Werte, Versionsnummern, Arrays&lt;br /&gt;
   3. Logische Operationen: &amp;lt;, ==, &amp;gt;, !=, !, &amp;amp;&amp;amp;, ||, =, copy_pending&lt;br /&gt;
&lt;br /&gt;
== Kommunikation mit dem Nutzer ==&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe von Funktionen kann man Nutzer warnen, einen Fehler signalisieren oder die Prüfung sofort abbrechen. Das Format sieht wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
    * warning ``text&#039;&#039;&lt;br /&gt;
    * error ``text&#039;&#039;&lt;br /&gt;
    * fatal_error ``text&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Im Text kann man auf Variablen Bezug nehmen, indem man einfach den Namen mit einem vorangestellten &#039;$&#039; oder &#039;%&#039; Zeichen in den Text schreibt (evtl. in eingeschlossen, um den Variablenamen vomm umgebenden Text abzugrenzen). mkfli4l versucht den darauffolgenden Text (Ziffern, Zahlen, &#039;_&#039;) als Variablennamen zu interpretieren und setzt bei einem vorangestellten &#039;$&#039; den Inhalt der Variablen an dieser Stelle ein, wenn Sie definiert ist, bzw bei einem vorangestellten &#039;%&#039; den vollständigen Namen der aktuellen %-Variable. Sonst steht der originale Text da. Will man wirklich ein &#039;$&#039; oder ein &#039;%&#039; im Text haben, schreibt man &#039;$$&#039; bzw. &#039;%%&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Zuweisungen ===&lt;br /&gt;
&lt;br /&gt;
Benötigt man aus irgend einem Grund eine temporäre Variable, kann man diese einfach mit ``set var [= value]&#039;&#039; anlegen. Die Variable darf kein Config-Variable sein. Läßt man den ``= value&#039;&#039; Teil weg, wird die Variable einfach auf ``yes&#039;&#039; gesetzt, so daß man sie hinterher einfach in einer if-Anweisung testen kann. Wird ein Zuweisungsteil angegeben, kann hinter dem Gleichheitszeichen alles stehen, normale Variablen, Indizierte Variablen, Zahlen, Zeichenketten, Versionen.&lt;br /&gt;
&lt;br /&gt;
=== Arrays ===&lt;br /&gt;
&lt;br /&gt;
Will man auf einzelne Elemente einer %-Variablen (eines Arrays) zugreifen, kann man das wie gewohnt mit %_var[index] tun, wobei für jedes % Zeichen ein [ Index ] auftauchen muß.&lt;br /&gt;
&lt;br /&gt;
Abfragen von Eigenschaften einer Datei - stat&lt;br /&gt;
&lt;br /&gt;
stat() ermöglicht es, Eigenschaften einer Datei abzufragen. Zur Verfügung gestellt wird im Augenblick lediglich die Größe einer Datei, andere Attribute sind aber leicht hinzuzufügen. Abfragen sehen wie folgt aus (wobei die verwendeten Parameter nur Beispiele sind):&lt;br /&gt;
&lt;br /&gt;
        stat (``unix/Makefile&#039;&#039;, test)&lt;br /&gt;
&lt;br /&gt;
Danach sind zwei Variablen definiert:&lt;br /&gt;
&lt;br /&gt;
    * test_res: Resultat des Systemrufs stat() (``OK&#039;&#039;, wenn Systemruf erfolgreich, sonst Fehlermeldung des Systemrufs)&lt;br /&gt;
    * test_size: Größe der Datei&lt;br /&gt;
&lt;br /&gt;
Das könnte dann z-B. so aussehen:&lt;br /&gt;
&lt;br /&gt;
        stat (``unix/Makefile&#039;&#039;, test)&lt;br /&gt;
        if (``$test_res&#039;&#039; == ``OK&#039;&#039;)&lt;br /&gt;
        then&lt;br /&gt;
                warning ``test_size = $test_size&#039;&#039;&lt;br /&gt;
        else&lt;br /&gt;
                error ``Error &#039;$test_res&#039; while trying to get size of ...&#039;&#039;&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
=== Auseinandernehmen von Parametern - split ===&lt;br /&gt;
&lt;br /&gt;
Oftmals werden Variablen mir mehreren Parametern belegt, die dann in Startup-Scripten erst wieder auseinandergenommen werden. Will man diese bereits vorher auseinandernehmen und Tests mit ihnen durchführen, nimmt man split.&lt;br /&gt;
&lt;br /&gt;
        split (string, %_var, character)&lt;br /&gt;
&lt;br /&gt;
Der String kann durch eine Variable, %-Variable oder direkt als String angegeben werden. mkfli4l zerlegt ihn an den Stellen, an denen das Trennzeichen auftaucht und erzeugt je eine Instanz der %-Variablen. Über diese kann man dann hinterher Tests laufen lassen. Steht zwischen zwei Trennzeichen nichts, wird eine Instanz mit einer leeren Zeichenkette als Wert erzeugt. Ausnahme ist &#039; &#039;, hier werden alle whitespaces konsumiert und keine leeren Variablen erzeugt.&lt;br /&gt;
&lt;br /&gt;
Sollen die bei der Zerlegung entstandenen Elemente in einem numerischen Kontext verwendet werden (z.B. als Index), muß das beim Aufruf von Split spezifiert werden. Das geschieht durch das zusätzliche Attribut &#039;numeric&#039;. Der Aufruf sieht dann wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
        split (string, %_var, character, numeric)&lt;br /&gt;
&lt;br /&gt;
===  Kontrollfluss ===&lt;br /&gt;
&lt;br /&gt;
        if (expr)&lt;br /&gt;
        then&lt;br /&gt;
                statement&lt;br /&gt;
        else&lt;br /&gt;
                statement&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
Eine klassische if-Konstruktion, wie man sie kennt. Ist die Bedingung war, wird der then-Teil ausgeführt, ist die Bedingung falsch, wird der else-Teil ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Will man Tests über %-Variablen durchführen, muß man jede einzelne Variable testen. Dazu gibt es das foreach-Statement in zwei Varianten:&lt;br /&gt;
&lt;br /&gt;
        foreach loop_var in set_var&lt;br /&gt;
        do&lt;br /&gt;
                statement&lt;br /&gt;
        done&lt;br /&gt;
&lt;br /&gt;
Diese Schleife iteriert über alle %-Variablen, angefangen bei eins bis zum in der dazugehörigen (in /etc/check.d/&amp;lt;PACKAGE&amp;gt;.txt stehenden) Variable_n stehenden Index n. Die Laufvariable loop_var nimmt dabei die jeweiligen Werte der %-Variablen an.&lt;br /&gt;
&lt;br /&gt;
Das Statement kann dabei eine der oben beschriebenen Funktionen if, foreach, provides, depends, warning, error oder fatal_error sein.&lt;br /&gt;
&lt;br /&gt;
Will man genau eine %-Variable testen, kann man diese mittels var_%[index] auswählen. Der index kann dabei eine normale Variable, ein String, oder wiederum ein indiziertes Array sein.&lt;br /&gt;
&lt;br /&gt;
        foreach loop_var in var_n&lt;br /&gt;
        do&lt;br /&gt;
                statement&lt;br /&gt;
        done&lt;br /&gt;
&lt;br /&gt;
Diese Schleife läuft von 1 bis var_n. Man kann die Schleifenvariable loop_var dazu benutzen, um _% Variablen zu indizieren. Will man also nicht nur über eine _% Variable iterieren, sondern über mehrere gleichzeitig, nimmt man diese Variante der Schleife und verwendet die loop_var zum Indizieren mehrerer _% Variablen.&lt;br /&gt;
&lt;br /&gt;
=== Expressions ===&lt;br /&gt;
&lt;br /&gt;
Die Expressions erlaubt so gut wie alles, was man von einer Programmiersprache gewöhnt ist. Ein in einem Ausdruck auftauchender Wert &#039;val&#039; kann eine Variable, ein String oder ein indiziertes Array sein. Variablen in Strings werden dabei wie oben beschrieben ersetzt. Ein Test auf die Gleichheit zweier Variablen könnte also so aussehen:&lt;br /&gt;
&lt;br /&gt;
        var1 == var2&lt;br /&gt;
        ``$var1&#039;&#039; == ``$var&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Zu beachten ist dabei, daß der Vergleich in Abhängigkeit vom Typ der Variable erfolgt, der in /etc/check.d/&amp;lt;PACKAGE&amp;gt;e festgelegt wurde. Variablen, die als Typnamen einen mit NUM beginnenden Namen haben erhalten einen numerischen Typ. Ist einer der beiden Variablen numerisch, erfolgt der Vergleich auf numerischer Basis, d.h. die Zeichenketten werden in Zahlen umgewandelt und dann vergleichen. Sonst erfolgt der Vergleich auf String-Basis; ein Vergleich von &#039;05&#039; und &#039;5&#039; geht ergibt ungleich, ein Vergleich von &#039;18&#039; und &#039;9&#039; ergibt &#039;18&#039; &amp;lt; &#039;9&#039;.&lt;br /&gt;
&lt;br /&gt;
Für den Vergleich von Versionen wird das Hilfkonstrukt numeric(version) eingeführt, welches den numerischen Wert für einen Versionsstring für Vergleichszwecke bestimmt . numeric(version) == sub_version + 1000 * minor_version + 10000 * major_version:&lt;br /&gt;
&lt;br /&gt;
Eine Vollständige Auflistung aller Ausdrücke ist in Tabelle 35.1 zu finden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tabelle 35.1: Logische Ausdrücke&lt;br /&gt;
expr 	true if&lt;br /&gt;
id 	id == &#039;yes&#039;&lt;br /&gt;
val == val 	strings/numerische Werte sind identisch&lt;br /&gt;
val != val 	strings/numerische Werte sind verschieden&lt;br /&gt;
val == number 	numerischer Wert von val == number&lt;br /&gt;
val != number 	numerischer Wert von val != number&lt;br /&gt;
val &amp;lt; number 	numerischer Wert von val &amp;lt; number&lt;br /&gt;
val &amp;gt; number 	numerischer Wert von val &amp;gt; number&lt;br /&gt;
val == version 	numeric(val) == numeric(version)&lt;br /&gt;
val &amp;lt; version 	numeric(val) &amp;lt; numeric(version)&lt;br /&gt;
val &amp;gt; version 	numeric(val) &amp;gt; numeric(version)&lt;br /&gt;
( expr ) 	Ausdruck in Klammern ist wahr&lt;br /&gt;
expr &amp;amp;&amp;amp; expr 	beide Ausdrücke sind wahr&lt;br /&gt;
expr || expr 	mind. einer der beiden Audrücke ist wahr&lt;br /&gt;
copy_pending(id) 	siehe Beschreibung&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Prüfen, ob in Abhängigkeit vom Wert einer Variable ein File kopiert wurde: copy_pending&lt;br /&gt;
&lt;br /&gt;
Mit den im Check-Prozeß gewonnenen Informationen prüft die Funktion copy_pending() ob in Abhängigkeit vom Wert einer Variable ein File kopiert wurde, oder nicht. Das kann man verwenden, um z.B. zu testen, ob der vom Nutzer angegebene Treiber auch wirklich existiert und kopiert wurde. copy_pending akzeptiert den zu prüfenden Namen in Form einer Variablen oder eines Strings. Im String werden Ersetzungen wie oben beschrieben durchgeführt, so daß man z.B. mittels einer foreach Schleife und einem ``%loop_var&#039;&#039; alle Inkarantionen einer %-Variable prüfen kann.&lt;br /&gt;
&lt;br /&gt;
copy_pending() prüft dazu, ob&lt;br /&gt;
&lt;br /&gt;
    * die Variable aktiv ist (wenn sie von einem opt abhängt, muß dieses auf &#039;yes&#039; gesetzt sein)&lt;br /&gt;
&lt;br /&gt;
    * die Variable in einem opt/package.txt File referenziert wurde&lt;br /&gt;
&lt;br /&gt;
    * ob in Abhängigkeit vom aktuellen Wert ein File kopiert wurde.&lt;br /&gt;
&lt;br /&gt;
Ein kleines Beispiel für die Anwendung all dieser Funktionen findet man im template package.&lt;br /&gt;
&lt;br /&gt;
=== Systemdateien aktualisieren ===&lt;br /&gt;
&lt;br /&gt;
Manchmal ist es notwendig Einträge zu Systemdateien hinzuzufügen bzw. diese zu ändern. Damit die Dateien nicht direkt bearbeitet werden müssen, wurde ab dem base-Paket v1.0.8 eine einheitliche Schnittstellenfunktion realisiert. Initial wurden Funktionen für das Aktualisieren von /etc/host.allow, /etc/host.deny, /etc/services und /etc/inittab implementiert.&lt;br /&gt;
&lt;br /&gt;
/etc/host.allow&lt;br /&gt;
&lt;br /&gt;
Will ein Programm Einträge zu der Datei /etc/hosts.allow hinzufügen, so muß es eine Datei /etc/hosts.allow.&amp;lt;package-name&amp;gt; schreiben, die wie folgt aussehen sollte:&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# /etc/hosts.allow.nfsserver list file generated by /var/install/config.d/nfsserver.sh v1.0.1-3&lt;br /&gt;
#&lt;br /&gt;
portmap: 192.168.6.0/24&lt;br /&gt;
lockd:   192.168.6.0/24&lt;br /&gt;
rquotad: 192.168.6.0/24&lt;br /&gt;
mountd:  192.168.6.0/24&lt;br /&gt;
statd:   192.168.6.0/24&lt;br /&gt;
&lt;br /&gt;
Um die Änderungen bzw. Ergänzungen abschließend zu übernehmen muß noch das Programm &#039;/var/install/bin/update-hosts.allow &amp;lt;package-name&amp;gt;&#039; aufgerufen werden. Bei der Deinstallation des Paketes muß nur die Datei /etc/hosts.allow.&amp;lt;package-name&amp;gt; gelöscht und erneut das update-hosts.allow- Script aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
/etc/host.deny&lt;br /&gt;
&lt;br /&gt;
Will ein Programm Einträge zur Datei /etc/hosts.deny hinzufügen, so muß es eine Datei /etc/hosts.deny.&amp;lt;package-name&amp;gt; schreiben, die wie folgt aussehen sollte:&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# /etc/hosts.deny.nfsserver list file generated by /var/install/config.d/nfsserver.sh v1.0.4-1&lt;br /&gt;
#&lt;br /&gt;
portmap: ALL&lt;br /&gt;
lockd:   ALL&lt;br /&gt;
mountd:  ALL&lt;br /&gt;
rquotad: ALL&lt;br /&gt;
statd:   ALL&lt;br /&gt;
&lt;br /&gt;
Um die Änderungen bzw. Ergänzungen abschließend zu übernehmen muß noch das Programm &#039;/var/install/bin/update-hosts.deny &amp;lt;package-name&amp;gt;&#039; aufgerufen werden. Bei der Deinstallation des Paketes muß nur die Datei /etc/hosts.deny.&amp;lt;package-name&amp;gt; gelöscht und erneut das update-hosts.deny- Script aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
/etc/services&lt;br /&gt;
&lt;br /&gt;
Will ein Programm Einträge zur Datei /etc/services hinzufügen, so muß es eine Datei /etc/services.&amp;lt;package-name&amp;gt; schreiben, die wie folgt aussehen sollte:&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# /etc/services.antispam list file generated by /var/install/config.d/antispam.sh v1.2.2&lt;br /&gt;
#&lt;br /&gt;
spamd           783/tcp               # SpamAssassin daemon&lt;br /&gt;
&lt;br /&gt;
Um die Änderungen bzw. Ergänzungen abschließend zu übernehmen muß noch das Programm &#039;/var/install/bin/update-services &amp;lt;package-name&amp;gt;&#039; aufgerufen werden. Als Basis wird immer die Datei /etc/services.std verwendet deren Einträge dann ersetzt bzw. zu der neue Einträge hinzugefügt werden. Bei der Deinstallation des Paketes muß nur die Datei /etc/services.&amp;lt;package-name&amp;gt; gelöscht und erneut das update-services-Script aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
/etc/inittab&lt;br /&gt;
&lt;br /&gt;
Will ein Programm Einträge zur Datei /etc/inittab hinzufügen, so muß es eine Datei /etc/inittab.&amp;lt;package-name&amp;gt; schreiben, die wie folgt aussehen sollte:&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# /etc/inittab.vbox list file generated by /var/install/config.d/vbox.sh v1.0.4-1&lt;br /&gt;
#&lt;br /&gt;
I6:2345:respawn:/usr/local/vbox/sbin/vboxgetty -d /dev/ttyI6&lt;br /&gt;
I7:2345:respawn:/usr/local/vbox/sbin/vboxgetty -d /dev/ttyI7&lt;br /&gt;
&lt;br /&gt;
Um die Änderungen bzw. Ergänzungen abschließend zu übernehmen muß noch das Programm &#039;/var/install/bin/update-inittab &amp;lt;package-name&amp;gt;&#039; aufgerufen werden. Als Basis wird immer die Datei /etc/inittab.std verwendet deren Einträge dann ersetzt bzw. zu der neue Einträge hinzugefügt werden. Bei der Deinstallation des Paketes muß nur die Datei /etc/inittab.&amp;lt;package-name&amp;gt; gelöscht und erneut das update-inittab-Script aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
=== Debug-Modus ===&lt;br /&gt;
&lt;br /&gt;
Wird die Option -debug an die genannten Scripte übergeben, so werden detailliertere Informationen über eventuell gefundene Fehler ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Beispiel&lt;br /&gt;
&lt;br /&gt;
Die Implementierung wird am Beispiel der Konfiguration des nfsserver-Paketes gezeigt:&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
pgmname=`basename $0`&lt;br /&gt;
&lt;br /&gt;
# set file names&lt;br /&gt;
configfile=$testroot/etc/config.d/nfsserver&lt;br /&gt;
generate_hostsallow=/etc/hosts.allow.nfsserver&lt;br /&gt;
&lt;br /&gt;
# other parameters&lt;br /&gt;
nfsserver_version=&amp;quot;v1.0.1-3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;#&amp;quot;&lt;br /&gt;
echo &amp;quot;# $generate_hostsallow list file generated by $pgmname $nfsserver_version&amp;quot;&lt;br /&gt;
echo &amp;quot;#&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
# set access rights&lt;br /&gt;
chown root $generate_hostsallow&lt;br /&gt;
chgrp root $generate_hostsallow&lt;br /&gt;
chmod 0640 $generate_hostsallow&lt;br /&gt;
&lt;br /&gt;
# update file&lt;br /&gt;
/var/install/bin/update-hosts.allow $pgmname&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ip-up/down Mechanismus ==&lt;br /&gt;
&lt;br /&gt;
Sollen gewisse Aktionen nach dem Start bzw Stop einer Internetverbindung durchgeführt werden, dann kann man in das Verzeichniss /etc/ppp/ Skripte ablegen, die diese Aktionen durchführen. Der Name des Skripts bestimmt, wann es aufgerufen wird. Es gelten daher folgende Namenskonventionen (alle Namensteile sind durch einen Punkt (.) voneinander getrennt.&lt;br /&gt;
&lt;br /&gt;
    * Der Anfang wird durch die Namen ,,ip-up`` oder ,,ip-down`` gebildet. Ein Skript, dessen Name mit mit ,,ip-up`` beginnt, wird beim Starten der Internetverbindung ausgeführt, eines mit ,,ip-down`` im Namen nach Beendigung einer Internetverbindung.&lt;br /&gt;
    * Der nächste Namensteil ist eine dreistellige Zahl. Diese definieren die Reihenfolge, in der die Skripte abgearbeitet werden. Die Zahlen von 000 bis 100 sind für das Routing- und Basis-Paket selbst reserviert, alle anderen Pakete dürfen die Zahlen von 101 bis 999 benutzen.&lt;br /&gt;
    * der letzte Namensteil ist frei wählbar und sollte im Normalfall Aufschluss darüber geben, was dieses Skript macht bzw zu welchem Paket es gehört.&lt;br /&gt;
&lt;br /&gt;
Als Beispiel sei&lt;br /&gt;
&lt;br /&gt;
ip-up.010.dns&lt;br /&gt;
&lt;br /&gt;
genannt, welche als Bestandteil des Routing-Pakets nach dem Start der Internetverbindung die DNS-Server im System bekannt macht.&lt;br /&gt;
&lt;br /&gt;
ACHTUNG&lt;br /&gt;
In den ,,ip-down,, Skripten dürfen keine Aktionen durchgeführt werden, die eine erneute Internet-Einwahl zur Folge hat.&lt;br /&gt;
&lt;br /&gt;
ACHTUNG&lt;br /&gt;
Diese Skripts dürfen nicht mit&lt;br /&gt;
exit 0&lt;br /&gt;
abgeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
Innerhalb der Skripte können folgende Variablen benutzt werden:&lt;br /&gt;
&lt;br /&gt;
$real_interface&lt;br /&gt;
    - das aktuelle Interface &lt;br /&gt;
$interface&lt;br /&gt;
    - das imond-Interface &lt;br /&gt;
$tty&lt;br /&gt;
    - verbundenes Terminal, möglicherweise leer &lt;br /&gt;
$speed&lt;br /&gt;
    - die Verbindungsgeschwindigkeit &lt;br /&gt;
$local&lt;br /&gt;
    - die eigene IP-Adresse &lt;br /&gt;
$remote&lt;br /&gt;
    - die IP-Adresse der Gegenstelle &lt;br /&gt;
&lt;br /&gt;
== Hinweise und Tricks ==&lt;br /&gt;
&lt;br /&gt;
Um Probleme mit den Benutzerrechten (zum Beispiel Dateien, die einem User mit der ID 501 gehören, der auf dem eisfair-Server gar nicht existiert) zu verhindern, empfiehlt es sich, Packages mit&lt;br /&gt;
&lt;br /&gt;
tar -czv --owner=root --group=root -f package.tar.gz *&lt;br /&gt;
&lt;br /&gt;
zu verpacken. Damit gehören die entpackten Dateien erstmals dem Superuser; dieser Zustand kann, sofern er gewünscht ist, in dem Installationsskript tmpinstall.sh geändert werden.&lt;/div&gt;</summary>
		<author><name>Lars</name></author>
	</entry>
	<entry>
		<id>https://wiki.sachsen.schule/dwiki/index.php?title=Entwickler-Hinweise&amp;diff=528</id>
		<title>Entwickler-Hinweise</title>
		<link rel="alternate" type="text/html" href="https://wiki.sachsen.schule/dwiki/index.php?title=Entwickler-Hinweise&amp;diff=528"/>
		<updated>2005-06-09T14:28:48Z</updated>

		<summary type="html">&lt;p&gt;Lars: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier gibt es einige Informationen über die Entwickler von Arktur und auch die entsprechenden Dokumente, um an Arktur selbst mitzuentwickeln:&lt;br /&gt;
&lt;br /&gt;
* Die [[Personen]], die an der Arktur-Entwicklung beteiligt sind&lt;br /&gt;
&lt;br /&gt;
* Dokumentation über einzelne, wichtige [[Skripte und Dateien]]&lt;br /&gt;
&lt;br /&gt;
* [[Entwickler-Dokumentation]]&lt;/div&gt;</summary>
		<author><name>Lars</name></author>
	</entry>
</feed>