... Formate1.1
HTML, PostScript und PDF
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... orientiert1.2
einfache Fälle sollten aber auch auf anderen Varianten laufen. Aber nur die ganz einfachen, Microsoft nmake versteht zum Beispiel nur die älteren Pattern-Rules.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... abgespeichert1.3
das ist eine Datei, die makefile oder Makefile heißt, dadurch ist sie etwas leichter wiederzuerkennen.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... Datei1.4
natürlich können für beide Fälle mehrere Dateien angegeben werden
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... Tabulator-Zeichen1.5
Demzufolge sind alle Editoren für Makefiles ungeeignet, die Tabulatoren durch Leerzeichen ersetzen.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... soll1.6
idealerweise sollte auch eine Regel existieren, anhand derer make die Datei erstellen kann, ansonsten wird es sich über seine eigene Unwissenheit beschweren: ``make: *** No rule to make target `fire'. Stop.''
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... erstellen1.7
Ansonsten sagt es nur, dass es nichts zu tun gibt.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... ausgeben1.8
Das @ am Anfang sagt makedass es den Befehl selbst nicht ausgeben soll. Ein - würde es anweisen eventuell auftretende Fehler zu ignorieren und trotzdem fortzufahren.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... Compiler1.9
Zumindest die, die er für das Compilieren braucht. Speziell: -g=erzeuge Debug-Symbole für gdb und -O2=Optimiere den Code.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... Linker1.10
Hier wird die Mathematische Bibliothek eingebunden, was bei ls natürlich nicht sehr sinnvoll ist, aber es verdeutlicht die Möglichkeiten... Wie man auch sehr gut sieht bewirkt ein ``$\backslash$'' am Ende der Zeile, dass das Kommando auf der nächsten Zeile fortgesetzt wird.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... Muster1.11
Im Englischen ``Pattern'', daher nennt man diese Regeln auch ``Pattern Rules''.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... Regeln1.12
...deren detaillierte und einzelne Auflistung ich mir aus gutem Grund gespart habe...
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...make1.13
bei GNU make: info make
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... ausgegeben1.14
das spart viele @ vor den Kommandos
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... werden1.15
Der Name ist wichtig, um den Aufruf langer Kommandoketten zu vereinfachen (Bsp. aus meinen regelmäßigen Kernel-übersetzungen): make dep clean all modules bzImage; dass sie als erste dasteht ist wichtig, da oft erwartet wird, dass sie auch aufgerufen wird, wenn kein Parameter angegeben wird.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... ist1.16
angenommen PREFIX enthält /usr/local, dann kommen Programme in /usr/local/bin, Bibliotheken in /usr/local/lib, man-Pages in /usr/local/man usw.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...make1.17
einfach info make aufrufen
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... kennen2.1
wahrscheinlich noch ein dutzend Probleme mehr, aber die kann Versionsverwaltung wahrscheinlich nicht lösen
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... verbraucht2.2
gute Versionsverwaltungen speichern nie den ganzen Abzug des Quellbaumes, sondern nur die Änderungen
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... Datei2.3
es wird der selbe Algorithmus benutzt, wie in RCS -- ``Revision Control System'', der nur jeweils die Änderungen speichert
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... gesperrt2.4
Wenn Kollisionen auftreten müssen die Nutzer diese auflösen, aber der Algorithmus zum Ausgleich ist sehr effektiv und damit treten Kollisionen nur extrem selten auf.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... Rechte-Verwaltung2.5
es gibt aber ein einfaches Skript, das zumindest Schreibzugriffe dateiweise verhindern kann
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... CVSROOT2.6
man könnte auch sagen einen ``Server'', aber das würde implizieren, dass ein zentrales Programm das CVSROOT verwaltet -- was aber nicht immer zutrifft, meist greifen die ``Clients'' selbst auf die Dateien zu
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... Verwaltung2.7
im Repository CVSROOT
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... anlegen2.8
also meistens nur eines
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... existieren2.9
einzige Einschränkung ist, das keines davon CVS oder Attic heissen darf
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... Verzeichnisstruktur2.10
bis auf die CVS-Verzeichnisse
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... Programmierung2.11
oder nehmen wir einfach vorhandene Quelltexte
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... übrig2.12
auch diese Dateien sind i.d.R. einfache Textdateien: *.xpm, *.ps, *.eps
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... ``auschecken''2.13
Mit auschecken (check-out) bezeichnet man das Kopieren der Dateien aus dem Repository in ein lokales Verzeichnis, der umgekehrte Weg wird als einchecken (check-in) bezeichnet.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... wächst2.14
Nehmen wir das zumindest einmal an, da das die meisten Projekte so tun.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... Entwickeln2.15
Meistens eine ``stable'' und eine ``development'' Version, also eine für Nutzer und eine für die Entwickler selbst.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... erweitert2.16
CVS benutzt mehrstellige Versionsnummern zur Verwaltunge der Versionen jeder Datei. Alle Nummern mit gerader Anzahl von Stellen sind dem Nutzer zugänglich, alle mit ungerader Anzahl von Stellen werden von CVS intern verwendet.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... Sinn2.17
Zugegeben mein lokales CVS hat mir schon oft mühevolle Rekonstruktionen erspart. Schon weil in älteren Versionen meiner Quelltexte oft sehr interessante Algorithmen versteckt waren, die später durch andere kompliziertere Versionen ersetzt wurden.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... können2.18
...und wenn es auch nur das Firmen-LAN ist
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... rsh2.19
Es gibt noch weitere, wie GSSAPI, aber die sind weniger gebräuchlich, da pserver sehr gut für anonymous-CVS und rsh für Entwickler-CVS geeignet sind. Ich beschränke mich also auf diese beiden, alle anderen sind sehr gut in der CVS-Dokumentation beschrieben.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... werden2.20
meist ein Befehl wie /etc/init.d/inetd reload
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... verschlüsselt2.21
Nun, ``verschlüsselt'' ist eigentlich zu hoch gegriffen: es ist nur mit einem Wert per xor verknüpft. Das hat nur den Sinn root davon abzuhalten das Passwort ausversehen zu lesen, daher sollte man diese Datei für jeden ausser sich selbst unlesbar speichern ().
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... obigen2.22
die ersten beiden repräsentieren das Passwort ``foo'', das dritte ist ein leeres Passwort
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... eintragen2.23
Eine solche Möglichkeit, ssh, wird in [*] vorgestellt
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... sein2.24
möglichst die selbe SSH-Version, da die Protokolle von SSH1 und SSH2 inkompatibel sind
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... Newline2.25
Zeilenende-Zeichen, Enter, Return, ...
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.