- ... 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 ``'' 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, ...
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.