Debian-Referenz --------------- Osamu Aoki Übersetzer: Jens Seidel Abschnitt A.1, `Autoren' CVS, Don 18. Jan 2007, 11:52:59 UTC ------------------------------------------------------------------------------- Zusammenfassung --------------- Diese Debian-Referenz (http://qref.sourceforge.net/) wurde geschrieben, um einen groben Überblick über das Debian-System in Form einer _Referenz für die Zeit nach der Installation_ zu bieten. Sie behandelt viele Aspekte der Systemadministration mittels _Shell-Kommando_-Beispielen. Grundlegende Tutorials, Tipps und andere Informationen werden dargestellt für Themen inklusive der fundamentalen Konzepte des Debian-Systems, System-Installations-Hinweise, Debian-Paketverwaltung, den Linux-Kernel unter Debian, System-Tuning, Aufbau eines Gateway, Texteditoren, CVS, Programmierung und GnuPG für _Nicht-Entwickler_. Copyright-Hinweis ----------------- Copyright (C) 2001--2005 by Osamu Aoki . Copyright (Kapitel 2) (C) 1996--2001 by Software in the Public Interest. Dieses Dokument kann unter den Bedingungen der GNU General Public License Version 2 oder höher genutzt werden. (http://www.gnu.org/copyleft/gpl.html) Es ist erlaubt, unveränderte Kopien dieses Dokuments zu erstellen und zu vertreiben, vorausgesetzt der Copyright-Hinweis und diese Genehmigung bleiben auf allen Kopien erhalten. Es ist erlaubt, veränderte Kopien dieses Dokuments unter den Voraussetzungen für unverändertes Kopieren, zu erstellen und zu vertreiben, sofern die gesamte resultierende Arbeit unter den Bedingungen einer Genehmigung identisch zu dieser, vertrieben wird. Es ist erlaubt, Übersetzungen dieses Dokuments in eine andere Sprache, unter den obigen Bedingungen für veränderte Versionen zu kopieren und zu verteilen, mit der Ausnahme, dass diese Genehmigung übersetzt, statt im ursprünglichem Englisch, eingebunden werden kann, sofern diese Übersetzung (des Copyrights) von der Free Software Foundation genehmigt ist. ------------------------------------------------------------------------------- Inhalt ------ 1. Vorwort 1.1. Das offizielle Dokument 1.2. Konventionen in diesem Dokument 1.3. Beispielskripte 1.4. Grundlegende Einstellungen 1.5. Grundlagen der Debian-Distributionen 2. Debian-Grundlagen 2.1. Die Debian-Archive 2.1.1. Verzeichnisstrukturen 2.1.2. Debian-Distributionen 2.1.3. Die `stable'-Distribution 2.1.4. Die `testing'-Distribution 2.1.5. Die `unstable'-Distribution 2.1.6. Die `frozen'-Distribution 2.1.7. Debian-Distributions-Kodenamen 2.1.8. In der Vergangenheit verwendete Kodenamen 2.1.9. Die Herkunft der Kodenamen 2.1.10. Das `pool'-Verzeichnis 2.1.11. Historische Bemerkungen über Sid 2.1.12. Heraufgeladene Pakete in `incoming/' 2.1.13. Wiederauffinden eines älteren Paketes 2.1.14. Architekturabhängige Verzeichnisse 2.1.15. Der Quellcode 2.2. Das Debian-Paketverwaltungssystem 2.2.1. Überblick über Debian-Pakete 2.2.2. Debian-Paketformat 2.2.3. Namenskonventionen für Debians Paketdateinamen 2.2.4. Bewahren der lokalen Konfiguration 2.2.5. Debian-Wartungsskripte 2.2.6. Paket-Prioritäten 2.2.7. Virtuelle Pakete 2.2.8. Paketabhängigkeiten 2.2.9. Die Bedeutung von "pre-depends" 2.2.10. Paket-Status 2.2.11. Zurückhalten von Paketen von einem Upgrade 2.2.12. Quellpakete 2.2.13. Erzeugen von Binär- aus Quellcodepaketen 2.2.14. Erzeugen neuer Debian-Pakete 2.3. Aktualisierung eines Debian-Systems 2.3.1. Methoden zum Aktualisieren eines Debian-Systems 2.3.2. Überblick über Paketverwaltungstools 2.3.3. `dpkg' 2.3.4. APT 2.3.5. `dselect' 2.3.6. Aktualisieren eines laufenden Systems 2.3.7. Heruntergeladene und zwischengespeicherte `.deb'-Archiv-Dateien 2.3.8. Aufbewahren des Datensatzes für Upgrades 2.4. Der Debian-Bootvorgang 2.4.1. Das `init'-Programm 2.4.2. Runlevel 2.4.3. Anpassen des Bootvorgangs 2.5. Unterstützung von Vielfalten 2.6. Internationalisierung 2.7. Debian und der Kernel 2.7.1. Kompilierung eines Kernel aus Debian-fremden Quellen 2.7.2. Tools zum Erzeugen angepasster Kernel 2.7.3. Spezielle Regeln für den Umgang mit Modulen 2.7.4. Deinstallation eines alten Kernel-Pakets 3. Debian-System-Installationshinweise 3.1. Allgemeine Linux-System-Installationshinweise 3.1.1. Grundlegendes zur Hardware-Kompatibilität 3.1.2. Bestimmung der PC-Hardware und des Chipsatzes 3.1.3. Bestimmung der PC-Hardware mit Debian 3.1.4. Bestimmen der PC-Hardware mit anderen Betriebssystemen 3.1.5. Ein Lilo-Mythos 3.1.6. GRUB 3.1.7. Wahl der Boot-Disketten 3.1.8. Installation 3.1.9. Hosts und IP im LAN 3.1.10. Benutzerkonten 3.1.11. Anlegen von Dateisystemen 3.1.12. DRAM-Speicher-Richtlinien 3.1.13. Swap-Speicher 3.2. Bash-Konfiguration 3.3. Maus-Konfiguration 3.3.1. PS/2-Mäuse 3.3.2. USB-Mäuse 3.3.3. Touchpad 3.4. NFS-Konfiguration 3.5. Samba-Konfiguration 3.6. Drucker-Konfiguration 3.6.1. `lpr'/`lpd' 3.6.2. CUPS(TM) 3.7. CRON für Desktop-PCs 3.8. Andere Installationshinweise 3.8.1. Installation einiger weiterer Pakete nach der Basisinstallation 3.8.2. Module 3.8.3. Grundlegende CD-RW-Einrichtung 3.8.4. Großer Speicher und automatisches Abschalten 3.8.5. Eigenartige Probleme beim Zugriff auf einige Webseiten 3.8.6. Dialup-PPP-Konfiguration 3.8.7. Andere Konfigurationsdateien in `/etc/' 4. Debian-Tutorials 4.1. Informationsquellen 4.2. Die Linux-Konsole 4.2.1. Login 4.2.2. Hinzufügen eines neuen Nutzers 4.2.3. Wie man den Rechner herunterfährt 4.2.4. Kommandozeilenbasiertes Editieren 4.2.5. Kommandoausführung 4.2.6. Die grundlegensten Kommandos zur Erinnerung 4.2.7. Das X-Window-System 4.2.8. Wichtige Tastaturkommandos 4.3. Midnight Commander (MC) 4.3.1. Installation von MC 4.3.2. Starten von MC 4.3.3. Dateimanager 4.3.4. Kommandozeilen-Tricks 4.3.5. Editor 4.3.6. Dateibetrachter 4.3.7. Auto-Start-Eigenschaften 4.3.8. Virtuelles FTP-Dateisystem 4.4. Grundlagen des GNU/Linux-Dateisystems 4.4.1. Zugriffsrechte von Dateien und Verzeichnissen 4.4.2. Zeitmarken 4.4.3. Links 4.5. Weiterführende Informationen 5. Aktualisieren einer Distribution auf `stable', `testing' oder `unstable' 5.1. Aktualisierung von Potato auf Woody 5.2. Vorbereitung einer Aktualisierung 5.3. Aktualisierung 5.3.1. Verwendung von `dselect' 5.3.2. Verwendung von `apt-get' 6. Debian-Paketverwaltung 6.1. Einführung 6.1.1. Grundlegende Werkzeuge 6.1.2. Nützliche Tools 6.2. Grundlagen der Debian-Paketverwaltung 6.2.1. _Aufgaben-Profile_ mit `tasksel' oder `aptitude' installieren 6.2.2. Einrichten des APT-Systems 6.2.3. `dselect' 6.2.4. `aptitude' 6.2.5. Die `apt-cache'- und `apt-get'-Kommandos 6.2.6. Verwenden einer speziellen Version der Debian-Distribution 6.2.7. Downgrad aller Pakete zu `stable' 6.2.8. Überblick über `/etc/apt/preferences' 6.3. Debian-Überlebensbefehle 6.3.1. Überprüfen von Bugs in Debian und Suche nach Hilfe 6.3.2. APT-Upgrade-Fehlersuche 6.3.3. Wiederherstellung mit `dpkg' 6.3.4. Wiederherstellung von Paketauswahldaten 6.3.5. Systemrettung nach Löschen von `/var' 6.3.6. Installation eines Pakets in ein nicht bootfähiges System 6.3.7. Der dpkg-Befehl funktioniert nicht mehr -- was nun? 6.4. Debian-Nirwana-Befehle 6.4.1. Informationen über eine Datei 6.4.2. Informationen über ein Paket 6.4.3. Nicht-Interaktive Installation mit APT 6.4.4. Installierte Pakete erneut konfigurieren 6.4.5. Deinstallation von Paketen 6.4.6. "Halten" älterer Pakete 6.4.7. Gemischtes `stable'/`testing'/`unstable'-System 6.4.8. Löschen von zwischengespeicherten Paketdateien 6.4.9. Speichern/Kopieren der Systemkonfiguration 6.4.10. Portierung eines Pakets auf die `stable'-Distribution 6.4.11. Lokale Paketarchive 6.4.12. Installation und Konvertierung eines fremden Binärpakets 6.4.13. Verifizierung installierter Paketdateien 6.4.14. Optimierte `sources.list' 6.5. Weitere Debian-Besonderheiten 6.5.1. Der `dpkg-divert'-Befehl 6.5.2. Das `equivs'-Paket 6.5.3. Alternative Befehle 6.5.4. `init' und Runlevel 6.5.5. Deaktivierung von Daemon-Diensten 7. Der Linux-Kernel unter Debian 7.1. Neukompilieren des Kernels 7.1.1. Die Debian-Standardmethode 7.1.2. Klassische Methode 7.1.3. Kernelheader 7.2. Der modularisierte Kernel 2.4 7.2.1. PCMCIA 7.2.2. SCSI 7.2.3. Netzwerk-Funktionalität 7.2.4. EXT3-Dateisystem ( > 2.4.17) 7.2.5. Realtek RTL-8139 Unterstützung in Kernel 2.4 7.2.6. Parallel-Port-Unterstützung 7.3. Tunen des Kernels mittels des proc-Dateisystems 7.3.1. Zu viele geöffnete Dateien 7.3.2. Disk-Flush-Intervalle 7.3.3. Trägheit alter Maschinen mit wenig Speicher 7.4. Der 2.6er Kernel mit udev 8. Debian-Tipps 8.1. Booten des Systems 8.1.1. "Ich habe das root-Passwort vergessen!" (1) 8.1.2. "Ich habe das root-Passwort vergessen!" (2) 8.1.3. Das System kann nicht gestartet werden 8.1.4. Abschalten von X beim Booten 8.1.5. Weitere Tricks mit dem Boot-Prompt 8.1.6. Setzen von GRUB-Boot-Parametern 8.2. Aufzeichnung von Aktivitäten 8.2.1. Aufzeichnen von Shell-Eingaben 8.2.2. X-Aktivitäten aufzeichnen 8.3. Kopieren und Archivieren eines Unterverzeichnis 8.3.1. Grundlegende Kommandos zum Kopieren eines Unterverzeichnis 8.3.2. `cp' 8.3.3. `tar' 8.3.4. `pax' 8.3.5. `cpio' 8.3.6. `afio' 8.4. Differenzielles Backup und Datensynchronisation 8.4.1. Differenzielles Backup mit rdiff 8.4.2. Tägliches Backup mit `pdumpfs' 8.4.3. Regelmäßige differenzielle Backups mit RCS 8.5. Wiederherstellen eines eingefrorenen Systems 8.5.1. Einen Prozess killen/beenden 8.5.2. Alt-SysRq 8.6. Elegante kleine Kommandos zum Merken 8.6.1. Dateibetrachter 8.6.2. Freier Speicher 8.6.3. Setzen der Uhrzeit (BIOS) 8.6.4. Setzen der Uhrzeit (NTP) 8.6.5. Konsole-Eigenschaften wie den Bildschirmschoner steuern 8.6.6. Durchsuchen von Datenbanken zur Systemverwaltung 8.6.7. Sound abstellen (beep) 8.6.8. Fehlermeldungen auf der Konsole 8.6.9. Setzen des korrekten Konsole-Typs 8.6.10. Die Konsole wiederherstellen 8.6.11. Konvertieren einer Textdatei von DOS nach Unix 8.6.12. Konvertierung einer Textdatei mit `recode' 8.6.13. Ersetzung regulärer Ausdrücke 8.6.14. Bearbeiten einer Datei mittels eines Skripts 8.6.15. Extrahieren von Unterschieden und Einbringen von Updates für Quelldateien 8.6.16. Eine große Datei in kleine zerlegen 8.6.17. Extrahieren von Daten aus Tabellen in Textdateien 8.6.18. Skript-Auszüge für Pipe-Kommandos 8.6.19. Skript-Auszüge zum Durchlaufen mehrerer Dateien 8.6.20. Kurze Perl-Skripte 8.6.21. Text oder ein Mailinglistenarchiv aus einer Webseite extrahieren 8.6.22. Formatierte Ausgabe von Webseiten 8.6.23. Formatierte Ausgabe einer Handbuchseite 8.6.24. Vermengen zweier PostScript- oder PDF-Dateien 8.6.25. Ausführungsdauer messen 8.6.26. `nice'-Befehl 8.6.27. Terminplanung für Prozesse (`cron', `at') 8.6.28. Konsolenumschaltung mit `screen' 8.6.29. Grundlagen -- Prüfung des Netzwerks 8.6.30. E-Mail aus dem lokalen Spooler leiten (flush) 8.6.31. Eingefrorene E-Mails aus dem lokalen Spooler entfernen 8.6.32. Neuausliefern von `mbox'-Inhalten 8.6.33. Dateiinhalte zurücksetzen 8.6.34. Dummy-Dateien 8.6.35. `chroot' 8.6.36. Tests auf harte Links 8.6.37. Ein Festplatten-Image `mount'en 8.6.38. Samba 8.6.39. Werkzeuge für fremde Dateisysteme 8.7. Typische Fehler 8.7.1. `rm -rf .*' 8.7.2. `rm /etc/passwd' 9. Tunen eines Debian-Systems 9.1. Hinweise zur System-Inititalisierung 9.1.1. Anpassen der Init-Skripte 9.1.2. Anpassen der System-Protokollierung 9.1.3. Hardware-Optimierung 9.2. Zugriffskontrolle 9.2.1. Zugriffskontrolle mit PAM und login 9.2.2. "Warum GNU `su' nicht die `wheel' Gruppe unterstützt" 9.2.3. Bedeutung verschiedener Gruppen 9.2.4. `sudo' -- eine sicherere Arbeitsumgebung 9.2.5. Zugriffskontrolle auf Daemonen 9.2.6. LDAP -- Leichtgewichtiges Verzeichniszugangsprotokoll 9.3. CD-Brenner 9.3.1. Einführung 9.3.2. Ansatz 1: Module + `lilo' 9.3.3. Ansatz 2: Neukompilieren des Kernels 9.3.4. Weitere Schritte nach der Konfiguration 9.3.5. Bootfähiges CD-Image 9.3.6. Brennen mit dem CD-Brenner (R, RW): 9.3.7. Eine Abbilddatei (Image) einer CD erzeugen 9.3.8. Debian-CD-Images 9.3.9. Sicherheitskopien auf CD-R 9.3.10. Eine Musik-CD kopieren 9.4. Das X-Window Paket 9.4.1. X-System Pakete 9.4.2. Hardware-Erkennung für X 9.4.3. X-Server 9.4.4. X-Client Programme 9.4.5. X-Session 9.4.6. TCP/IP-Verbindungen mit X 9.4.7. X-Fernverbindungen mit `xhost' 9.4.8. X-Fernverbindungen mit `ssh' 9.4.9. `xterm' 9.4.10. X-Ressourcen Datenbank 9.4.11. Administratorrechte unter X 9.4.12. TrueType-Schriften unter X 9.4.13. Web-Browser (graphische) 9.5. SSH 9.5.1. Grundlagen 9.5.2. Port-Umleitung -- für das Tunneln mit SMTP/POP3 9.5.3. Mit weniger Passwörter agieren 9.5.4. Weitere SSH-Client-Programme 9.5.5. SSH-Agent 9.5.6. Problemlösungen 9.6. E-Mail Programme 9.6.1. E-Mail Transport/Transfer Agenten (Exim) 9.6.2. Mail-Hilfsprogramme (Fetchmail) 9.6.3. Mail-Hilfsprogramme (Procmail) 9.6.4. E-Mail-Programme (Mail user agent) am Beispiel Mutt 9.7. Lokalisation und Sprachen 9.7.1. Grundlagen 9.7.2. Lokalisierung mit locale 9.7.3. Introduction to locales 9.7.4. Aktivierung der Lokalisierung 9.7.5. Eine Locale aktivieren 9.7.6. ISO 8601 Datum-Format-locale 9.7.7. Beispiel für die USA (ISO-8859-1) 9.7.8. Beispiel für Frankreich mit Euro-Symbol (ISO-8859-15) 9.7.9. Beispiel für ein zweisprachiges System (japanisches EUC und ISO-8859-1) 9.7.10. Beispiel für UTF-8 in X 9.7.11. Beispiel für UTF-8 in der FB-Konsole 9.7.12. Über locale hinaus 10. Netzwerk-Konfiguration 10.1. Netzwerk-Grundlagen mit IP 10.2. Netzwerk-Konfiguration auf niederer Ebene 10.2.1. Netzwerkkonfiguration auf niederer Ebene -- `ifconfig' und `route' 10.2.2. Netzwerkkonfiguration auf niederer Ebene -- `ip' 10.2.3. Konfiguration der Wi-Fi-Schnittstelle 10.2.4. Konfiguration der PPP-Schnittstelle 10.3. Namensgebung 10.3.1. Hostname 10.3.2. Mailname 10.4. Domain Name Service (DNS) 10.4.1. Resolver 10.4.2. Verwaltung von Nameserver-Informationen -- `resolvconf' 10.4.3. Zwischenspeicherung von Hostnamen -- `nscd', `dnsmasq', `pdnsd', `bind9' 10.4.4. Bereitstellung eines Domain Name Service - `bind' 10.5. Konfiguration der Netzwerkschnittstelle mit DHCP 10.6. High-Level-Netzworkkonfiguration in Debian 10.6.1. High-Level-Netzwerkkonfiguration mit `ifupdown' 10.6.2. High-Level-Konfiguration mit logischen Schnittstellen von `ifupdown' 10.6.3. Automatische Netzwerkkonfiguration mit `ifupdown' 10.6.4. Automatische Netzwerkkonfiguration mit `laptop-net' 10.6.5. Automatische Netzwerkkonfiguration mit `network-manager' 10.7. Umgang mit inkonsistenten Schnittstellennamen seitens des Kernels 10.8. Umschalten der Netzwerkkonfiguration 10.8.1. Umschalten der Netzwerkkonfiguration zur Boot-Zeit 10.8.2. Schalten der Netzwerkkonfiguraion - `hotplug' 10.8.3. Schalten der Netzwerkkonfiguration - `ifplugd' 10.8.4. Schalten der Netzwerkkonfiguration - `waproamd' 10.8.5. Netzwerk-Konfiguration und PCMCIA 10.9. Multi-stage mapping 10.10. Konfiguration der Netzwerk-Dienste 10.11. Netzwerk-Fehlersuche 10.12. Aufbau eines Gateway-Routers 10.12.1. Konfiguration von Netfilter 10.12.2. Verschiedene Netzwerk-Verbindungen verwalten 11. Editoren 11.1. Populäre Editoren 11.2. Rettungseditoren 11.3. Emacs und Vim 11.3.1. Vim Hinweise 11.3.2. Emacs-Hinweise 11.3.3. Starten des Editors 11.3.4. Zusammenfassung der Editorkommandos (Emacs, Vim) 11.3.5. Vim-Konfiguration 11.3.6. Ctags 11.3.7. Konvertierung eines mit Syntax-Highlighting versehenen Schirms in HTML 11.3.8. Aufteilen des Bildschirms mit `vim' 12. Versions-Kontroll-Systeme 12.1. Concurrent Versions System (CVS) -- System für simultane Versionen 12.1.1. Installation eines CVS-Servers 12.1.2. Beispiele für CVS-Sitzungen 12.1.3. Fehlersuche im CVS 12.1.4. CVS-Kommandos 12.2. Subversion 12.2.1. Installation eines Subversion Servers 12.2.2. Verschieben eines CVS-Repositorys nach Subversion 12.2.3. Anwendungsbeispiele von Subversion 13. Programmierung 13.1. Wo man startet 13.2. Shell 13.2.1. Bash -- interaktive _GNU_-Standard-Shell 13.2.2. POSIX-Shells 13.2.3. Shellparameter 13.2.4. Shellumleitung 13.2.5. Bedingte Ausdrucke in der Shell 13.2.6. Kommandozeilenbearbeitung 13.3. Awk 13.4. Perl 13.5. Python 13.6. Make 13.7. C 13.7.1. Ein einfaches C-Programm (`gcc') 13.7.2. Fehlersuche 13.7.3. Flex -- ein besseres Lex 13.7.4. Bison -- ein besseres Yacc 13.7.5. Autoconf 13.8. Web 13.9. Dokument-Aufbereitung 13.9.1. Das `roff'-Satzsystem 13.9.2. SGML 13.9.3. TeX/LaTeX 13.9.4. Literate Programming 13.10. Paketerzeugung 13.10.1. Paketerzeugung für ein einzelnes Programm 13.10.2. Paketerzeugung mit Tools 14. GnuPG 14.1. Installation von GnuPG 14.2. Verwendung von GnuPG 14.3. Umgang mit GnuPG 14.4. Benutzung von GnuPG mit Anwendungen 14.4.1. Benutzung von GnuPG mit Mutt 14.4.2. Benutzung von GnuPG mit Vim 15. Unterstützung für Debian 15.1. Referenzen 15.2. Finden der Bedeutung eines Wortes 15.3. Bestimmen der Popularität eines Debian-Pakets 15.4. Das Debian-Fehlerverfolgungssystem 15.5. Mailinglisten 15.6. Internet Relay Chat (IRC) 15.7. Suchmaschinen 15.8. Webseiten A. Anhang A.1. Autoren A.2. Haftung A.3. Rückmeldungen A.4. Dokumentformat A.5. Das Debian-Labyrinth A.6. Debian-Zitate ------------------------------------------------------------------------------- 1. Vorwort ---------- Diese Debian-Referenz (http://qref.sourceforge.net/) wurde geschrieben, um einen groben Überblick über das Debian-System in Form einer Referenz für die Zeit nach der Installation zu bieten. Es spricht die Leser an, welche bereit sind, Shell-Skripte zu lesen. Ich erwarte, dass der Leser bereits hinreichende Erfahrungen mit Unix-artigen Systemen vor dem Lesen dieses Dokuments gesammelt hat. Ich traf die bewusste Entscheidung _nicht_ alles im Detail zu erklären, wenn es in einer Handbuchseite, einer info-Seite oder einem HOWTO-Dokument gefunden werden kann. Anstatt alles ausführlich zu erklären, habe ich mehr Wert auf direkte praktische Informationen durch Angabe exakter Kommandosequenzen im Text oder Beispielskripte unter http://www.debian.org/doc/manuals/debian-reference/examples/ gelegt. Sie müssen den Inhalt der Beispiele verstanden haben, bevor Sie sie ausführen. Möglicherweise müssen Sie die Kommandosequenzen auch leicht abändern. Viele der aufgeführten Informationen entstammen meinem Gedächtnis oder Verweisen auf die ultimativen Referenzen, welche unter Abschnitt 15.1, `Referenzen' aufgelistet sind. Dieses Dokument war ursprünglich eine "Schnellreferenz" wuchs jedoch schnell. Dennoch ist _Halte es kurz und einfach_ mein Leitmotiv. Für Hilfe im Falle von Notfall-Wartung wird auf Abschnitt 6.3, `Debian-Überlebensbefehle' verwiesen. 1.1. Das offizielle Dokument ---------------------------- Das neueste offizielle Dokument ist im Debian-Archiv im Paket `debian-reference-de' und ebenso unter http://www.debian.org/doc/manuals/debian-reference/ verfügbar. Die aktuellste Entwicklerversion ist http://qref.sourceforge.net/Debian/. Das Projekt wird auf http://qref.sourceforge.net/ gehostet, und dieses Dokument ist da zum Herunterladen als einfacher Text und im HTML-, PDF-, SGML- sowie PostScript-Format verfügbar. 1.2. Konventionen in diesem Dokument ------------------------------------ Diese Debian-Referenz enthält Informationen in Form von kurzen `bash'-Shell-Kommandos. Die folgenden Notationen werden verwendet: # Kommando im root-account $ Kommando im Nutzer-account ... Beschreibung der Auswirkungen Diese Shell-Kommandobeispiele verwenden `PS2=" "'. Vergleiche Abschnitt 13.2.1, `Bash -- interaktive _GNU_-Standard-Shell' für weitere Informationen zur `bash'. Verweise auf: * eine UNIX-artige _Handbuchseite_ erfolgen in der Form: bash(1). * eine GNU-_TEXINFO-Seite_ erfolgen in der Form: `info libc'. * ein _Buch_ erfolgen in der Form: _Die Programmiersprache C_. * eine _URL_ erfolgen in der Form: http://www.debian.org/doc/manuals/debian-reference/. * eine _Datei_ im System erfolgen in der Form: `/usr/share/doc/Debian/reference/'. Die folgenden Abkürzungen werden verwendet: * _LDP_: Linux-Dokumentations-Projekt (http://www.tldp.org/) * _DDP_: Debian-Dokumentations-Projekt (http://www.debian.org/doc/) Andere Abkürzungen werden im Text definiert, bevor sie verwendet werden. In diesem Dokument werden für LDP-Dokumente nur URL-Verweise angegeben. Dennoch sind LDP-Dokumente für Debian paketiert; wenn die Pakete installiert wurden, sind die Dokumente in `/usr/share/doc/HOWTO/' zu finden. Vergleiche Abschnitt 15.1, `Referenzen'. 1.3. Beispielskripte -------------------- Beispielskripte (http://www.debian.org/doc/manuals/debian-reference/examples/), die diesem Dokument im `debian-reference-de'-Paket beiliegen, sind unter `/usr/share/doc/Debian/reference/examples/' verfügbar. Der führende Punkt "." in Dateinamen bei versteckten Dateien wird durch einen Unterstrich "_" ersetzt. Eine zusätzliche Erweiterung zum Dateinamen wird verwendet, wenn es mehrere Alternativen gibt. 1.4. Grundlegende Einstellungen ------------------------------- Ist das System mit dem absoluten Minimum an Paketen installiert und wollen Sie den größten Nutzen aus diesem Dokument ziehen, so ist es ratsam die folgenden Kommandos zu starten, um einige andere Pakete mit nützlichen Schlüsseldokumenten zu installieren: # aptitude install mc less ssh vim kernel-package \ manpages-dev doc-debian doc-linux-text \ debian-policy developers-reference maint-guide \ apt-howto harden-doc debian-reference \ libpam-doc glibc-doc samba-doc exim4-doc-html 1.5. Grundlagen der Debian-Distributionen ----------------------------------------- Debian betreut gleichzeitig drei verschiedene Distributionen. Diese sind: * `stable' -- Am nützlichsten für einen produktiven Server, da nur Sicherheitsaktualisierungen eingespielt werden. Vergleiche Abschnitt 2.1.3, `Die `stable'-Distribution'. * `testing' -- Die bevorzugte Distribution für eine Workstation, da sie aktuelle Ausgaben von Desktop-Software enthält, die schon ein wenig getestet wurden. Vergleiche Abschnitt 2.1.4, `Die `testing'-Distribution'. * `unstable' -- Topaktuell. Die Wahl der Debian-Entwickler. Vergleiche Abschnitt 2.1.5, `Die `unstable'-Distribution'. Wenn Pakete in `unstable' keine veröffentlichungskritischen Fehler innerhalb der ersten Woche oder so haben, gelangen sie automatisch nach `testing'. Debian-Distributionen haben auch Kodenamen wie in Abschnitt 2.1.7, `Debian-Distributions-Kodenamen' beschrieben. Bevor Woody im August 2002 veröffentlicht wurde, entsprachen den drei Distributionen Potato, Woody und Sid. Nachdem Woody veröffentlicht wurde, entsprachen sie den drei Distributionen Woody, Sarge und Sid. Wenn Sarge veröffentlicht wurde, werden die `stable'- und `unstable'-Distributionen Sarge und Sid sein; eine neue `testing'-Distribution wird dann erzeugt (zunächst als Kopie von `stable') und ihr ein neuer Kodenamen zugeordnet. Abonnieren Sie die Mailingliste `debian-devel-announce@lists.debian.org' (geringes Mail-Aufkommen) für wichtige Ankündigungen über Debian. Vergleiche Abschnitt 2.1, `Die Debian-Archive'. Möchte man Versionen von Paketen verwenden, die aktueller sind als die Versionen der Distribution die man nutzt, kann man entweder auf eine neuere Distribution, wie in Kapitel 5, `Aktualisieren einer Distribution auf `stable', `testing' oder `unstable'' beschrieben, aktualisieren, oder nur die ausgesuchten Pakete aktualisieren. Wenn das Paket nicht einfach aktualisiert werden kann, kann man es wie in Abschnitt 6.4.10, `Portierung eines Pakets auf die `stable'-Distribution' erläutert, zurückportieren. Das Verwenden der `testing'-Distribution kann den Nebeneffekt haben, das Sicherheitsupdates nur langsam eingespielt werden. Solche Pakete werden nach `unstable' hochgeladen und gelangen nur mit einer Verzögerung nach `testing'. Vermengen Sie verschiedene Distributionen, z.B. `testing' mit `stable' oder `unstable' mit `stable', so werden eventuell Kernpakete von `testing' oder `unstable' wie `libc6' installiert, die fehlerhaft sein können. Sie wurden gewarnt. Die Verwendung der `testing'- oder `unstable'-Distribution erhöht das Risiko, auf verschiedene gravierende Fehler zu stoßen. Dieses Risiko kann durch ein Multi-Boot-Schema gemanagt werden, bei dem eine stabilere Debian-Distribution genutzt wird. Alternativ kann auch ein netter Trick mit `chroot', wie in Abschnitt 8.6.35, ``chroot'' beschrieben, genutzt werden. Letzteres ermöglicht die Nutzung verschiedener Versionen von Debian simultan auf verschiedenen Konsolen. Nach dem Erklären einiger Grundlagen der Debian-Distribution in Kapitel 2, `Debian-Grundlagen', werden einige wichtige Informationen für die Verwendung der aktuellsten Software, unter Ausnutzung der Vorteile der `testing'- und `unstable'-Distributionen von Debian, präsentiert. Die Ungeduldigen sollten sofort mit Abschnitt 6.3, `Debian-Überlebensbefehle' fortfahren. Glückliches upgraden! ------------------------------------------------------------------------------- 2. Debian-Grundlagen -------------------- Dieses Kapitel liefert grundlegende Informationen über das Debian-System für Nicht-Programmierer. Für die ultimativen Informationen vergleiche: * Debian Policy Manual * Debian Developer's Reference * Debian New Maintainers' Guide aufgeführt unter Abschnitt 15.1, `Referenzen'. Wenn Sie nach nicht allzu ausführlichen "wie geht" Erklärungen suchen, wechseln Sie direkt nach Kapitel 6, `Debian-Paketverwaltung' oder in andere relevante Kapitel. Dieses Kapitel basiert auf Dokumenten aus der "Debian-FAQ", größtenteils umgeschrieben, um dem gewöhnlichen Debian-Systemadministrator den Einstieg zu erleichtern. 2.1. Die Debian-Archive ----------------------- 2.1.1. Verzeichnisstrukturen ---------------------------- Die Software, welche für Debian paketiert wurde, ist in einem der vielen Verzeichnisbäume auf jedem Debian-Mirror (http://www.debian.org/mirror/) durch FTP oder HTTP verfügbar. Die folgenden Verzeichnisse können auf jedem Debian-Mirror unter dem `debian' Verzeichnis gefunden werden: `dists/': Dieses Verzeichnis enthält die "Distributionen" und ist für den Zugriff auf die aktuell verfügbaren Pakete in Debian ausgelegt. Einige alte Pakete, die `Contents-*.gz'-Dateien und die `Packages.gz'-Dateien sind immer noch hier zu finden. `pool/': Die neue Position aller Debian-Pakete. `tools/': DOS-Hilfsmittel zum Erzeugen von Bootdisketten, Partitionieren der Festplatte, Komprimieren/Dekomprimieren von Dateien und zum Booten von Linux. `doc/': Die grundlegenden Debian-Dokumentationen wie die FAQ's, Erläuterungen zum Fehler-Melde-System, usw. `indices/': Enthält die `Maintainers'-Datei (Liste aller Paketbetreuer) und die `override.*'-Dateien. `project/': Hauptsächlich Material, welches nur für Entwickler von Interesse ist, wie z.B.: `project/experimental/': Dieses Verzeichnis enthält Pakete und Hilfsmittel, welche noch entwickelt werden und sich noch im Alpha-Stadium befinden. Benutzer sollten keine Pakete von hier verwenden, da sie selbst für den Erfahrensten gefährlich und schädlich sind. `project/orphaned/': Pakete, welche von ihrem alten Betreuer aufgegeben wurden und aus der Distribution zurückgezogene Software. 2.1.2. Debian-Distributionen ---------------------------- Normalerweise befinden sich drei Debian-Distributionen im `dists'-Verzeichnis. Dies sind die `stable'-, die `testing'- und die `unstable'-Distribution. Manchmal gibt es auch eine `frozen'-Distribution. Jede Distribution ist ein symbolischer Link in das entsprechende Verzeichnis mit einem Kodenamen im `dists'-Verzeichnis. 2.1.3. Die `stable'-Distribution -------------------------------- Pakete der `stable'-Distribution, Debian Sarge (3.1r0), befinden sich im `stable'- (symbolischer Link zu `sarge/') Verzeichnis: * `stable/main/': Dieses Verzeichnis enthält die Pakete, welche formal die aktuellste Ausgabe des Debian-Systems bilden. Diese Pakete entsprechen alle den Debian Free Software Leitlinien (DFSG) (http://www.debian.org/social_contract#guidelines) (auch verfügbar unter `/usr/share/doc/debian/social-contract.txt' installiert durch `debian-doc') und sind alle frei verfügbar und verteilbar. * `stable/non-free/': Dieses Verzeichnis enthält Pakete, deren Weitergabe in gewisser Weise beschränkt ist. Genauere Informationen sind in den jeweiligen Copyright-Hinweisen zu finden. Zum Beispiel verbieten die Lizenzen einiger Pakete die kommerzielle Verteilung. Andere können weitergegeben werden, aber nur als Shareware und nicht als freie Software. Die Lizenzen all dieser Pakete müssen genau studiert und möglicherweise ausgehandelt werden, bevor die Pakete in irgendeiner Form (z.B. auf einer CD-ROM) weitergegeben werden. * `stable/contrib/': Dieses Verzeichnis enthält Pakete, welche DFSG-frei und _frei verteilbar_ sind, aber irgendwie von einem Paket abhängen, das _nicht_ frei verteilbar und somit nur im non-free Abschnitt zu finden ist. Gegenwärtig befinden sich neue Pakete in Ergänzung zu obigen Verzeichnissen unterhalb des `pool'-Verzeichnisses (Abschnitt 2.1.10, `Das `pool'-Verzeichnis'). Der aktuelle Status von Fehlern der `stable'-Distribution ist unter der Stable Problems (http://ftp-master.debian.org/testing/stable_probs.html)-Webseite aufgeführt. 2.1.4. Die `testing'-Distribution --------------------------------- Pakete der `testing'-Distribution, Debian Etch, befinden sich im `testing'- (symbolischer Link zu `etch/') Verzeichnis, nachdem sie einige Zeit in `unstable' getestet wurden. Gegenwärtig befinden sich neue Pakete, im Gegensatz zu den obigen Positionen, unterhalb des `pool'-Verzeichnisses (Abschnitt 2.1.10, `Das `pool'-Verzeichnis'). Auch in `testing/' gibt es die `main'-, `contrib'- und `non-free'-Unterverzeichnisse, diese entsprechen den Verzeichnissen in `stable/'. Diese Pakete müssen auf allen Architekturen auf denen sie zur Verfügung stehen gleich aktuell sein und dürfen keine Abhängigkeiten aufweisen, welche sie nicht installierbar machen; sie müssen auch weniger veröffentlichungskritische Fehler haben, als die Versionen in `unstable'. Auf diese Art hoffen wir, dass `testing' fast immer zur Veröffentlichung bereit ist. Mehr Details zu den Test-Mechanismen sind unter http://www.debian.org/devel/testing verfügbar. Der aktuellste Status der `testing'-Distribution ist unter folgenden Seiten aufgeführt: * update Ausflüchte (http://ftp-master.debian.org/testing/update_excuses.html) * testing Probleme (http://ftp-master.debian.org/testing/testing_probs.html) * veröffentlichungskritische Fehler (http://bugs.debian.org/release-critical/) * Basissystem Fehler (http://bugs.qa.debian.org/cgi-bin/base.cgi) * Fehler in Standard und Task Paketen (http://bugs.qa.debian.org/cgi-bin/standard.cgi) * andere Fehler und Bemerkungen zu Fehlerausmerzungs-Partys (http://bugs.qa.debian.org/) 2.1.5. Die `unstable'-Distribution ---------------------------------- Pakete, welche zur `unstable'-Distribution mit dem Kodenamen "Sid" gehören, werden im `unstable'- (symbolischer Link zu `sid/') Verzeichnis aufbewahrt, nachdem sie in das Debian-Archiv geladen wurden und verbleiben hier solange, bis sie nach `testing/' verschoben werden. Neue Pakete befinden sich unterhalb des `pool'-Verzeichnis (Abschnitt 2.1.10, `Das `pool'-Verzeichnis'). Es gibt auch `main'-, `contrib'- und `non-free'-Unterverzeichnisse in `unstable/', welche dem selben Zweck dienen wie in `stable/'. Die `unstable'-Distribution enthält ein Abbild des aktuellsten Entwickler-Systems. Benutzer sind willkommen diese Pakete zu benutzen und zu testen, werden aber über den Status der Einsatzbereitschaft gewarnt. Der Vorteil der Benutzung der `unstable'-Distribution ist, dass man immer auf dem Laufenden mit der aktuellsten Debian-Software ist -- geht jedoch etwas schief, so muss man auch damit umgehen können. :-) Der aktuelle Status der Fehler in der `unstable'-Distribution wird auf der Unstable Problems (http://ftp-master.debian.org/testing/unstable_probs.html)-Webseite aufgeführt. 2.1.6. Die `frozen'-Distribution -------------------------------- Wenn die `testing'-Distribution ausgereift ist, so wird aus ihr frozen, was bedeutet, dass kein neuer Code mehr akzeptiert wird, nur noch Bugfixes, wenn nötig. Es wird auch ein neuer Verzeichnisbaum im `dists'-Verzeichnis angelegt und einem neuen Kodenamen zugeordnet. Die eingefrorene Distribution durchläuft nun einige Monate lang Tests mit zwischenzeitlichen Updates und Zwischenausgaben, welche "Test-Zyklen" genannt werden. Wir führen eine Liste aller Fehler in der `frozen'-Distribution, welche die Veröffentlichung eines Paketes verzögern können, sowie von Fehlern, welche ähnliche Auswirkungen auf die gesamte Ausgabe haben. Sobald die Anzahl der Fehler den maximal zulässigen Wert unterschreitet, wird aus der eingefrorenen Distribution `stable', sie wird veröffentlicht und die letzte `stable'-Distribution veraltet (und wird ins Archiv verschoben). 2.1.7. Debian-Distributions-Kodenamen ------------------------------------- Verzeichnisnamen im `dists'-Verzeichnis, wie `sarge/' und `etch/' sind nur "Kodenamen". Wenn sich eine Debian-Distribution in der Entwicklung befindet, besitzt sie keine Versionsnummer sondern nur einen Kodenamen. Der Grund für diese Kodenamen ist das Spiegeln der Debian-Distributionen zu vereinfachen (wenn ein Verzeichnis wie `unstable' plötzlich zu `stable/' umbenannt wird, so müsste vieles erneut heruntergeladen werden). Zurzeit ist `stable/' ein symbolischer Link zu `sarge/' und `testing/' ist ein symbolischer Link zu `etch/'. Das bedeutet, dass `Sarge' die aktuelle `stable'-Distribution und `Etch' die aktuelle `testing'-Distribution ist. `unstable/' ist ein permanenter symbolischer Link zu `sid/', so wie Sid ständig für die `unstable'-Distribution steht. 2.1.8. In der Vergangenheit verwendete Kodenamen ------------------------------------------------ Andere bereits verwendete Kodenamen sind: "Buzz" für Ausgabe 1.1, "Rex" für Ausgabe 1.2, "Bo" für die Ausgaben 1.3.x, "Hamm" für Ausgabe 2.0, "Slink" für Ausgabe 2.1, "Potato" für Ausgabe 2.2, "Woody" für Ausgabe 3.0 und "Sarge" für Ausgabe 3.1. 2.1.9. Die Herkunft der Kodenamen --------------------------------- Bisher wurden Personen aus dem Film _Toy Story_ von Pixar verwendet. * _Buzz_ (Buzz Lightyear) war der Astronaut, * _Rex_ war der Tyrannosaurus, * _Bo_ (Bo Peep, dt. Porzelienchen) war das Mädchen, das sich um die Schafe kümmerte, * _Hamm_ war das Sparschwein (dt. Specki), * _Slink_ (Slinky Dog) war der Spielzeughund, * _Potato_ war natürlich Mr. Potato Head (der Kartoffelkopf, dt. Charly Naseweis), * _Woody_ war der Cowboy, * _Sarge_ war der Anführer der grünen Plastikarmee-Männer, * _Etch_ (Etch-a-Sketch) war die Schreibtafel, * _Sid_ war ein Nachbarsjunge, welcher Spielzeug zerstörte. 2.1.10. Das `pool'-Verzeichnis ------------------------------ Früher wurden Pakete in dem Unterverzeichnis von `dists' aufbewahrt, welches der verwendeten Distribution entsprach. Es stellte sich heraus, dass dies einige Probleme verursachte, wie z.B. große Bandbreitenverschwendung auf Mirrors nach einigen großen Änderungen. Pakete werden nun in einem großen "Pool" gespeichert, entsprechend dem Namen des Quellpakets strukturiert. Um dies handhaben zu können, wurde der Pool je nach Abschnitt (`main', `contrib' und `non-free') sowie dem ersten Buchstaben des Quellpakets unterteilt. Diese Verzeichnisse enthalten verschiedene Dateien: die Binärpakete für jede Architektur und das Quellpaket von welchem die Binärpakete erzeugt wurden. Man kann herausfinden wo sich ein Paket befindet, indem man ein Kommando wie `apt-cache showsrc ' aufruft und nach der "Directory:"-Zeile schaut. Das `apache'-Paket wird z.B. unter `pool/main/a/apache/' gespeichert. Da es sehr viele `lib*'-Pakete gibt, werden diese gesondert behandelt: das `libpaper'-Paket wird beispielsweise unter `pool/main/libp/libpaper/' gespeichert. Die `dists'-Verzeichnisse werden nach wie vor für die Index-Dateien, welche von Programmen wie `apt' verwendet werden, genutzt. Ebenso wurden während dies geschrieben wird, ältere Distributionen noch nicht angepasst um Pools zu nutzen, deswegen werden Sie auch Pfade finden, die den Distributionsnamen wie `potato' oder `woody' im "Directory"-Feld enthalten. Normalerweise muss man sich um dies nicht kümmern, da neue `apt' und wahrscheinlich ältere `dpkg-ftp' Programme (vergleiche Abschnitt 2.3.1, `Methoden zum Aktualisieren eines Debian-Systems') dies problemlos handhaben. Sind Sie an weiteren Informationen interessiert, so sei auf die RFC: Implementation von Paketpools (http://lists.debian.org/debian-devel-announce/2000/debian-devel-announce-200010/msg00007.html) verwiesen. 2.1.11. Historische Bemerkungen über Sid ---------------------------------------- Als das heutige Sid noch nicht existierte, gab es im Debian-Archiv nur einen Zweig für nicht ausgereifte Pakete: es gab die Annahme, dass, wenn eine Architektur im aktuellen `unstable/' hinzukam, sie veröffentlicht wurde, wenn diese Distribution zum neuen `stable'-Zweig wurde. Für viele Architekturen war das nicht der Fall, was dazu führte, dass diese Verzeichnisse während der Veröffentlichung verschoben wurden. Dies war unpraktisch, da die Verschiebung zu einer großen Bandbreitenbelastung führte. Die Archiv-Administratoren umgingen das Problem einige Jahre, indem sie Binaries für nichtveröffentlichte Architekturen in einem speziellen Verzeichnis namens `sid' bereitstellten. Für solche noch nicht veröffentlichte Architekturen wurde das erste Mal als sie veröffentlicht wurden, ein Link vom aktuellen `stable/' zu `sid/' angelegt, und später wurden sie wie üblich unter `unstable/' veröffentlicht. Diese Vorgehensweise war zum Teil für die Anwender verworren. Mit Beginn der Paket-Pools (vergleiche Abschnitt 2.1.10, `Das `pool'-Verzeichnis') während der Entwicklung der Woody-Distribution, wurden Binärpakete unabhängig von der Distribution vorschriftsmäßig im Pool gehalten, so dass die Veröffentlichung einer Distribution nicht länger zu einer großen Bandbreitenverschwendung auf den Mirrors führte (es gibt dennoch während der Entwicklung eine relativ große Bandbreitenauslastung). 2.1.12. Heraufgeladene Pakete in `incoming/' -------------------------------------------- Heraufgeladene Pakete befinden sich zunächst unter http://incoming.debian.org/ nachdem sie überprüft wurden, um sicherzustellen, dass sie wirklich von einem Debian-Entwickler stammen, (und sie werden in das `DELAYED'-Unterverzeichnis verschoben, wenn das Paket nicht von einem Entwickler stammt, d.h. ein Non-Maintainer Upload (NMU) ist). Einmal pro Tag werden sie von `incoming/' nach `unstable/' verschoben. Im Notfall kann man Pakete aus `incoming/' installieren, bevor sie nach `unstable/' kommen. 2.1.13. Wiederauffinden eines älteren Paketes --------------------------------------------- Während die aktuellsten Debian-Distributionen unter dem `debian'-Verzeichnis auf jedem Debian-Mirror (http://www.debian.org/mirror/) zu finden sind, werden die Archive für ältere Debian-Distributionen wie Slink unter http://archive.debian.org/ oder unterhalb des `debian-archive' Verzeichnis auf jedem Debian-Mirror gehalten. Ältere `testing'- und `unstable'-Pakete befinden sich auf http://snapshot.debian.net/. 2.1.14. Architekturabhängige Verzeichnisse ------------------------------------------ Innerhalb jedes der wichtigen Verzeichnisbäume (`dists/stable/main', `dists/stable/contrib', `dists/stable/non-free', `dists/unstable/main', etc.), befinden sich die Einträge der Binärpakete in Unterverzeichnissen, deren Namen die Prozessorarchitektur kennzeichnen, für die sie kompiliert wurden. * `binary-all/' für Pakete, welche architekturunabhängig sind. Dies umschließt z.B. Perl-Skripte oder Dokumentationen. * `binary-/' für Pakete, welche sich auf einer einzelnen Binärplattform starten lassen. Es ist anzumerken, dass die aktuellen Binärpakete von `testing' und `unstable' sich nicht mehr länger in diesen Verzeichnissen, dafür aber im `pool'-Verzeichnis befinden. Die Index-Dateien (`Packages' und `Packages.gz') befinden sich nach wie vor zwecks Abwärtskompatibilität dort. Für die aktuell unterstützten Binärarchitekturen vergleiche die Release Notes der einzelnen Distributionen. Sie können unter der Release-Notes-Seite für stable (http://www.debian.org/releases/stable/releasenotes) und testing (http://www.debian.org/releases/testing/releasenotes) gefunden werden. 2.1.15. Der Quellcode --------------------- Der Quellcode für alles im Debian-System ist mit darin enthalten. Außerdem _fordern_ die Lizenzvereinbarungen der meisten Programme im System, dass der Quellcode zusammen mit den Programmen ausgeliefert wird, oder dass dem Programm Informationen beiliegen, wie er zu erhalten ist. Normalerweise befindet sich der Quellcode in den `source'-Verzeichnissen, welche parallel zu allen architekturspezifischen Binärverzeichnissen sind oder aktueller im `pool'-Verzeichnis (vergleiche Abschnitt 2.1.10, `Das `pool'-Verzeichnis'). Um den Quellcode zu erhalten, ohne sich mit der Verzeichnisstruktur des Debian-Archivs auseinandersetzen zu müssen, kann ein Befehl wie `apt-get source ' genutzt werden. Einige Pakete wie z.B. `pine', sind wegen deren Lizenzbedingungen nur im Quellcode erhältlich. (Kürzlich wurde das `pine-tracker'-Paket bereitgestellt, um die Pine-Installation zu vereinfachen.) Die Anweisungen beschrieben in Abschnitt 6.4.10, `Portierung eines Pakets auf die `stable'-Distribution' und Abschnitt 13.10, `Paketerzeugung' bieten einige Möglichkeiten, um ein Paket manuell zu paketieren. Der Quellcode kann, muss aber nicht für Pakete in `contrib'- und `non-free'-Verzeichnissen, welche formal nicht Teil des Debian-Systems sind, verfügbar sein. 2.2. Das Debian-Paketverwaltungssystem -------------------------------------- 2.2.1. Überblick über Debian-Pakete ----------------------------------- Pakete enthalten im Allgemeinen all die Dateien, welche nötig sind um eine Menge von zusammengehörigen Kommandos oder Eigenschaften zu implementieren. Es gibt zwei Typen von Debian-Paketen: * _Binärpakete_, welche ausführbare Programme enthalten, Konfigurationsdateien, man/info-Seiten, Copyright-Informationen und andere Dokumentationen. Diese Pakete werden in einem Debian-spezifischen Archivformat verteilt (vergleiche Abschnitt 2.2.2, `Debian-Paketformat'); sie zeichnen sich i.a. durch die `.deb'-Dateierweiterung aus. Binärpakete können mit Debians `dpkg'-Programm ausgepackt werden; Details sind in der Handbuchseite beschrieben. * _Quellpakete_, welche eine `.dsc'-Datei enthalten, die das Quellpaket beschreibt (inklusive der Namen der folgenden Dateien), ebenso wie eine `.orig.tar.gz'-Datei, welche den ursprünglichen unveränderten Quellcode in gzip-komprimiertem tar-Format enthält und gewöhnlich eine `.diff.gz'-Datei, die Debian-spezifische Änderungen zu den Originalquellen enthält. Das Programm `dpkg-source' packt und entpackt Debian-Quellpakete; Details sind in der Handbuchseite enthalten. Die Installation der Software durch das Paketsystem nutzt "Abhängigkeiten", welche sorgfältig vom Paketbetreuer bestimmt wurden. Diese Abhängigkeiten sind in der `control'-Datei, die jedem Paket zugeordnet ist, enthalten. Das Paket, welches den GNU C Compiler enthält (`gcc'), "hängt" z.B. von dem Paketen `binutils' "ab", das den Linker und Assembler enthält. Versucht ein Benutzer `gcc' zu installieren, ohne zuvor `binutils' installiert zu haben, so wird das Paketverwaltungssystem (dpkg) die Fehlermeldung ausgeben, dass es `binutils' benötigt und die Installation von `gcc' abbrechen. (Dennoch kann dieses Verhalten vom Nutzer geändert werden; vergleiche dpkg(8).) Für weitere Einzelheiten wird auf Abschnitt 2.2.8, `Paketabhängigkeiten' verwiesen. Debian's Paketverwaltungstools können benutzt werden um: * Pakete oder Teile von Paketen zu manipulieren und handzuhaben, * dem Nutzer im Aufteilen von Paketen zu helfen, welche mittels kleiner Medien wie Disketten übertragen werden müssen, * Entwickler beim Erzeugen von Paketarchiven zu helfen und um * den Nutzern bei der Installation von Paketen, die sich auf entfernten Debian-Archiven befinden, zu helfen. 2.2.2. Debian-Paketformat ------------------------- Ein Debian-"Paket" oder eine Debian-Archivdatei enthält ausführbare Dateien, Bibliotheken und Dokumentationen, welche einem bestimmten Programm oder einer Menge von zugehörigen Programmen zugeordnet sind. Normalerweise hat eine Debian-Archivdatei einen Dateinamen der mit `.deb' endet. [1] Die internen Einzelheiten dieses Debian-Binärpaketformats werden in der deb(5) Handbuchseite beschrieben. Da dieses interne Format in Zukunft geändert werden kann (zwischen verschiedenen Ausgaben von Debian), sollte stets dpkg-deb(1) für Änderungen der `.deb'-Dateien verwendet werden. Zumindest in der Sarge-Distribution kann auf alle Debian-Archivdateien mit den Standard-Unix-Kommandos `ar' und `tar' zugegriffen werden, auch wenn das `dpkg'-Kommando nicht verfügbar ist. [1] Das `debian-installer'-Projekt führte Dateinamen ein, die auf `.udeb' enden. Kurzum, es ist ein Mikro-`.deb' Format, das den Debian-Richtlinien für freie Software nicht exakt folgen muss. So fehlt z.B. die Dokumentation und es wird nur vom `debian-installer' genutzt, dem neuen Debian-Installationsprogramm, das für die Sarge-Ausgabe entwickelt wurde. Die Dateiformate von `.deb' und `.udeb' sind identisch. Das Programm `udpkg', das mit `.udeb'-Paketen umgehen kann, hat eingeschränktere Fähigkeiten als das Standard-`dpkg' und unterstützt weniger Paketbeziehungen. Der Unterschied im Namen besteht, weil die Debian-Archivbetreuer nicht glücklich mit `.deb's im Archiv sind, die den Richtlinien nicht folgen. Deshalb wurde ein unterschiedlicher Name gewählt um dies zu betonen und um es unwahrscheinlicher zu machen, dass Benutzer diese unabsichtlich auf einem richtigen System installieren. `.udeb's werden nur in einer Initial Ramdisk während der Basisinstallation genutzt, um ein sehr beschränktes Debian-System zu erstellen. 2.2.3. Namenskonventionen für Debians Paketdateinamen ----------------------------------------------------- Die Debian-Paketdateinamen folgen den Konventionen: _-.deb wobei für den Paketnamen steht. Zur Kontrolle kann man den Paketnamen, welcher einer bestimmten Debian-Archivdatei (`.deb'-Datei) zugeordnet ist, durch eine der folgenden Möglichkeiten bestimmen: * betrachten der "Packages"-Datei in dem Verzeichnis, wo sich die `.deb'-Datei im Debian-Archiv befand. Diese Datei enthält für jedes Paket einen Eintrag, welcher es genau beschreibt; das erste Feld in jedem Eintrag ist der formale Paketname. * man benutzt das Kommando `dpkg --info .deb' (wobei und die Versions- bzw. Revisionsnummer des abgefragten Pakets sind). Dies zeigt unter anderem den Paketnamen an, welcher der zu entpackenden Archivdatei entspricht. Der -Teil ist die Versionsnummer, die vom Entwickler des Programms vergeben wurde. Es gibt dafür kein allgemein gültiges Format, sowohl "19990513" als auch "1.3.8pre1" ist denkbar. Der -Teil ist die Debian-Revisionsnummer und wird vom Debian-Entwickler angegeben (oder von einem Nutzer, wenn dieser das Paket selbst baut). Diese Nummer entspricht dem Revisionslevel des Debian-Pakets; ein neues Revisionslevel kennzeichnet in der Regel Änderungen in Debians Makefile (`debian/rules'), in Debians Kontrolldatei (`debian/control'), in Installations- oder Deinstallationsskripten (`debian/p*') oder in den Konfigurationsdateien, die mit dem Paket genutzt werden. 2.2.4. Bewahren der lokalen Konfiguration ----------------------------------------- Die durch den Nutzer konfigurierbaren Dateien werden durch Debians "conffiles"-Mechanismus bewahrt. Konfigurationsdateien (diese befinden sich im Allgemeinen in `/etc/') werden in den `conffiles' innerhalb von Debians Paketsystem angegeben. Das Paketverwaltungssystem garantiert, dass diese Dateien bei einer Paketaktualisierung (einem Upgrade) nicht überschrieben werden. Wenn es möglich ist, das System ohne Modifizierungen von Dateien anzupassen, welche zu verschiedenen Debian-Paketen gehören, so ist es in der Regel eine gute Idee, diese nicht zu verändern, selbst wenn es sich um "conffiles" handelt. Dies ermöglicht schnellere und sauberere Aktualisierungen. Um zu bestimmen, welche Dateien während eines Upgrades bewahrt werden, kann man dpkg --status ausführen und nach "Conffiles:" schauen. Einzelheiten zum Inhalt einer Debian-`conffiles'-Datei sind im Debian Policy Manual, Abschnitt 11.7 (vergleiche Abschnitt 15.1, `Referenzen') zu finden. 2.2.5. Debian-Wartungsskripte ----------------------------- Debian-Wartungsskripte sind ausführbare Skripte, welche automatisch gestartet werden bevor oder nachdem ein Paket installiert wird. Zusammen mit einer Datei namens `control' sind all diese Dateien Teil des "control"-Abschnitts einer Debian-Archivdatei. Die einzelnen Dateien sind: preinst Dieses Skript wird ausgeführt, bevor das Paket aus der Debian-Archivdatei (`.deb') ausgepackt wird. Viele "preinst"-Skripte beenden Dienste von Paketen, welche aktualisiert werden, bis deren Installation oder Upgrade vollzogen ist (d.h. nach der erfolgreichen Ausführung des "postinst"-Skriptes). postinst Dieses Skript schließt typischerweise jede nötige Konfiguration eines Paketes ab, nachdem es aus der Debian-Archivdatei (`.deb') ausgepackt wurde. Oft fragen "postinst"-Skripte die Nutzer nach Daten, und/oder weisen sie darauf hin, dass, wenn sie die Standardwerte akzeptieren, sie später die Möglichkeit haben zurückzugehen und das Paket zu rekonfigurieren, sollte dies nötig sein. Viele "postinst"-Skripte führen Kommandos aus, welche nötig sind, um Dienste zu starten oder nach der Installation oder dem Upgrade neu zu starten. prerm Dieses Skript beendet typischerweise Daemonen, welche dem Paket zugeordnet sind. Es wird ausgeführt, bevor die zum Paket gehörenden Dateien gelöscht werden. postrm Dieses Skript modifiziert typischerweise Links oder andere Dateien, welche dem Paket zugeordnet sind und/oder entfernen Dateien, welche von ihm erzeugt wurden. (Siehe auch Abschnitt 2.2.7, `Virtuelle Pakete'.) Zurzeit können all diese Kontrolldateien im Verzeichnis `/var/lib/dpkg/info' gefunden werden. Die auf das Paket `foo' bezogenen Dateien beginnen mit "foo" und haben die entsprechende Dateierweiterungen "preinst", "postinst", u.s.w. Die Datei `foo.list' in diesem Verzeichnis enthält alle Dateien, welche mit dem Paket `foo' installiert wurden. (Es ist zu beachten, dass die Position dieser Dateien eine interne `dpkg'-Eigenschaft ist und sich in der Zukunft ändern kann.) 2.2.6. Paket-Prioritäten ------------------------ Jedem Debian-Paket ist eine _Priorität_ vom Distributionsbetreuer zugeordnet worden, um die Arbeit des Paketverwaltungssystems zu vereinfachen. Die Prioritäten sind: * _Erforderliche_ Pakete werden benötigt für die zuverlässige Funktionalität des Systems. Dies schließt alle Tools, welche nötig sind, um das System zu reparieren, ein. Diese Pakete dürfen nicht entfernt werden, andernfalls kann das System komplett versagen und man ist nicht einmal in der Lage `dpkg' zum Wiederherstellen zu nutzen. Systeme die nur die erforderlichen Pakete enthalten, sind wahrscheinlich ungeeignet für die meisten Aufgaben, jedoch kann der Systemadministrator jederzeit neue Software installieren. * _Wichtige_ Pakete sollten auf jedem Unix-artigen System gefunden werden. Andere Pakete ohne die das System nicht gut oder brauchbar arbeitet, haben diese Priorität. Dies schließt _nicht_ Emacs, X11, TeX oder andere große Anwendungen ein. Diese Pakete erzeugen nur die nötige Infrastruktur. * _Standard_pakete sind auf jedem Linuxsystem üblich, inklusive einem kleinen aber nicht zu sehr beschränkten textbasierten System. Dies ist der Standardinstallationsumfang, solange der Nutzer nichts anderes wählt. "Standard" enthält nicht viele große Anwendungen, aber es enthält Emacs (das ist mehr eine Infrastruktur als eine Anwendung) und eine geeignete Teilmenge von TeX und LaTeX (sofern dies ohne X möglich ist). * _Optionale_ Pakete enthalten all diese, welche man vernünftigerweise installieren möchte, auch wenn man damit nicht vertraut ist und keine speziellen Anforderungen daran hat. Dies schließt X11, eine vollständige TeX-Distribution und viele Anwendungen mit ein. * _Zusätzliche_ Pakete sind entweder nicht mit anderen Paketen mit höherer Priorität verträglich, sind wahrscheinlich nur nützlich, wenn man sie bereits näher kennt oder haben spezielle Anforderungen, die sie für "Optional" ungeeignet machen. Beachten Sie die Unterschiede zwischen "Priority: required", "Section: base" und "Essential: yes" in der Paketbeschreibung. "Section: base" bedeutet, dass dieses Paket vor allen anderen in einem neuen System installiert wird. Die meisten der Pakete mit "Section: base" enthalten "Priority: required" oder zumindest "Priority: important" und viele von diesen sind mit "Essential: yes" versehen. "Essential: yes" bedeutet, dass das Paket die Angabe einer bestimmten Option an das Paketmanagementsystem wie `dpkg' erfordert, wenn es aus dem System entfernt werden soll. Beispielsweise sind `libc6', `mawk' und `makedev' Pakete mit "Priority: required" und "Section: base" aber enthalten nicht "Essential: yes". 2.2.7. Virtuelle Pakete ----------------------- Ein virtuelles Paket ist ein allgemeiner Name, welcher für eine Gruppe von Paketen steht, die alle ähnliche Funktionalitäten bereitstellen. Die Programme `tin' und `trn' sind beispielsweise beide News-Reader und einer von beiden sollte deshalb die Abhängigkeiten eines Programms, welches einen News-Reader im System benötigt um richtig funktionieren zu können, erfüllen. Deshalb sagt man, dass beide das "virtuelle Paket" `news-reader' bereitstellen. Analog stellen `exim' und `sendmail' die Funktionalität eines Mail-Transport-Agent bereit. Deshalb wird das virtuelle Paket `mail-transport-agent' von beiden angeboten. Wenn eines dieser Programme installiert ist, dann wird jedes Programm, das von der Installation eines Mail-Transport-Agent abhängt, mit der Existenz dieses virtuellen Paketes zufrieden sein. Debian besitzt einen Mechanismus so dass, wenn mehr als ein Paket, welches das selbe virtuelle Paket bereitstellt, auf dem System installiert ist, der Systemadministrator ein Programm bevorzugt auswählen kann. Das entsprechende Kommando ist `update-alternatives' und wird genauer in Abschnitt 6.5.3, `Alternative Befehle' beschrieben. 2.2.8. Paketabhängigkeiten -------------------------- Das Debian-Paketsystem enthält "Paketabhängigkeiten", welche (in einem einzelnen Eintrag) festhalten, wie ein Programm A unabhängig von der Existenz eines Programms B auf einem System arbeiten kann. * Paket A _hängt_ von Paket B _ab_, wenn B unbedingt installiert sein muss, um A starten zu können. In einigen Fällen hängt A nicht nur von B, sondern einer speziellen Version von B ab. In diesem Fall ist die Versionsabhängigkeit im Allgemeinen eine untere Schranke, d.h. A hängt von einer beliebigen Version von B ab, welche aktueller als eine angegebene Version ist. * Paket A _empfiehlt_ Paket B, wenn der Paketbetreuer meint, dass die meisten Nutzer A nicht ohne die von B bereitgestellte Funktionalität haben wollen. * Paket A _schlägt_ Paket B _vor_, wenn B Dateien enthält, welche sich auf die Funktionalität von A beziehen (und diese eventuell erweitern). * Paket A _kollidiert_ mit Paket B, wenn A nicht funktioniert, sofern B auf dem System installiert ist. Sehr oft bestehen solche _Konflikte_ darin, dass A Dateien enthält, die gegenüber denen in B verbessert wurden. Der "Konflikt"-Status wird oft mit "ersetzt" kombiniert. * Paket A _ersetzt_ Paket B, wenn Dateien, die von B installiert wurden, von A entfernt und (in einigen Fällen) durch Dateien in A überschrieben werden. * Paket A _unterstützt_ Paket B, wenn alle Dateien und Funktionalitäten von B in A verfügbar sind. Dieser Mechanismus steht für Nutzer mit geringem Plattenplatz zur Verfügung, um nur den Teil von A zu installieren, welcher absolut nötig ist. Weitere detaillierte Informationen zur Verwendung dieser Terme können im _Packaging Manual_ und dem _Policy Manual_ gefunden werden. Es ist zu beachten, dass `dselect' eine bessere Kontrolle über Pakete, die mit _empfiehlt_ und _schlägt vor_ spezifiziert werden, bietet als `apt-get', was einfach alle _hängt ab_ Pakete wählt und _empfiehlt_ und _schlägt vor_ ignoriert. Beide Programme nutzen in aktuellen Versionen APT als Back-end. 2.2.9. Die Bedeutung von "pre-depends" -------------------------------------- "Pre-depends" ist eine spezielle Abhängigkeit. Im Falle eines gewöhnlichen Pakets entpackt `dpkg' die Archivdatei (d.h. dessen `.deb'-Datei) unabhängig davon, ob die Dateien, von denen es abhängt, im System existieren oder nicht. Entpacken bedeutet im Wesentlichen, dass `dpkg' die Dateien aus der Archivdatei extrahiert und korrekt im Dateisystem platziert. _Hängen_ diese Pakete von der Existenz anderer Pakete auf dem System _ab_, dann wird sich `dpkg' weigern, die Installation zu beenden (durch Ausführen des "konfigurieren" Schritts), bis die anderen Pakete installiert sind. Dennoch gibt es einige Pakete, bei denen sich `dpkg' sogar weigert, sie zu entpacken, bis gewisse Abhängigkeiten aufgelöst sind. Solche Pakete hängen vom Vorhandensein anderer Pakete im Sinne von "pre-depend" ab. Das Debian-Projekt führte diesen Mechanismus ein, um das System sicher vom `a.out'- auf das ELF-Format zu aktualisieren, wobei die _Reihenfolge_ in welcher die Pakete entpackt werden, bedeutend ist. Es gibt weitere große Update-Situationen, wo diese Methode nützlich ist, z.B. für Pakete mit der "erforderlich"-Priorität und deren libc-Abhängigkeit. Erneut wird für detailliertere Informationen über dies auf das _Packaging Manual_ verwiesen. 2.2.10. Paket-Status -------------------- Der Paket-Status kann "unbekannt", "installieren", "entfernen", "säubern" oder "halten" sein. Diese "gewünschten" Werte kennzeichnen, was der Nutzer mit einem Paket beabsichtigte (entweder durch Anwahl des "[A]uswählen" Punktes in `dselect' oder durch direkten Aufruf von `dpkg'). Deren Bedeutung ist: * _unbekannt_ - der Nutzer hat niemals angegeben, ob er das Paket will. * _installieren_ - der Nutzer will das Paket installiert oder aktualisiert haben. * _entfernen_ - der Nutzer will das Paket entfernen lassen, ohne das existierende Konfigurationsdateien gelöscht werden. * _säubern_ - der Nutzer will das Paket komplett entfernt haben, inklusive der Konfigurationsdateien. * _halten_ - der Nutzer will das Paket nicht verarbeiten lassen, d.h. er möchte die aktuelle Version im aktuellen Status belassen, unabhängig vom Wert. 2.2.11. Zurückhalten von Paketen von einem Upgrade -------------------------------------------------- Es gibt zwei Mechanismen zum Zurückhalten von Paketen von einem Upgrade, durch `dpkg' oder beginnend mit Woody durch APT. Mit `dpkg' ist zuerst die Paketauswahlliste zu exportieren: dpkg --get-selections \* > Dann muss die erzeugte Datei `' editiert werden, indem die Zeile, welche das zu haltende Paket, z.B. `libc6', enthält, von: libc6 install auf: libc6 hold geändert wird. Nach dem Speichern ist die Datei in die `dpkg'-Datenbank zurückzuladen mit: dpkg --set-selections < Kennt man den Paketnamen des zu haltenden Pakets, kann man auch einfach echo libc6 hold | dpkg --set-selections starten. Wann immer der Installations-Prozess dieses Paket bearbeitet (zu upgraden versucht), hält er es zurück. Der selbe Effekt kann mit `dselect' erreicht werden. Dazu ist einfach der Punkt [A]uswählen und dann das Paket zu wählen, dessen Status beibehalten werden soll sowie schließlich `=' (oder `H') zu drücken. Die Änderungen werden sofort aktiv, nachdem das [A]uswählen Menü beendet wird. Das APT-System in der Woody-Distribution hat einen neuen "Alternativen" Mechanismus zum Halten von Paketen während des Archivabfrageprozesses unter Verwendung von `Pin-Priority'. Vergleiche die Handbuchseite apt_preferences(5) sowie http://www.debian.org/doc/manuals/apt-howto/ oder das `apt-howto'-Paket; Abschnitt 6.2.8, `Überblick über `/etc/apt/preferences'' enthält auch eine kurze Erläuterung. 2.2.12. Quellpakete ------------------- Quellpakete befinden sich in einem Verzeichnis namens `source' und können entweder manuell heruntergeladen werden oder durch apt-get source (vergleiche die apt-get(8) Handbuchseite wie man APT dazu bringt, dies zu tun). 2.2.13. Erzeugen von Binär- aus Quellcodepaketen ------------------------------------------------ Für ein Paket `' benötigt man alle `.dsc'-, `.tar.gz'- und `.gz'-Dateien, um die Quellen zu übersetzen (Bemerkung: es gibt keine `.diff.gz'-Datei für ein natives Debian-Paket). Sind diese Dateien vorhanden und ist das `dpkg-dev'-Paket installiert, so extrahiert das Kommando $ dpkg-source -x .dsc das Paket in ein Verzeichnis namens `'. Zum Erzeugen des Binärpakets ist Folgendes auszuführen: $ cd foo-version $ su -c "apt-get update; apt-get install fakeroot" $ dpkg-buildpackage -rfakeroot -us -uc Und danach # su -c "dpkg -i ../.deb" zum Installieren des neu gebildeten Pakets. Vergleiche Abschnitt 6.4.10, `Portierung eines Pakets auf die `stable'-Distribution'. 2.2.14. Erzeugen neuer Debian-Pakete ------------------------------------ Für detaillierte Informationen zum Erzeugen neuer Pakete sollte der _New Maintainers' Guide_ gelesen werden, verfügbar im `maint-guide' Paket, oder unter http://www.debian.org/doc/manuals/maint-guide/. 2.3. Aktualisierung eines Debian-Systems ---------------------------------------- Einer von Debians Vorzügen ist die Unterstützung eines konsistenten Upgrade-Wegs sowie ein sicherer Upgrade-Prozess und es wird stets versucht, eine ältere Ausgabe problemlos zu aktualisieren. Pakete warnen den Nutzer, sollten bedeutende Bemerkungen während des Upgrade-Prozesses auftreten und bieten oft eine Lösung zu einem möglichen Problem. Man sollte auch die Release Notes lesen, das Dokument, das die Details zu spezifischen Upgrades enthält. Es wird mit allen Debian-CDs ausgeliefert und ist im WWW unter http://www.debian.org/releases/stable/releasenotes oder http://www.debian.org/releases/testing/releasenotes verfügbar. Eine praktische Anleitung zum Aktualisieren wird in Kapitel 6, `Debian-Paketverwaltung' bereitgestellt. Dieser Abschnitt beschreibt die grundlegenden Einzelheiten. 2.3.1. Methoden zum Aktualisieren eines Debian-Systems ------------------------------------------------------ Man kann immer einfach einen anonymen FTP- oder `wget'-Aufruf zu einem Debian-Archiv starten, die Verzeichnisse durchsehen, bis man die gewünschte Datei gefunden hat, diese herunterladen und schließlich mittels `dpkg' installieren. (Es ist zu beachten, dass `dpkg' die aktualisierten Dateien immer in das korrekte Verzeichnis installiert, auch in einem laufenden System.) Manchmal kommt es dennoch vor, dass ein überarbeitetes Paket die Installation einer neuen Version eines anderen Paketes erfordert. In diesem Fall schlägt die Installation fehl, wenn das andere Programm nicht installiert ist. Viele Personen finden dieses manuelle Vorgehen zu Zeit aufwendig, da Debian sich so schnell entwickelt -- typischerweise werden ein Dutzend oder mehr Pakete jede Woche hochgeladen. Diese Zahl ist kurz vor einer neuen Veröffentlichung noch größer. Um dies besser handhaben zu können, bevorzugen viele Personen ein automatisches Programm zum Upgraden. Einige spezialisierte Paketmanagement-Tools sind für diesen Zweck verwendbar. 2.3.2. Überblick über Paketverwaltungstools ------------------------------------------- Das Debian-Paketverwaltungssystem hat zwei Aufgaben: die Manipulation der Paketdatei und das Herunterladen von Paketdateien aus dem Debian-Archiv. `dpkg' erfüllt die erste Aufgabe, APT und `dselect' die letztere. 2.3.3. `dpkg' ------------- Dies ist das wichtigste Programm zum Manipulieren von Paketdateien. Für eine ausführliche Beschreibung ist dpkg(8) zu lesen. `dpkg' wird mit einigen wichtigen Programmen ausgeliefert. * `dpkg-deb': Manipuliert `.deb' Dateien. dpkg-deb(1) * `dpkg-ftp': Ein älteres Programm zum Herunterladen von Paketen. dpkg-ftp(1) * `dpkg-mountable': Ein älteres Programm zum Herunterladen von Paketen. dpkg-mountable(1) * `dpkg-split': Teilt ein größeres Paket in kleinere Dateien auf. dpkg-split(1) `dpkg-ftp' und `dpkg-mountable' wurden durch das APT-System ersetzt. 2.3.4. APT ---------- APT, das zukunftsweisende Paket-Tool (Advanced Packaging Tool) ist eine fortschrittliche Schnittstelle zu Debians Paketsystem und besteht aus verschiedenen Programmen, deren Namen oft mit "apt-" beginnen. `apt-get', `apt-cache' und `apt-cdrom' sind die Kommandozeilen-Tools zum Umgang mit Paketen. Diese werden auch von anderen Programmen, wie `dselect' und `aptitude' genutzt. Für weitere Informationen ist das `apt'-Paket zu installieren und apt-get(8), apt-cache(8), apt-cdrom(8), apt.conf(5), sources.list(5), apt_preferences(5) (Woody) sowie `/usr/share/doc/apt/guide.html/index.html' zu lesen. Weitere Informationen finden sich im APT HOWTO (http://www.debian.org/doc/manuals/apt-howto/). Dazu kann in Sarge `apt-howto-de' installiert werden und steht dann unter `/usr/share/doc/Debian/apt-howto/' zur Verfügung (Woody enthält nur die englische Version `apt-howto'). `apt-get upgrade' und `apt-get dist-upgrade' installieren nur die Pakete, die unter "Depends:" ("hängt ab:") aufgeführt sind und übersieht alle unter "Recommends:" ("empfiehlt:") und "Suggests:" ("schlägt vor:") gelisteten Pakete. Um dies zu vermeiden, sollte `dselect' verwendet werden. 2.3.5. `dselect' ---------------- Dieses Programm besitzt eine Menüoberfläche zu Debians Paketverwaltungssystem. Es ist besonders für die Erstinstallation und große Upgrades nützlich. Vergleiche Abschnitt 6.2.3, ``dselect''. Für weitere Informationen sollte das `install-doc'-Paket installiert und `/usr/share/doc/install-doc/dselect-beginner.en.html' oder dselect Documentation for Beginners (http://www.debian.org/releases/woody/i386/dselect-beginner) gelesen werden. 2.3.6. Aktualisieren eines laufenden Systems -------------------------------------------- Der Kernel (das Dateisystem) in Debian-Systemen unterstützt das Ersetzen von Dateien auch während sie benutzt werden. Es wird auch ein Programm namens `start-stop-daemon' bereitgestellt, das verwendet wird, um Daemonen während des Bootens zu starten oder zum Stoppen von Daemonen, wenn das Kernel-Runlevel geändert wird (z.B. von Mehrbenutzer- zu Einzelbenutzermodus oder zu "halt"). Das gleiche Programm wird von Installationsskripten genutzt, wenn ein Paket, das einen Daemon enthält, installiert wird, um laufende Daemonen zu stoppen und bei Bedarf neuzustarten. Es wird darauf hingewiesen, dass das Debian-System den Einzelnutzermodus nicht erfordert, um ein laufendes System zu aktualisieren. 2.3.7. Heruntergeladene und zwischengespeicherte `.deb'-Archiv-Dateien ---------------------------------------------------------------------- Hat man Paketdateien manuell auf die Festplatte heruntergeladen (was nicht unbedingt notwendig ist, vergleiche die obige Beschreibung von `dpkg-ftp' oder APT), dann kann man die `.deb'-Dateien nach der Installation der Pakete aus dem System entfernen. Wenn APT verwendet wird, so werden diese Dateien im `/var/cache/apt/archives'-Verzeichnis zwischengespeichert. Sie können nach der Installation gelöscht werden (`apt-get clean') oder auf einen anderen Rechner ins `/var/cache/apt/archives' Verzeichnis kopiert werden, um das Herunterladen während mehrerer Installationen zu vermeiden. 2.3.8. Aufbewahren des Datensatzes für Upgrades ----------------------------------------------- `dpkg' bewahrt einen Datensatz aller Pakete, die ausgepackt, konfiguriert, entfernt und/oder gesäubert wurden, auf. Jedoch wird (zurzeit) kein Protokoll der Terminaleingaben, während der Paketmanipulation, erzeugt. Der einfachste Weg, dieses Problem zu umgehen, ist Sitzungen von `dpkg', `dselect', `apt-get', etc. innerhalb des script(1) Programms ablaufen zu lassen. 2.4. Der Debian-Bootvorgang --------------------------- 2.4.1. Das `init'-Programm -------------------------- Wie alle Unices, wird Debian durch das Programm `init' gestartet. Die Konfigurationsdatei für `init' (dies ist `/etc/inittab') gibt an, dass das erste zu startende Skript `/etc/init.d/rcS' ist. Dieses Skript startet alle anderen Skripte in `/etc/rcS.d/', entweder indem diese eingebunden oder explizit als Unterprozess aufgerufen werden, je nach Dateierweiterung. Diese Skripte initialisieren das System indem sie z.B. Dateisysteme überprüfen und einbinden, Module laden, Netzwerk-Dienste starten, die Uhrzeit setzen, u.a. Danach werden zwecks Kompatibilität die Dateien (mit Ausnahme der mit einem `.' im Dateinamen) in `/etc/rc.boot/' ausgeführt. Jedes Skript in diesem Verzeichnis ist normalerweise dem Systemadministrator vorbehalten, die Verwendung dieser in Paketen wird missbilligt. Vergleichen Sie Abschnitt 9.1, `Hinweise zur System-Inititalisierung' und System run levels and init.d scripts (http://www.debian.org/doc/debian-policy/ch-opersys#s-sysvinit) in den Debian-Richtlinien für weitere Informationen. 2.4.2. Runlevel --------------- Nach dem Bootprozess führt `init' alle Startskripte in einem durch das Standard-Runlevel festgelegten Verzeichnis aus. (Dieses Runlevel wird durch den Eintrag `id' in `/etc/inittab' festgelegt). Wie viele System-V-kompatible Unices hat Linux 7 Runlevel: * 0 (Anhalten des Systems), * 1 (Einzelnutzer Modus), * 2 bis 5 (verschiedene Mehrbenutzer-Modi) und * 6 (Neustart des Systems). Für Debian-Systeme gilt `id=2', was bedeutet, dass das Standard-Runlevel 2 sein wird, wenn der Mehrbenutzer-Modus aktiv ist und die Skripte in `/etc/rc2.d/' werden ausgeführt. In Wirklichkeit sind die Skripte in den Verzeichnissen `/etc/rc.d/' nur symbolische Links zu Skripten in `/etc/init.d/'. Dennoch werden die _Namen_ der Dateien in jedem der `/etc/rc.d/'-Verzeichnisse individuell gewählt, um anzugeben _wie_ die Skripte in `/etc/init.d/' gestartet werden. Speziell werden bevor ein Runlevel aktiv wird, alle Skripte die mit `K' beginnen ausgeführt; diese Skripte beenden Dienste. Danach werden alle Skripte die mit `S' beginnen gestartet; diese Skripte starten Dienste. Die zweistellige dem `K' oder `S' folgende Nummer bestimmt die Reihenfolge der Ausführung. Skripte mit kleinerer Nummer werden zuerst ausgeführt. Dieses Vorgehen funktioniert, da die Skripte in `/etc/init.d/' alle ein Argument akzeptieren, das entweder "start", "stop", "reload", "restart" oder "force-reload" sein kann und eine dem Argument entsprechende Aktion ausführen (starten, stoppen, neuladen, neustarten, erzwinge Neuladen). Diese Skripte können auch ausgeführt werden, nachdem das System gebootet wurde, um verschiedene Prozesse zu kontrollieren. Zum Beispiel führt das Argument "reload" im Kommando # /etc/init.d/exim4 reload dazu, dass der exim4-Daemon ein Signal zum erneuten Einlesen der Konfigurationsdatei erhält. 2.4.3. Anpassen des Bootvorgangs -------------------------------- Debian verwendet kein BSD typisches `rc.local' Verzeichnis, um den Bootvorgang anzupassen; stattdessen wird folgender Mechanismus angeboten. Angenommen `foo' sei ein Skript, das während des Startvorgangs oder beim Übergang in ein bestimmtes (System V) Runlevel aufgerufen werden soll. Dann sollte der Systemadministrator: 1. Das Skript `foo' in das Verzeichnis `/etc/init.d/' verschieben. 2. Das Debian-Kommando `update-rc.d' mit entsprechenden Argumenten starten, um Links zwischen den (Kommandozeilen spezifischen) Verzeichnissen `rc.d' und `/etc/init.d/foo' anzulegen. Dabei bezeichnet eine Nummer von 0 bis 6, die einem der System V Runlevel entspricht. 3. Das System neu booten. Das Kommando `update-rc.d' setzt Links zwischen Dateien im Verzeichnis `rc.d' und dem Skript in `/etc/init.d/'. Jeder Link beginnt mit einem `S' oder `K', gefolgt von einer Nummer, gefolgt vom Namen des Skripts. Beim Wechsel in das Runlevel , werden Skripte in `/etc/rc.d/' die mit `K' beginnen mit `stop' als Argument ausgeführt, gefolgt von den mit `S' beginnenden Skripten in `/etc/rc.d/' mit `start' als Argument. Man kann z.B. das Skript `foo' beim Booten ausführen lassen, indem man es nach `/etc/init.d/' verschiebt und die Links mit `update-rc.d foo defaults 19' erstellt. Das Argument `defaults' bezieht sich auf das Standard-Runlevel, welches zwischen 2 und 5 liegt. Das Argument `19' sichert, dass `foo' vor allen Skripten, welche die Nummern 20 oder größer enthalten, gestartet wird. 2.5. Unterstützung von Vielfalten --------------------------------- Debian unterstützt verschiedene Möglichkeiten zum Anpassen des Systems, ohne das System zu beeinträchtigen. * `dpkg-divert', vergleiche Abschnitt 6.5.1, `Der `dpkg-divert'-Befehl'. * `equivs', vergleiche Abschnitt 6.5.2, `Das `equivs'-Paket'. * `update-alternative', vergleiche Abschnitt 6.5.3, `Alternative Befehle'. * `make-kpkg' kann viele Boot-Loader anpassen. Vergleiche make-kpkg(1) und Abschnitt 7.1.1, `Die Debian-Standardmethode'. Alle Dateien unter `/usr/local/' gehören dem Systemadministrator und Debian wird sie nicht verändern. Viele (oder alle) Dateien unter `/etc' sind Konfigurationsdateien und Debian wird sie nicht während eines Upgrades überschreiben, es sei denn der Systemadministrator erlaubt dies ausdrücklich. 2.6. Internationalisierung -------------------------- Das Debian-System ist internationalisiert und bietet Unterstützung zur Ein- und Ausgabe von Zeichen in vielen Sprachen, beides in der Konsole und unter X. Viele Texte, Handbuchseiten und Systemausgaben wurden in eine ständig wachsende Anzahl von Sprachen übersetzt. Während der Installation fordert Debian den Nutzer zur Wahl der Installationssprache (und manchmal eines lokalen Dialekts) auf. Sollte das installierte System nicht alle benötigten Eigenschaften der Sprache unterstützen, soll eine andere Sprache gewählt werden oder wurde eine neue Tastatur angeschlossen, um die Sprache zu unterstützen, vergleiche Abschnitt 9.7, `Lokalisation und Sprachen'. 2.7. Debian und der Kernel -------------------------- Vergleiche Kapitel 7, `Der Linux-Kernel unter Debian'. 2.7.1. Kompilierung eines Kernel aus Debian-fremden Quellen ----------------------------------------------------------- Man sollte die Debian-Politik bezüglich der Header verstanden haben, bevor man startet. Die Debian-C-Bibliotheken wurden mit der aktuellsten _stabilen_ Version der _Kernelheader_ erstellt. Zum Beispiel nutzte die Debian 1.2 Ausgabe Version 5.4.13 der Header. Dieses Vorgehen unterscheidet sich von den Linux-Kernelquellpaketen, die auf allen Linux-FTP-Archiv-Seiten verbreitet werden, welche aktuellere Versionen der Header verwenden. Die Kernelheader aus den Kernelquellen befinden sich in `/usr/include/linux/include/'. Wenn es nötig ist, ein Programm mit aktuelleren Kernelheadern als in `libc6-dev' zu übersetzen, so muss `-I/usr/src/linux/include/' zur Kommandozeile beim Kompilieren hinzugefügt werden. Dies ist z.B. für das Paketieren des automounter-Daemon (`amd') von Bedeutung. Als neue Kernel einige NFS-bezogene Internals änderten, musste dies `amd' mitgeteilt werden. Dies erforderte die Einbindung der aktuellsten Kernelheader. 2.7.2. Tools zum Erzeugen angepasster Kernel -------------------------------------------- Nutzern die einen angepassten Kernel erzeugen wollen (oder müssen), wird empfohlen, das Paket `kernel-package' herunterzuladen. Dieses Paket enthält das Skript zur Kernelerstellung und bietet die Möglichkeit, ein Debian kernel-image Paket einfach durch Aufruf von # make-kpkg kernel_image im Kernelquellverzeichnis zu starten. Hilfe ist durch Ausführung von # make-kpkg --help verfügbar und durch die Handbuchseite make-kpkg(1) sowie Kapitel 7, `Der Linux-Kernel unter Debian'. Nutzer müssen den Quellcode für den aktuellsten Kernel (oder den Kernel ihrer Wahl) separat vom bevorzugten Linux-Archiv herunterladen, wenn kein `kernel-source-'-Paket (dabei steht für die Kernel-Version) vorhanden ist. Das Debian `initrd'-Bootskript erfordert einen speziellen Kernel-Patch namens `initrd'; vergleiche http://bugs.debian.org/149236. Detaillierte Anweisungen zur Benutzung des `kernel-package'-Pakets sind in der Datei `/usr/share/doc/kernel-package/README.gz' zu finden. 2.7.3. Spezielle Regeln für den Umgang mit Modulen -------------------------------------------------- Debians `modconf' Paket enthält ein Shellskript (`/usr/sbin/modconf'), dass zur Anpassung der Modulkonfiguration genutzt werden kann. Dieses Skript besitzt eine Menü basierte Schnittstelle, die den Nutzer nach Einzelheiten über ladbare Gerätetreiber im System fragt. Die Antworten werden benutzt, um die Datei `/etc/modules.conf' (welche Aliase enthält sowie andere Argumente, die in Verbindung mit verschiedenen Modulen verwendet werden müssen) anzupassen, auf Grund von Dateien in `/etc/modutils/' und `/etc/modules' (die die Module auflistet, die zur Bootzeit geladen werden müssen). Wie die (neuen) `Configure.help'-Dateien, die nun verfügbar sind, um angepasste Kernel zu unterstützen, kommt das `modconf'-Paket mit einer Reihe von Hilfe-Dateien (in `/usr/share/modconf/'), die detaillierte Informationen über passende Argumente für jedes Modul enthalten. Vergleiche Abschnitt 7.2, `Der modularisierte Kernel 2.4' für Beispiele. 2.7.4. Deinstallation eines alten Kernel-Pakets ----------------------------------------------- Das `kernel-image-.prerm'-Skript überprüft, ob der aktuell laufende Kernel mit dem zu entfernenden Kernel übereinstimmt. Deshalb können ungewünschte kernel-image Pakete sicher mittels # dpkg --purge --force-remove-essential kernel-image- entfernt werden. ( ist durch die entsprechende Kernelversion und Revisionsnummer zu ersetzen.) ------------------------------------------------------------------------------- 3. Debian-System-Installationshinweise -------------------------------------- Offizielle Dokumentation zur Installation von Debian ist unter http://www.debian.org/releases/stable/ und http://www.debian.org/releases/stable/installmanual zu finden. Die Entwicklerversionen davon sind http://www.debian.org/releases/testing/ und http://www.debian.org/releases/testing/installmanual (befinden sich in Arbeit und sind manchmal eventuell nicht vorhanden). Obwohl dieses Kapitel ursprünglich für die Potato-Installation geschrieben wurde, ist der größte Teil des Inhalts auf das Woody-Installationsprogramm aktualisiert worden; beide sind sehr ähnlich. Da Sarge ein komplett anderes Installationsprogramm verwenden wird, sollten Sie dies nur als Anhaltspunkt für die Sarge-Installation verstehen. Einige Schlüsselpakete haben auch geänderte Namen und Prioritäten. Zum Beispiel ist der Standard-MTA von Sarge `exim4' anstatt `exim' und `coreutils' wurde eingeführt, um verschiedene Pakete zu ersetzen. Es ist eventuell nötig, einige Schritte anzupassen. 3.1. Allgemeine Linux-System-Installationshinweise -------------------------------------------------- Vergessen Sie nicht unter http://www.debian.org/CD/netinst/ zu schauen, wenn Sie nach einem kompakten CD-Image des Debian-Installers suchen. Die Verwendung der `testing'- oder `unstable'-Distribution führt zum erhöhten Risiko, auf verschiedene Fehler zu stoßen. Dieses Risiko kann durch ein Multi-Boot-Schema gemanagt werden, bei dem eine stabilere Debian-Distribution genutzt wird. Alternativ kann auch ein netter Trick mit `chroot', wie in Abschnitt 8.6.35, ``chroot'' beschrieben, genutzt werden. Letzteres ermöglicht die Nutzung verschiedener Debian-Distributionen simultan auf verschiedenen Konsolen. 3.1.1. Grundlegendes zur Hardware-Kompatibilität ------------------------------------------------ Linux ist zur meisten PC-Hardware kompatibel und kann auf fast jedem Rechner installiert werden. Es war für mich so einfach wie eine Windows-95/98/Me-Installation. Die Liste unterstützter Hardware wächst beständig. Sollten Sie einen Laptop besitzen, schauen Sie unter Linux auf Laptops (http://www.linux-laptop.net/) für Hinweise zur Installation zu verschiedenen Marken und Modellen. Meine Empfehlung zur Desktop-PC-Hardware ist "sei konservativ": * SCSI statt IDE für die Arbeit, IDE/ATAPI-HD für private Nutzung. * IDE/ATAPI-CD-ROM (oder -CD-RW). * PCI statt ISA, insbesondere für die Netzwerkkarte (NIC). * Verwende eine billige NIC. Tulip für PCI und NE2000 für ISA sind geeignet. * Vermeide PCMCIA-Karten (Notebook) für die erste Linux-Installation. * Keine USB-Tastatur, -Maus, ... es sei denn Sie lieben die Herausforderung. Sollten Sie einen langsamen Rechner haben, so ist das vorübergehende Entfernen und Einbauen der Festplatte in einen schnelleren Rechner für die Installation eine gute Idee. 3.1.2. Bestimmung der PC-Hardware und des Chipsatzes ---------------------------------------------------- Während der Installation wird man nach der eingebauten Hardware oder dem Chipsatz des PCs gefragt. Manchmal sind diese Informationen nicht leicht zu finden. Eine Möglichkeit ist: 1. Öffnen des PC-Gehäuses. 2. Bestimmen der Aufdrucke auf den großen Chips auf der Graphik- und Netzwerkkarte, sowie den Chips nahe den seriellen und IDE-Anschlüssen. 3. Bestimmen der Kartennamen, die auf der Rückseite der PCI- und ISA-Karten aufgedruckt sind. 3.1.3. Bestimmung der PC-Hardware mit Debian -------------------------------------------- Die folgenden Kommandos eines Linux-Systems sollten Aufschluss über aktuelle Hardware und deren Konfiguration geben. $ pager /proc/pci $ pager /proc/interrupts $ pager /proc/ioports $ pager /proc/bus/usb/devices Diese Kommandos können während der Installation in der Konsole nach Drücken von Alt-F2 gestartet werden. Nach der Basisinstallation können optionale Pakete wie `pciutils', `usbutils' und `lshw' installiert werden, um erweiterte Informationen zum System zu erhalten. $ lspci -v | pager $ lsusb -v | pager # lshw | pager Typische Verwendung von Interrupts: * IRQ0: Zeitausgabe (8254) * IRQ1: Tastatur-Controller * IRQ2: Kaskadierung zu IRQ8--IRQ15 bei PC-AT * IRQ3: zweiter serieller Anschluss (io-port=0x2F8) (`/dev/ttyS1') * IRQ4: primärer serieller Anschluss (io-port=0x3F8) (`/dev/ttyS0') * IRQ5: frei [Soundkarte (SB16: io-port=0x220, DMA-low=1, DMA-high=5)] * IRQ6: Diskettenlaufwerks-Controller (io-port=0x3F0) (`/dev/fd0', `/dev/fd1') * IRQ7: paralleler Anschluss (io-port=0x378) (`/dev/lp0') * IRQ8: Echtzeituhr (rtc) * IRQ9: Software-Interrupt (int 0x0A), Umleitung auf IRQ2 * IRQ10: frei [Netzwerkkarte (NE2000: io-port=0x300)] * IRQ11: frei [(SB16-SCSI: io-port=0x340, SB16-IDE: io-port=0x1E8,0x3EE)] * IRQ12: PS/2-Maus * IRQ13: frei (war mathematischer Koprozessor 80287) * IRQ14: primärer IDE-Controller (`/dev/hda', `/dev/hdb') * IRQ15: sekundärer IDE-Controller (`/dev/hdc', `/dev/hdd') Für alte nicht-PnP-ISA-Karten sollten Sie eventuell IRQ5, IRQ10 und IRQ11 auf "non-PnP" im BIOS einstellen. Für USB-Geräte werden die Geräteklassen in `/proc/bus/usb/devices' mit `Cls=' aufgeführt: * Cls=00 : nicht benutzt * Cls=01 : Audio (Lautsprecher, etc.) * Cls=02 : Kommunikation (Modem, Netzwerkkarte, ...) * Cls=03 : HID (Human Interface Device (Schnittstellen): Tastatur, Maus, Joystick) * Cls=07 : Drucker * Cls=08 : Massenspeicher (Diskettenlaufwerk, CD/DVD Laufwerk, Festplatte, Flash Speicher, ...) * Cls=09 : Hub (USB Hub) * Cls=255 : Hersteller spezifisch Ist die Geräteklasse eines Gerätes nicht 255, so wird es von Linux unterstützt. 3.1.4. Bestimmen der PC-Hardware mit anderen Betriebssystemen ------------------------------------------------------------- Hardware-Informationen können auch von anderen Betriebssystemen erhalten werden: Man kann eine andere kommerzielle Linux-Distribution installieren. Die Hardwareerkennung ist bei diesen oft besser, als dies bei Debian zurzeit der Fall ist. (Diese Situation sollte ausgewogener sein, wenn `debian-installer' mit Sarge eingeführt wird.) In einem Windows-System kann die Hardware-Konfiguration durch Rechts-Klick auf "Mein Computer" unter Eigenschaften / Gerätemanager erhalten werden. Die Ressourcen wie IRQ, I/O-Portadressen sowie DMA sollten festgehalten werden. Einige alte ISA-Karten müssen eventuell unter DOS konfiguriert werden. 3.1.5. Ein Lilo-Mythos ---------------------- "Lilo ist auf 1024 Zylinder beschränkt." Falsch! Das neuere `lilo' das nach Debian-Potato verwendet wird, bietet Unterstützung für lba32. Ist das BIOS des Motherboards aktuell genug um lba32 zu unterstützen, so sollte `lilo' in der Lage sein, auch von außerhalb der alten 1024-Zylindergrenze zu booten. Es muss nur sichergestellt werden, dass die Zeile "lba32" irgendwo am Anfang der `lilo.conf'-Datei hinzugefügt wird, wenn noch eine alte `lilo.conf' vorhanden ist. Man vergleiche `/usr/share/doc/lilo/Manual.txt.gz'. 3.1.6. GRUB ----------- Der neue Bootloader `grub' des GNU-Hurd-Projekts kann auf einem Debian-Woody-System wie folgt installiert werden: # apt-get update # apt-get install grub-doc # mc /usr/share/doc/grub-doc/html/ ... lesen Sie den Inhalt # apt-get install grub # pager /usr/share/doc/grub/README.Debian.gz ... lesen Sie dies :) Um das GRUB-Menü anzupassen, ist `/boot/grub/menu.lst' zu editieren. Man vergleiche Abschnitt 8.1.6, `Setzen von GRUB-Boot-Parametern' zum Setzen von Bootparametern während des Bootvorgangs, da sich dies leicht von der `lilo'-Konfiguration unterscheidet. 3.1.7. Wahl der Boot-Disketten ------------------------------ In Potato nutzte ich IDEPCI für die normale Desktopinstallation. In Woody bevorzuge ich bf2.4. Beide benutzen eine Version von `boot-floppies' zum Erzeugen von Boot-Disketten. Besitzen Sie eine PCMCIA-Netzwerkkarte, so müssen Sie die Standard-Bootkonfiguration nutzen (dies enthält die größte Anzahl von Disketten und alle Treibermodule) und die Netzwerkkarte im PCMCIA-Menü konfigurieren; man darf sie nicht im Standard-Netzwerk-Dialog einrichten. Für spezielle Systeme kann es notwendig sein, eine angepasste Rettungsdiskette zu erzeugen. Dies kann durch Ersetzen des Kernelimages namens "linux" auf der Debian-Rettungsdiskette, durch ein anderes komprimiertes Kernelimage, das speziell für den Rechner erzeugt wurde, erreicht werden. Details sind in `readme.txt' auf der Rettungsdiskette zu finden. Diese nutzt das MS-DOS-Dateisystem, so dass ein beliebiges System zum Auslesen und Editieren verwendet werden kann. Dies sollte für Personen mit spezieller Netzwerkkarte, etc. leicht zu bewältigen sein. In Sarge wird wohl `debian-installer' und/oder `pgi' zur Erzeugung von Bootdisketten verwendet werden. 3.1.8. Installation ------------------- Folgen Sie den offiziellen Anweisungen, die unter http://www.debian.org/releases/stable/installmanual oder http://www.debian.org/releases/testing/installmanual (befindet sich in Arbeit und ist manchmal eventuell nicht vorhanden) gefunden werden können. Sollten Sie ein System mittels `boot-floppies' aus der `testing' Distribution installieren, so kann es sein, dass Sie während der Installation eine Konsole mittels Alt-F2 öffnen müssen, um in der Datei `/etc/apt/sources.list' manuell Einträge von "stable" nach "testing" zu ändern, um die APT-Quellen anzupassen. Ich tendiere dazu, `lilo' in Partitionen wie `/dev/hda3' zu installieren, während `mbr' in `/dev/hda' installiert wird. Dies minimiert das Risiko, Bootinformationen zu überschreiben. Während des Installationsvorgangs wähle ich folgende Werte. * MD5-Passwörter "yes" * shadow-Passwörter "yes" * Install "advanced" (dselect **) und select * Abwahl von emacs (falls gewählt), nvi, tex, telnet, talk(d); * Auswahl von mc, vim und entweder nano-tiny oder elvis-tiny. Vergleiche Abschnitt 6.2.3, ``dselect''. Selbst wenn Sie ein Emacs-Anhänger sind, vermeiden Sie es zunächst und begnügen Sie sich mit nano während der Installation. Man sollte auch andere große Pakete, so wie TeX (Potato wählte dies aus) zu diesem Moment noch nicht installieren. Vergleiche Abschnitt 11.2, `Rettungseditoren' für den Grund, nano-tiny oder elvis-tiny jetzt zu installieren. * Alle Konfigurationsfragen während der Installationsdialoge der einzelnen Pakete mit "y" beantworten (ersetzt aktuellen Wert). * `exim': wähle 2 für Rechner, da ich meine E-Mails durch den SMTP-Server meines Internetproviders (ISP) verschicke. Für weitere Informationen über dselect vergleiche Abschnitt 6.2.3, ``dselect''. 3.1.9. Hosts und IP im LAN -------------------------- Beispiel einer LAN-Konfiguration (Klasse-C-Subnet: 192.168.1.0/24): Internet | +--- Externer ISP für POP-Service (Zugriff mittels fetchmail) | Access point ISP bietet DHCP-Service und SMTP relay service an | : Kabelmodem (Dialup) | : LAN-Gateway-Maschine, externer Port: eth0 (IP durch ISP's DHCP) altes Notebook (IBM Thinkpad, 486 DX2 50MHz, 20MB RAM) Linux 2.4 Kernel mit ext3 Dateisystem. "ipmasq" Paket (mit umfangreichem Patch, NAT und Firewall) "dhcp-client" Paket, konfiguriert für eth0 (überschreibt DNS-Werte) "dhcp" Paket konfiguriert für eth1 starte "exim" als smarthost (Mode 2) starte "fetchmail" in großen Intervallen (zur Sicherheit) starte "bind" als Cache-Nameserver fürs Internet vom LAN als Nameserver fürs LAN-Netzwerk vom LAN starte "ssh" auf Port 22 und 8080 (Verbindung von überall) starte "squid" als Cache-Server für das Debianarchiv (für APT) LAN-Gateway-Maschine, interner Port: eth1 (IP = 192.168.1.1, fest) | +--- LAN-Switch (100base T) ---+ | | Einige feste IP-Clients im LAN Einige DHCP-Clients im LAN (IP = 192.168.1.2-127, fest) (IP = 192.168.1.128-200, dynamisch) Man vergleiche Kapitel 10, `Netzwerk-Konfiguration' für die Details zur Konfiguration des Netzwerks und Abschnitt 10.12, `Aufbau eines Gateway-Routers' für die Details zur Konfiguration des LAN-Gateway-Servers. 3.1.10. Benutzerkonten ---------------------- Um ein konsistentes Verhalten zwischen verschiedenen Systemen zu gewährleisten, sind die ersten paar Benutzerkonten in meinem System stets gleich. Ich erzeuge immer zuerst ein normales Benutzerkonto mit einem Namen wie "admin" (uid=1000) und leite die E-Mails an root an dies weiter. Diesem Konto wird die Gruppe `adm' zugeordnet (siehe Abschnitt 9.2.2, `"Warum GNU `su' nicht die `wheel' Gruppe unterstützt"') und es können ihm einige root-Privilegien mit `su' (PAM-benutzend) oder mit `sudo' zugeordnet werden. Vergleiche Abschnitt 4.2.2, `Hinzufügen eines neuen Nutzers' für Details. 3.1.11. Anlegen von Dateisystemen --------------------------------- 3.1.11.1. Partitionierung der Festplatte ---------------------------------------- Ich bevorzuge die Verwendung verschiedener Partitionen für verschiedene Verzeichnisbäume, um Schäden bei Systemabstürzen vorzubeugen. Ein Beispiel dafür ist: / == (/ + /boot + /bin + /sbin) == 50MB+ /tmp == 100MB+ /var == 100MB+ /home == 100MB+ /usr == 700MB+ mit X /usr/local == 100MB Die Größe des `/usr'-Verzeichnis hängt sehr von installierten X-Windows-Anwendungen und der Dokumentation ab. `/usr/' kann rund 300MB groß sein, wenn man nur mit der Konsole arbeitet, wobei 2GB--3GB keine unübliche Größe ist, wenn man viele Gnome-Anwendungen installiert hat. Wird `/usr/' zu groß, so ist das Verschieben von `/usr/share/' auf eine andere Partition die effektivste Lösung. Mit den neuen großen vorgefertigten Linux 2.4er-Kernel, kann `/' mehr als 200MB benötigen. Zum Beispiel ist der aktuelle Status meines Internet-Gateway-Rechners wie folgt (Ausgabe des `df -h' Kommandos): Filesystem Größe Benut Verf Ben% Eingehängt auf /dev/hda3 300M 106M 179M 38% / /dev/hda7 100M 12M 82M 13% /home /dev/hda8 596M 53M 513M 10% /var /dev/hda6 100M 834k 94M 1% /var/lib/cvs /dev/hda9 596M 222M 343M 40% /usr /dev/hda10 596M 130M 436M 23% /var/cache/apt/archives /dev/hda11 1.5G 204M 1.2G 14% /var/spool/squid (Der große reservierte Bereich für `/var/spool/squid/' ist für einen Proxy-Cache für den Paketdownload.) Es folgt die `fdisk -l' Ausgabe zur Veranschaulichung einer möglichen Partitionierung: # fdisk -l /dev/hda # Kommentar /dev/hda1 1 41 309928+ 6 FAT16 # DOS /dev/hda2 42 84 325080 83 Linux # nicht benutzt /dev/hda3 * 85 126 317520 83 Linux # root Partition /dev/hda4 127 629 3802680 5 Extended /dev/hda5 127 143 128488+ 82 Linux swap /dev/hda6 144 157 105808+ 83 Linux /dev/hda7 158 171 105808+ 83 Linux /dev/hda8 172 253 619888+ 83 Linux /dev/hda9 254 335 619888+ 83 Linux /dev/hda10 336 417 619888+ 83 Linux /dev/hda11 418 629 1602688+ 83 Linux Einige nicht benutzte Partitionen existieren. Diese sind für die Installation einer zweiten Linux-Distribution oder als Erweiterung für wachsende Verzeichnisbäume vorgesehen. 3.1.11.2. Mounten von Dateisystemen ----------------------------------- Das korrekte Mounten der obigen Dateisysteme wird durch folgende `/etc/fstab' erreicht: # /etc/fstab: statische Dateisystem-Informationen. # # Dateisystem Mountverzeichnis Typ Optionen dump Durchgang /dev/hda3 / ext2 defaults,errors=remount-ro 0 1 /dev/hda5 none swap sw 0 0 proc /proc proc defaults 0 0 /dev/fd0 /floppy auto defaults,user,noauto 0 0 /dev/cdrom /cdrom iso9660 defaults,ro,user,noauto 0 0 # # einige separate Partitionen /dev/hda7 /home ext2 defaults 0 2 /dev/hda8 /var ext2 defaults 0 2 /dev/hda6 /var/lib/cvs ext2 defaults 0 2 # noatime beschleunigt den Dateizugriff beim Lesen /dev/hda9 /usr ext2 defaults,noatime 0 2 /dev/hda10 /var/cache/apt/archives ext2 defaults 0 2 # sehr große Partition für Proxy-Cache /dev/hda11 /var/spool/squid ext2 rw 0 2 # DOS-Backup /dev/hda1 /mnt/dos vfat rw,noauto 0 0 # Backup des Linux Systems /dev/hda2 /mnt/linux ext2 rw,noauto 0 0 # # nfs-mounts mickey:/ /mnt/mickey nfs ro,noauto,intr 0 0 goofy:/ /mnt/goofy nfs ro,noauto,intr 0 0 # minnie:/ /mnt/minnie smbfs ro,soft,intr,credentials={filename} 0 2 Für NFS wird `noauto,intr' kombiniert mit der standardmäßigen `hard'-Option benutzt. Damit ist es möglich, aufgrund abgebrochener Verbindung hängende Prozesse mit Strg-C zu beenden. Für einen mit Samba (smbfs) angebundenen Windows Rechner ist `rw,auto,soft,intr' eine gute Option. Siehe auch Abschnitt 3.5, `Samba-Konfiguration'. Für ein Diskettenlaufwerk ist `noauto,rw,sync,user,exec' zu empfehlen, da dies Beschädigungen des Dateisystems durch einem unbeabsichtigten Diskettenauswurf vor einem umount-Aufruf verhindert, allerdings verlangsamt dies auch den Schreibzugriff. 3.1.11.3. Autofs-mount ---------------------- Wichtige Punkte zu auto-mount: * Laden Sie das `vfat'-Modul, so dass `/etc/auto.misc' die Zeile `-fstype=auto' enthalten kann: # modprobe vfat # vor dem Zugriff auf die Diskette ... oder um dies zu automatisieren # echo "vfat" >> /etc/modules ... jetzt das System neu starten. * Die Datei `/etc/auto.misc' ist wie folgt anzupassen: floppy -fstype=auto,sync,nodev,nosuid,gid=100,umask=000 :/dev/fd0 ... wobei gid=100 für "users" steht. * Erzeugen Sie nun die Links `cdrom' und `floppy' in `/home/', die auf `/var/autofs/misc/cdrom' bzw. `/var/autofs/misc/floppy' verweisen. * Nun ist der "users"-Gruppe hinzuzufügen. 3.1.11.4. NFS-mount ------------------- Der externe Linux-NFS-Server (goofy) befindet sich hinter einer Firewall (gateway). Ich habe eine sehr lockere Sicherheitspolitik in meinem LAN, da ich der einzige Nutzer bin. Zum Aktivieren des NFS-Zugangs muss auf der NFS-Serverseite die Datei `/etc/exports' erzeugt werden: # /etc/exports: die Zugriffskontrollliste für Dateisysteme, auf die # NFS-Clients zugreifen sollen. Siehe exports(5). / (rw,no_root_squash) Dies ist nötig, um den NFS-Server zu konfigurieren, nachdem die NFS-Server- und Client-Pakete installiert und aktiviert wurden. Der Einfachheit halber erzeuge ich üblicherweise eine einzige 2GB Partition für eine experimentelle oder schnelle zweite Linuxinstallation. Ich teile wahlweise die swap- und `/tmp'-Partitionen für diese Installationen. Ein aus mehreren Partitionen bestehendes System ist für diese Verwendung zu kompliziert. Wenn nur ein einfaches Konsolen-System benötigt wird, so sind 500MB mehr als ausreichend. 3.1.12. DRAM-Speicher-Richtlinien --------------------------------- Es folgen einige grobe Anhaltspunkte für DRAM. 4MB: Absolutes Minimum für den Linux-Kernel. 16MB: Minimum für ein angemessenes Konsolen-System. 32MB: Minimum für ein einfaches X-System. 64MB: Minimum für ein X-System mit GNOME/KDE. 128MB: Empfohlen für komfortables Arbeiten mit X und GNOME/KDE. 256MB (oder mehr): Warum nicht, wenn man es sich leisten kann? DRAM ist billig. Verwendung der Bootoption `mem=4m' (oder in lilo.conf `append="mem=4m"') zeigt, wie sich ein System mit 4MB Speicher verhält. Ein lilo-Bootparameter wird für Systeme mit mehr als 64MB Speicher und einem alten BIOS benötigt. 3.1.13. Swap-Speicher --------------------- Ich verwende die folgenden Richtlinien für Swap: * Jede Swap-Partition ist < 128MB (bei Verwendung alter 2.0 Kernel), bzw. < 2GB (bei Verwendung aktueller Kernel) * Insgesamt = entweder das 1- bis 2-fache des installierten RAM oder 128MB bis 2GB wird empfohlen * Die Swap-Partitionen sind auf verschiedene Festplatten zu verteilen und mit den Optionen `sw,pri=1' in `/etc/fstab' zu mounten. Dies stellt sicher, dass der Kernel ein "striping RAID" der Swap-Partitionen nutzt und einen maximalen Durchsatz erreicht. * Nach Möglichkeit sollte der mittlere Bereich der Festplatte verwendet werden. Selbst wenn er niemals benötigt wird, ist etwas Swap-Speicher (128MB) empfehlenswert, da das System langsamer wird, bevor es wegen Speichermangel abstürzt. 3.2. Bash-Konfiguration ----------------------- Ich passe folgende Shell-Startskripte an meine Gewohnheiten an: /etc/bash.bashrc wird durch eigene Version ersetzt /etc/profile wird beibehalten (bis auf $PS1: \w -> \W) /etc/skel/.bashrc wird durch eigene Version ersetzt /etc/skel/.profile wird durch eigene Version ersetzt /etc/skel/.bash_profile wird durch eigene Version ersetzt ~/.bashrc wird für alle Nutzer ersetzt ~/.profile wird für alle Nutzer ersetzt ~/.bash_profile wird für alle Nutzer ersetzt Vergleiche Details dazu in meinen Beispielskripten (http://www.debian.org/doc/manuals/debian-reference/examples/). Ich bevorzuge ein transparentes System, deshalb setze ich `umask' auf 002 oder 022. `PATH' wird durch die folgenden Konfigurationsdateien in der Reihenfolge /etc/login.defs - bevor die Shell PATH setzt /etc/profile (startet eventuell /etc/bash.bashrc) ~/.bash_profile (startet eventuell ~/.bashrc) gesetzt. 3.3. Maus-Konfiguration ----------------------- 3.3.1. PS/2-Mäuse ----------------- Im Falle einer Maus mit einem PS/2-Anschluss am ATX-Motherboard, sollte der Signalfluss wie folgt sein: Maus -> /dev/psaux -> gpm -> /dev/gpmdata = /dev/mouse -> X Hier wurde ein symbolischer Link `/dev/mouse' verwendet, der auf `/dev/gpmdata' verweist, um einige Konfigurationsprogramme zufriedenzustellen und die erneute Konfiguration zu vereinfachen. (Entscheidet man sich beispielsweise dazu, den `gpm'-Daemon nicht zu nutzen, so muss der symbolische Link `/dev/mouse' auf `/dev/psaux' geändert werden, nachdem `gpm' entfernt wurde.) Dieser Signalfluss erlaubt, die Tastatur und die Maus zu entfernen und beim Anstecken mit `gpm' neu zu initialisieren. X wird davon nicht negativ beeinflusst! Das Protokoll des Signalflusses zwischen `gpm'-Ausgabe und X-Eingabe kann auf zwei Arten implementiert werden, als spezielles Protokoll wie z.B. "ms3" (serielles Microsoft-3-Tasten-Mausprotokoll) oder "raw" (nutzt das selbe Protokoll wie die angeschlossene Maus) und diese Wahl diktiert die Wahl des in der X-Konfiguration benutzten Protokolls. Ich werde die Konfiguration anhand einer 3-Tasten-Logitech (traditionelle Unix-artige) -PS/2-Maus demonstrieren und im folgenden Beispiel beschreiben. Sind Sie einer derjenigen, dessen Graphikkarte nicht durch den neuen X-Server Version 4, sondern nur durch Version 3 unterstützt wird (einige ATI-64-Bit-Karten), so muss `/etc/X11/XF86Config' anstatt von `/etc/X11/XF86Config-4' im Folgenden konfiguriert werden. 3.3.1.1. Der ms3-Protokoll-Ansatz --------------------------------- /etc/gpm.conf | /etc/X11/XF86Config-4 =========================+====================================== device=/dev/psaux | Section "InputDevice" responsiveness= | Identifier "Konfigurierte Maus" repeat_type=ms3 | Driver "mouse" type=autops2 | Option "CorePointer" append="" | Option "Device" "/dev/gpmdata" sample_rate= | Option "Protocol" "IntelliMouse" | EndSection Wenn diese Methode gewählt wird, so erfolgt die Anpassung des Maustyps allein in der Datei `gpm.conf' und die X-Konfiguration bleibt gleich. Man vergleiche meine Beispielskripte (http://www.debian.org/doc/manuals/debian-reference/examples/). 3.3.1.2. Der raw-Protokoll-Ansatz --------------------------------- /etc/gpm.conf | /etc/X11/XF86Config-4 =========================+====================================== device=/dev/psaux | Section "InputDevice" responsiveness= | Identifier "Configured Mouse" repeat_type=raw | Driver "mouse" type=autops2 | Option "CorePointer" append="" | Option "Device" "/dev/mouse" sample_rate= | Option "Protocol" "MouseManPlusPS/2" | EndSection Wenn diese Methode gewählt wird, so erfolgt die Anpassung des Maustyps in `gpm.conf' sowie in der X-Konfiguration. 3.3.1.3. Wie man andere Mäuse einrichtet ---------------------------------------- Der `gpm'-Gerätetyp `autops2' sollte die meisten PS/2-Mäuse erkennen. Unglücklicherweise funktioniert dies nicht immer und ist in vor-Woody-Versionen nicht verfügbar. In diesen Fällen sollte man `ps2' oder `imps2' in `gpm.conf' anstatt von `autops2' probieren. Um die von `gpm' unterstützten Mäuse zu bestimmen, kann man `gpm -t help' starten. Man vergleiche gpm(8). Wird eine 2-Tasten-PS/2-Maus verwendet, so sollte das X-Protokoll die Option `Emulate3Buttons' nutzen. Der Unterschied des Protokolls zwischen der 2- und 3-Tasten-Maus wird automatisch erkannt und für `gpm' eingerichtet, nachdem die mittlere Maustaste einmalig gedrückt wurde. Für das X-Protokoll mit Abschnitt 3.3.1.2, `Der raw-Protokoll-Ansatz' oder ohne `gpm' nutzt man: * `IntelliMouse': Maus mit seriellem Anschluss (`gpm' Repeater mit "ms3") * `PS/2': PS/2-Anschluss-Maus (dies immer zuerst ausprobieren) * `IMPS/2': beliebige PS/2-Anschluss-Mäuse (2, 3 oder Scroll Mäuse, besser) * `MouseManPlusPS/2': Logitech PS/2-Anschluss-Maus * `...' Ausführlicheres ist unter Mouse Support in XFree86 (http://www.xfree86.org/current/mouse.html) zu finden. Eine typische Microsoft Scroll-Maus funktioniert am besten mit: /etc/gpm.conf | /etc/X11/XF86Config-4 =========================+====================================== device=/dev/psaux | Section "InputDevice" responsiveness= | Identifier "Konfigurierte Maus" repeat_type=raw | Driver "mouse" type=autops2 | Option "CorePointer" append="" | Option "Device" "/dev/mouse" sample_rate= | Option "Protocol" "IMPS/2" | Option "Buttons" "5" | Option "ZAxisMapping" "4 5" | EndSection Für einige aktuelle dünne Toshiba-Notebooks, kann das Aktivieren von `gpm' vor PCMCIA im System-V-Init-Skript helfen, wenn das System sonst hängenbleibt. Eigenartig aber wahr. 3.3.2. USB-Mäuse ---------------- Stellen Sie sicher, dass Sie alle benötigten Kernel-Elemente einkompiliert oder als Modul vorliegen haben: * Unter "Input core support": * "Input core support" (CONFIG_INPUT, `input.o'), * "Mouse support" (CONFIG_INPUT_MOUSEDEV, `mousedev.o'), * Unter "USB support": * "Support for USB" (CONFIG_USB, `usbcore.o'), * "Preliminary USB device filesystem" (CONFIG_USB_DEVICEFS), * "UHCI" oder "OHCI" (CONFIG_USB_UHCI || CONFIG_USB_UHCI_ALT || CONFIG_USB_OHCI, `usb-uhci.o' || `uhci.o' || `usb-ohci.o'), * "USB Human Interface Device (full HID) support" (CONFIG_USB_HID, `hid.o') und * "HID input layer support" (CONFIG_USB_HIDINPUT) Die kleingeschriebenen Namen sind Modulnamen. Wird devfs nicht genutzt, so ist eine Gerätedatei `/dev/input/mice' mit major 13 und minor 63 wie folgt anzulegen: # cd /dev # mkdir input # mknod input/mice c 13 63 Für typische _USB_-Scroll-Mäuse, ist folgende Konfiguration zu empfehlen: /etc/gpm.conf | /etc/X11/XF86Config-4 =========================+====================================== device=/dev/input/mice | Section "InputDevice" responsiveness= | Identifier "Konfigurierte Maus" repeat_type=raw | Driver "mouse" type=autops2 | Option "SendCoreEvents" "true" append="" | Option "Device" "/dev/input/mice" sample_rate= | Option "Protocol" "IMPS/2" | Option "Buttons" "5" | Option "ZAxisMapping" "4 5" | EndSection Man vergleiche das Linux USB Projekt (http://www.linux-usb.org/) für weitere Informationen. 3.3.3. Touchpad --------------- Obwohl das Touchpad eines Laptops standardmäßig eine 2-Tasten-PS/2-Maus emuliert, ermöglicht das `tpconfig'-Paket die volle Kontrolle über das Gerät. Die Einstellung `OPTIONS="--tapmode=0"' in `/etc/default/tpconfig' deaktiviert z.B. das ärgerliche "klicken beim Antippen" Verhalten. Folgende `/etc/gpm.conf' ermöglicht das Nutzen des Touchpads und einer externen USB-Maus in der Konsole: device=/dev/psaux responsiveness= repeat_type=ms3 type=autops2 append="-M -m /dev/input/mice -t autops2" sample_rate= 3.4. NFS-Konfiguration ---------------------- NFS wird durch `/etc/exports' eingerichtet: # apt-get install nfs-kernel-server # echo "/ *.domainname-für-lan-hosts(rw,no_root_squash,nohide)" \ >> /etc/exports Man vergleiche meine Beispielskripte für Details (http://www.debian.org/doc/manuals/debian-reference/examples/). 3.5. Samba-Konfiguration ------------------------ Referenzen: * http://www.samba.org/ * `samba-doc'-Paket Das Einrichten von Samba im "share"-Mode ist viel einfacher, da dies die Laufwerke wie unter WfW anspricht. Aber es wird empfohlen, den "user"-Mode zu verwenden. Samba kann durch `debconf' oder `vi' konfiguriert werden: # dpkg-reconfigure --priority= samba # in Woody # vi /etc/samba/smb.conf Man vergleiche meine Beispielskripte für Details (http://www.debian.org/doc/manuals/debian-reference/examples/). Das Hinzufügen eines neuen Nutzers zur `smbpasswd'-Datei kann mit `smbpasswd' erfolgen: $ su -c "smbpasswd -a Benutzername" Man sollte sicherstellen, dass man verschlüsselte Passwörter für optimale Kompatibilität verwendet. Der Wert `os level' ist entsprechend zu den folgenden Systemäquivalenzen zu setzen (je höher der Wert, um so größer ist die Priorität als Server): 0: Samba mit geringer Priorität 1: WfW 3.1, Win95, Win98, Win/Me? 16: Win NT WS 3.51 17: Win NT WS 4.0 32: Win NT SVR 3.51 33: Win NT SVR 4.0 255: Samba mit hoher Priorität Es muss sichergestellt werden, dass die Nutzer der Gruppe angehören, welche dem Verzeichnis zugeordnet ist, das den gemeinsamen Zugriff ermöglicht. Außerdem muss der Verzeichnispfad entsprechende Ausführungsrechte haben, um den Zugriff zu ermöglichen. 3.6. Drucker-Konfiguration -------------------------- Die traditionelle Methode ist `lpr'/`lpd'. Es gibt allerdings ein neues System: CUPS(TM) (Common UNIX Printing System). PDQ ist ein anderer Ansatz. Man vergleiche Linux Printing HOWTO (http://www.tldp.org/HOWTO/Printing-HOWTO.html) für weitere Informationen. 3.6.1. `lpr'/`lpd' ------------------ Für die `lpr'/`lpd'-artigen Spooler (`lpr', `lprng' und `gnulpr') ist `/etc/printcap' wie folgt für PostScript- und Nur-Text-Drucker anzupassen (die Grundlagen): |:\ :sd=/var/spool/lpd/:\ :mx#0:\ :sh:\ :lp=/dev/lp0: Bedeutung der obigen Zeilen: * Kopfzeile: -- Name der Druckerwarteschlange, = alias * mx#0 -- maximale Dateigröße ist nicht limitiert * sh -- Unterdrücken eines Deckblatts * lp=/dev/lp0 -- lokale Druckerschnittstelle oder port@host für entfernte Drucker Dies ist eine gute Konfiguration für einen PostScript-Drucker. Auch für das Drucken von einem Windows-Rechner mittels Samba ist dies eine geeignete Konfiguration für alle von Windows unterstützten Drucker (bidirektionale Kommunikation wird nicht unterstützt). Man muss die entsprechende Druckerkonfiguration auf dem Windows-Rechner nutzen. Sollte kein PostScript-Drucker vorhanden sein, muss man einen Filter mittels `gs' aktivieren. Es gibt viele Konfigurationstools für das Einrichten von `/etc/printcap'. Jede der folgenden Möglichkeiten kommt in Frage: * `gnulpr', (`lpr-ppd') und `printtool' -- Ich nutze dies. * `lpr' und `apsfilter' * `lpr' und `magicfilter' * `lprng' und `lprngtool' * `lprng' und `apsfilter' * `lprng' und `magicfilter' Um graphische Konfigurationstools wie `printtool' zu verwenden, vergleiche man Abschnitt 9.4.11, `Administratorrechte unter X' um root-Rechte zu erhalten. Mit `printtool' erzeugte Druckerwarteschlangen nutzen `gs' und agieren wie PostScript-Drucker. Beim Zugriff darauf, müssen deshalb PostScript-Druckertreiber verwendet werden. Auf der Windows-Seite ist "Apple LaserWriter" der Standard. 3.6.2. CUPS(TM) --------------- Das Common UNIX Printing System (oder CUPS(TM)) wird mittels `aptitude' durch Auswahl aller Pakete unter "Schnellauswahl (Tasks)" -> "Servers" -> "Druck-Server" installiert (Sarge). Für beste Ergebnisse sollte `aptitude' wie folgt konfiguriert sein: "F10" -> "Optionen" -> "Abhängigkeitsbehandlung" -> "[X] Empfohlene Pakete automatisch installieren". KDE- und Gnome-Desktop-Umgebungen bieten eine einfache Drucker-Konfiguration. Alternativ kann das System mit einem beliebigen Web-Browser konfiguriert werden, wenn `swat' installiert ist: $ http://localhost:631 Ein Drucker kann wie folgt hinzugefügt werden: * klicken auf "Printers" auf der Hauptseite und danach "Add Printer", * Eingabe von "root" für den Nutzernamen und des entsprechenden Passworts, * folgen Sie den weiteren Anweisungen zum Hinzufügen des Druckers, * gehen Sie zurück zur "Printers" Seite und klicken Sie "Configure Printer" und * fahren Sie fort, die Papiergröße, Auflösung und andere Parameter zu spezifizieren. Weitere Informationen sind unter http://localhost:631/documentation.html und http://www.cups.org/cups-help.html zu finden. 3.7. CRON für Desktop-PCs ------------------------- Der Vixie-`cron' wird standardmäßig für die Ausführung von Programmen zu bestimmten Zeiten installiert. Er funktioniert nicht gut, falls Ihr System nicht Tag und Nacht läuft. Für einen Desktop-PC, sollten Sie `anacron' statt `cron' installieren, um dies Problem zu umgehen. Das Paket `fcron' kann alternativ verwendet werden. In Abschnitt 8.6.27, `Terminplanung für Prozesse (`cron', `at')' finden Sie Informationen zur Konfiguration von CRON-Jobs. 3.8. Andere Installationshinweise --------------------------------- 3.8.1. Installation einiger weiterer Pakete nach der Basisinstallation ---------------------------------------------------------------------- Sind Sie den bisherigen Anweisungen gefolgt, so haben Sie ein kleines aber funktionsfähiges Debian-System. Es ist nun ein guter Zeitpunkt, um größere Pakete zu installieren. * Man starte `tasksel'. Vergleiche Abschnitt 6.2.1, `_Aufgaben-Profile_ mit `tasksel' oder `aptitude' installieren'. Man kann Folgendes bei Bedarf wählen: * End-user -- X Window System * Development -- C and C++ * Development -- Python * Development -- Tcl/Tk * Miscellaneous -- TeX/LaTeX environment * Ich nutze `tasksel' auch oft, um mir einen Überblick über die einzelnen Komponenten eines Menüpunktes mittels zu verschaffen, und diese einzeln mittels `dselect' zu installieren. * Starten von `dselect'. Das erste was man jetzt wohl tun wird, ist den favorisierten Editor und alle Programme die man benötigt, auszuwählen. Man kann mehrere Emacs-Varianten gleichzeitig installieren. Man vergleiche Abschnitt 6.2.3, ``dselect'' und Abschnitt 11.1, `Populäre Editoren'. Man kann auch einige der Standardprogramme durch Programme mit größerer Funktionalität ersetzen. * ... * ... Ich editiere gewöhnlich `/etc/inittab' zum einfacheren Herunterfahren des Rechners. ... # What to do when CTRL-ALT-DEL is pressed. ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -h now