diff --git a/de_DE.ISO8859-1/books/handbook/boot/chapter.xml b/de_DE.ISO8859-1/books/handbook/boot/chapter.xml index 91931165cd..aa2eae742b 100644 --- a/de_DE.ISO8859-1/books/handbook/boot/chapter.xml +++ b/de_DE.ISO8859-1/books/handbook/boot/chapter.xml @@ -1,1110 +1,1106 @@ Hans-Christian Ebke Übersetzt von FreeBSDs Bootvorgang Übersicht booten Bootstrap Das Starten des Computers und das Laden des Betriebssystems wird im Allgemeinen als Bootstrap-Vorgang bezeichnet, oder einfach als Booten. FreeBSDs Bootvorgang ermöglicht große Flexibilität, was das Anpassen dessen anbelangt, was passiert, wenn das System gestartet wird. Es kann zwischen verschiedenen Betriebssystemen, die auf demselben Computer installiert sind oder verschiedenen Versionen desselben Betriebssystems oder installierten Kernels gewählt werden. Dieses Kapitel zeigt die zur Verfügung stehenden Konfigurationsmöglichkeiten und wie man den Bootvorgang anpasst. Dies schließt alles ein, bis der Kernel gestartet worden ist, der dann alle Geräte gefunden hat und &man.init.8; gestartet hat. Falls Sie sich nicht ganz sicher sind, wann dies passiert: Es passiert, wenn die Farbe des Textes während des Bootvorgangs von weiß zu Hellgrau wechselt. Dieses Kapitel informiert über folgende Punkte: Die Komponenten des FreeBSD-Bootvorgangs und deren Interaktion. Die Optionen, mit denen Sie den FreeBSD-Bootvorgang steuern können. Wie Geräte mit &man.device.hints.5; konfiguriert werden. nur x86 Dieses Kapitel erklärt den Bootvorgang von FreeBSD auf Intel X86 Plattformen. Das Problem des Bootens Wenn der Computer eingeschaltet wird und das Betriebssystem gestartet werden soll, entsteht ein interessantes Dilemma, denn der Computer weiß per Definition nicht, wie er irgendetwas tut, bis das Betriebssystem gestartet wurde. Das schließt das Starten von Programmen, die sich auf der Festplatte befinden, ein. Wenn nun der Computer kein Programm von der Festplatte starten kann, sich das Betriebssystem aber dummerweise genau dort befindet, wie wird es dann gestartet? Dieses Problem ähnelt einer Geschichte des Barons von Münchhausen. Dort war eine Person in einen Sumpf gefallen und hat sich selbst an den Riemen seiner Stiefel (engl. bootstrap) herausgezogen. In den jungen Jahren des Computerzeitalters wurde mit dem Begriff Bootstrap dann die Technik das Betriebssystem zu laden bezeichnet und wurde hinterher mit booten abgekürzt. BIOS Basic Input/Output System BIOS Auf x86-Plattformen ist das BIOS (Basic Input/Output System) dafür verantwortlich, das Betriebssystem zu laden. Dazu liest das BIOS den Master Bootsektor (MBR; Master Boot Record) aus, der sich an einer bestimmten Stelle auf der Festplatte/Diskette befinden muss. Das BIOS kann den MBR selbstständig laden und ausführen und geht davon aus, dass dieser die restlichen Dinge, die für das Laden des Betriebssystems notwendig sind, selbst oder mit Hilfe des BIOS erledigen kann. Master Boot Record (MBR) Boot Manager Boot Loader Der Code innerhalb des MBRs wird für gewöhnlich als Boot-Manager bezeichnet, insbesondere, wenn eine Interaktion mit dem Anwender stattfindet. Ist dies der Fall, verwaltet der Boot-Manager zusätzlichen Code im ersten Track der Platte oder in Dateisystemen anderer Betriebssysteme. (Boot-Manager werden manchmal auch als Boot Loader bezeichnet, unter FreeBSD wird dieser Begriff aber für eine spätere Phase des Systemstarts verwendet.) Zu den bekanntesten Boot-Managern gehören boot0 (der auch als Boot Easy bekannte Standard-Boot-Manager von &os;), Grub, GAG, sowie LILO. (Von diesen Boot-Managern hat nur boot0 innerhalb des MBRs Platz.) Falls nur ein Betriebssystem installiert ist, ist der Standard MBR ausreichend. Dieser MBR sucht nach dem ersten bootbaren Slice (das dabei als active gekennzeichnet ist) auf dem Laufwerk und führt den dort vorhandenen Code aus, um das restliche Betriebssystem zu laden. Der von &man.fdisk.8; in der Voreinstellung installierte MBR ist ein solcher MBR und basiert auf /boot/mbr. Falls mehrere Betriebssysteme installiert sind, sollte man einen anderen Boot-Manager installieren, der eine Liste der verfügbaren Betriebssysteme anzeigt und einen wählen lässt, welches man booten möchte. Der nächste Abschnitt beschreibt zwei Boot-Manager mit diesen Fähigkeiten. Das restliche FreeBSD-Bootstrap-System ist in drei Phasen unterteilt. Die erste Phase wird vom MBR durchgeführt, der gerade genug Funktionalität besitzt um den Computer in einen bestimmten Status zu verhelfen und die zweite Phase zu starten. Die zweite Phase führt ein wenig mehr Operationen durch und startet schließlich die dritte Phase, die das Laden des Betriebssystems abschließt. Der ganze Prozess wird in drei Phasen durchgeführt, weil der PC Standard die Größe der Programme, die in Phase eins und zwei ausgeführt werden, limitiert. Durch das Verketten der durchzuführenden Aufgaben wird es FreeBSD möglich, ein sehr flexibles Ladeprogramm zu besitzen. Kernel init Als nächstes wird der Kernel gestartet, der zunächst nach Geräten sucht und sie für den Gebrauch initialisiert. Nach dem Booten des Kernels übergibt dieser die Kontrolle an den Benutzer Prozess &man.init.8;, der erst sicherstellt, dass alle Laufwerke benutzbar sind und die Ressourcen Konfiguration auf Benutzer Ebene startet. Diese wiederum mountet Dateisysteme, macht die Netzwerkkarten für die Kommunikation mit dem Netzwerk bereit und startet generell alle Prozesse, die auf einem FreeBSD-System normalerweise beim Hochfahren gestartet werden. Boot-Manager und Boot-Phasen Boot Manager Der Boot-Manager Master Boot Record (MBR) Der Code im MBR oder im Boot-Manager wird manchmal auch als stage zero des Boot-Prozesses bezeichnet. Dieser Abschnitt beschreibt zwei der weiter oben erwähnten Boot-Manager: boot0 sowie LILO. Der <application>boot0</application> Boot-Manager: Der vom FreeBSD-Installationsprogramm oder &man.boot0cfg.8; in der Voreinstelung installierte Master Boot Record (MBR) basiert auf /boot/boot0. Bei boot0 handelt es sich um ein sehr einfaches Programm, da im MBR lediglich 446 Bytes verfügbar sind, weil der restliche Platz für die Partitionstabelle sowie den 0x55AA-Identifier am Ende des MBRs benötigt wird. Falls Sie boot0 verwenden und mehrere Betriebssysteme auf Ihrer Festplatte installiert haben, werden Sie beim Starten des Computers eine Anzeige ähnlich der folgenden sehen: <filename>boot0</filename>-Screenshot F1 DOS F2 FreeBSD F3 Linux F4 ?? F5 Drive 1 Default: F2 Diverse Betriebssysteme, insbesondere &windows;, überschreiben den MBR ungefragt mit ihrem eigenen. Falls einem dies passiert sein sollte, kann man mit folgendem Kommando den momentanen MBR durch den FreeBSD-MBR ersetzen: &prompt.root; fdisk -B -b /boot/boot0 Gerät Bei Gerät handelt es sich um das Gerät, von dem gebootet wird, also beispielsweise ad0 für die erste IDE-Festplatte, ad2 für die erste IDE-Festplatte am zweiten IDE-Controller, da0 für die erste SCSI-Festplatte, usw. Diese Einstellungen können aber über &man.boot0cfg.8; angepasst werden. Der LILO-Boot-Manager: Damit dieser Boot-Manager auch FreeBSD booten kann, starten Sie zuerst Linux und fügen danach folgende Zeilen in die Konfigurationsdatei /etc/lilo.conf ein: other=/dev/hdXY table=/dev/hdX loader=/boot/chain.b label=FreeBSD Dabei müssen Sie die primäre Partition von FreeBSD sowie dessen Platte im Linux-Format angeben. Dazu ersetzen Sie X durch die Linux-Bezeichnung der Platte und Y durch die von Linux verwendete Partitionsnummer. Wenn Sie ein SCSI-Laufwerk verwenden, müssen Sie /dev/sd anstelle von /dev/hd verwenden. Die Zeile kann weggelassen werden, wenn beide Betriebssysteme auf der gleichen Platte installiert sind. Geben Sie danach /sbin/lilo -v ein, um Ihre Änderungen zu übernehmen. Achtung Sie dabei besonders auf etwaige Fehlermeldungen. Phase Eins, <filename>/boot/boot1</filename> und Phase Zwei, <filename>/boot/boot2</filename> Im Prinzip sind die erste und die zweite Phase Teile desselben Programms, im selben Bereich auf der Festplatte. Aufgrund von Speicherplatz-Beschränkungen wurden sie aufgeteilt, aber man installiert sie eigentlich generell zusammen. Beide werden entweder vom Installer oder von bsdlabel aus der kombinierten Datei /boot/boot kopiert. Beide Phasen befinden sich außerhalb des Dateisystems im Bootsektor des Boot-Slices, wo boot0 oder ein anderer Boot-Manager ein Programm erwarten, das den weiteren Bootvorgang durchführen kann. Die Anzahl der dabei verwendeten Sektoren wird durch die Größe von /boot/boot bestimmt. boot1 ist ein sehr einfaches Programm, da es nur 512 Bytes groß sein darf, und es besitzt gerade genug Funktionalität, um FreeBSDs bsdlabel, das Informationen über den Slice enthält, auszulesen, und um boot2 zu finden und auszuführen. boot2 ist schon ein wenig umfangreicher und besitzt genügend Funktionalität, um Dateien in FreeBSDs Dateisystem zu finden. Außerdem hat es eine einfache Schnittstelle, die es ermöglicht, den zu ladenden Kernel oder Loader auszuwählen. Da der Loader einen weitaus größeren Funktionsumfang hat und eine schöne und einfach zu bedienende Boot-Konfigurations-Schnittstelle zur Verfügung stellt, wird er gewöhnlich von boot2 anstatt des Kernels gestartet. Früher war es jedoch dazu da den Kernel direkt zu starten. <filename>boot2</filename>-Screenshot >> FreeBSD/i386 BOOT Default: 0:ad(0,a)/boot/loader boot: Um das installierte boot1 und boot2 zu ersetzen, benutzt man &man.bsdlabel.8;: &prompt.root; bsdlabel -B diskslice Wobei Slice das Laufwerk und die Slice darstellt, von dem gebootet wird, beispielsweise ad0s1 für die erste Slice auf der ersten IDE-Festplatte. Dangerously Dedicated Mode Wenn man nur den Festplatten-Namen, also z.B. ad0, in &man.bsdlabel.8; benutzt wird eine "dangerously dedicated disk" erstellt, ohne Slices. Das ist ein Zustand, den man meistens nicht hervorrufen möchte. Aus diesem Grund sollte man ein &man.bsdlabel.8;-Kommando noch einmal prüfen, bevor man Return betätigt. Phase drei, <filename>/boot/loader</filename> boot-loader Der boot-loader ist der letzte von drei Schritten im Bootstrap-Prozess und kann im Dateisystem normalerweise unter /boot/loader gefunden werden. Der Loader soll eine benutzerfreundliche Konfigurations-Schnittstelle sein mit einem einfach zu bedienenden eingebauten Befehlssatz, ergänzt durch einen umfangreichen Interpreter mit einem komplexeren Befehlssatz. Loader Ablauf Der Loader sucht während seiner Initialisierung nach Konsolen und Laufwerken, findet heraus, von welchem Laufwerk er gerade bootet, und setzt dementsprechend bestimmte Variablen. Dann wird ein Interpreter gestartet, der Befehle interaktiv oder von einem Skript empfangen kann. loader loader Konfiguration Danach liest der Loader die Datei /boot/loader.rc aus, welche ihn standardmäßig anweist /boot/defaults/loader.conf zu lesen, wo sinnvolle Standardeinstellungen für diverse Variablen festgelegt werden und wiederum /boot/loader.conf für lokale Änderungen an diesen Variablen ausgelesen wird. Anschließend arbeitet dann loader.rc entsprechend dieser Variablen und lädt die ausgewählten Module und den gewünschten Kernel. In der Voreinstellung wartet der Loader 10 Sekunden lang auf eine Tastatureingabe und bootet den Kernel, falls keine Taste betätigt wurde. Falls doch eine Taste betätigt wurde wird dem Benutzer eine Eingabeaufforderung angezeigt. Sie nimmt einen einfach zu bedienenden Befehlssatz entgegen, der es dem Benutzer erlaubt, Änderungen an Variablen vorzunehmen, Module zu laden, alle Module zu entladen oder schließlich zu booten bzw. neu zu booten. Die eingebauten Befehle des Loaders Hier werden nur die gebräuchlichsten Befehle bearbeitet. Für eine erschöpfende Diskussion aller verfügbaren Befehle konsultieren Sie bitte &man.loader.8;. autoboot Sekunden Es wird mit dem Booten des Kernels fortgefahren, falls keine Taste in der gegebenen Zeitspanne betätigt wurde. In der gegebenen Zeitspanne, Vorgabe sind 10 Sekunden, wird ein Countdown angezeigt. boot -options Kernelname Bewirkt das sofortige Booten des Kernels mit den gegebenen Optionen, falls welche angegeben wurden, und mit den angegebenen Kernel, falls denn einer angegeben wurde. Das übergeben eines Kernelnamens ist nur nach einem unload-Befehl anwendbar, andernfalls wird der zuvor verwendete Kernel benutzt. boot-conf Bewirkt die automatische Konfiguration der Module, abhängig von den entsprechenden Variablen. Dieser Vorgang ist identisch zu dem Vorgang, den der Bootloader ausführt und daher nur sinnvoll, wenn zuvor unload benutzt wurde und Variablen (gewöhnlich kernel) verändert wurden. help Thema Zeigt die Hilfe an, die zuvor aus der Datei /boot/loader.help gelesen wird. Falls index als Thema angegeben wird, wird die Liste der zur Verfügung stehenden Hilfe-Themen angezeigt. include Dateiname Verarbeitet die angegebene Datei. Das Einlesen und Interpretieren geschieht Zeile für Zeile und wird im Falle eines Fehlers umgehend unterbrochen. load Typ Dateiname Lädt den Kernel, das Kernel-Modul, oder die Datei des angegebenen Typs. Optionen, die auf den Dateinamen folgen, werden der Datei übergeben. ls Pfad Listet die Dateien im angegebenen Pfad auf, oder das root-Verzeichnis(/), falls kein Pfad angegeben wurde. Die Option bewirkt, dass die Dateigrössen ebenfalls angezeigt werden. lsdev Listet alle Geräte auf, für die Module geladen werden können. Die Option bewirkt eine detailreichere Ausgabe. lsmod Listet alle geladenen Module auf. Die Option bewirkt eine detailreichere Ausgabe. more Dateiname Zeigt den Dateinhalt der angegebenen Datei an, wobei eine Pause alle LINES Zeilen gemacht wird. reboot Bewirkt einen umgehenden Neustart des Systems. set Variable set Variable=Wert Setzt die Umgebungsvariablen des Loaders. unload Entlädt sämtliche geladenen Module. Beispiele für die Loader Bedienung Hier ein paar praktische Beispiele für die Bedienung des Loaders. - Single-User Modus - Um den gewöhnlichen Kernel im Single-User Modus zu + Um den gewöhnlichen Kernel im Single-User ModusSingle-User Modus zu starten: boot -s Um alle gewöhnlichen Kernelmodule zu entladen und dann nur den alten (oder jeden beliebigen anderen) Kernel zu laden: - - kernel.old - unload load kernel.old Es kann kernel.GENERIC verwendet werden, um den allgemeinen Kernel zu bezeichnen, der - vorinstalliert wird. kernel.old + vorinstalliert wird. kernel.oldkernel.old bezeichnet den Kernel, der vor dem aktuellen installiert war (falls man einen neuen Kernel kompiliert und installiert hat zum Beispiel). Der folgende Befehl lädt die gewöhnlichen Module mit einem anderen Kernel: unload set kernel="kernel.old" boot-conf Folgendes lädt ein Kernelkonfigurations-Skript (ein automatisiertes Skript, dass dasselbe tut, was der Benutzer normalerweise von Hand an der Eingabeaufforderung durchführen würde): load -t userconfig_script /boot/kernel.conf Joseph J. Barbish Contributed by Benedict Reuschling Übersetzt von Willkommmensbildschirme während des Bootvorgangs Die Willkommmensbildschirme erzeugen einen visuell viel ansprechenderen Bootvorgang im Vergleich zu den herkömmlichen Bootmeldungen. Diese Bildschirme werden entweder bis zu einem Konsolen-Login-Prompt oder dem eines X-Display Managers angezeigt. Es existieren zwei grundlegende Umgebungen in &os;. Die erste ist die altbekannte, auf virtuellen Konsolen basierte Kommandozeile. Nachdem das System den Bootvorgang abgeschlossen hat, wird ein Anmeldebildschirm auf der Konsole anzeigt. Die zweite Umgebung ist die graphische X11-Desktop Umgebung. Nachdem X11 und eine der Graphischen Oberflächen, wie GNOME, KDE, oder XFce installiert wurden, kann der X11-Desktop über das Kommando startx gestartet werden. Manche Benutzer ziehen den graphischen Anmeldebildschirm von X11 dem traditionellen, textbasierten Anmeldeprompt vor. Display-Manager wie XDM für &xorg;, gdm für GNOME und kdm für KDE (und viele weitere aus der Ports-Sammlung) bieten einen graphischen statt dem konsolenbasierten Anmeldebildschirm. Nach einer erfolgreichen Anmeldung kann der Benutzer die graphische Oberfläche verwenden. In der Kommandozeilen-Umgebung würde der Willkommensbildschirm alle Erkennungsmeldungen des Bootvorgangs und die Startmeldungen von Diensten verstecken, bevor der Anmeldebildschirm erscheint. In der X11-Umgebung erhalten die Anwender einen klareren visuellen Eindruck des Startvorgangs, ähnlich zu dem, den µsoft; &windows; (oder ein nicht-Unix-artiger Systemtyp) zur Verfügung stellt. Willkommensbildschirm-Funktionalität Die Willkommensbildschirm-Funktionalität unterstützt nur 256-Farben Bitmaps (.bmp), ZSoft PCX (.pcx) oder TheDraw (.bin) Dateien. Zusätzlich muss die Willkommensbildschirm-Datei eine Auflösung von 320 mal 200 Pixeln oder weniger besitzen, damit Standard-VGA Geräte damit arbeiten können. Um grössere Bilder bis zu einer maximalen Auflösung von 1024 mal 768 Pixeln zu verwenden, muss Unterstützung für VESA in &os; enthalten sein. Dies kann durch das Laden des VESA-Moduls während des Systemstarts geschehen, oder durch Hinzufügen der VESA-Kernelkonfigurationsoption und anschliessendem Bau des Kernels (Lesen Sie dazu ). Die VESA-Unterstützung ermöglicht es den Benutzern, Willkommensbildschirme als Vollbild anzuzeigen, die den gesamten Bildschirm ausfüllen. Wenn der Willkommensbildschirm beim Bootvorgang angezeigt wird, kann dieser jederzeit mit einem beliebigen Tastendruck ausgeschaltet werden. Der Willkommensbildschirm ist standardmässig so eingestellt, dass er als Bildschirmschoner ausserhalb von X11 verwendet wird. Nach einer bestimmten Zeit der Untätigkeit wird der Willkommensbildschirm angezeigt und wechselt durch verschiedene Stufen der Intensität von hell zu einem sehr dunklen Bild und wieder zurück. Dieses Verhalten des Standard-Willkommensbildschirms (Screen-Saver) kann durch hinzufügen einer saver=-Zeile in /etc/rc.conf geändert werden. Die Option saver= besitzt mehrere eingebaute Screen-Saver, aus denen man wählen kann, und deren komplette Liste in der &man.splash.4;-Manualpage enthalten ist. Der Standard-Screen-Saver ist warp. Beachten Sie, dass sich die saver=-Option in /etc/rc.conf nur auf virtuelle Konsolen bezieht. Sie hat keinen Effekt auf X11-Display-Manager. Ein paar Nachrichten des Bootloaders und ganz besonders das Menü mit den Bootoptionen und dem Warte-Countdown werden zur Bootzeit angezeigt, selbst wenn der Willkommensbildschirm aktiviert ist. Dateien mit Beispiel-Willkommensbildschirmen können von der Galerie auf http://artwork.freebsdgr.orgb heruntergeladen werden. Durch die Installation des Ports sysutils/bsd-splash-changer können Willkommensbildschirme von einer zufällig ausgewählten Sammlung von Bildern bei jedem Neustart angezeigt werden. Aktivieren der Willkommensbildschirm-Funktionalität Die Willkommensbildschirm-Datei (.bmp, .pcx oder .bin) muss im Wurzelverzeichnis, z.B. /boot abgelegt werden. Für die Standard-Auflösung (256-Farben, 320 mal 200 Pixel oder weniger) beim Booten bearbeiten Sie die Datei /boot/loader.conf, so dass diese die folgenden Zeilen enthält: splash_bmp_load="YES" bitmap_load="YES" bitmap_name="/boot/splash.bmp" Für grössere Video-Auflösungen bis zum Maximum von 1024 mal 768 Pixeln ändern Sie die Datei /boot/loader.conf, damit diese die folgenden Zeilen enthält: vesa_load="YES" splash_bmp_load="YES" bitmap_load="YES" bitmap_name="/boot/splash.bmp" Das Beispiel oben nimmt an, dass /boot/splash.bmp als Willkommensbildschirm verwendet wird. Wenn eine PCX-Datei verwendet werden soll, benutzen Sie die folgenden Zeilen, inklusive der vesa_load="YES"-Zeile, abhängig von der Auflösung. splash_pcx_load="YES" bitmap_load="YES" bitmap_name="/boot/splash.pcx" In der Version 8.3 kann als weitere Option ascii-Kunst im TheDraw Format verwendet werden. splash_txt="YES" bitmap_load="YES" bitmap_name="/boot/splash.bin" Wie das Beispiel oben demonstriert, ist der Dateiname nicht auf splash beschränkt. Es ist beliebig, so lange es den Dateityp BMP oder PCX besitzt, z.B. splash_640x400.bmp oder blue_wave.pcx. Weitere interessante Optionen für loader.conf sind: beastie_disable="YES" Diese Option verhindert die Anzeige des Menüs mit den Bootoptionen, aber der Countdown ist immer noch aktiv. Selbst wenn das Bootmenü deaktiviert ist, kann während des Countdowns eine der korrespondierenden Optionen ausgewählt werden. loader_logo="beastie" Dies ersetzt die Standardanzeige des Wortes &os;. Stattdessen wird wie in der Vergangenheit auf der rechten Seite des Bootmenüs das bunte Beastie-Logo angezeigt. Für weitere Informationen lesen Sie die Manualpages &man.splash.4;, &man.loader.conf.5; und &man.vga.4;. Kernel Interaktion während des Bootprozesses Kernel boot interaction Wenn der Kernel einmal geladen ist, entweder durch den Loader (die Standardmethode) oder durch boot2 (den Loader umgehend), verhält sich gemäß seiner Boot-Flags, falls es welche gibt. Kernel Boot-Flags Kernel bootflags Es folgt eine Auflistung der gebräuchlichsten Boot-Flags: Bewirkt, dass der Benutzer während der Kernel-Initialisierung gefragt wird, welches Gerät als Root-Dateisystem gemounted werden soll. Es wird von CD-ROM gebootet. UserConfig, das Boot-Zeit Konfigurationsprogramm, wird gestartet. Bewirkt den Start des Single-User Modus. Zeigt mehr Informationen während des Starten des Kernels an. Andere Boot-Flags sind in der Hilfeseite &man.boot.8; erläutert. Tom Rhodes Beigetragen von Konfiguration von Geräten device.hints Der Boot-Loader liest während des Systemstarts die Datei &man.device.hints.5;, die Variablen, auch device hints genannt, zur Konfiguration von Geräten enthält. Die Variablen können auch mit Kommandos in der Phase 3 des Boot-Loaders bearbeitet werden. Neue Variablen werden mit set gesetzt, unset löscht schon definierte Variablen und show zeigt Variablen an. Variablen aus /boot/device.hints können zu diesem Zeitpunkt überschrieben werden. Die hier durchgeführten Änderungen sind nicht permanent und beim nächsten Systemstart nicht mehr gültig. Nach dem Systemstart können alle Variablen mit &man.kenv.1; angezeigt werden. Pro Zeile enthält /boot/device.hints eine Variable. Kommentare werden, wie üblich, durch # eingeleitet. Die verwendete Syntax lautet: hint.driver.unit.keyword="value" Der Boot-Loader verwendet die nachstehende Syntax: set hint.driver.unit.keyword=value Der Gerätetreiber wird mit driver, die Nummer des Geräts mit unit angegeben. keyword ist eine Option aus der folgenden Liste: : Gibt den Bus, auf dem sich das Gerät befindet, an. : Die Startadresse des I/O-Bereichs. : Gibt die zu verwendende Unterbrechungsanforderung (IRQ) an. : Die Nummer des DMA Kanals. : Die physikalische Speicheradresse des Geräts. : Setzt verschiedene gerätespezifische Optionen. : Deaktiviert das Gerät, wenn der Wert auf 1 gesetzt wird. Ein Gerätetreiber kann mehr Optionen, als die hier beschriebenen, besitzen oder benötigen. Schlagen Sie die Optionen bitte in der Online-Hilfe des Treibers nach. Weitere Informationen erhalten Sie in &man.device.hints.5;, &man.kenv.1;, &man.loader.conf.5; und &man.loader.8;. Init: Initialisierung der Prozess-Kontrolle init Nachdem der Kernel den Bootprozess abgeschlossen hat, übergibt er die Kontrolle an den Benutzer-Prozess &man.init.8;. Dieses Programm befindet sich in /sbin/init, oder dem Pfad, der durch die Variable init_path im Loader spezifiziert wird. Der automatische Reboot-Vorgang Der automatische Reboot-Vorgang stellt sicher, dass alle Dateisysteme des Systems konsistent sind. Falls dies nicht der Fall ist und die Inkonsistenz nicht durch &man.fsck.8; behebbar ist, schaltet &man.init.8; das System in den Single-User Modus, damit der Systemadministrator sich des Problems annehmen kann. Der Single-User Modus Single-User Modus Konsole Das Schalten in diesen Modus kann erreicht werden durch den automatischen Reboot-Vorgang, durch das Booten mit der Option oder das Setzen der boot_single Variable in Loader. Weiterhin kann der Single-User Modus aus dem Mehrbenutzermodus heraus durch den Befehl &man.shutdown.8; ohne die reboot () oder halt () Option erreicht werden. Falls die System-Konsole (console) in /etc/ttys auf insecure (dt.: unsicher) gesetzt ist, fordert das System allerdings zur Eingabe des Passworts von root auf, bevor es den Single-User Modus aktiviert. Auf insecure gesetzte Konsole in <filename>/etc/ttys</filename> # name getty type status comments # # If console is marked "insecure", then init will ask for the root password # when going to single-user mode. console none unknown off insecure Eine Konsole sollte auf insecure gesetzt sein, wenn die physikalische Sicherheit der Konsole nicht gegeben ist und sichergestellt werden soll, dass nur Personen, die das Passwort von root kennen, den Single-User Modus benutzen können. Es bedeutet nicht, dass die Konsole "unsicher" laufen wird. Daher sollte man insecure wählen, wenn man auf Sicherheit bedacht ist, nicht secure. Mehrbenutzermodus Mehrbenutzermodus Stellt &man.init.8; fest, dass das Dateisystem in Ordnung ist, oder der Benutzer den Single-User Modus beendet, schaltet das System in den Mehrbenutzermodus, in dem dann die Ressourcen Konfiguration des Systems gestartet wird. Ressourcen Konfiguration, rc-Dateien rc-Dateien Das Ressourcen Konfigurationssystem (engl. resource configuration, rc) liest seine Standardkonfiguration von /etc/defaults/rc.conf und System-spezifische Details von /etc/rc.conf. Dann mountet es die Dateisysteme gemäß /etc/fstab, startet die Netzwerkdienste, diverse System Daemons und führt schließlich die Start-Skripten der lokal installierten Anwendungen aus. Die &man.rc.8; Handbuch Seite ist eine gute Quelle für Informationen über das Ressourcen Konfigurationssystem und ebenso über die Skripte an sich. Der Shutdown-Vorgang shutdown Im Falle eines regulären Herunterfahrens durch &man.shutdown.8; führt &man.init.8; /etc/rc.shutdown aus, sendet dann sämtlichen Prozessen ein TERM Signal und schließlich ein KILL Signal an alle Prozesse, die sich nicht schnell genug beendet haben. FreeBSD-Systeme, die Energieverwaltungsfunktionen unterstützen, können Sie mit dem Kommando shutdown -p now ausschalten. Zum Neustart des Systems benutzen Sie shutdown -r now. Das Kommando &man.shutdown.8; kann nur von root oder Mitgliedern der Gruppe operator benutzt werden. Sie können auch die Kommandos &man.halt.8; und &man.reboot.8; verwenden. Weitere Informationen finden Sie in den Hilfeseiten der drei Kommandos. Unter FreeBSD müssen Sie die &man.acpi.4;-Unterstützung im Kernel aktivieren oder das Modul geladen haben, damit Sie die Energieverwaltungsfunktionen benutzen können. diff --git a/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.xml b/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.xml index 7af2b8c6b8..0437b781b6 100644 --- a/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.xml +++ b/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.xml @@ -1,3490 +1,3438 @@ Jim Mock Umstrukturiert und aktualisiert von Jordan Hubbard Im Original von Poul-Henning Kamp John Polstra Nik Clayton Martin Heinen Übersetzt von &os; aktualisieren Übersicht &os; wird zwischen einzelnen Releases ständig weiter entwickelt. Manche Leute bevorzugen die offiziellen Release-Versionen, während andere wiederum lieber auf dem aktuellen Stand der Entwicklung bleiben möchten. Wie dem auch sei, sogar offizielle Release-Versionen werden oft mit Sicherheitsaktualisierungen und anderen kritischen Fehlerbereinigungen versorgt. Unabhängig von der eingesetzten Version bringt &os; alle nötigen Werkzeuge mit, um ihr System aktuell zu halten und es innerhalb verschiedener Versionen zu aktualisieren. Dieses Kapitel hilft Ihnen bei der Entscheidung, ob Sie mit dem Entwicklungssystem Schritt halten oder ein Release verwenden wollen. Die zugrundeliegenden Werkzeuge um Ihr System aktuell zu halten werden ebenfalls vorgestellt. Nachdem Sie dieses Kapitel gelesen haben, werden Sie wissen, welche Werkzeuge verwendet werden können, um das System und die Port-Sammlung zu aktualisieren. wissen, wie Sie Ihr System mit freebsd-update, CVSup, CVS oder CTM aktualisieren. wissen, wie man das aktuell installierte System mit einer ursprünglichen Version vergleicht. wissen, wie Sie ihre Dokumentation mit CVSup oder Dokumentations-Ports aktuell halten können. den Unterschied zwischen den beiden Entwicklungszweigen &os.stable; und &os.current; kennen. Wissen, wie Sie das komplette Basissystem mit make buildworld neu bauen und installieren. Bevor Sie dieses Kapitel lesen, sollten Sie Ihr Netzwerk richtig konfiguriert haben () und wissen, wie Sie Software Dritter installieren (). Im gesamten Kapitel wird der Befehl cvsup verwendet, um die &os; Quellen zu beziehen und zu aktualisieren. Um es zu verwenden, benötigen Sie einen Port oder ein Paket wie net/cvsup (falls Sie den graphischen cvsup-Client nicht benötigen, können Sie auch nur den Port net/cvsup-without-gui installieren). Alternativ können Sie auch &man.csup.1; verwenden, das bereits Teil des Basissystems ist. Tom Rhodes Geschrieben von Colin Percival Basierend auf bereitgestellten Mitschriften von Benedict Reuschling Übersetzt von &os;-Update Updating and Upgrading freebsd-update updating-upgrading Das Einspielen von Sicherheitsaktualisierungen ist ein wichtiger Bestandteil bei der Wartung von Computersoftware, besonders wenn es um das Betriebssystem geht. Für lange Zeit war dieser Prozess unter &os; nicht einfach. Fehlerbehebungen mussten auf den Quellcode angewendet werden, danach wurde der Code zu neuen Binärdateien übersetzt und schliesslich mussten diese Dateien neu installiert werden. Das ist seit längerem nicht mehr der Fall, da &os; jetzt ein Werkzeug namens freebsd-update enthält. Dieses Werkzeug bringt zwei getrennte Funktionen mit sich. Die erste Funktion ermöglicht die Anwendung von Sicherheitsaktualisierungen im Binärformat auf das &os; Basissystem, ohne dieses neu zu übersetzen und zu installieren. Die zweite Funktion unterstützt Aktualisierungen zwischen Haupt- und Unterversionen. Binäre Aktualisierungen sind für alle Architekturen und Releases verfügbar, die aktuell vom &os; Security Team betreut werden. Vor der Aktualisierung auf eine neue Release-Version sollten die aktuellen Ankündigungen zu dem Release gelesen werden, da diese wichtige Informationen zu der gewünschten Version enthalten. Diese Ankündigungen finden Sie unter dem folgenden Link: . Wenn eine crontab existiert, welche die Eigenschaften von freebsd-update verwendet, muss diese deaktiviert werden, bevor die folgende Aktion gestartet wird. Die Konfigurationsdatei Manche Anwender möchten sicherlich Einstellungen in der Standard-Konfigurationsdatei unter /etc/freebsd-update.conf vornehmen, um bessere Kontrolle über den gesamten Prozess zu besitzen. Die Optionen sind sehr gut dokumentiert, jedoch benötigen die folgenden ein paar zusätzliche Erklärungen: # Components of the base system which should be kept updated. Components src world kernel Dieser Parameter kontrolliert, welche Teile von &os; auf dem aktuellen Stand gehalten werden sollen. Die Voreinstellung ist es, den Quellcode zu aktualisieren, das gesamte Basissystem sowie den Kernel. Die Komponenten sind die gleichen wie während der Installation, also würde beispielsweise das hinzufügen von world/games an dieser Stelle es erlauben, Aktualisierungen für Spiele anzuwenden. Die Verwendung von src/bin erlaubt es, den Quellcode in src/bin aktuell zu halten. Die beste Einstellung ist, diese Option so zu belassen, da eine Änderung es bedingt, dass man als Benutzer jede Komponente auflisten muss, die aktualisiert werden soll. Dies könnte katastrophale Folgen nach sich ziehen, da der Quellcode und die Binärdateien dadurch nicht mehr synchron wären. # Paths which start with anything matching an entry in an IgnorePaths # statement will be ignored. IgnorePaths Fügen Sie Pfade wie /bin oder /sbin hinzu, um diese speziellen Verzeichnisse während des Aktualisierungsprozesses unberührt zu lassen. Diese Option kann verwendet werden, um zu verhindern, dass freebsd-update lokale Änderungen überschreibt. # Paths which start with anything matching an entry in an UpdateIfUnmodified # statement will only be updated if the contents of the file have not been # modified by the user (unless changes are merged; see below). UpdateIfUnmodified /etc/ /var/ /root/ /.cshrc /.profile Aktualisieren Sie Konfigurationsdateien in den angegebenen Verzeichnissen nur, wenn diese nicht geändert wurden. Jegliche Änderung, die der Benutzer daran vorgenommen hat, wird die automatische Aktualisierung dieser Dateien ungültig machen. Es gibt eine weitere Option KeepModifiedMetadata, die freebsd-update instruiert, die Änderungen während der Zusammenführung zu speichern. # When upgrading to a new &os; release, files which match MergeChanges # will have any local changes merged into the version from the new release. MergeChanges /etc/ /var/named/etc/ Eine Liste von Verzeichnissen mit Konfigurationsdateien, in denen freebsd-update Zusammenführungen versuchen soll. Dieser Verschmelzungsprozess von Dateien ist eine Serie von &man.diff.1;-Korrekturen, ähnlich wie &man.mergemaster.8; mit weniger Optionen. Die Änderungen werden entweder akzeptiert, öffnen einen Editor oder freebsd-update bricht ab. Wenn Sie im Zweifel sind, sichern Sie das /etc Verzeichnis und akzeptieren einfach die Änderungen. Lesen Sie , um Informationen über das mergemaster-Kommando zu erhalten. # Directory in which to store downloaded updates and temporary # files used by &os; Update. # WorkDir /var/db/freebsd-update In diesem Verzeichnis werden alle Korrekturen und temporären Dateien abgelegt. Für Fälle in denen der Anwender eine Versionsaktualisierung vornimmt, sollte diesem Verzeichnis mindestens ein Gigabyte Festplattenspeicher zur Verfügung stehen. # When upgrading between releases, should the list of Components be # read strictly (StrictComponents yes) or merely as a list of components # which *might* be installed of which &os; Update should figure out # which actually are installed and upgrade those (StrictComponents no)? # StrictComponents no Wenn dies auf yes gesetzt ist, wird freebsd-update annehmen, dass die Components-Liste vollständig ist und nicht versuchen, Änderungen ausserhalb dieser Liste zu tätigen. Tatsächlich wird freebsd-update versuchen, jede Datei zu aktualisieren, die zu der Components-Liste gehört. Sicherheitsaktualisierungen Sicherheitsaktualisierungen sind auf einer entfernten Maschine abgelegt und können durch das folgende Kommando heruntergeladen und installiert werden: &prompt.root; freebsd-update fetch &prompt.root; freebsd-update install Wenn irgendeine Änderung auf den Kernel angewendet wurde benötigt das System einen Neustart. Wenn alles gut verlaufen ist, sollte das System aktualisiert sein und freebsd-update kann als nächtlicher &man.cron.8;-Job ablaufen. Ein Eintrag in der Datei /etc/crontab ist für diese Aufgabe ausreichend: @daily root freebsd-update cron Dieser Eintrag besagt, dass einmal am Tag freebsd-update ausgeführt wird. Auf diese Weise kann freebsd-update nur durch die Verwendung des -Arguments prüfen, ob Aktualisierungen vorliegen. Wenn Korrekturen existieren, werden diese automatisch auf die lokale Festplatte heruntergeladen, aber nicht eingespielt. Der root-Benutzer bekommt eine Nachricht, damit dieser die Korrekturen manuell installiert. Sollte irgendetwas schief gelaufen sein, kann freebsd-update den letzten Satz von Änderungen mit dem folgenden Befehl zurückrollen: &prompt.root; freebsd-update rollback Sobald dieser Vorgang abgeschlossen ist, sollte das System neu gestartet werden, wenn der Kernel oder ein beliebiges Kernelmodul geändert wurde. Dies ermöglicht es &os;, die neuen Binärdateien in den Hauptspeicher zu laden. Das freebsd-update-Werkzeug kann nur den GENERIC-Kernel automatisch aktualisieren. Wenn ein selbstkonfigurierter Kernel verwendet wird, muss dieser neu erstellt und installiert werden, nachdem freebsd-update den Rest der Aktualisierungen durchgeführt hat. Allerdings wird freebsd-update den GENERIC-Kernel in /boot/GENERIC erkennen und aktualisieren (falls dieser existiert), sogar dann, wenn dies nicht der aktuell verwendete Kernel des Systems ist. Es ist eine gute Idee, immer eine Kopie des GENERIC-Kernels in /boot/GENERIC aufzubewahren. Das wird bei der Diagnose von verschiedenen Problemen eine grosse Hilfe sein, sowie bei der Durchführung von Versionsaktualisierungen mit freebsd-update, wie in beschrieben ist. Solange die Standardkonfiguration in /etc/freebsd-update.conf nicht geändert wurde, wird freebsd-update die aktualisierten Quellcodedateien des Kernels zusammen mit dem Rest der Neuerungen installieren. Die erneute Übersetzung und Installation ihres neuen, selbstkonfigurierten Kernels kann dann auf die übliche Art und Weise durchgeführt werden. Die Aktualisierungen, die über freebsd-update verteilt werden, betreffen nicht immer den Kernel. Es ist nicht notwendig, den selbstkonfigurierten Kernel neu zu erstellen, wenn die Kernelquellen nicht durch die Ausführung von freebsd-update install geändert wurden. Allerdings wird freebsd-update auf alle Fälle die Datei /usr/src/sys/conf/newvers.sh aktualisieren. Der aktuelle Patch-Level (angegeben durch die -p-Nummer, die von dem Kommando uname -r ausgegeben wird) wird aus dieser Datei ausgelesen. Die Neuinstallation des selbstkonfigurierten Kernels, selbst wenn sich daran nichts geändert hat, erlaubt es &man.uname.1;, den aktuellen Patch-Level des Systems korrekt wiederzugeben. Dies ist besonders hilfreich, wenn mehrere Systeme gewartet werden, da es eine schnelle Einschätzung der installierten Aktualisierungen in jedem einzelnen System ermöglicht. Aktualisierungen an Haupt- und Unterversionen Dieser Prozess entfernt alte Objekt-Dateien und Bibliotheken, was dazu führt, dass die meisten Anwendungen von Drittherstellern nicht mehr funktionieren. Es wird empfohlen, dass alle installierten Ports entweder entfernt und neu installiert oder zu einem späteren Zeitpunkt mittels ports-mgmt/portupgrade aktualisiert werden. Die meisten Anwender werden wahrscheinlich einen Testlauf mittels des folgenden Kommandos durchführen wollen: &prompt.root; portupgrade -af Dies sorgt dafür, dass alles korrekt neu installiert wird. Beachten Sie, dass das Setzen der BATCH-Umgebungsvariable auf yes während dieses Prozesses auf jede Eingabe mit ja antwortet, was es nicht mehr notwendig macht, manuell eingreifen zu müssen. Wenn ein selbstkonfigurierter Kernel verwendet wird, ist der Aktualisierungsprozess ein kleines bisschen aufwändiger. Eine Kopie des GENERIC-Kernels wir benötigt und sollte in /boot/GENERIC abgelegt sein. Wenn der GENERIC-Kernel nicht bereits im System vorhanden ist, kann dieser über eine der folgenden Methoden bezogen werden: Wenn ein eigener Kernel genau einmal gebaut wurde, ist der Kernel im Verzeichnis /boot/kernel.old in Wirklichkeit der GENERIC-Kernel. Benennen Sie einfach dieses Verzeichnis in /boot/GENERIC um. Angenommen, direkter Zugriff auf die Maschine ist möglich, so kann eine Kopie des GENERIC-Kernels von den CD-ROM-Medien installiert werden. Legen Sie die Installations-CD ein und benutzen Sie die folgenden Befehle: &prompt.root; mount /cdrom &prompt.root; cd /cdrom/X.Y-RELEASE/kernels &prompt.root; ./install.sh GENERIC Ersetzen Sie X.Y-RELEASE mit der richtigen Version der Veröffentlichung, die Sie verwenden. Der GENERIC-Kernel wird standardmässig in /boot/GENERIC installiert. Falls alle obigen Schritte fehlschlagen, kann der GENERIC-Kernel folgendermassen aus den Quellen neu gebaut und installiert werden: &prompt.root; cd /usr/src &prompt.root; env DESTDIR=/boot/GENERIC make kernel &prompt.root; mv /boot/GENERIC/boot/kernel/* /boot/GENERIC &prompt.root; rm -rf /boot/GENERIC/boot Damit dieser Kernel als GENERIC-Kernel von freebsd-update erkannt wird, darf die GENERIC-Konfigurationsdatei in keiner Weise geändert worden sein. Es wird ebenfalls empfohlen, dass dieser ohne irgendwelche speziellen Optionen erstellt wird (bevorzugt mit einer leeren /etc/make.conf). Der Neustart in den GENERIC-Kernel ist zu diesem Zeitpunkt nicht notwendig. Aktualisierungen an Haupt- und Unterversionen können durchgeführt werden, wenn man freebsd-update eine Release-Version als Ziel übergibt. Beispielsweise wird das folgende Kommando das System auf &os; 8.1 aktualisieren: &prompt.root; freebsd-update -r 8.1-RELEASE upgrade Nachdem das Kommando empfangen wurde, überprüft freebsd-update die Konfigurationsdatei und das aktuelle System, um die nötigen Informationen für die Systemaktualisierung zu sammeln. Eine Bildschirmausgabe wird anzeigen, welche Komponenten erkannt und welche nicht erkannt wurden. Zum Beispiel: Looking up update.FreeBSD.org mirrors... 1 mirrors found. Fetching metadata signature for 8.0-RELEASE from update1.FreeBSD.org... done. Fetching metadata index... done. Inspecting system... done. The following components of FreeBSD seem to be installed: kernel/smp src/base src/bin src/contrib src/crypto src/etc src/games src/gnu src/include src/krb5 src/lib src/libexec src/release src/rescue src/sbin src/secure src/share src/sys src/tools src/ubin src/usbin world/base world/info world/lib32 world/manpages The following components of FreeBSD do not seem to be installed: kernel/generic world/catpages world/dict world/doc world/games world/proflibs Does this look reasonable (y/n)? y An diesem Punkt wird freebsd-update versuchen, alle notwendigen Dateien für die Aktualisierung herunter zu laden. In manchen Fällen wird der Benutzer mit Fragen konfrontiert, um festzustellen, was installiert werden soll oder auf welche Art und Weise fortgesetzt werden soll. Wenn ein selbstkonfigurierter Kernel benutzt wird, produziert der vorherige Schritt eine Warnung ähnlich zu der folgenden: WARNING: This system is running a "MYKERNEL" kernel, which is not a kernel configuration distributed as part of FreeBSD 8.0-RELEASE. This kernel will not be updated: you MUST update the kernel manually before running "/usr/sbin/freebsd-update install" Diese Warnung kann an dieser Stelle problemlos ignoriert werden. Der aktualisierte GENERIC-Kernel wird als ein Zwischenschritt im Aktualisierungsprozess verwendet. Nachdem alle Korrekturen auf das lokale System heruntergeladen wurden, werden diese nun eingespielt. Dieser Prozess kann eine gewisse Zeit in Anspruch nehmen, abhängig von der Geschwindigkeit und Auslastung der Maschine. Konfigurationsdateien werden ebenfalls zusammengefügt - dieser Teil der Prozedur benötigt einige Benutzereingaben, da eine Datei möglicherweise von Hand zusammengefasst werden muss oder ein Editor erscheint auf dem Bildschirm zum manuellen bearbeiten. Die Ergebnisse von jeder erfolgreichen Zusammenfassung werden dem Benutzer angezeigt, während der Prozess weiterläuft. Eine fehlgeschlagene oder ignorierte Zusammenfassung wird den Prozess sofort beenden. Benutzer sollten eine Sicherung von /etc anlegen und wichtige Dateien später manuell vereinen, beispielsweise master.passwd oder group. Das System ist noch nicht verändert worden, alle Korrekturen und Vereinigungen sind in einem anderen Verzeichnis vorgenommen worden. Wenn alle Korrekturen erfolgreich eingespielt, alle Konfigurationsdateien zusammengefügt wurden und es den Anschein hat, dass der Prozess problemlos verlaufen wird, müssen die Änderungen vom Anwender noch angewendet werden. Sobald dieser Prozess abgeschlossen ist, können die Aktualisierungen über das folgende Kommando auf die Platte geschrieben werden: &prompt.root; freebsd-update install Der Kernel und die Module werden zuerst aktualisiert. Zu diesem Zeitpunkt muss die Maschine neu gestartet werden. Wenn das System einen selbstkonfigurierten Kernel verwendet, benutzen Sie das &man.nextboot.8;-Kommando, um den Kernel für den nächsten Neustart auf /boot/GENERIC zu setzen (welcher aktualisiert wurde): &prompt.root; nextboot -k GENERIC Bevor mit dem GENERIC-Kernel das System neu gestartet wird, vergewissern Sie sich, dass alle notwendigen Treiber für ihr System enthalten sind, um korrekt zu starten (und schliessen Sie ihn ans Netzwerk an, falls auf die Maschine, die aktualisiert wird, von der Ferne aus zugegriffen wird). Achten Sie besonders darauf, dass wenn der vorherige selbstkonfigurierte Kernel Funktionalität beinhaltet, die von Kernelmodulen zur Verfügung gestellt wurde, dass diese temporär in den GENERIC-Kernel über die Datei /boot/loader.conf übernommen werden. Sie sollten ebenfalls nicht benötigte Dienste, eingehängte Platten, verbundene Netzlaufwerke, usw. deaktivieren, bis der Aktualisierungsprozess abgeschlossen ist. Die Maschine sollte nun mit dem aktualisierten Kernel neu gestartet werden: &prompt.root; shutdown -r now Sobald das System wieder hochgefahren wurde, muss freebsd-update erneut gestartet werden. Der Zustand des Prozesses wurde zuvor gesichert und deshalb wird freebsd-update nicht von vorne beginnen, jedoch alle alten Shared-Libraries und Objektdateien löschen. Um zu diesem Zustand zu gelangen, setzen Sie das folgende Kommando ab: &prompt.root; freebsd-update install Abhängig davon, ob irgendwelche Bibliotheksversionen erhöht wurden, kann es sein, dass nur zwei Installationsphasen anstatt drei durchlaufen werden. Nun muss alle Drittanbieter-Software neu erstellt und neu installiert werden. Dies ist notwendig, da die installierte Software möglicherweise Abhängigkeiten zu Bibliotheken enthält, die während der Aktualisierung entfernt wurden. Der ports-mgmt/portupgrade-Befehl kann verwendet werden, um diesen Vorgang zu automatisieren. Die folgenden Kommandos können verwendet werden, um diesen Prozess zu starten: &prompt.root; portupgrade -f ruby &prompt.root; rm /var/db/pkg/pkgdb.db &prompt.root; portupgrade -f ruby18-bdb &prompt.root; rm /var/db/pkg/pkgdb.db /usr/ports/INDEX-*.db &prompt.root; portupgrade -af Sobald dies abgeschlossen ist, beenden Sie den Aktualisierungsprozess mit einem letzten Aufruf von freebsd-update. Geben Sie den folgenden Befehl ein, um alle losen Enden des Aktualisierungsprozesses miteinander zu verknüpfen: &prompt.root; freebsd-update install Wenn der GENERIC-Kernel temporär Verwendung fand, ist dies der richtige Zeitpunkt, einen neuen, selbstkonfigurierten Kernel zu bauen und über die übliche Methode zu installieren. Booten Sie anschliessend die Maschine in die neue &os;-Version. Der Prozess ist damit abgeschlossen. Vergleich des Systemzustands Das freebsd-update-Werkzeug kann verwendet werden, um den Zustand der installierten &os;-Version gegenüber einer bekannten und funktionierenden Kopie zu vergleichen. Diese Option vergleicht die aktuelle Version von Systemwerkzeugen, Bibliotheken und Konfigurationsdateien. Um diesen Vergleich zu starten, geben Sie den folgenden Befehl ein: &prompt.root; freebsd-update IDS >> outfile.ids Obwohl der Befehlsname IDS lautet, sollte er in keiner Weise als Ersatz für ein Intrusion Detection System wie security/snort angesehen werden. Da freebsd-update seine Daten auf Platte ablegt, ist die Möglichkeit von Verfälschungen offensichtlich. Obwohl diese Möglichkeit durch die Verwendung von kern.securelevel oder die Ablage von freebsd-update auf einem Nur-Lese Dateisystem, wenn es gerade nicht gebraucht wird, eingedämmt werden kann, besteht eine bessere Lösung darin, das System gegen ein gesichertes Medium, wie eine DVD oder einen externen, separat aufbewahrten USB-Plattenspeicher, zu vergleichen. Das System wird jetzt untersucht und eine Liste von Dateien ausgegeben, zusammen mit deren &man.sha256.1;-Hashwerten, sowohl der von der Release-Version bekannte Wert als auch der des aktuell installierten Systems. Das ist der Grund dafür, warum die Ausgabe an die Datei outfile.ids geschickt wurde. Es scrollt zu schnell vorbei, um diese mit den Augen zu vergleichen und bald wird auch der Konsolenpuffer damit überfüllt. Diese Zeilen sind dazu noch extrem lang, aber das Ausgabeformat kann sehr einfach verarbeitet werden. Um beispielsweise eine Liste von allen Dateien zu erhalten, die sich vom aktuellen Release unterscheiden, geben Sie das folgende Kommando ein: &prompt.root; cat outfile.ids | awk '{ print $1 }' | more /etc/master.passwd /etc/motd /etc/passwd /etc/pf.conf Diese Ausgabe wurde abgeschnitten, es existieren noch viel mehr Dateien dazu. Manche dieser Dateien besitzen ganz selbstverständliche Veränderungen, /etc/passwd wurde beispielsweise geändert, um Benutzer zum System hinzuzufügen. In manchen Fällen kann es anderen Dateien wie Kernelmodule geben, welche sich geändert haben, weil freebsd-update diese aktualisiert hat. Um bestimmte Dateien oder Verzeichnisse auszuschliessen, hängen Sie diese an die IDSIgnorePaths-Option in /etc/freebsd-update.conf an. Diese Vorgehensweise kann als Teil einer ausgeklügelten Aktualisierungsmethode benutzt werden, unabhängig von der zuvor angesprochenen Variante. Tom Rhodes Geschrieben von Colin Percival Basierend auf bereitgestellten Mitschriften von Benedict Reuschling Übersetzt von Portsnap: Ein Werkzeug zur Aktualisierung der Ports-Sammlung Updating and Upgrading Portsnap Updating and Upgrading Das Basissystem von &os; enthält auch ein Programm zum Aktualisieren der Ports-Sammlung: das &man.portsnap.8; Werkzeug. Wenn es ausgeführt wird, verbindet es sich mit einem entfernten Rechner, überprüft den Sicherungsschlüssel und lädt eine neue Kopie der Ports-Sammlung herunter. Der Schlüssel wird dazu verwendet, um die Integrität aller heruntergeladenen Dateien zu prüfen und um sicherzustellen, dass diese unterwegs nicht verändert wurden. Um die aktuellsten Dateien der Ports-Sammlung herunter zu laden, geben Sie das folgende Kommando ein: &prompt.root; portsnap fetch Looking up portsnap.FreeBSD.org mirrors... 3 mirrors found. Fetching snapshot tag from portsnap1.FreeBSD.org... done. Fetching snapshot metadata... done. Updating from Wed Aug 6 18:00:22 EDT 2008 to Sat Aug 30 20:24:11 EDT 2008. Fetching 3 metadata patches.. done. Applying metadata patches... done. Fetching 3 metadata files... done. Fetching 90 patches.....10....20....30....40....50....60....70....80....90. done. Applying patches... done. Fetching 133 new ports or files... done. Dieses Beispiel zeigt, dass &man.portsnap.8; mehrere Korrekturen für die aktuellen Ports-Daten gefunden und verifiziert hat. Es zeigt auch, dass das Programm zuvor schon einmal gestartet wurde. Wäre es das erste Mal, würde nur die Ports-Sammlung heruntergeladen werden. Wenn &man.portsnap.8; erfolgreich die fetch-Operation abgeschlossen hat, befinden sich die Ports-Sammlung und die dazugehörigen Korrekturen auf dem lokalen System, welches die Überprüfung bestanden hat. Wenn Sie portsnap das erste Mal ausgeführt haben, müssen Sie den Befehl portsnap extract verwenden, um die Ports-Sammlung zu installieren: &prompt.root; portsnap extract /usr/ports/.cvsignore /usr/ports/CHANGES /usr/ports/COPYRIGHT /usr/ports/GIDs /usr/ports/KNOBS /usr/ports/LEGAL /usr/ports/MOVED /usr/ports/Makefile /usr/ports/Mk/bsd.apache.mk /usr/ports/Mk/bsd.autotools.mk /usr/ports/Mk/bsd.cmake.mk ... Um Ihre bereits installierte Ports-Sammlung zu aktualisieren, verwenden Sie hingegen den Parameter update: &prompt.root; portsnap update Der Prozess ist jetzt abgeschlossen und Anwendungen können mittels der aktuellen Ports-Sammlung installiert oder aktualisiert werden. Die Operationen fetch und extract oder update können auch nacheinander ausgeführt werden, wie im folgenden Beispiel gezeigt: &prompt.root; portsnap fetch update Dieser Befehl lädt die aktuelle Version der Ports-Sammlung herunter und aktualisiert anschließend Ihre lokale Version im Verzeichnis /usr/ports. Benedict Reuschling Übersetzt von Aktualisieren der Dokumentationssammlung Updating and Upgrading Documentation Updating and Upgrading Neben dem Basissystem und der Ports-Sammlung ist die Dokumentation ein wichtiger Bestandteil des &os; Betriebssystems. Obwohl eine aktuelle Version der &os; Dokumentation jederzeit auf der &os; Webseite verfügbar ist, verfügen manche Benutzer nur über eine langsame oder überhaupt keine Netzwerkverbindung. Glücklicherweise gibt es mehrere Möglichkeiten, die Dokumentation, welche mit jeder Version ausgeliefert wird, zu aktualisieren, indem eine lokale Kopie der aktuellen &os;-Dokumentationssammlung verwendet wird. Verwenden von CVSup um die Dokumentation zu aktualisieren Die Quellen und die installierte Kopie der &os; Dokumentation kann mittels CVSup aktualisiert werden, indem ein ähnlicher Mechanismus angewendet wird, wie derjenige für die Betriebssystemquellen (vergleichen Sie mit ). Dieser Abschnitt beschreibt: Wie die Dokumentations-Werkzeugsammlung installiert wird, welche die Werkzeuge enthält, die nötig sind, um die &os; Dokumentation aus den Quellen neu zu erstellen. Wie man eine Kopie der Dokumentationsquellen nach /usr/doc herunterlädt, unter Verwendung von CVSup. Wie man die &os; Dokumentation aus den Quellen baut und unter /usr/share/doc installiert. Manche der Optionen zum Erstellen, die vom System zum Bauen der Dokumentation unterstützt werden, z.B. die Optionen welche nur ein paar der unterschiedlichen Sprachübersetzungen der Dokumentation erstellen oder die Optionen, die ein bestimmtes Ausgabeformat auswählen. CVSup und die Werkzeugsammlung der Dokumentation installieren Die &os; Dokumentation aus dem Quellen zu erstellen benötigt eine ziemlich grosse Anzahl an Werkzeugen. Diese Werkzeuge sind nicht Teil des &os; Basissystems, da sie eine grosse Menge an Plattenplatz verbrauchen und nicht von allen &os;-Anwendern benötigt werden. Sie sind nur für diejenigen Benutzer notwendig, die aktiv an neuer Dokumentation fü &os; schreiben oder häufig ihre Dokumentation aus den Quellen bauen lassen. Alle benötigten Werkzeuge sind als Teil der Ports-Sammlung verfügbar. Der Port textproc/docproj dient als Masterport, der vom &os; Documentation Project entwickelt wurde, um die initiale Installation und zukünftige Aktualisierungen dieser Werkzeuge zu vereinfachen. Wenn Sie die Dokumentation nicht als &postscript; oder PDF benötigen, können Sie alternativ die Installation des textproc/docproj-nojadetex-Ports in Erwägung ziehen. Diese Version der Dokumentations-Werkzeugsammlung enthält alles ausser das teTeX-Textsatzsystem. teTeX ist eine sehr grosse Sammlung an Werkzeugen, deshalb ist es vernünftig, deren Installation auszulassen, wenn die Ausgabe von PDF nicht unbedingt gebraucht wird. Für weitere Informationen über das Installieren und Verwenden von CVSup, lesen Sie CVSup verwenden. Die Dokumentationsquellen aktualisieren Das Programm CVSup kann eine saubere Kopie der Dokumentationsquellen holen, indem es die Datei /usr/share/examples/cvsup/doc-supfile als Konfigurationsvorlage verwendet. Der Standard-Host zum Aktualisieren ist auf einen Platzhalterwert im doc-supfile gesetzt, aber &man.cvsup.1; akzeptiert auch einen Hostnamen über die Kommandozeile. Somit können die Dokumentationsquellen von einem der CVSup-Server geholt werden, indem man eingibt: &prompt.root; cvsup -h cvsup.FreeBSD.org -g -L 2 /usr/share/examples/cvsup/doc-supfile Ändern Sie cvsup.FreeBSD.org auf den Ihnen am nächsten gelegenen CVSup-Server. Eine vollständige Liste von Spiegelservern finden Sie unter . Es dauert eine Weile, wenn die Dokumentationsquellen das allererste Mal heruntergeladen werden. Lassen Sie es laufen, bis es fertig ist. Zukünftige Aktualisierungen der Dokumentationsquellen können Sie über den gleichen Befehl bekommen. Das Programm CVSup lädt und kopiert nur diejenigen Aktualisierungen herunter, die seit seinem letzten Aufruf hinzugekommen sind. Deshalb sollte jeder weitere Aufruf von CVSup nach dem Ersten wesentlich schneller abgeschlossen sein. Nachdem die Quellen einmal ausgecheckt wurden, besteht ein anderer Weg, die Dokumentation zu aktualisieren, darin, das Makefile im Verzeichnis /usr/doc anzupassen. Durch setzen von SUP_UPDATE, SUPHOST und DOCSUPFILE in der Datei /etc/make.conf ist es jetzt möglich, folgendes zu tun: &prompt.root; cd /usr/doc &prompt.root; make update Ein typischer Satz dieser &man.make.1;-Optionen für /etc/make.conf ist: SUP_UPDATE= yes SUPHOST?= cvsup.freebsd.org DOCSUPFILE?= /usr/share/examples/cvsup/doc-supfile Das Setzen des Werts von SUPHOST und DOCSUPFILE auf ?= erlaubt es, diese in der Kommandozeile von make zu überschreiben. Diese Methode wird empfohlen, um Optionen zu make.conf hinzuzufügen, um zu verhindern, dass man die Datei jedes Mal bearbeiten muss, um einen anderen Wert für die Option auszuprobieren. Einstellbare Optionen der Dokumentationsquellen Das System zum aktualisieren und erstellen der &os;-Dokumentation unterstützt ein paar Optionen, welche den Prozess der Aktualisierung von Teilen der Dokumentation oder einer bestimmten Übersetzung erleichtert. Diese Optionen lassen sich entweder systemweit in der Datei /etc/make.conf setzen, oder als Kommandozeilenoptionen, die dem &man.make.1;-Werkzeug übergeben werden. Die folgenden Optionen sind ein paar davon: DOC_LANG Eine Liste von Sprachen und Kodierungen, die gebaut und installiert werden sollen, z.B. en_US.ISO8859-1, um nur die englische Dokumentation zu erhalten. FORMATS Ein einzelnes Format oder eine Liste von Ausgabeformaten, das gebaut werden soll. Momentan werden html, html-split, txt, ps, pdf, und rtf unterstützt. SUPHOST Der Hostname des CVSup-Servers, der verwendet werden soll, um Aktualisierungen zu holen. DOCDIR Wohin die Dokumentation installiert werden soll. Der Standardpfad ist /usr/share/doc. Für weitere make-Variablen, die als systemweite Optionen in &os; unterstützt werden, lesen Sie &man.make.conf.5;. Für weitere make-Variablen, die vom System zum Erstellen der &os;-Dokumentation unterstützt werden, lesen Sie die Fibel für neue Mitarbeiter des &os;-Dokumentationsprojekts. Die &os;-Dokumentation aus den Quellen installieren Wenn ein aktueller Schnappschuss der Dokumentationsquellen nach /usr/doc heruntergeladen wurde, ist alles bereit für eine Aktualisierung der bestehenden Dokumentation. Eine komplette Aktualisierung aller Sprachoptionen, definiert durch die DOC_LANG Makefile-Option, kann durch folgende Eingabe erreicht werden: &prompt.root; cd /usr/doc &prompt.root; make install clean Wenn make.conf mit den richtigen Optionen DOCSUPFILE, SUPHOST und SUP_UPDATE eingerichtet wurde, kann der Installationsschritt mit einer Aktualisierung der Dokumentationsquellen kombiniert werden, indem man eingibt: &prompt.root; cd /usr/doc &prompt.root; make update install clean Wenn nur eine Aktualisierung einer bestimmten Sprache gewünscht wird, kann &man.make.1; in einem sprachspezifischen Unterverzeichnis von /usr/doc aufgerufen werden, z.B.: &prompt.root; cd /usr/doc/en_US.ISO8859-1 &prompt.root; make update install clean Die zu installierenden Ausgabeformate können durch das Setzen der make-Variablen FORMATS angegeben werden, z.B.: &prompt.root; cd /usr/doc &prompt.root; make FORMATS='html html-split' install clean Marc Fonvieille Basierend auf der Arbeit von Verwendung von Dokumentations-Ports Updating and Upgrading documentation package Updating and Upgrading Im vorherigen Abschnitt wurde eine Methode gezeigt, wie die &os;-Dokumentation aus den Quellen gebaut werden kann. Allerdings sind quellbasierte Aktualisierungen möglicherweise nicht für alle &os;-Systeme geeignet oder praktikabel. Das Erstellen der Dokumentationsquellen benötigt eine grosse Anzahl an Werkzeugen, Programmen und Hilfsmitteln, die documentation toolchain, ein gewisser Grad an Vertrautheit mit CVS und ausgecheckte Quellen von einem Repository, sowie ein paar manuelle Schritte, um diese ausgecheckten Quellen zu bauen. In diesem Abschnitt wird eine alternative Art und Weise vorgestellt, wie man die installierte Kopie der &os;-Dokumentation aktualisieren kann. Diese Methode verwendet die Ports-Sammlung und erlaubt es: vorgefertigte Schnappschüsse der Dokumentation herunter zu laden und zu installieren, ohne vorher irgendetwas lokal zu erstellen (dadurch ist es nicht mehr notwendig, den kompletten Werkzeugkasten der Dokumentation zu installieren). die Dokumentationsquellen herunterzuladen und durch das Ports-System erstellen zu lassen (was die Schritte zum Auschecken und Erstellen etwas erleichtert). Diese beiden Methoden der Aktualisierung der &os;-Dokumentation werden durch eine Menge von Dokumentations-Ports unterstützt, die von &a.doceng; monatlich aktualisiert wird. Diese sind in der Ports-Sammlung unter der virtuellen Kategorie, docs genannt, gelistet. Erstellen und Installieren von Dokumentations-Ports Die Dokumentations-Ports nutzen das Ports-System, um das Erstellen von Dokumentation wesentlich einfacher zu machen. Es automatisiert den Prozess des Auscheckens der Dokumentationsquellen, aufrufen von &man.make.1; mit den passenden Umgebungsvariablen und Kommandozeilenoptionen und macht die Installation und Deinstallation von Dokumentation so einfach wie die Installation von jedem anderen Port oder Paket. Als zusätzliche Eigenschaft zeichnen sie eine Abhängigkeit zum Dokumentations-Werkzeugsatz auf, wenn die Dokumentations-Ports lokal erstellt werden, weshalb dieser auch automatisch mitinstalliert wird. Die Dokumentations-Ports sind wie folgt organisiert: Es existiert ein Master-Port, misc/freebsd-doc-en, in dem alle Dateien zu den Dokumentations-Ports abgelegt sind. Es dient als Basis für alle Dokumentations-Ports. Als Voreinstellung wird nur die englische Dokumentation gebaut. Es gibt einen Alles-in-Einem-Port, misc/freebsd-doc-all, welcher die komplette Dokumentation in allen verfügbaren Sprachen erstellt und installiert. Schliesslich gibt es noch einen sogenannten slave port für jede Übersetzung, z.B.: misc/freebsd-doc-hu für Dokumentation in ungarischer Sprache. All diese benötigen den Master-Port und installieren die übersetzte Dokumentation in der entsprechenden Sprache. Um einen Dokumentations-Port aus den Quellen zu installieren, geben Sie das folgende Kommando (als root) ein: &prompt.root; cd /usr/ports/misc/freebsd-doc-en &prompt.root; make install clean Auf diese Weise wird die englische Dokumentation gebaut und als getrenntes HTML-Format im Verzeichnis /usr/local/share/doc/freebsd installiert (genau wie unter zu finden). Gebräuchliche Schalter und Optionen Es gibt viele Optionen, um das Standarderhalten der Dokumentations-Ports zu verändern. Im Folgenden sind nur ein paar davon aufgeführt: WITH_HTML Erlaubt das Erstellen im HTML-Format: eine einzige HTML-Datei pro Dokument. Die formatierte Dokumentation wird als Datei mit dem Namen article.html gespeichert, oder, je nachdem, als book.html, zuzuüglich der Bilder. WITH_PDF Erlaubt das Erstellen von &adobe; Portable Document Format, für die Verwendung mit &adobe; &acrobat.reader;, Ghostscript oder anderen PDF-Betrachtern. Die formatierte Dokumentation wird als Datei mit dem Namen article.pdf oder, soweit angemessen, als book.pdf gespeichert. DOCBASE Wohin die Dokumentation installiert werden soll. Der Standardpfad ist /usr/local/share/doc/freebsd. Beachten Sie, dass sich der Standardpfad von dem Verzeichnis unterscheidet, das von der CVSup-Methode verwendet wird. Das liegt daran, dass ein Port installiert wird und diese üblicherweise im Verzeichnis /usr/local abgelegt werden. Durch setzen der PREFIX-Variablen kann dieses Verhalten geändert werden. Es folgt ein kurzes Beispiel, wie die Variablen verwendet werden, um die oben erwähnte ungarische Dokumentation als Portable Document Format zu installieren: &prompt.root; cd /usr/ports/misc/freebsd-doc-hu &prompt.root; make -DWITH_PDF DOCBASE=share/doc/freebsd/hu install clean Verwendung von Dokumentations-Paketen Das Erstellen der Dokumentations-Ports aus den Quellen, wie im vorherigen Abschnitt beschrieben, benötigt die lokale Installation der Dokumentations-Werkzeugsammlung und ein wenig Festplattenspeicher für das Bauen der Ports. Sollten die Ressourcen zum Bauen der Dokumentations-Werkzeugsammlung nicht zur Verfügung stehen, oder weil das erstellen zuviel Plattenplatz benötigen würde, ist es trotzdem möglich, bereits zuvor gebaute Schnappschüsse der Dokumentations-Ports zu installieren. &a.doceng; erstellt monatliche Schnappschüsse der Dokumentations-Pakete von &os;. Diese Binärpakete können mit jedem der mitgelieferten Paketwerkzeuge installiert werden, beispielsweise &man.pkg.add.1;, &man.pkg.delete.1; und so weiter. Wenn Binärpakete zu Einsatz kommen, wird die &os;-Dokumentation in allen verfügbaren Formaten in der gegebenen Sprache installiert. Zum Beispiel installiert das folgende Kommando das aktuelle, vorgefertigte Paket der ungarischen Dokumentation: &prompt.root; pkg_add -r hu-freebsd-doc Pakete haben das folgende Namensformat, welches sich von dem Namen des dazugehörigen Ports unterscheidet: lang-freebsd-doc. lang entspricht hier der Kurzform des Sprachcodes, z.B. hu für Ungarisch, oder zh_cn für vereinfachtes Chinesisch. Dokumentations-Ports aktualisieren Um einen zuvor installierten Dokumentations-Port zu aktualisieren, kann jedes Werkzeug, das auch zum Aktualisieren von Ports verwendet wird, eingesetzt werden. Beispielsweise aktualisiert das folgende Kommando die installierte ungarische Dokumentation mittels des Programms ports-mgmt/portupgrade indem nur Pakete verwendet werden sollen: &prompt.root; portupgrade -PP hu-freebsd-doc Einem Entwicklungszweig folgen -CURRENT -STABLE FreeBSD besitzt zwei Entwicklungszweige: &os.current; und &os.stable;. Dieser Abschnitt beschreibt beide Zweige und erläutert, wie Sie Ihr System auf dem aktuellen Stand eines Zweiges halten. Zuerst wird &os.current; vorgestellt, dann &os.stable;. &os.current; Beachten Sie im Folgenden, dass &os.current; die Spitze der Entwicklung von &os; ist. Benutzer von &os.current; sollten über sehr gute technische Fähigkeiten verfügen und in der Lage sein, schwierige Probleme alleine zu lösen. Wenn &os; neu für Sie ist, überlegen Sie sich genau, ob Sie &os.current; benutzen wollen. Was ist &os.current;? Snapshot &os.current; besteht aus den neuesten Quellen des FreeBSD-Systems. Es enthält Sachen, an denen gerade gearbeitet wird, experimentelle Änderungen und Übergangsmechanismen, die im nächsten offiziellen Release der Software enthalten sein können oder nicht. Obwohl &os.current; täglich von vielen Entwicklern gebaut wird, gibt es Zeiträume, in denen sich das System nicht bauen lässt. Diese Probleme werden so schnell wie möglich gelöst, aber ob Sie mit &os.current; Schiffbruch erleiden oder die gewünschten Verbesserungen erhalten, kann von dem Zeitpunkt abhängen, an dem Sie sich den Quelltext besorgt haben! Wer braucht &os.current;? &os.current; wird hauptsächlich für 3 Interessengruppen zur Verfügung gestellt: Entwickler, die an einem Teil des Quellbaums arbeiten und daher über die aktuellen Quellen verfügen müssen. Tester, die bereit sind, Zeit in das Lösen von Problemen zu investieren und sicherstellen, dass &os.current; so stabil wie möglich bleibt. Weiterhin Leute, die Vorschläge zu Änderungen oder der generellen Entwicklung von &os; machen und Patches bereitstellen, um diese Vorschläge zu realisieren. Für Leute, die die Entwicklung im Auge behalten wollen, oder die Quellen zu Referenzzwecken (zum Beispiel darin lesen, aber nicht verwenden) benutzen wollen. Auch diese Gruppe macht Vorschläge oder steuert Quellcode bei. Was &os.current; <emphasis>nicht</emphasis> ist! Der schnellste Weg, neue Sachen vor dem offiziellen Release auszuprobieren. Bedenken Sie, dass der erste, der die neuen Sachen ausprobiert, auch der erste ist, der die neuen Fehler findet. Ein schneller Weg, um an Fehlerbehebungen (engl. bug fixes) zu kommen. Jede Version von &os.current; führt mit gleicher Wahrscheinlichkeit neue Fehler ein, mit der sie alte behebt. In irgendeiner Form offiziell unterstützt. Wir tun unser Bestes, um Leuten aus den drei legitimen Benutzergruppen von &os.current; zu helfen, aber wir haben einfach nicht die Zeit, technische Unterstützung zu erbringen. Das kommt nicht daher, dass wir kleinliche, gemeine Leute sind, die anderen nicht helfen wollen (wenn wir das wären, würden wir &os; nicht machen), wir können einfach nicht jeden Tag Hunderte Nachrichten beantworten und an &os; arbeiten! Vor die Wahl gestellt, &os; zu verbessern oder jede Menge Fragen zu experimentellem Code zu beantworten, haben sich die Entwickler für ersteres entschieden. Benutzen von &os.current; - - -CURRENT - benutzen - Es ist essentiell, die Mailinglisten - &a.current.name; und &a.svn-src-head.name; zu lesen. Wenn Sie + &a.current.name; und &a.svn-src-head.name;-CURRENTbenutzen zu lesen. Wenn Sie &a.current.name; nicht lesen, verpassen Sie die Kommentare anderer über den momentanen Zustand des Systems und rennen demzufolge in viele bekannte Probleme, die schon gelöst sind. Noch kritischer ist, dass Sie wichtige Bekanntmachungen verpassen, die erhebliche Auswirkungen auf die Stabilität Ihres Systems haben können. In der &a.svn-src-head.name; Mailingliste sehen Sie zu jeder Änderung das Commit-Log, das Informationen zu möglichen Seiteneffekten enthält. Um diese Listen zu abonnieren (oder zu lesen) besuchen Sie bitte die Seite &a.mailman.lists.link;. Weitere Informationen erhalten Sie, wenn Sie dort auf die gewünschte Liste klicken. Wenn Sie daran interessiert sind, die Änderungen am gesamten Quellbaum mit zu verfolgen, schlagen wir vor, die Liste &a.svn-src-all.name; zu abonnieren. Beschaffen Sie sich die Quellen von einem &os;-Spiegel. Sie haben dazu zwei Möglichkeiten: - - cvsup - - - cron - - - -CURRENT - mit CVSup - synchronisieren - - Benutzen Sie das Programm - cvsup + cvsupcvsup mit der Datei standard-supfile aus dem Verzeichnis /usr/share/examples/cvsup. Dies ist die empfohlene Methode, da Sie die ganzen Quellen nur einmal herunterladen und danach nur noch Änderungen beziehen. Viele lassen cvsup aus cron heraus laufen, um ihre Quellen automatisch auf Stand zu bringen. Sie müssen die obige Sup-Datei - anpassen und cvsup + anpassen und cvsup-CURRENTmit CVSup synchronisieren in Ihrer Umgebung konfigurieren. Die standard-supfile-Beispieldatei ist dafür vorgesehen, einen bestimmten Sicherheitszweig zu verfolgen und nicht &os.current;. Sie müssen diese Datei bearbeiten und die folgende Zeile: *default release=cvs tag=RELENG_X_Y durch diese ersetzen: *default release=cvs tag=. Lesen Sie den Abschnitt über CVS Tags im Handbuch, um eine genaue Beschreibung von verwendbaren Tags zu erhalten. - - -CURRENT - mit CTM synchronisieren - - - CTM + CTM-CURRENTmit CTM synchronisieren kommt in Frage, wenn Sie über eine schlechte Internet-Anbindung (hoher Preis oder nur E-Mail Zugriff) verfügen. Der Umgang mit CTM ist allerdings recht mühsam und Sie können beschädigte Dateien erhalten. Daher wird es selten benutzt, was wiederum dazu führt, dass es über längere Zeit nicht funktioniert. Wir empfehlen jedem mit einem 9600 bps oder schnellerem Modem, CVSup zu benutzen. Wenn Sie die Quellen einsetzen und nicht nur darin lesen wollen, besorgen Sie sich bitte die kompletten Quellen von &os.current; und nicht nur ausgesuchte Teile. Der Grund hierfür ist, dass die verschiedenen Teile der Quellen voneinander abhängen. Es ist ziemlich sicher, dass Sie in Schwierigkeiten geraten, wenn Sie versuchen, nur einen Teil der Quellen zu übersetzen. - - -CURRENT - übersetzen - - Sehen Sie sich das Makefile in /usr/src genau an, bevor Sie - &os.current; übersetzen. Wenn Sie + &os.current; übersetzen-CURRENTübersetzen. Wenn Sie &os; das erste Mal aktualisieren, sollten Sie sowohl einen Kernel als auch das System neu installieren. Lesen Sie bitte die Mailingliste &a.current; und /usr/src/UPDATING, um über Änderungen im Installationsverfahren, die manchmal vor der Einführung eines neuen Releases notwendig sind, informiert zu sein. Seien Sie aktiv! Wenn Sie &os.current; laufen lassen, wollen wir wissen, was Sie darüber denken, besonders wenn Sie Verbesserungsvorschläge oder Fehlerbehebungen haben. Verbesserungsvorschläge, die Code enthalten, werden übrigens begeistert entgegengenommen. &os.stable; Was ist &os.stable;? -STABLE &os.stable; ist der Entwicklungszweig, auf dem Releases erstellt werden. Dieser Zweig ändert sich langsamer als &os.current; und alle Änderungen hier sollten zuvor in &os.current; ausgetestet sein. Beachten Sie, dass dies immer noch ein Entwicklungszweig ist und daher zu jedem Zeitpunkt die Quellen von &os.stable; verwendbar sein können oder nicht. &os.stable; ist Teil des Entwicklungsprozesses und nicht für Endanwender gedacht. Wer braucht &os.stable;? Wenn Sie den FreeBSD-Entwicklungsprozess, besonders im Hinblick auf das nächste Release, verfolgen oder dazu beitragen wollen, sollten Sie erwägen, &os.stable; zu benutzen. Auch wenn sicherheitsrelevante Fehlerbehebungen in den &os.stable; Zweig einfließen, müssen Sie deswegen noch lange nicht &os.stable; verfolgen. Jeder der FreeBSD Sicherheitshinweise beschreibt für jedes betroffene Release, Das stimmt nicht ganz. Obwohl wir alte FreeBSD Releases für einige Jahre unterstützen, können wir sie nicht ewig unterstützen. Eine vollständige Beschreibung der Sicherheitspolitik für alte FreeBSD Releases entnehmen Sie bitte http://www.FreeBSD.org/security/. wie sie einen sicherheitsrelevanten Fehler beheben. Wenn Sie den Entwicklungszweig aus Sicherheitsgründen verfolgen wollen, bedenken Sie, dass Sie neben Fehlerbehebungen auch eine Vielzahl unerwünschter Änderungen erhalten werden. Obwohl wir versuchen sicherzustellen, dass der &os.stable; Zweig sich jederzeit übersetzen lässt und läuft, können wir dafür keine Garantie übernehmen. Auch wenn Neuentwicklungen in &os.current; stattfinden, ist es jedoch so, dass mehr Leute &os.stable; benutzen als &os.current; und es daher unvermeidlich ist, dass Fehler und Grenzfälle erst in &os.stable; auffallen. Aus diesen Gründen empfehlen wir Ihnen nicht, blindlings &os.stable; zu benutzen. Es ist wichtig, dass Sie &os.stable; zuerst sorgfältig in einer Testumgebung austesten, bevor Sie Ihre Produktion auf &os.stable; migrieren. Wenn Sie dies nicht leisten können, empfehlen wir Ihnen, das aktuelle FreeBSD-Release zu verwenden. Benutzen Sie dann den binären Update-Mechanismus, um auf neue Releases zu migrieren. Benutzen von &os.stable; - - -STABLE - benutzen - Lesen Sie Mailingliste &a.stable.name;, damit Sie über - Abhängigkeiten beim Bau von &os.stable; und Sachen, die + Abhängigkeiten beim Bau von &os.stable;-STABLEbenutzen und Sachen, die besondere Aufmerksamkeit erfordern, informiert sind. Umstrittene Fehlerbehebungen oder Änderungen werden von den Entwicklern auf dieser Liste bekannt gegeben. Dies erlaubt es den Benutzern, Einwände gegen die vorgeschlagenen Änderungen vorzubringen. Abonnieren Sie die passende SVN-Liste für den jeweiligen Branch, den Sie verfolgen. Wenn Sie beispielsweise den Zweig 7-STABLE verfolgen, lesen Sie die &a.svn-src-stable-7.name;. Dort sehen Sie zu jeder Änderung das Commit-Log, das Informationen zu möglichen Seiteneffekten enthält. Um diese Listen oder andere Listen zu abonnieren besuchen Sie bitte die Seite &a.mailman.lists.link;. Weitere Informationen erhalten Sie, wenn Sie dort auf die gewünschte Liste klicken. Wenn Sie daran interessiert sind, Änderungen am gesamten Quellbaum zu verfolgen, dann empfehlen wir, dass Sie &a.svn-src-all.name; abonnieren. Wenn Sie ein neues System installieren und dazu einen der monatlich aus &os.stable; erzeugten Snapshots verwenden wollen, sollten Sie zuerst die Snapshot Website auf aktuelle Informationen überprüfen. Alternativ können Sie auch das neueste &os.stable;-Release von den Spiegeln beziehen und Ihr System nach den folgenden Anweisungen aktualisieren. Wenn Sie schon ein älteres Release von &os; und das System mit dem Quellcode aktualisieren wollen, benutzen Sie einen der &os;-Spiegel. Sie haben dazu zwei Möglichkeiten: - - cvsup - - - cron - - - -STABLE - mit CVSup - synchronisieren - - Benutzen Sie das Programm - cvsup - mit der Datei stable-supfile + cvsupcvsup + mit der Datei stable-supfile-STABLEmit CVSup synchronisieren aus dem Verzeichnis /usr/share/examples/cvsup. Dies ist die empfohlene Methode, da Sie die ganzen Quellen nur einmal herunterladen und danach nur noch Änderungen beziehen. Viele lassen cvsup aus cron heraus laufen, um ihre Quellen automatisch auf Stand zu bringen. Sie müssen das oben erwähnte supfile anpassen und cvsup konfigurieren. - - -STABLE - mit CTM synchronisieren - - Benutzen Sie - CTM. Wenn Sie über + CTM-STABLEmit CTM synchronisieren. Wenn Sie über keine schnelle und billige Internet-Anbindung verfügen, sollten Sie diese Methode in Betracht ziehen. Benutzen Sie cvsup oder ftp, wenn Sie schnellen Zugriff auf die Quellen brauchen und die Bandbreite keine Rolle spielt, andernfalls benutzen Sie CTM. - - -STABLE - übersetzen - - - Bevor Sie &os.stable; übersetzen, sollten Sie sich + Bevor Sie &os.stable; übersetzen-STABLEübersetzen, sollten Sie sich das Makefile in /usr/src genau anschauen. Wenn Sie &os; das erste Mal aktualisieren, sollten Sie sowohl einen Kernel als auch das System neu installieren. Lesen Sie bitte die Mailingliste &a.stable; und /usr/src/UPDATING, um über Änderungen im Installationsverfahren, die manchmal vor der Einführung eines neuen Releases notwendig sind, informiert zu sein. Synchronisation der Quellen Sie können eine Internet-Verbindung (oder E-Mail) dazu nutzen, Teile von &os;, wie die Quellen zu einzelnen Projekten, oder das Gesamtsystem, aktuell zu halten. Dazu bieten wir die Dienste AnonymousCVS, CVSup und CTM an. Obwohl es möglich ist, nur Teile des Quellbaums zu aktualisieren, ist die einzige unterstütze Migrationsprozedur, den kompletten Quellbaum zu aktualisieren und alles, das heißt das Userland (z.B. alle Programme in /bin und /sbin) und die Kernelquellen, neu zu übersetzen. Wenn Sie nur einen Teil der Quellen, zum Beispiel nur den Kernel oder nur die Programme aus dem Userland, aktualisieren, werden Sie oft Probleme haben, die von Übersetzungsfehlern über Kernel-Panics bis hin zu Beschädigungen Ihrer Daten reichen können. CVS anonymous Anonymous CVS und CVSup benutzen die Pull-Methode Von engl. to pull = ziehen. Der Client holt sich bei dieser Methode die Dateien ab. , um die Quellen zu aktualisieren. Im Fall von CVSup ruft der Benutzer oder ein cron-Skript cvsup auf, das wiederum mit einem cvsupd Server interagiert, um Ihre Quellen zu aktualisieren. Mit beiden Methoden erhalten Sie aktuelle Updates zu einem genau von Ihnen bestimmten Zeitpunkt. Sie können die Prozedur auf bestimmte Dateien oder Verzeichnisse einschränken, so dass Sie nur die Updates bekommen, die für Sie von Interesse sind. Die Updates werden zur Laufzeit, abhängig von den Sachen, die Sie schon haben und den Sachen, die Sie haben wollen, auf dem Server generiert. Anonymous CVS ist eine Erweiterung von CVS, die es Ihnen erlaubt, Änderungen direkt aus einem entfernten CVS-Repository zu ziehen. Anonymous CVS ist leichter zu handhaben als CVSup, doch ist letzteres sehr viel effizienter. CTM Im Gegensatz dazu vergleicht CTM Ihre Quellen nicht mit denen auf einem Server. Stattdessen läuft auf dem Server ein Skript, das Änderungen an Dateien gegenüber seinem vorigen Lauf bemerkt, die Änderungen komprimiert, mit einer Sequenznummer versieht und für das Verschicken per E-Mail kodiert (es werden nur druckbare ASCII-Zeichen verwendet). Wenn Sie diese CTM-Deltas erhalten haben, können Sie sie mit &man.ctm.rmail.1; benutzen, welches die Deltas dekodiert, verifiziert und dann die Änderungen an Ihren Quellen vornimmt. Dieses Verfahren ist viel effizienter als CVSup und erzeugt auch weniger Last auf unseren Servern, da es die Push-Methode Von engl. to push = schieben. Der Server schickt dem Client die Dateien. verwendet. Es gibt natürlich noch weitere Unterschiede, die Sie beachten sollten. Wenn Sie unabsichtlich Teile Ihres Archivs löschen, wird das von CVSup wie Anonymous CVS erkannt und repariert. Wenn sich fehlerhafte Dateien in Ihrem Quellbaum befinden, löschen Sie diese einfach und synchronisieren erneut. CTM leistet das nicht, wenn Sie Teile des Quellbaums gelöscht haben und keine Sicherung besitzen, müssen Sie von neuem, das heißt vom letzten Basis-Delta, starten und die Änderungen wieder mit CTM nachziehen. Das komplette Basissystem neu bauen Bau des Basissystems Wenn Sie Ihren lokalen Quellbaum mit einer bestimmten FreeBSD Version (&os.stable;, &os.current;, usw.) synchronisiert haben, können Sie diesen benutzen, um das System neu zu bauen. Erstellen Sie eine Sicherungskopie! Es kann nicht oft genug betont werden, wie wichtig es ist, Ihr System zu sichern, bevor Sie die nachfolgenden Schritte ausführen. Obwohl der Neubau des Systems eine einfache Aufgabe ist, wenn Sie sich an die folgende Anleitung halten, kann es dennoch vorkommen, dass Sie einen Fehler machen, oder dass Ihr System nicht mehr bootet, weil andere Entwickler Fehler in den Quellbaum eingeführt haben. Stellen Sie sicher, dass Sie eine Sicherung erstellt haben und über eine Fixit-Floppy oder eine startfähige CD verfügen. Wahrscheinlich werden Sie die Startmedien nicht benötigen, aber gehen Sie auf Nummer sicher! Abonnieren Sie die richtige Mailingliste Mailingliste Die &os.stable; und &os.current; Zweige befinden sich in ständiger Entwicklung. Die Leute, die zu &os; beitragen, sind Menschen und ab und zu machen sie Fehler. Manchmal sind diese Fehler harmlos und lassen Ihr System eine Warnung ausgeben. Die Fehler können allerdings auch katastrophal sein und dazu führen, dass Sie Ihr System nicht mehr booten können, Dateisysteme beschädigt werden oder Schlimmeres passiert. Wenn solche Probleme auftauchen, wird ein heads up an die passende Mailingliste geschickt, welches das Problem erklärt und die betroffenen Systeme benennt. Eine all clear Meldung wird versendet, wenn das Problem gelöst ist. Wenn Sie &os.stable; oder &os.current; benutzen und nicht die Mailinglisten &a.stable; beziehungsweise &a.current; lesen, bringen Sie sich nur unnötig in Schwierigkeiten. Finger weg von <command>make world</command> Ältere Dokumentationen empfehlen, das Kommando make world für den Neubau. Das Kommando überspringt wichtige Schritte. Setzen Sie es nur ein, wenn Sie wissen was Sie tun. In fast allen Fällen ist make world falsch, benutzen Sie stattdessen die nachstehende Anleitung. Richtig aktualisieren Um Ihr System zu aktualisieren, sollten Sie zuerst /usr/src/UPDATING lesen, und eventuelle, für Ihre Quellcodeversion nötigen Aufgaben erledigen, bevor Sie das System bauen. Danach aktualisieren Sie Ihr System mit den folgenden Schritten. Bei den hier dargestellten Aktualisierungsschritten wird davon ausgegangen, dass Sie momentan eine alte &os;-Version verwenden, die aus einem alten Compiler, Kernel, sowie einem alten Basissystem und veralteten Konfigurationsdateien besteht. Mit Basissystem sind hier die zentralen Binärdateien, Bibliotheken und Entwicklerdateien gemeint. Der Compiler ist Teil des Basissystems, beinhaltet aber ein paar Besonderheiten. Es wird ausserdem davon ausgegangen, dass Sie bereits die Quellen für ein neues System bezogen haben. Falls die Quellen in dem vorliegenden System zu alt sind, lesen Sie , um detaillierte Hilfe über die Aktualisierung der Quellen zu erhalten. Die Aktualisierung des Systems aus den Quellen ist ein wenig ausgetüftelter als es zunächst den Anschein hat. Die Entwickler von &os; haben es über die Jahre für Nötig befunden, den vorgeschlagenen Ablauf ziemlich stark zu verändern, da neue Arten von unvermeidlichen Abhängigkeiten mit der Zeit ans Licht kamen. Der übrige Teil dieses Abschnitts beschreibt die Überlegungen hinter der aktuell empfohlenen Aktualisierungsreihenfolge. Jede erfolgreiche Aktualisierung muss sich mit den folgenden Sachverhalten auseinandersetzen: Der alte Compiler ist möglicherweise nicht in der Lage, den neuen Kernel zu übersetzen (alte Compiler besitzen manchmal Fehler). Deshalb sollte der neue Kernel mit dem neuen Compiler übersetzt werden. Ganz besonders muss darauf geachtet werden, dass der neue Compiler vor dem neuen Kernel gebaut wird. Das bedeutet nicht unbedingt, dass der neue Compiler auch installiert werden muss, bevor der neue Kernel gebaut wird. Das neue Basissystem benötigt eventuell neue Eigenschaften des Kernels. Also muss der neue Kernel installiert sein, bevor das neue Basissystem installiert wird. Diese ersten beiden Sachverhalte sind die Grundlage für die zentrale Sequenz von buildworld, buildkernel, installkernel und installworld, die in den folgenden Abschnitten beschrieben wird. Dies ist keine vollständige Liste all der Gründe, warum Sie den aktuell empfohlenen Prozess der Aktualisierung bevorzugen sollten. Ein paar der weniger naheliegenden Gründe sind im folgenden aufgezählt: Das alte Basissystem wird möglicherweise nicht korrekt mit dem neuen Kernel funktionieren, weshalb Sie das neue Basissystem sofort nach der Installation des neuen Kernels installieren müssen. Manche Änderungen an der Konfiguration müssen erledigt worden sein, bevor das neue Basissystem installiert wird, jedoch können andere die Funktionalität des alten Basissystems beeinträchtigen. Aus diesem Grund sind zwei verschiedene Schritte notwendig, um eine Aktualisierung der Konfiguration durchzuführen. Der Aktualisierungsprozess ersetzt zum Grossteil Dateien oder fügt neue hinzu, bestehende Dateien werden nicht gelöscht. In wenigen Ausnahmefällen kann dies Probleme verursachen. Aus diesem Grund wird der Aktualisierungsprozess manchmal bestimmte Dateien zum manuellen Löschen vorschlagen. Dies wird eventuell in der Zukunft automatisch durchgeführt. Diese Bedenken haben zu der folgenden Reihenfolge geführt. Beachten Sie, dass der genaue Ablauf für bestimmte Aktualisierungen zusätzliche Schritte nach sich zieht, jedoch sollte der Kernprozess davon nicht beeinträchtigt werden: make buildworld Dieser Schritt übersetzt zuerst den neuen Compiler und ein paar damit zusammenhängende Werkzeuge und verwendet dann den neuen Compiler, um den Rest des Basissystems zu erstellen. Das Ergebnis landet dann in /usr/obj. make buildkernel Statt dem alten Ansatz, &man.config.8; und &man.make.1; zu verwenden, nutzt dieser den neuen Compiler, der in /usr/obj abgelegt ist. Das schützt Sie vor falschen Compiler-Kernel-Kombinationen. make installkernel Platziert den neuen Kernel und Kernelmodule auf der Platte, was es erlaubt, mit dem frisch aktualisierten Kernel zu starten. Starten Sie das System neu in den Single-User-Modus. Der Single-User-Modus minimiert Probleme mit der Aktualisierung von Programmen, die bereits gestartet sind. Ebenso minimiert es Probleme, die mit der Verwendung des alten Basissystems und des neuen Kernels zu tun haben könnten. mergemaster Dieser Schritt aktualisiert ein paar initiale Konfigurationsdateien als Vorbereitung für das neue Basissystem. Beispielsweise fügt es neue Benutzergruppen zum System oder neue Benutzernamen in die Passwortdatenbank hinzu. Dies wird oftmals benötigt, wenn neue Gruppen oder bestimmte Systembenutzerkonten seit der letzten Aktualisierung hinzu gekommen sind, so dass der installworld-Schritt in der Lage ist, auf dem neu installierten System die Benutzer oder Systemgruppennamen ohne Probleme zu verwenden. make installworld Kopiert das Basissystem aus /usr/obj. Sie haben jetzt den neuen Kernel und das neue Basissystem auf der Festplatte. mergemaster Sie können nun die verbleibenden Konfigurationsdateien aktualisieren, da Sie nun das neue Basissystem auf der Platte haben. Starten Sie das System neu. Ein kompletter Systemneustart ist notwendig, um den neuen Kernel und das neue Basissystem mit den neuen Konfigurationsdateien zu laden. Beachten Sie, dass wenn Sie von einem Release des gleichen &os;-Zweigs auf ein aktuelleres Release des gleichen Zweigs, z.B. von 7.0 auf 7.1, aktualisieren, dann ist diese Vorgehensweise nicht unbedingt notwendig, da Sie nur sehr unwahrscheinlich in ungünstige Kombinationen zwischen Compiler, Kernel, Basissystem und den Konfigurationsdateien geraten werden. Die ältere Vorgehensweise von make world, gefolgt von der Erstellung und Installation des neuen Kernels funktioniert möglicherweise gut genug, um kleinere Aktualisierungen vorzunehmen. Wenn Sie allerdings zwischen Hauptversionen aktualisieren wollen und befolgen diese Schritte nicht, sollten Sie sich auf Probleme gefasst machen. Es ist auch wichtig zu wissen, dass viele Aktualisierungen, z.B. von 4.X auf 5.0, viele spezielle und zusätzliche Schritte benötigt, wie beispielsweise das umbennen oder löschen von speziellen Dateien vor installworld. Lesen Sie die Datei /usr/src/UPDATING gründlich, besonders am Ende, wo die aktuell vorgeschlagene Aktualisierungssequenz explizit aufgelistet ist. Diese Prozedur hat sich mit der Zeit weiterentwickelt, da die Entwickler es für unmöglich erachtet haben, bestimmte Arten von Kombinationsproblemen vollständig auszuschliessen. Hoffentlich wird die aktuelle Aktualisierungsprozedur für lange Zeit stabil bleiben. Als Zusammenfassung ist hier nochmal die aktuell vorgeschlagene Vorgehensweise für die Aktualisierung von &os; aus den Quellen aufgelistet: &prompt.root; cd /usr/src &prompt.root; make buildworld &prompt.root; make buildkernel &prompt.root; make installkernel &prompt.root; shutdown -r now Es gibt einige, sehr seltene Situationen, in denen Sie mergemaster -p zusätzlich ausführen müssen, bevor Sie das System mit buildworld bauen. Diese Situationen werden in UPDATING beschrieben. Solche Situationen treten aber in der Regel nur dann auf, wenn Sie Ihr &os;-System um eine oder mehrere Hauptversionen aktualisieren. Nachdem installkernel erfolgreich abgeschlossen wurde, starten Sie das System im Single-User-Modus (etwa durch die Eingabe von boot -s am Loaderprompt). Danach führen Sie die folgenden Anweisungen aus: &prompt.root; mount -u / &prompt.root; mount -a -t ufs &prompt.root; adjkerntz -i &prompt.root; mergemaster -p &prompt.root; cd /usr/src &prompt.root; make installworld &prompt.root; mergemaster &prompt.root; reboot Lesen Sie bitte weiter Die obige Vorschrift ist nur eine Gedächtnisstütze. Um die einzelnen Schritte zu verstehen, lesen Sie bitte die folgenden Abschnitte, insbesondere wenn Sie einen angepassten Kernel erstellen. Lesen Sie <filename>/usr/src/UPDATING</filename> Bevor Sie etwas anderes tun, lesen Sie bitte /usr/src/UPDATING (oder die entsprechende Datei, wenn Sie den Quellcode woanders installiert haben). Die Datei enthält wichtige Informationen zu Problemen, auf die Sie stoßen könnten oder gibt die Reihenfolge vor, in der Sie bestimmte Kommandos laufen lassen müssen. Die Anweisungen in UPDATING sind aktueller als die in diesem Handbuch. Im Zweifelsfall folgen Sie bitte den Anweisungen aus UPDATING. Das Lesen von UPDATING ersetzt nicht das Abonnieren der richtigen Mailingliste. Die beiden Voraussetzungen ergänzen sich, es reicht nicht aus, nur eine zu erfüllen. Überprüfen Sie <filename>/etc/make.conf</filename> make.conf Überprüfen Sie die Dateien /usr/share/examples/etc/make.conf und /etc/make.conf. Die erste enthält Vorgabewerte, von denen die meisten auskommentiert sind. Um diese während des Neubaus des Systems zu nutzen, tragen Sie die Werte in /etc/make.conf ein. Beachten Sie, dass alles, was Sie in /etc/make.conf eintragen, bei jedem Aufruf von make angezogen wird. Es ist also klug, hier etwas Sinnvolles einzutragen. Typischerweise wollen Sie die Zeilen, die CFLAGS und NO_PROFILE enthalten, aus /usr/share/examples/etc/make.conf nach /etc/make.conf übertragen und dort aktivieren. Sehen Sie sich auch die anderen Definitionen, wie COPTFLAGS oder NOPORTDOCS an und entscheiden Sie, ob Sie diese aktivieren wollen. Aktualisieren Sie die Dateien in <filename>/etc</filename> Das Verzeichnis /etc enthält den Großteil der Konfigurationsdateien des Systems und Skripten, die beim Start des Systems ausgeführt werden. Einige dieser Skripten ändern sich bei einer Migration auf eine neue FreeBSD-Version. Einige der Konfigurationsdateien, besonders /etc/group, werden für den Normalbetrieb des Systems gebraucht. Es gab Fälle, in denen das Kommando make installworld auf bestimmte Accounts oder Gruppen angewiesen war, die aber während der Aktualisierung fehlten. Demzufolge kam es zu Problemen bei der Aktualisierung. In einigen Fällen prüft make buildworld ob die Accounts oder Gruppen vorhanden sind. Ein Beispiel dafür trat beim Anlegen des Benutzers smmsp auf. Die Installationsprozedur schlug an der Stelle fehl, an der &man.mtree.8; versuchte, /var/spool/clientmqueue anzulegen. Um dieses Problem zu umgehen,rufen Sie &man.mergemaster.8; prä-buildworld-Modus auf, der mit aktiviert wird. In diesem Modus werden nur Dateien verglichen, die für den Erfolg von buildworld oder installworld essentiell sind. Wenn Sie besonders paranoid sind, sollten Sie Ihr System nach Dateien absuchen, die der Gruppe, die Sie umbenennen oder löschen, gehören: &prompt.root; find / -group GID -print Das obige Kommando zeigt alle Dateien an, die der Gruppe GID (dies kann entweder ein Gruppenname oder eine numerische ID sein) gehören. Wechseln Sie in den Single-User-Modus Single-User-Modus Sie können das System im Single-User-Modus übersetzen. Abgesehen davon, dass dies etwas schneller ist, werden bei der Installation des Systems viele wichtige Dateien, wie die Standard-Systemprogramme, die Bibliotheken und Include-Dateien, verändert. Sie bringen sich in Schwierigkeiten, wenn Sie diese Dateien auf einem laufenden System verändern, besonders dann, wenn zu dieser Zeit Benutzer auf dem System aktiv sind. Mehrbenutzermodus Eine andere Methode übersetzt das System im Mehrbenutzermodus und wechselt für die Installation in den Single-User-Modus. Wenn Sie diese Methode benutzen wollen, warten Sie mit den folgenden Schritten, bis der Bau des Systems fertig ist und Sie mit installkernel oder installworld installieren wollen. Als Superuser können Sie mit dem folgenden Kommando ein laufendes System in den Single-User-Modus bringen: &prompt.root; shutdown now Alternativ können Sie das System mit der Option single user in den Single-User-Modus booten. Danach geben Sie die folgenden Befehle ein: &prompt.root; fsck -p &prompt.root; mount -u / &prompt.root; mount -a -t ufs &prompt.root; swapon -a Die Kommandos überprüfen die Dateisysteme, hängen / wieder beschreibbar ein, hängen dann alle anderen UFS Dateisysteme aus /etc/fstab ein und aktivieren den Swap-Bereich. Zeigt Ihre CMOS-Uhr die lokale Zeit und nicht GMT an, dies erkennen Sie daran, dass &man.date.1; die falsche Zeit und eine falsche Zeitzone anzeigt, setzen Sie das folgende Kommando ab: &prompt.root; adjkerntz -i Dies stellt sicher, dass Ihre Zeitzone richtig eingestellt ist. Ohne dieses Kommando werden Sie vielleicht später Probleme bekommen. Entfernen Sie <filename>/usr/obj</filename> Die neu gebauten Teile des Systems werden in der Voreinstellung unter /usr/obj gespeichert. Die Verzeichnisse dort spiegeln die Struktur unter /usr/src. Sie können den make buildworld Prozess beschleunigen, indem Sie dieses Verzeichnis entfernen. Dies erspart Ihnen zudem einigen Ärger aufgrund von Abhängigkeiten. Einige Dateien unter /usr/obj sind vielleicht durch die -Option (siehe &man.chflags.1;) schreibgeschützt, die vor dem Löschen entfernt werden muss. &prompt.root; cd /usr/obj &prompt.root; chflags -R noschg * &prompt.root; rm -rf * Übersetzen der Quellen des Basissystems Sichern der Ausgaben Für den Fall, dass etwas schief geht, sollten Sie die Ausgaben von &man.make.1; in einer Datei sichern, damit Sie eine Kopie der Fehlermeldung besitzen. Das mag Ihnen nicht helfen, den Fehler zu finden, kann aber anderen helfen, wenn Sie Ihr Problem in einer der &os;-Mailinglisten schildern. Dazu können Sie einfach das Kommando &man.script.1; benutzen, dem Sie beim Aufruf als Parameter den Dateinamen für die Ausgaben mitgeben. Setzen Sie das Kommando unmittelbar vor dem Neubau ab und geben Sie exit ein, wenn der Bau abgeschlossen ist: &prompt.root; script /var/tmp/mw.out Script started, output file is /var/tmp/mw.out &prompt.root; make TARGET … Ausgaben des Kommandos … &prompt.root; exit Script done, … Sichern Sie die Ausgaben nicht in /tmp, da dieses Verzeichnis beim nächsten Boot aufgeräumt werden kann. Ein geeigneteres Verzeichnis ist /var/tmp, wie im vorigen Beispiel gezeigt, oder das Heimatverzeichnis von root. Übersetzen des Basissystems Wechseln Sie in das Verzeichnis, in dem die Quellen liegen (in der Voreinstellung ist das /usr/src): &prompt.root; cd /usr/src make Zum Neubau der Welt benutzen Sie &man.make.1;. Dieses Kommando liest ein Makefile, das Anweisungen enthält, wie die Programme, aus denen &os; besteht, zu bauen sind und in welcher Reihenfolge diese zu bauen sind. Ein typischer Aufruf von make sieht wie folgt aus: &prompt.root; make -x -DVARIABLE target In diesem Beispiel ist eine Option, die Sie an &man.make.1; weitergeben wollen. Eine Liste gültiger Optionen finden Sie in der &man.make.1; Manualpage. Das Verhalten eines Makefiles wird von Variablen bestimmt. Mit setzen Sie eine Variable. Diese Variablen sind dieselben, die auch in /etc/make.conf gesetzt werden, dies ist nur ein alternativer Weg, Variablen zu setzen. Um zu verhindern, dass die profiled Bibliotheken gebaut werden, rufen Sie make wie folgt auf: &prompt.root; make -DNO_PROFILE target Dieser Aufruf entspricht dem folgenden Eintrag in /etc/make.conf: NO_PROFILE= true # Avoid compiling profiled libraries Jedes Makefile definiert einige Ziele, die festlegen, was genau zu tun ist. Mit target wählen Sie eins dieser Ziele aus. Einige Ziele im Makefile sind nicht für den Endanwender gedacht, sondern unterteilen den Bauprozess in eine Reihe von Einzelschritten. Im Regelfall müssen Sie &man.make.1; keine Parameter mitgeben, so dass Ihre Kommandozeile wie folgt aussehen wird: &prompt.root; make target target steht dabei für die verschiedenen Ziele. Das erste Ziel sollte immer buildworld sein. Mit buildworld wird ein kompletter Baum unterhalb von /usr/obj gebaut, der mit installworld, einem weiteren Ziel, auf dem System installiert werden kann. Über separate Optionen zu verfügen, ist aus mehreren Gründen nützlich. Erstens können Sie das System auf einem laufenden System bauen, da die Bauprozedur abgekapselt vom Rest des Systems ist. Das System lässt sich im Mehrbenutzermodus ohne negative Seiteneffekte bauen. Die Installation mit installworld sollte aber immer noch im Single-User-Modus erfolgen. Zweitens können Sie NFS benutzen, um mehrere Maschinen in Ihrem Netzwerk zu aktualisieren. Wenn Sie die Maschinen A, B und C aktualisieren wollen, lassen sie make buildworld und make installworld auf A laufen. Auf den Maschinen B und C können Sie die Verzeichnisse /usr/src und /usr/obj von A einhängen und brauchen dort nur noch make installworld auszuführen, um die Bauresultate zu installieren. Obwohl das Ziel world noch existiert, sollten Sie es wirklich nicht mehr benutzen. Um das System zu bauen, setzen Sie das folgende Kommando ab: &prompt.root; make buildworld Mit können Sie make anweisen, mehrere Prozesse zu starten. Besonders effektiv ist das auf Mehrprozessor-Systemen. Da aber der Übersetzungsprozess hauptsächlich von IO statt der CPU bestimmt wird, ist diese Option auch auf Einprozessor-Systemen nützlich. Auf einem typischen Einprozessor-System können Sie den folgenden Befehl absetzen: &prompt.root; make -j4 buildworld &man.make.1; wird dann bis zu vier Prozesse gleichzeitig laufen lassen. Erfahrungsberichte aus den Mailinglisten zeigen, dass dieser Aufruf typischerweise den besten Geschwindigkeitsgewinn bringt. Wenn Sie ein Mehrprozessor-System besitzen und SMP in Ihrem Kernel konfiguriert ist, probieren Sie Werte zwischen 6 und 10 aus. Laufzeiten Bau des Basissystems Laufzeiten Die Laufzeit eines Baus wird von vielen Faktoren beeinflusst, ein aktuelles System benötigt aber etwa zwei Stunden um &os.stable; zu bauen. Der Bau von &os.current; dauert etwas länger. Übersetzen und Installation des Kernels Kernel Übersetzen Um das Beste aus Ihrem System zu holen, sollten Sie einen neuen Kernel kompilieren. Praktisch gesehen ist das sogar notwendig, da sich einige Datenstrukturen geändert haben und Programme wie &man.ps.1; oder &man.top.1; nur mit einem Kernel zusammen arbeiten, der auch zu dem entsprechenden Quellcode passt. Am einfachsten und sichersten bauen Sie dazu den GENERIC Kernel. Obwohl der GENERIC Kernel vielleicht nicht alle Ihre Geräte unterstützt, sollte er alles enthalten, um das System in den Single-User-Modus zu booten. Dies ist auch ein guter Test, um zu sehen, dass das System ordnungsgemäß funktioniert. Nachdem Sie mit GENERIC gebootet und sichergestellt haben, dass Ihr System funktioniert, können Sie einen neuen Kernel mit Ihrer Konfigurationsdatei bauen. In aktuellen &os;-Versionen müssen Sie das Basissystem neu bauen, bevor Sie einen neuen Kernel erstellen. Wenn Sie einen angepassten Kernel erstellen wollen und bereits über eine Konfigurationsdatei verfügen, geben Sie diese, wie im folgenden Beispiel gezeigt, auf der Kommandozeile an: &prompt.root; cd /usr/src &prompt.root; make buildkernel KERNCONF=MYKERNEL &prompt.root; make installkernel KERNCONF=MYKERNEL Wenn kern.securelevel einen Wert größer als 1 besitzt und der Kernel mit noschg oder ähnlichen Optionen geschützt ist, müssen Sie installkernel im Einbenutzermodus ausführen. Wenn das nicht der Fall ist, sollten die beiden Kommandos problemlos im Mehrbenutzermodus laufen. Weitere Informationen über kern.securelevel finden Sie in &man.init.8; und &man.chflags.1; erläutert Optionen, die Sie auf Dateien setzen können. Booten Sie in den Single-User-Modus Single-User-Modus Um zu prüfen, ob der neue Kernel funktioniert, sollten Sie in den Single-User-Modus booten. Folgen Sie dazu der Anleitung aus . Installation des Systems Nun können Sie das neue System mit installworld installieren. Rufen Sie dazu das folgende Kommando auf: &prompt.root; cd /usr/src &prompt.root; make installworld Wenn Sie mit dem make buildworld Kommando Variablen verwendet haben, müssen Sie dieselben Variablen auch bei dem make installworld Kommando angeben. Auf die anderen Optionen trifft das nur bedingt zu: darf mit installworld nicht benutzt werden. Sie haben zum Bauen die folgende Kommandozeile verwendet: &prompt.root; make -DNO_PROFILE buildworld Bei der Installation setzen Sie dann das folgende Kommando ab: &prompt.root; make -DNO_PROFILE installworld Würden Sie die Variable bei der Installation weglassen, so würde das System versuchen, die profiled Bibliotheken, die aber gar nicht gebaut wurden, zu installieren. Aktualisieren der von <command>make installworld</command> ausgelassenen Dateien Neue oder geänderte Konfigurationsdateien aus einigen Verzeichnissen, besonders /etc, /var und /usr werden bei der Installationsprozedur nicht berücksichtigt. Sie können diese Dateien mit &man.mergemaster.8; aktualisieren. Alternativ können Sie das auch manuell durchführen, obwohl wir diesen Weg nicht empfehlen. Egal welchen Weg Sie beschreiten, sichern Sie vorher den Inhalt von /etc für den Fall, dass etwas schief geht. Tom Rhodes Beigetragen von <command>mergemaster</command> mergemaster Das Bourne-Shell Skript &man.mergemaster.8; hilft Ihnen dabei, die Unterschiede zwischen den Konfigurationsdateien in /etc und denen im Quellbaum unter /usr/src/etc zu finden. mergemaster ist der empfohlene Weg, Ihre Systemkonfiguration mit dem Quellbaum abzugleichen. Rufen Sie mergemaster einfach auf und schauen Sie zu. Ausgehend von / wird mergemaster einen virtuellen Root-Baum aufbauen und darin die neuen Konfigurationsdateien ablegen. Diese Dateien werden dann mit den auf Ihrem System installierten verglichen. Unterschiede zwischen den Dateien werden im &man.diff.1;-Format dargestellt. Neue oder geänderte Zeilen werden mit gekennzeichnet. Zeilen die gelöscht oder ersetzt werden, sind mit einem gekennzeichnet. Das Anzeigeformat wird in &man.diff.1; genauer erklärt. &man.mergemaster.8; zeigt Ihnen jede geänderte Datei an und Sie haben die Wahl, die neue Datei (in mergemaster wird sie temporäre Datei genannt) zu löschen, sie unverändert zu installieren, den Inhalt der neuen Datei mit dem Inhalt der alten Datei abzugleichen, oder die &man.diff.1; Ausgabe noch einmal zu sehen. Sie können die aktuelle Datei auch überspringen, sie wird dann noch einmal angezeigt, nachdem alle anderen Dateien abgearbeitet wurden. Sie erhalten Hilfe, wenn Sie bei der Eingabeaufforderung von mergemaster ein ? eingeben. Wenn Sie die temporäre Datei löschen, geht mergemaster davon aus, dass Sie Ihre aktuelle Datei behalten möchten. Wählen Sie die Option bitte nur dann, wenn Sie keinen Grund sehen, die aktuelle Datei zu ändern. Wenn Sie die temporäre Datei installieren, wird Ihre aktuelle Datei mit der neuen Datei überschrieben. Sie sollten alle unveränderten Konfigurationsdateien auf diese Weise aktualisieren. Wenn Sie sich entschließen den Inhalt beider Dateien abzugleichen, wird ein Texteditor aufgerufen, indem Sie beide Dateien nebeneinander betrachten können. Mit der Taste l übernehmen Sie die aktuelle Zeile der links dargestellten Datei, mit der Taste r übernehmen Sie die Zeile der rechts dargestellten Datei. Das Ergebnis ist eine Datei, die aus Teilen der beiden ursprünglichen Dateien besteht und installiert werden kann. Dieses Verfahren wird gewöhnlich bei veränderten Dateien genutzt. Haben Sie sich entschieden die Differenzen noch einmal anzuzeigen, zeigt Ihnen &man.mergemaster.8; dieselbe Ausgabe, die Sie gesehen haben, bevor die Eingabeaufforderung ausgegeben wurde. Wenn &man.mergemaster.8; alle Systemdateien abgearbeitet hat, werden weitere Optionen abgefragt. Sie werden unter Umständen gefragt, ob Sie die Passwort-Datei neu bauen lassen wollen. Am Ende haben Sie die Möglichkeit, den Rest der temporären Dateien zu löschen. Manueller Abgleich der Konfigurationsdateien Wenn Sie den Abgleich lieber selbst ausführen wollen, beachten Sie bitte, dass Sie nicht einfach die Dateien aus /usr/src/etc nach /etc kopieren können. Einige dieser Dateien müssen zuerst installiert werden, bevor sie benutzt werden können. Das liegt daran, dass /usr/src/etc keine exakte Kopie von /etc ist. Zudem gibt es Dateien, die sich in /etc befinden aber nicht in /usr/src/etc. Wenn Sie, wie empfohlen, mergemaster benutzen, können Sie direkt in den nächsten Abschnitt wechseln. Am einfachsten ist es, wenn Sie die neuen Dateien in ein temporäres Verzeichnis installieren und sie nacheinander auf Differenzen zu den bestehenden Dateien durchsehen. Sichern Sie die Inhalte von <filename>/etc</filename> Obwohl bei dieser Prozedur keine Dateien in /etc automatisch verändert werden, sollten Sie dessen Inhalt an einen sicheren Ort kopieren: &prompt.root; cp -Rp /etc /etc.old Mit wird rekursiv kopiert und erhält die Attribute der kopierten Dateien, wie Zugriffszeiten und Eigentümer. Sie müssen die neuen Dateien in einem temporären Verzeichnis installieren. /var/tmp/root ist eine gute Wahl für das temporäre Verzeichnis, in dem auch noch einige Unterverzeichnisse angelegt werden müssen. &prompt.root; mkdir /var/tmp/root &prompt.root; cd /usr/src/etc &prompt.root; make DESTDIR=/var/tmp/root distrib-dirs distribution Die obigen Kommandos bauen die nötige Verzeichnisstruktur auf und installieren die neuen Dateien in diese Struktur. Unterhalb von /var/tmp/root wurden einige leere Verzeichnisse angelegt, die Sie am besten wie folgt entfernen: &prompt.root; cd /var/tmp/root &prompt.root; find -d . -type d | xargs rmdir 2>/dev/null Im obigen Beispiel wurde die Fehlerausgabe nach /dev/null umgeleitet, um die Warnungen über nicht leere Verzeichnisse zu unterdrücken. /var/tmp/root enthält nun alle Dateien, die unterhalb von / installiert werden müssen. Sie müssen nun jede dieser Dateien mit den schon existierenden Dateien vergleichen. Einige der installierten Dateien unter /var/tmp/root beginnen mit einem .. Als dieses Kapitel verfasst wurde, waren das nur die Startdateien für die Shells in /var/tmp/root/ und /var/tmp/root/root/. Abhängig davon, wann Sie dieses Handbuch lesen, können mehr Dateien dieser Art existieren. Verwenden Sie ls -a um sicherzustellen, dass Sie alle derartigen Dateien finden. Benutzen Sie &man.diff.1; um Unterschiede zwischen zwei Dateien festzustellen: &prompt.root; diff /etc/shells /var/tmp/root/etc/shells Das obige Kommando zeigt Ihnen die Unterschiede zwischen der installierten Version von /etc/shells und der neuen Version in /var/tmp/root/etc/shells. Entscheiden Sie anhand der Unterschiede, ob Sie beide Dateien abgleichen oder die neue Version über die alte kopieren wollen. Versehen Sie das temporäre Verzeichnis mit einem Zeitstempel Wenn Sie das System oft neu bauen, müssen Sie /etc genauso oft aktualisieren. Dies kann mit der Zeit sehr lästig werden. Sie können das Verfahren beschleunigen, wenn Sie sich eine Kopie der Dateien behalten, die Sie zuletzt nach /etc installiert haben. Das folgende Verfahren zeigt Ihnen, wie das geht. Folgen Sie der normalen Prozedur um das System zu bauen. Wenn Sie /etc und die anderen Verzeichnisse aktualisieren wollen, geben Sie dem temporären Verzeichnis einen Namen, der das aktuelle Datum enthält. Wenn Sie dies zum Beispiel am 14. Februar 1998 durchführten, hätten Sie die folgenden Kommandos abgesetzt: &prompt.root; mkdir /var/tmp/root-19980214 &prompt.root; cd /usr/src/etc &prompt.root; make DESTDIR=/var/tmp/root-19980214 \ distrib-dirs distribution Gleichen Sie die Änderungen entsprechend der Anleitung von oben ab. Wenn Sie fertig sind, entfernen Sie das Verzeichnis /var/tmp/root-19980214 nicht. Wenn Sie nun neue Quellen heruntergeladen und gebaut haben, folgen Sie bitte Schritt 1. Wenn Sie zwischen den Updates eine Woche gewartet haben, haben Sie nun ein Verzeichnis mit dem Namen /var/tmp/root-19980221. Sie können nun die Unterschiede, die sich in einer Woche ergeben haben, sehen, indem Sie &man.diff.1; rekursiv anwenden: &prompt.root; cd /var/tmp &prompt.root; diff -r root-19980214 root-19980221 Üblicherweise sind die Differenzen, die Sie jetzt sehen, kleiner als die Differenzen zwischen /var/tmp/root-19980221/etc und /etc. Da die angezeigten Differenzen kleiner sind, ist es jetzt einfacher den Abgleich der Dateien durchzuführen. Sie können nun das älteste der beiden /var/tmp/root-* Verzeichnisse entfernen: &prompt.root; rm -rf /var/tmp/root-19980214 Wiederholen Sie diesen Prozess jedes Mal wenn Sie Dateien in /etc abgleichen müssen. Mit &man.date.1; können Sie den Verzeichnisnamen automatisch erzeugen: &prompt.root; mkdir /var/tmp/root-`date "+%Y%m%d"` Das System neu starten Sie sind nun am Ende der Prozedur angelangt. Nachdem Sie sich davon überzeugt haben, dass Ihr System funktioniert, starten Sie Ihr System mit &man.shutdown.8; neu: &prompt.root; shutdown -r now Ende Herzlichen Glückwunsch! Sie haben gerade erfolgreich Ihr &os; System aktualisiert. Es ist übrigens leicht einen Teil des Systems wiederherzustellen, für den Fall, dass Ihnen ein kleiner Fehler unterlaufen ist. Wenn Sie beispielsweise während des Updates oder Abgleichs /etc/magic aus Versehen gelöscht haben, wird &man.file.1; nicht mehr funktionieren. In diesem Fall können Sie das Problem mit dem folgenden Kommando beheben: &prompt.root; cd /usr/src/usr.bin/file &prompt.root; make all install Fragen Muss ich wirklich immer alles neu bauen, wenn sich etwas geändert hat? Darauf gibt es keine einfache Antwort. Was zu tun ist, hängt von den Änderungen ab. Es lohnt wahrscheinlich nicht, alles neu zu bauen, wenn sich bei einem CVSup-Lauf nur die folgenden Dateien geändert haben: src/games/cribbage/instr.c src/games/sail/pl_main.c src/release/sysinstall/config.c src/release/sysinstall/media.c src/share/mk/bsd.port.mk In diesem Fall können Sie in die entsprechenden Unterverzeichnisse wechseln und dort make all install ausführen. Wenn sich allerdings etwas Wichtiges, wie src/lib/libc/stdlib, geändert hat, sollten Sie die Welt oder mindestens die statisch gelinkten Teile des Systems (sowie Ihre statisch gelinkten Ergänzungen) neu bauen. Letztendlich ist das Ihre Entscheidung. Sie sind vielleicht damit zufrieden, das System alle zwei Wochen neu zu bauen und in der Zwischenzeit die anfallenden Änderungen zu sammeln. Wenn Sie sich zutrauen, alle Abhängigkeiten zu erkennen, bauen Sie vielleicht auch nur die geänderten Sachen neu. Das hängt natürlich auch noch davon ab, wie oft Sie ein Update durchführen wollen und ob Sie &os.stable; oder &os.current; benutzen. Der Bau bricht mit vielen Signal 11-Fehlern Signal 11 (oder anderen Signalnummern) ab. Was ist da passiert? Normalerweise zeigen diese Meldungen Hardwarefehler an. Ein Neubau der Welt ist ein guter Belastungstest für Ihre Hardware und zeigt oft Probleme mit dem Speicher auf. Dies äußert sich darin, dass der Compiler mit dem Erhalt von seltsamen Signalen abbricht. Es liegt garantiert ein Hardwarefehler vor, wenn ein neuer Übersetzungslauf an einer anderen Stelle abbricht. In diesem Fall können Sie nur einzelne Komponenten Ihres Systems tauschen, um zu bestimmen, welche Komponente den Fehler verursacht. Kann ich /usr/obj löschen, wenn ich fertig bin? Kurze Antwort: Ja. In /usr/obj werden alle Dateien abgelegt, die während der Übersetzungsphase erstellt wurden. Dieses Verzeichnis wird in einem der ersten Schritte der Bauprozedur entfernt. Es macht daher wenig Sinn, dieses Verzeichnis zu behalten und Sie setzen eine Menge Plattenplatz, momentan ungefähr 2 GB, frei, wenn Sie es löschen. Wenn Sie allerdings genau wissen, was Sie tun, können Sie diesen Schritt bei make buildworld auslassen. Nachfolgende Bauprozeduren werden dadurch erheblich schneller, da die meisten Quelldateien nicht mehr neu übersetzt werden. Dafür können aber subtile Abhängigkeitsprobleme entstehen, die dazu führen, dass der Bau auf merkwürdige Weise abbrechen kann. Dies führt häufig zu unnötigen Diskussionen auf den &os; Mailinglisten, wenn sich jemand über einen kaputten Bau beschwert, aber nicht sieht, dass er Probleme hat, weil er eine Abkürzung genommen hat. Kann ein abgebrochener Bau weitergeführt werden? Das hängt davon ab, wieweit der Bauprozess fortgeschritten ist. Üblicherweise werden essentielle Werkzeuge, wie &man.gcc.1; und &man.make.1;, und die Systembibliotheken während des Bauprozesses neu erstellt (dies ist aber keine allgemein gültige Regel). Die neu erstellen Werkzeuge und Bibliotheken werden dann benutzt, um sich selbst noch einmal zu bauen, und wieder installiert. Anschließend wird das Gesamtsystem mit den neu erstellten Systemdateien gebaut. Wenn Sie sich im letzten Schritt befinden und Sie wissen, dass Sie dort sind, weil Sie durch die Ausgaben, die Sie ja sichern, der Bauprozedur gesehen haben, können Sie mit ziemlicher Sicherheit den Bau weiterführen: … Fehler beheben … &prompt.root; cd /usr/src &prompt.root; make -DNO_CLEAN all Diese Variablen verhindern, dass make buildworld die vorher erstellten Dateien löscht. Das Sie sich im letzten Schritt der Bauprozedur befinden, erkennen Sie daran, dass Sie in der Ausgabe die folgenden Zeilen finden: -------------------------------------------------------------- Building everything.. -------------------------------------------------------------- Wenn Sie diese Meldung nicht finden, oder sich nicht sicher sind, dann ist es besser, noch einmal ganz von Vorne anzufangen. Wie kann ich den Bauprozess beschleunigen? Bauen Sie im Single-User-Modus. Legen Sie /usr/src und /usr/obj in getrennte Dateisysteme auf unterschiedliche Festplatten. Benutzen Sie nach Möglichkeit auch getrennte Platten-Controller. Noch besser ist es, diese Dateisysteme auf mehrere Festplatten mit &man.ccd.4; zu verteilen. Bauen Sie die profiled-Bibliotheken, die Sie wahrscheinlich sowieso nicht brauchen, nicht. /etc/make.conf sollte dazu NO_PROFILE=true enthalten. Setzen Sie die CFLAGS in /etc/make.conf auf . Die Optimierungsstufe ist deutlich langsamer und die Performance-Unterschiede zwischen und sind vernachlässigbar klein. veranlasst den Compiler Pipes anstelle von Dateien für die Kommunikation zu benutzen. Dies spart einige Plattenzugriffe, geht aber auf Kosten des Speichers. Benutzen Sie , um mehrere Prozesse parallel laufen zu lassen. Normalerweise beschleunigt dies den Bauprozess unabhängig davon, ob Sie ein Einprozessor- oder Mehrprozessorsystem einsetzen. Sie können das Dateisystem /usr/src mit der Option einhängen. Dies verhindert, dass die Zugriffszeiten der Dateien aktualisiert werden (eine Information, die Sie vielleicht gar nicht brauchen). &prompt.root; mount -u -o noatime /usr/src Das Beispiel geht davon aus, dass sich /usr/src auf einem separaten Dateisystem befindet. Wenn das nicht der Fall ist, weil das Verzeichnis beispielsweise Teil des /usr Dateisystems ist, müssen Sie anstelle von /usr/src den Mountpoint des Dateisystems angeben. Das Dateisystem, in dem sich /usr/obj befindet, kann mit der Option eingehangen werden. Dies bewirkt, dass Schreibzugriffe auf die Platte asynchron stattfinden, das heißt ein Schreibzugriff ist sofort beendet, die Daten werden allerdings erst einige Sekunden später geschrieben. Dadurch können Schreibzugriffe zusammengefasst werden, was einen erheblichen Geschwindigkeitszuwachs mit sich bringen kann. Beachten Sie, dass dies Ihr Dateisystem anfälliger für Fehler macht. Im Fall eines Stromausfalls besteht eine erhöhte Wahrscheinlichkeit, dass das Dateisystem beim Start der Maschine zerstört ist. Wenn sich /usr/obj auf einem extra Dateisystem befindet, ist das kein Problem. Wenn sich allerdings auf diesem Dateisystem noch andere wertvolle Daten befinden, stellen Sie sicher, dass Sie aktuelle Sicherungen besitzen. &prompt.root; mount -u -o async /usr/obj Ersetzen Sie /usr/obj durch den Mountpoint des entsprechenden Dateisystems, wenn es sich nicht auf einem eigenen Dateisystem befindet. Was mache ich, wenn etwas nicht funktioniert? Stellen Sie sicher, dass sich in Ihrer Umgebung keine Reste eines vorherigen Baus befinden. Das geht ganz einfach: &prompt.root; chflags -R noschg /usr/obj/usr &prompt.root; rm -rf /usr/obj/usr &prompt.root; cd /usr/src &prompt.root; make cleandir &prompt.root; make cleandir Ja, make cleandir muss wirklich zweimal aufgerufen werden. Nachdem Sie aufgeräumt haben, starten Sie den Bauprozess wieder mit make buildworld. Wenn Sie immer noch Probleme haben, schicken Sie die Fehlermeldungen und die Ausgabe von uname -a an die Mailingliste &a.de.questions;. Bereiten Sie sich darauf vor, weitere Fragen zu Ihrer Umgebung zu beantworten. Anton Shterenlikht Basiert auf Notizen von Veraltete Dateien, Verzeichnisse und Bibliotheken löschen Veraltete Dateien, Verzeichnisse und Bibliotheken löschen Aufgrund der ständigen Weiterentwicklung von &os; kann es dazu kommen, dass Dateien (und deren Inhalte) obsolet werden, weil deren Funktionalität entweder in anderen Dateien implementiert wurde, sich die Versionsnummer der Bibliothek geändert hat oder deren Funktion nicht mehr benötigt wird. Dies kann sowohl Dateien und Verzeichnis, aber auch Bibliotheken betreffen. Diese veralteten Dateien sollten daher entfernt werden, bevor Sie Ihr System aktualisieren. Der Vorteil für den Benutzer ist darin zu sehen, dass dessen System (sowie dessen Backup) von nicht mehr benötigten Dateien gereinigt wird. Falls die obsolete Bibliothek Sicherheits- oder Stabilitätsprobleme aufweist, sollte das System ebenfalls aktualisiert werden, um Ihr System sicher zu halten und/oder durch die fehlerhafte Bibliothek verursachte Systemabstürze zu vermeiden. Veraltete Dateien, Verzeichnisse und Bibliotheken sind in der Datei /usr/src/ObsoleteFiles.inc aufgelistet. Die folgenden Anweisungen sollen Ihnen dabei helfen, diese Dateien während der Systemaktualisierung zu entfernen. Im Folgenden wird angenommen, dass Sie den Anweisungen von folgen. Nachdem Sie make installworld sowie mergemaster erfolgreich ausgeführt haben, sollten Sie Ihr System auf veraltete Dateien und Bibliotheken hin überprüfen: &prompt.root; cd /usr/src &prompt.root; make check-old Werden dabei veraltete Dateien gefunden, können diese im nächsten Schritt entfernt werden: &prompt.root; make delete-old Weitere interessante Targets finden sich in der Datei /usr/src/Makefile. Bei jeder Datei wird nachgefragt, ob Sie diese wirklich löschen wollen. Es ist aber auch möglich, alle Dateien automatisch löschen zu lassen. Dies erreichen Sie, indem Sie die Umgebungsvariable BATCH_DELETE_OLD_FILES entsprechend setzen: &prompt.root; make -DBATCH_DELETE_OLD_FILES delete-old Alternativ können Sie auch den folgenden Befehl einsetzen (und jeweils die Antwort yes an die einzelnen Abfragen weiterreichen): &prompt.root; yes | make delete-old Warnung Das Löschen veralteter Dateien kann dazu führen, dass Programme, die auf diese Dateien angewiesen sind, nicht mehr funktionieren. Dies gilt insbesondere für veraltete Bibliotheken. In den meisten Fällen ist es dann notwendig, Programme, Ports und Bibliotheken, welche die veraltete Bibliothek verwenden, neu zu bauen, bevor Sie den Befehl make delete-old-libs ausführen. Die Ports-Sammlung enthält Werkzeuge, die Ihnen beim Prüfen von Bibliothek-Abhängigkeiten helfen können: sysutils/libchk sowie sysutils/bsdadminscripts. Veraltete Bibliotheken können zu Konflikten mit neueren Bibliotheken führen und beispielsweise folgende Meldungen verursachen: /usr/bin/ld: warning: libz.so.4, needed by /usr/local/lib/libtiff.so, may conflict with libz.so.5 /usr/bin/ld: warning: librpcsvc.so.4, needed by /usr/local/lib/libXext.so, may conflict with librpcsvc.so.5 Um diese Probleme zu lösen, müssen Sie zuerst herausfinden, welcher Port die Bibliothek installiert hat: &prompt.root; pkg_info -W /usr/local/lib/libtiff.so /usr/local/lib/libtiff.so was installed by package tiff-3.9.4 &prompt.root; pkg_info -W /usr/local/lib/libXext.so /usr/local/lib/libXext.so was installed by package libXext-1.1.1,1 Danach deinstallieren Sie den Port und bauen ihn neu, um ihn danach erneut zu installieren. Dieser Vorgang kann durch den Einsatz der Werkzeuge ports-mgmt/portmaster oder ports-mgmt/portupgrade automatisiert werden. Nachdem Sie alle Ports erfolgreich neu gebaut haben (und Sie daher keine veralteten Bibliotheken mehr verwenden) können Sie die veralteten Bibliotheken endgültig entfernen: &prompt.root; make delete-old-libs Mike Meyer Beigetragen von Installation mehrerer Maschinen Wenn Sie mehrere Maschinen besitzen, die Sie alle auf dem gleichen Stand halten wollen, ist es eine Verschwendung von Ressourcen, die Quellen auf jeder Maschine vorzuhalten und zu übersetzen. Die Lösung dazu ist, eine Maschine den Großteil der Arbeit durchführen zu lassen und den anderen Maschinen das Ergebnis mit NFS zur Verfügung zu stellen. Dieser Abschnitt zeigt Ihnen wie das geht. Voraussetzungen Stellen Sie zuerst eine Liste der Maschinen zusammen, die auf demselben Stand sein sollen. Wir nennen diese Maschinen die Baugruppe. Jede dieser Maschinen kann mit einem eigenen Kernel laufen, doch sind die Programme des Userlands auf allen Maschinen gleich. Wählen Sie aus der Baugruppe eine Maschine aus, auf der der Bau durchgeführt wird, den Bau-Master. Dies sollte eine Maschine sein, die über die nötigen Ressourcen für make buildworld und make installworld verfügt. Sie brauchen auch eine Testmaschine, auf der Sie die Updates testen, bevor Sie sie in Produktion installieren. Dies sollte eine Maschine, eventuell der Bau-Master, sein, die über einen längeren Zeitraum nicht zur Verfügung stehen kann. Alle Maschinen der Baugruppe müssen /usr/obj und /usr/src von derselben Maschine an gleichem Ort einhängen. Idealerweise befinden sich die beiden Verzeichnisse auf dem Bau-Master auf verschiedenen Festplatten, sie können allerdings auch auf dem Bau-Master über NFS zur Verfügung gestellt werden. Wenn Sie mehrere Baugruppen haben, sollte sich /usr/src auf einem Bau-Master befinden und über NFS für den Rest der Maschinen zur Verfügung gestellt werden. Stellen Sie sicher, dass /etc/make.conf und /etc/src.conf auf allen Maschinen einer Baugruppe mit der Datei des Bau-Masters übereinstimmt. Der Bau-Master muss jeden Teil des Systems bauen, den irgendeine Maschine der Baugruppe benötigt. Auf dem Bau-Master müssen in /etc/make.conf alle zu bauenden Kernel mit der Variablen KERNCONF bekannt gegeben werden. Geben Sie dabei den Kernel des Bau-Masters zuerst an. Für jeden zu bauenden Kernel muss auf dem Bau-Master die entsprechende Konfigurationsdatei unter /usr/src/sys/arch/conf abgelegt werden. Installation des Basissystems Nach diesen Vorbereitungen können Sie mit dem Bau beginnen. Bauen Sie auf dem Bau-Master, wie in beschrieben, den Kernel und die Welt, installieren Sie aber nichts. Wechseln Sie auf die Testmaschine und installieren Sie den gerade gebauten Kernel. Wenn diese Maschine /usr/src und /usr/obj über NFS bekommt, müssen Sie das Netzwerk im Single-User-Modus aktivieren und die beiden Dateisysteme einhängen. Am einfachsten ist dies, wenn Sie auf der Testmaschine ausgehend vom Mehrbenutzermodus mit shutdown now in den Single-User-Modus wechseln. Sie können dann mit der normalen Prozedur den neuen Kernel und das System installieren und anschließend mergemaster laufen lassen. Wenn Sie damit fertig sind, können Sie die Maschine wieder in den Mehrbenutzermodus booten. Nachdem Sie sichergestellt haben, dass die Testmaschine einwandfrei funktioniert, wiederholen Sie diese Prozedur für jede Maschine in der Baugruppe. Die Ports-Sammlung Dasselbe Verfahren können Sie auch für die Ports-Sammlung anwenden. Zuerst müssen alle Maschinen einer Baugruppe /usr/ports von derselben Maschine über NFS zur Verfügung gestellt bekommen. Setzen Sie dann ein Verzeichnis für die Quellen auf, das sich alle Maschinen teilen. Dieses Verzeichnis können Sie in /etc/make.conf mit der Variablen DISTDIR angeben. Das Verzeichnis sollte für den Benutzer beschreibbar sein, auf den der Benutzer root vom NFS Subsystem abgebildet wird. Jede Maschine sollte noch WRKDIRPREFIX auf ein lokales Bauverzeichnis setzen. Wenn Sie vorhaben, Pakete zu bauen und zu verteilen, sollten Sie PACKAGES auf ein Verzeichnis mit den gleichen Eigenschaften wie DISTDIR setzen. diff --git a/de_DE.ISO8859-1/books/handbook/introduction/chapter.xml b/de_DE.ISO8859-1/books/handbook/introduction/chapter.xml index 9c004f9636..a237bc4d53 100644 --- a/de_DE.ISO8859-1/books/handbook/introduction/chapter.xml +++ b/de_DE.ISO8859-1/books/handbook/introduction/chapter.xml @@ -1,1291 +1,1210 @@ Jim Mock Neu zusammengestellt, umstrukturiert und um Abschnitte erweitert durch Sascha Edelburg Übersetzt von Einführung Übersicht Herzlichen Dank für Ihr Interesse an &os;! Das folgende Kapitel behandelt verschiedene Aspekte des &os; Projects wie dessen geschichtliche Entwicklung, dessen Ziele oder dessen Entwicklungsmodell. Nach dem Durcharbeiten des Kapitels wissen Sie über folgende Punkte Bescheid: Wo &os; im Vergleich zu anderen Betriebssystemen steht Die Geschichte des &os; Projects Die Ziele des &os; Projects Die Grundlagen des &os;-Open-Source-Entwicklungsmodells Und natürlich wo der Name &os; herrührt Willkommen bei &os;! 4.4BSD-Lite &os; ist ein auf 4.4BSD-Lite basierendes Betriebssystem für Intel (x86 und &itanium;), AMD64 und Sun &ultrasparc; Rechner. An Portierungen zu anderen Architekturen wird derzeit gearbeitet. Mehr zu Geschichte von &os; können Sie im kurzen geschichtlichen Abriss zu &os; oder im Abschnitt Das aktuelle &os;-Release nachlesen. Falls Sie das &os; Project unterstützen wollen (mit Quellcode, Hardware- oder Geldspenden), sollten Sie den Artikel &os; unterstützen lesen. Was kann &os;? &os; hat zahlreiche bemerkenswerte Eigenschaften. Um nur einige zu nennen: Präemptives Multitasking Präemptives Multitasking mit dynamischer Prioritätsanpassung zum reibungslosen und ausgeglichenen Teilen der Systemressourcen zwischen Anwendungen und Anwendern, selbst unter schwerster Last. Mehrbenutzerbetrieb Der Mehrbenutzerbetrieb von &os; erlaubt es, viele Anwender gleichzeitig am System mit verschiedenen Aufgaben arbeiten zu lassen. Beispielsweise Geräte wie Drucker oder Bandlaufwerke, die sich nur schwerlich unter allen Anwendern des Systems oder im Netzwerk teilen lassen, können durch Setzen von Verwendungsbeschränkungen auf Benutzer oder Benutzergruppen wichtige Systemressourcen vor Überbeanspruchung schützen. TCP/IP-Netzwerkfähigkeit Hervorragende TCP/IP-Netzwerkfähigkeit mit Unterstützung von Industriestandards wie SCTP, DHCP, NFS, NIS, PPP, SLIP, IPsec und IPv6. Das heißt, Ihr &os;-System kann in einfachster Weise mit anderen Systemen interagieren. Zudem kann es als Server-System im Unternehmen wichtige Aufgaben übernehmen, beispielsweise als NFS- oder E-Mail-Server oder es kann Ihren Betrieb durch HTTP- und FTP-Server beziehungsweise durch Routing und Firewalling Internet-fähig machen. Speicherschutz Der Speicherschutz stellt sicher, dass Anwendungen (oder Anwender) sich nicht gegenseitig stören. Stürzt eine Anwendung ab, hat das keine Auswirkung auf andere Prozesse. &os; ist ein 32-Bit-Betriebssystem (64-Bit auf &itanium;, AMD64, und &ultrasparc;) und wurde als solches von Grund auf neu entworfen. X-Window-System Das X-Window-System (X11R7) als Industriestandard bietet eine grafische Benutzeroberfläche (GUI). Minimale Voraussetzung zur Verwendung ist lediglich eine Grafikkarte und ein Bildschirm, die beide den VGA-Modus unterstützen. Binärkompatibilität Linux Binärkompatibilität SCO Binärkompatibilität SVR4 Binärkompatibilität BSD/OS Binärkompatibilität NetBSD Binärkompatibilität mit vielen unter verschiedenen Betriebssystemen erstellten Programmen wie Linux, SCO, SVR4, BSDI und NetBSD. Tausende von sofort lauffähigen Anwendungen sind aus den Ports- und Packages-Sammlungen für &os; verfügbar. Warum mühselig im Netz Software suchen, wenn sie bereits hier vorhanden ist? Tausende zusätzliche leicht zu portierende Anwendungen sind über das Internet zu beziehen. &os; ist Quellcode-kompatibel mit den meisten kommerziellen &unix; Systemen. Daher bedürfen Anwendungen häufig nur geringer oder gar keiner Anpassung, um auf einem &os;-System zu kompilieren. virtueller Speicher Seitenweise anforderbarer Virtueller Speicher und der merged VM/buffer cache-Entwurf bedient effektiv den großen Speicherhunger mancher Anwendungen bei gleichzeitigem Aufrechterhalten der Bedienbarkeit des Systems für weitere Benutzer. Symmetrisches Multi-Processing (SMP) SMP-Unterstützung für Mehrprozessorsysteme Kompiler C Kompiler C++ Kompiler FORTRAN Ein voller Satz von C, C++ und Fortran- Entwicklungswerkzeugen. Viele zusätzliche Programmiersprachen für Wissenschaft und Entwicklung sind aus der Ports- und Packages-Sammlung zu haben. Quellcode Quellcode für das gesamte System bedeutet größtmögliche Kontrolle über Ihre Umgebung. Warum sollte man sich durch proprietäre Lösungen knebeln und sich auf Gedeih und Verderb der Gnade eines Herstellers ausliefern, wenn man doch ein wahrhaft offenes System haben kann? Umfangreiche Online-Dokumentation. 4.4BSD-Lite Computer Systems Research Group (CSRG) U.C. Berkeley &os; basiert auf dem 4.4BSD-Lite-Release der Computer Systems Research Group (CSRG) der Universität von Kalifornien in Berkeley und führt die namhafte Tradition der Entwicklung von BSD-Systemen fort. Zusätzlich zu der herausragenden Arbeit der CSRG hat das &os; Project tausende weitere Arbeitsstunden investiert, um das System zu verfeinern und maximale Leistung und Zuverlässigkeit bei Alltagslast zu bieten. Während viele kommerzielle Riesen Probleme haben PC-Betriebssysteme mit derartigen Funktionen, Leistungpotential und Zuverlässigkeit anzubieten, kann &os; damit schon jetzt aufwarten! Die Anwendungsmöglichkeiten von &os; werden nur durch Ihre Vorstellungskraft begrenzt. Von Software-Entwicklung bis zu Produktionsautomatisierung, von Lagerverwaltung über Abweichungskorrektur bei Satelliten; Falls etwas mit kommerziellen &unix; Produkten machbar ist, dann ist es höchstwahrscheinlich auch mit &os; möglich. &os; profitiert stark von tausenden hochwertigen Anwendungen aus wissenschaftlichen Instituten und Universitäten in aller Welt. Häufig sind diese für wenig Geld oder sogar kostenlos zu bekommen. Kommerzielle Anwendungen sind ebenso verfügbar und es werden täglich mehr. Durch den freien Zugang zum Quellcode von &os; ist es in unvergleichbarer Weise möglich, das System für spezielle Anwendungen oder Projekte anzupassen. Dies ist mit den meisten kommerziellen Betriebssystemen einfach nicht möglich. Beispiele für Anwendungen, die unter &os; laufen, sind: Internet-Dienste: Die robuste TCP/IP-Implementierung in &os; macht es zu einer idealen Plattform für verschiedenste Internet-Dienste, wie zum Beispiel: FTP-Server FTP-Server HTTP-Server HTTP-Server (Standard-Web-Server oder mit SSL-Verschlüsselung) IPv4- und IPv6-Routing Firewall NAT Firewalls und NAT-Gateways (IP-Masquerading) E-Mail E-Mail-Server Usenet Usenet-News und Foren (BBS) Zum Betreiben von &os; reicht schon ein günstiger 386-PC. Wenn es das Wachstum Ihres Unternehmens verlangt, kann &os; aber auch auf einem hochgerüsteten 4-Wege-System mit Xeon-Prozessoren und RAID-Plattenspeicher Verwendung finden. Bildung: Sind Sie Informatikstudent oder Student eines verwandten Studiengangs? Die praktischen Einblicke in &os; sind die beste Möglichkeit etwas über Betriebssysteme, Rechnerarchitektur und Netzwerke zu lernen. Einige frei erhältliche CAD-, mathematische und grafische Anwendungen sind sehr nützlich, gerade für diejenigen, die &os; nicht zum Selbstzweck, sondern als Arbeitsmittel einsetzen. Wissenschaft: Mit dem frei verfügbaren Quellcode für das gesamte System bildet &os; ein exzellentes Studienobjekt in der Disziplin der Betriebssysteme, wie auch in anderen Zweigen der Informatik. Es ist beispielsweise denkbar, das räumlich getrennte Gruppen gemeinsam an einer Idee oder Entwicklung arbeiten. Das Konzept der freien Verfügbarkeit und -nutzung von &os; ermöglicht so einen Gebrauch, auch ohne sich groß Gedanken über Lizenzbedingungen oder -beschränkungen machen zu müssen. Router DNS-Server Netzwerkfähigkeit: Brauchen Sie einen neuen Router? Oder einen Name-Server (DNS)? Eine Firewall zum Schutze Ihres Intranets vor Fremdzugriff? &os; macht aus dem in der Ecke verstaubenden 386- oder 486-PC im Handumdrehen einen leistungsfähigen Router mit anspruchsvollen Packet-Filter-Fähigkeiten. X-Window-System Accelerated-X X-Window-Workstation: &os; ist eine gute Wahl für kostengünstige X-Terminals mit dem frei verfügbaren X11-Server. Im Gegensatz zu einem X-Terminal erlaubt es &os;, viele Anwendungen lokal laufen zu lassen, was die Last eines zentralen Servers erleichtern kann. &os; kann selbst plattenlos starten, was einzelne Workstations noch günstiger macht und die Wartung erleichtert. GNU-Compiler-Collection Software-Entwicklung: Das Standard-System von &os; wird mit einem kompletten Satz an Entwicklungswerkzeugen bereitgestellt, unter anderem mit dem bekannten GNU C/C++-Kompiler und -Debugger. &os; ist sowohl in Form von Quellcode als auch in Binärform auf CD-ROM, DVD und über anonymous FTP erhältlich. Näheres zum Bezug von &os; enthält . Wer benutzt &os;? Anwender Bekannte &os;-Anwender &os; dient als Plattform für Geräte und Produkte einiger der weltgrößten IT-Firmen, darunter: - Apple - - Apple + AppleApple - Cisco - - Cisco + CiscoCisco - Juniper - - Juniper + JuniperJuniper - NetApp - - NetApp + NetAppNetApp Außerdem laufen einige der größten Internet-Auftritte unter &os;, beispielsweise: - - Yahoo! - - Yahoo! + url="http://www.yahoo.com/">Yahoo!Yahoo! - Yandex/primary> - - Yandex + YandexYandex/primary> - - Apache - - Apache + url="http://www.apache.org/">ApacheApache - - Rambler - - - Rambler + RamblerRambler - Sina - - Sina + SinaSina - - Pair Networks - - Pair - Networks + NetworksPair Networks - - Sony Japan - - Sony - Japan + JapanSony Japan - - Netcraft - - Netcraft + url="http://www.netcraft.com/">NetcraftNetcraft - - NetEase - - - NetEase + NetEaseNetEase - - Weathernews - - Weathernews + url="http://www.wni.com/">WeathernewsWeathernews - - TELEHOUSE America - - TELEHOUSE - America + AmericaTELEHOUSE America - Experts Exchange - Experts - Exchange + ExchangeExperts Exchange und viele andere. Das &os; Project Der folgende Abschnitt bietet einige Hintergrundinformationen zum &os; Project, einschließlich einem kurzen geschichtlichen Abriss, den Projektzielen und dem Entwicklungsmodell. Jordan Hubbard Beigesteuert von Kurzer geschichtlicher Abriss zu &os; 386BSD Patchkit Hubbard, Jordan Williams, Nate Grimes, Rod &os; Project Geschichte Das &os; Project erblickte das Licht der Welt Anfang 1993 teils als Auswuchs des Unofficial 386BSD Patchkit unter der Regie der letzten drei Koordinatoren des Patchkits: Nate Williams, Rod Grimes und mir. 386BSD Unser eigentliches Ziel war es, einen zwischenzeitlichen Abzug von 386BSD zu erstellen, um ein paar Probleme zu beseitigen, die das Patchkit-Verfahren nicht lösen konnte. Einige von Ihnen werden sich in dem Zusammenhang noch an die frühen Arbeitstitel 386BSD 0.5 oder 386BSD Interim erinnern. Jolitz, Bill 386BSD war das Betriebssystem von Bill Jolitz. Dieses litt bis zu diesem Zeitpunkt heftig unter fast einjähriger Vernachlässigung. Als das Patchkit mit jedem Tag anschwoll und unhandlicher wurde, waren wir einhellig der Meinung, es müsse etwas geschehen. Wir entschieden uns Bill Jolitz zu helfen, indem wir den übergangsweise bereinigten Abzug zur Verfügung stellten. Diese Pläne wurden unschön durchkreuzt als Bill Jolitz plötzlich seine Zustimmung zu diesem Projekt zurückzog, ohne einen Hinweis darauf, was stattdessen geschehen sollte. Greenman, David Walnut Creek CDROM Es hat nicht lange gedauert zu entscheiden, dass das Ziel es wert war, weiterverfolgt zu werden, selbst ohne Bills Unterstützung. Also haben wir den von David Greenman geprägten Namen &os; angenommen. Unsere anfänglichen Ziele setzten wir nach Rücksprache mit den damaligen Benutzern des Systems fest. Und als deutlich wurde, das Projekt würde möglicherweise Realität, nahm ich Kontakt mit Walnut Creek CDROM auf, mit einem Auge darauf, den Vertriebsweg für die vielen Missbegünstigten zu verbessern, die keinen einfachen Zugang zum Internet hatten. Walnut Creek CDROM unterstützte nicht nur die Idee des CD-ROM-Vertriebs, sondern stellte sogar dem Projekt einen Arbeitsrechner und eine schnelle Internetverbindung zur Verfügung. Ohne den beispiellosen Glauben von Walnut Creek CDROM in ein zu der Zeit absolut unbekanntes Projekt, gäbe es &os; in der heutigen Form wohl nicht. 4.3BSD-Lite Net/2 U.C. Berkeley 386BSD Free Software Foundation Die erste auf CD-ROM (und netzweit) verfügbare Veröffentlichung war &os; 1.0 im Dezember 1993. Diese basierte auf dem Band der 4.3BSD-Lite (Net/2) der Universität von Kalifornien in Berkeley. Viele Teile stammten aus 386BSD und von der Free Software Foundation. Gemessen am ersten Angebot, war das ein ziemlicher Erfolg und wir ließen dem das extrem erfolgreiche &os; 1.1 im Mai 1994 folgen. Novell U.C. Berkeley Net/2 AT&T Zu dieser Zeit formierten sich unerwartete Gewitterwolken am Horizont, als Novell und die Universität von Kalifornien in Berkeley (UCB) ihren langen Rechtsstreit über den rechtlichen Status des Berkeley Net/2-Bandes mit einem Vergleich beilegten. Eine Bedingung dieser Einigung war es, dass die UCB große Teile des Net/2-Quellcodes als belastet zugestehen musste, und dass diese Besitz von Novell sind, welches den Code selbst einige Zeit vorher von AT&T bezogen hatte. Im Gegenzug bekam die UCB den Segen von Novell, dass sich das 4.4BSD-Lite-Release bei seiner endgültigen Veröffentlichung als unbelastet bezeichnen darf. Alle Net/2-Benutzer sollten auf das neue Release wechseln. Das betraf auch &os;. Dem Projekt wurde eine Frist bis Ende Juli 1994 eingeräumt, das auf Net/2-basierende Produkt nicht mehr zu vertreiben. Unter den Bedingungen dieser Übereinkunft war es dem Projekt noch erlaubt ein letztes Release vor diesem festgesetzten Zeitpunkt herauszugeben. Das war &os; 1.1.5.1. &os; machte sich dann an die beschwerliche Aufgabe, sich Stück für Stück, aus einem neuen und ziemlich unvollständigen Satz von 4.4BSD-Lite-Teilen, wieder aufzubauen. Die Lite-Veröffentlichungen waren deswegen leicht, weil Berkeleys CSRG große Code-Teile, die für ein start- und lauffähiges System gebraucht wurden, aufgrund diverser rechtlicher Anforderungen entfernen musste und weil die 4.4-Portierung für Intel-Rechner extrem unvollständig war. Das Projekt hat bis November 1994 gebraucht diesen Übergang zu vollziehen, was dann zu dem im Netz veröffentlichten &os; 2.0 und zur CD-ROM-Version (im späten Dezember) führte. Obwohl &os; gerade die ersten Hürden genommen hatte, war dieses Release ein maßgeblicher Erfolg. Diesem folgte im Juni 1995 das robustere und einfacher zu installierende &os; 2.0.5. Im August 1996 veröffentlichten wir &os; 2.1.5. Es schien unter ISPs und der Wirtschaft beliebt genug zu sein, ein weiteres Release aus dem 2.1-STABLE-Zweig zu rechtfertigen. Das war &os; 2.1.7.1. Es wurde im Februar 1997 veröffentlicht und bildete das Ende des Hauptentwicklungszweiges 2.1-STABLE. Derzeit unterliegt dieser Zweig dem Wartungsmodus, das heißt, es werden nur noch Sicherheitsverbesserungen und die Beseitigung von kritischen Fehlern vorgenommen (RELENG_2_1_0). &os; 2.2 entsprang dem Hauptentwicklungszweig (-CURRENT) im November 1996 als RELENG_2_2-Zweig und das erste komplette Release (2.2.1) wurde im April 1997 herausgegeben. Weitere Veröffentlichungen des 2.2-Zweiges gab es im Sommer und Herbst 1997. Das letzte Release des 2.2-Zweiges bildete die Version 2.2.8, die im November 1998 erschien. Das erste offizielle 3.0-Release erschien im Oktober 1998 und läutete das Endes des 2.2-Zweiges ein. Am 20. Januar 1999 teilte sich der Quellbaum in die Zweige 4.0-CURRENT und 3.X-STABLE. Auf dem 3.X-STABLE-Zweig wurden folgende Releases erstellt: 3.1 am 15. Februar 1999, 3.2 am 15. Mai 1999, 3.3 am 16. September 1999, 3.4 am 20. Dezember 1999 und 3.5 am 24. Juni 2000. Letzterem folgte ein paar Tage später das Release 3.5.1, welches einige akute Sicherheitslöcher von Kerberos stopfte und die letzte Veröffentlichung des 3.X-Zweiges darstellte. Eine weitere Aufspaltung, aus dem der 4.X-STABLE-Zweig hervorging, erfolgte am 13. März 2000. Bisher gab es mehrere Veröffentlichungen aus diesem Zweig: 4.0-RELEASE erschien im März 2000. Das letzte Release, 4.11-RELEASE, erschien im Januar 2005. Das lang erwartete 5.0-RELEASE wurde am 19. Januar 2003 veröffentlicht. Nach nahezu drei Jahren Entwicklungszeit brachte dieses Release die Unterstützung für Mehrprozessor-Systeme sowie für Multithreading. Mit diesem Release lief &os; erstmalig auf den Plattformen &ultrasparc; und ia64. Im Juni 2003 folgte 5.1-RELEASE. Das letzte 5.X-Release aus dem CURRENT-Zweig war 5.2.1-RELEASE, das im Februar 2004 veröffentlicht wurde. Der Zweig RELENG_5 wurde im August 2004 erzeugt. Als erstes Release dieses Zweiges wurde 5.3-RELEASE veröffentlicht, bei dem es sich gleichzeitig auch um das erste 5-STABLE-Release handelte. Das aktuelle 5.5-RELEASE (dem keine RELENG_5-Versionen mehr folgen werden) erschien im Mai 2006. Der Zweig RELENG_6 wurde im Juli 2005 erzeugt. 6.0-RELEASE, das erste Release des 6.X-Zweiges, wurde im November 2005 veröffentlicht. Das aktuelle 6.4-RELEASE (erschienen im November 2008) ist das letzte Release aus RELENG_6-Zweig. RELENG_6 ist der letzte Zweig, der die Alpha-Architektur noch unterstützt. Der Zweig RELENG_7 wurde im Oktober 2007 erzeugt. 7.0-RELEASE, das erste Release des 7.X-Zweiges, wurde im Februar 2008 veröffentlicht. Das aktuelle &rel2.current;-RELEASE (dem keine weiteren RELENG_7-Versionen folgen werden) erschien im Februar 2011. Im August 2009 wurde der RELENG_8-Zweig angelegt. 8.0-RELEASE, das erste Release des 8.X-Zweiges, erschien im November 2009. Das aktuelle &rel.current;-RELEASE (dem weitere RELENG_8-Versionen folgen werden) wurde im Juli 2010 veröffentlicht. Zurzeit werden Projekte mit langem Entwicklungshorizont im Zweig 9.X-CURRENT verfolgt, Schnappschüsse von 9.X auf CD-ROM (und natürlich im Netz) werden bei fortlaufender Entwicklung auf dem Snapshot-Server zur Verfügung gestellt. Jordan Hubbard Beigesteuert von Ziele des &os; Projects &os; Project Ziele Das &os; Project stellt Software her, die ohne Einschränkungen für beliebige Zwecke eingesetzt werden kann. Viele von uns haben beträchtlich in Quellcode und Projekt investiert und hätten sicher nichts dagegen, hin und wieder ein wenig finanziellen Ausgleich dafür zu bekommen. Aber in keinem Fall bestehen wir darauf. Wir glauben unsere erste und wichtigste Mission ist es, Software für jeden Interessierten und zu jedem Zweck zur Verfügung zu stellen, damit die Software größtmögliche Verbreitung erlangt und größtmöglichen Nutzen stiftet. Das ist, glaube ich, eines der grundlegenden Ziele freier Software, welche wir mit größter Begeisterung unterstützen. GNU General Public License (GPL) GNU Lesser General Public License (LGPL) BSD Copyright Der Code in unserem Quellbaum, der unter die General Public License (GPL) oder die Library General Public License (LGPL) fällt, stellt geringfügig mehr Bedingungen. Das aber vielmehr im Sinne von eingefordertem Zugriff, als das übliche Gegenteil der Beschränkungen. Aufgrund zusätzlicher Abhängigkeiten, die sich durch die Verwendung von GPL-Software bei kommerziellem Gebrauch ergeben, bevorzugen wir daher Software unter dem transparenteren BSD-Copyright, wo immer es angebracht ist. Satoshi Asami Beigesteuert von Das Entwicklungsmodell von &os; &os; Project Entwicklungsmodell Die Entwicklung von &os; ist ein offener und vielseitiger Prozess. &os; besteht aus Beisteuerungen von Hunderten Leuten rund um die Welt, wie Sie aus der Liste der Beitragenden ersehen können. Die vielen Entwickler können aufgrund der Entwicklungs-Infrastruktur von &os; über das Internet zusammenarbeiten. Wir suchen ständig nach neuen Entwicklern, Ideen und jenen, die sich in das Projekt tiefer einbringen wollen. Nehmen Sie einfach auf der Mailingliste &a.hackers; Kontakt mit uns auf. Die Mailingliste &a.announce; steht für wichtige Ankündigungen, die alle &os;-Benutzer betreffen, zur Verfügung. Unabhängig davon ob Sie alleine oder mit anderen eng zusammen arbeiten, enthält die folgende Aufstellung nützliche Informationen über das &os; Project und dessen Entwicklungsabläufe. CVS- und SVN-Repositories - - CVS - Repository - - - - Concurrent-Versions-System - CVS - - - - SVN - Repository - - - Subversion - SVN - - Der Hauptquellbaum von &os; wurde über viele Jahre ausschließlich mit CVS gepflegt, einem + url="http://ximbiot.com/cvs/wiki/">CVSCVSRepositoryConcurrent-Versions-SystemCVS gepflegt, einem frei erhältlichen Versionskontrollsystem, welches mit &os; geliefert wird. Im Juni 2008 begann das &os; Project mit dem Umstieg auf SVN (Subversion). + url="http://subversion.tigris.org">SVNSVNRepositorySubversionSVN (Subversion). Dieser Schritt wurde notwendig, weil CVS aufgrund des rapide wachsenden Quellcodebaumes und dem Umfang der bereits gespeichterten Revisisionsinformationen an seine Grenzen zu stoßen begann. Während das Hauptrepository nun SVN verwendet, hat sich auf der Client-Seite nichts geändert. Werkzeuge wie CVSup und csup, die auf der alten CVS-Infrastruktur aufbauen, funktionieren weiterhin, weil alle Änderungen, die im SVN-Repository erfolgen, in das CVS-Repository portiert werden. Im Moment wird nur src-Quellcodebaum über SVN verwaltet. Die Dokumentation, die Webseiten sowie die Ports befinden sich weiterhin in einem CVS-Repository. Das Haupt-CVS-Repository läuft auf einer Maschine in Santa Clara, Kalifornien, USA. Von dort wird es auf zahlreiche Server in aller Welt gespiegelt. Der SVN-Quellbaum, der die Zweige -CURRENT und -STABLE enthält, kann so einfach auf Ihr eigenes System gespiegelt werden. Näheres dazu können Sie im Handbuch unter Synchronisation der Quellen in Erfahrung bringen. Die Committer-Liste - - Committer - - - Die Committer sind Personen + Die CommitterCommitter sind Personen mit Schreibzugriff auf den CVS-Quellbaum (der Begriff Committer stammt vom &man.cvs.1;-Befehl commit, der zum Einspeisen von Änderungen ins Repository gebraucht wird). Der beste Weg, Vorschläge zur Prüfung durch die Mitglieder der Committer-Liste einzureichen, bietet der Befehl &man.send-pr.1;. Sollte es unerwartete Probleme mit diesem Verfahren geben, besteht immer noch die Möglichkeit eine E-Mail an die Liste &a.committers; zu schicken. Das FreeeBSD-Core-Team - - Core-Team - - Würde man das &os; Project mit einem Unternehmen vergleichen, so wäre das - &os;-Core-Team das + &os;-Core-TeamCore-Team das Gegenstück zum Vorstand. Die Hauptaufgabe des Core-Teams ist es, das Projekt als Ganzes in gesunder Verfassung zu halten und die weitere Entwicklung in die richtige Bahn zu lenken. Das Anwerben leidenschaftlicher und verantwortungsbewusster Entwickler ist eine Aufgabe des Core-Team, genauso wie die Rekrutierung neuer Mitglieder für das Core-Team, im Falle, dass Altmitglieder aus dem Projekt aussteigen. Das derzeitige Core-Team wurde im Juli 2010 aus einem Kreis kandidierender Committer gewählt. Wahlen werden alle zwei Jahre abgehalten. Einige Core-Team-Mitglieder haben auch spezielle Verantwortungsbereiche. Das bedeutet, sie haben sich darauf festgelegt, sicherzustellen, dass ein größerer Teil des Systems so funktioniert wie ausgewiesen. Eine vollständige Liste an &os; beteiligter Entwickler und ihrer Verantwortungsbereiche kann in der Liste der Beitragenden eingesehen werden. Die Mehrzahl der Mitglieder des Core-Teams sind Freiwillige in Bezug auf die &os;-Entwicklung und profitieren nicht finanziell vom Projekt. Daher sollte Verpflichtung nicht als garantierter Support fehlinterpretiert werden. Der oben angeführte Vergleich mit einem Vorstand hinkt und es wäre angebrachter zu erwähnen, dass diese Leute – wider besseres Wissen – ihr eigenes Leben für &os; aufgegeben haben! Weitere Beitragende - - Beitragende - - Die größte Entwicklergruppe sind nicht zuletzt die Anwender selbst, die Rückmeldungen und Fehlerbehebungen in einem anhaltend hohen Maße an uns senden. Der bevorzugte Weg an dem weniger zentralisierten Bereich der &os;-Entwicklung teilzuhaben, ist die Möglichkeit sich bei der Liste &a.hackers; anzumelden. Weitere Informationen über die verschiedenen &os;-Mailinglisten erhalten Sie in . Die Liste - der zu &os; Beitragenden ist eine + der zu &os; BeitragendenBeitragende ist eine lange und wachsende. Also warum nicht selbst dort stehen, indem Sie gleich persönlich etwas zu &os; beitragen? Quellcode ist nicht der einzige Weg, etwas zum Projekt beizusteuern. Eine genauere Übersicht über offene Aufgaben finden Sie auf der &os;-Web-Site. Zusammengefasst bildet unser Entwicklungsmodell einen losen Verbund konzentrischer Kreise. Das zentralisierte Modell ist auf die Bedürfnisse der Anwender zugeschnitten, mit der einfachen Möglichkeit eine zentrale Code-Basis zu verfolgen und möglichen neuen Beitragenden nicht das Leben zu erschweren! Unser Ziel ist es, ein stabiles Betriebssystem mit einer großen Zahl passender Programme zu bieten, die der Anwender leicht installieren und anwenden kann. Und dieses Modell funktioniert für diese Aufgabe ziemlich gut. Das Einzige was wir von möglichen neuen Mitgliedern fordern, ist die gleiche Hingabe, mit der die jetzigen Mitglieder am dauerhaften Erfolg arbeiten! Das aktuelle &os;-Release NetBSD OpenBSD 386BSD Free Software Foundation U.C. Berkeley Computer Systems Research Group (CSRG) &os; ist ein (mit vollem Quellcode und ein frei erhältliches) auf 4.4BSD-Lite-basierendes Release für Intel &i386;, &i486;, &pentium;, &pentium; Pro, &celeron;, &pentium; II, &pentium; III, &pentium; 4 (oder ein dazu kompatibler Prozessor), &xeon;, und Sun &ultrasparc; Systeme. Es stützt sich zum größten Teil auf Software der Computer Systems Research Group (CSRG) der Universität von Kalifornien in Berkeley mit einigen Verbesserungen aus NetBSD, OpenBSD, 386BSD und der Free Software Foundation. Seit unserem &os; 2.0 von Ende 1994 haben sich Leistung, Funktionsvielfalt und Stabilität dramatisch verbessert. Die größte Änderung erfuhr das virtuelle Speichermanagement durch eine Kopplung von virtuellem Speicher und dem Buffer-Cache, das nicht nur die Leistung steigert, sondern auch den Hauptspeicherverbrauch reduziert und ein 5 MB-System zu einem nutzbaren Minimal-System verhilft. Weitere Verbesserungen sind volle NIS-Client- und Server-Unterstützung, T/TCP, Dial-On-Demand-PPP, integriertes DHCP, ein verbessertes SCSI-Subsystem, ISDN-Support, Unterstützung für ATM-, FDDI-, Fast- und Gigabit-Ethernet-Karten (1000 Mbit), verbesserter Support der neusten Adaptec-Controller und tausende Fehlerkorrekturen. Zusätzlich zur Standard-Distribution bietet &os; eine Sammlung von portierter Software mit tausenden begehrten Programmen. Zum Verfassungszeitpunkt waren über &os.numports; Anwendungen in der Ports-Sammlung! Das Spektrum der Ports-Sammlung reicht von HTTP-Servern über Spiele, Programmiersprachen, Editoren und so ziemlich allem dazwischen. Die gesamte Ports-Sammlung benötigt &ports.size; an Speicherplatz, wobei jeder Port anhand eines Deltas zu den Quellen angegeben wird. Das macht es für uns erheblich leichter, Ports zu aktualisieren und es verringert den Plattenbedarf im Vergleich zur älteren 1.0-Port-Sammlung. Um ein Port zu übersetzen, müssen Sie einfach ins Verzeichnis des Programms wechseln und ein make install absetzen. Den Rest erledigt das System. Die originalen Quellen jedes zu installierenden Port werden dynamisch von CD-ROM oder einem FTP-Server bezogen. Es reicht also für genügend Plattenplatz zu sorgen, um die gewünschten Ports zu erstellen. Allen, die Ports nicht selbst kompilieren wollen: Es gibt zu fast jedem Port ein vorkompiliertes Paket, das einfach mit dem Befehl (pkg_add) installiert wird. Pakete und Ports werden in beschrieben. Eine Reihe von weiteren Dokumenten, die sich als hilfreich bei der Installation oder dem Arbeiten mit &os; erweisen könnten, liegen auf neueren &os;-Systemen im Verzeichnis /usr/share/doc. Die lokal installierten Anleitungen lassen sich mit jedem HTML-fähigen Browser unter folgenden Adressen betrachten: Das &os;-Handbuch /usr/share/doc/handbook/index.html Die &os;-FAQ /usr/share/doc/faq/index.html Es besteht auch die Möglichkeit, sich die jeweils aktuellste Version der Referenzdokumente auf der FreeBSD-Homepage anzusehen. diff --git a/de_DE.ISO8859-1/books/handbook/ppp-and-slip/chapter.xml b/de_DE.ISO8859-1/books/handbook/ppp-and-slip/chapter.xml index e7fe8e8ffd..ee2f175dcd 100644 --- a/de_DE.ISO8859-1/books/handbook/ppp-and-slip/chapter.xml +++ b/de_DE.ISO8859-1/books/handbook/ppp-and-slip/chapter.xml @@ -1,3403 +1,3353 @@ Jim Mock Restrukturiert, neu organisiert und aktualisiert von Thomas Schwarzkopf Übersetzt von PPP und SLIP Übersicht PPP SLIP Unter FreeBSD stehen verschiedene Möglichkeiten zur Verfügung, um Computer miteinander zu verbinden. Der Aufbau einer Netzwerk- oder Internetverbindung mit Hilfe eines Einwahlmodems – für den eigenen oder für andere Rechner – erfordert den Einsatz von PPP oder SLIP. Nachdem Sie dieses Kapitel gelesen haben, werden Sie wissen: Wie Sie User-PPP einrichten. Wie Sie Kernel-PPP einrichten (nur für &os; 7.X relevant). Was zu tun ist, um PPPoE (PPP over Ethernet) einzurichten. Wie Sie PPPoA (PPP over ATM) einrichten. Wie Sie einen SLIP-Client und -Server einrichten und konfigurieren ((nur für &os; 7.X relevant) PPP User-PPP PPP Kernel-PPP PPP over Ethernet Bevor Sie dieses Kapitel lesen, sollten Sie: mit den grundlegenden Begriffen der Netzwerktechnik vertraut sein. die Grundlagen und den Zweck einer Einwahlverbindung sowie PPP und/oder SLIP kennen. Sie fragen sich vielleicht, worin denn der Hauptunterschied zwischen User-PPP und Kernel-PPP liegt. Die Antwort ist einfach: User-PPP verarbeitet die ein- und ausgehenden Daten im Userland, statt im Kernel. Dies ist zwar aufwändig, im Hinblick auf die Daten, die dadurch zwischen Kernel und Userland hin und her kopiert werden müssen, doch es ermöglicht auch eine PPP-Implementierung mit weitaus mehr Funktionen. User-PPP verwendet das Gerät tun, um mit anderen Rechnern zu kommunizieren, während Kernel-PPP hierfür das Gerät ppp benutzt. In diesem Kapitel wird durchgängig vom Programm ppp gesprochen, wenn damit User-PPP gemeint ist. Ausnahmen werden gemacht, wenn eine Unterscheidung gegenüber anderer PPP-Software, wie pppd (nur unter &os; 7.X), notwendig wird. Soweit nichts anderes angegeben ist, sollten alle Befehle, die in diesem Kapitel erklärt werden, als root ausgeführt werden. Tom Rhodes Aktualisiert und erweitert von Brian Somers Ursprünglich geschrieben von Nik Clayton Mit Beiträgen von Dirk Frömberg Peter Childs User-PPP Mit &os; 8.0 wurden die Gerätedateien für serielle Ports umbenannt: /dev/cuadN wurde zu /dev/cuauN, /dev/ttydN zu /dev/ttyuN. Verwenden Sie noch &os; 7.X, müssen Sie dies beim Lesen der folgenden Abschnitte berücksichtigen. User-PPP Voraussetzungen Dieses Dokument geht davon aus, dass Sie Folgendes zur Verfügung haben: - - ISP - - - PPP - - Einen Account bei einem Internet Service Provider (ISP), - zu dem Sie mit PPP eine Verbindung aufbauen können. + Einen Account bei einem Internet Service Provider (ISP)ISP, + zu dem Sie mit PPPPPP eine Verbindung aufbauen können. Ein Modem oder ein anderes Gerät, das, richtig konfiguriert und mit Ihrem Rechner verbunden, Ihnen die Herstellung einer Verbindung zu Ihrem ISP erlaubt. Die Einwahlnummer(n) Ihres ISP. - - PAP - - - CHAP - - - UNIX - - - Login Name - - - Passwort - - Ihren Login-Namen und Ihr Passwort (entweder ein - reguläres Login/Passwort-Paar im &unix;-Stil oder - ein PAP bzw. CHAP Login/Passwort-Paar). + Ihren Login-NamenLogin Name und Ihr PasswortPasswort (entweder ein + reguläres Login/Passwort-Paar im &unix;-StilUNIX oder + ein PAPPAP bzw. CHAPCHAP Login/Passwort-Paar). - - Nameserver - - - Die IP-Adresse von einem oder mehreren Nameservern. + Die IP-Adresse von einem oder mehreren NameservernNameserver. Üblicherweise werden Ihnen von Ihrem ISP zwei IP-Adressen für diesen Zweck zur Verfügung gestellt. Wenn Sie keine solche IP-Adresse von Ihrem Provider bekommen haben, können Sie das Kommando enable dns in der Datei ppp.conf verwenden, um ppp anzuweisen, den Nameserver für Sie einzutragen. Diese Funktion setzt allerdings voraus, dass Ihr ISP eine PPP-Implementierung verwendet, die das Aushandeln eines Nameservers unterstützt. Die folgenden Informationen werden Ihnen möglicherweise von Ihrem ISP zur Verfügung gestellt, sie sind aber nicht zwingend erforderlich: Die Gateway IP-Adresse Ihres ISP. Als Gateway wird der Computer bezeichnet, zu dem Sie eine Verbindung aufbauen. Die IP-Adresse dieses Rechners wird als default route eingetragen. Wenn Sie diese Information nicht zur Verfügung haben, kann PPP so konfiguriert werden, dass der PPP-Server Ihres ISP während des Verbindungsaufbaus eine gültige Adresse übermittelt. ppp bezieht sich mit HISADDR auf diese IP-Adresse. Die Netzmaske, die Sie verwenden sollten. Falls Ihnen Ihr ISP keine Netzmaske vorgegeben hat, können Sie 255.255.255.255 verwenden. - - feste IP-Adresse - - - Wenn Ihnen Ihr ISP eine statische IP-Adresse zur + Wenn Ihnen Ihr ISP eine statische IP-Adressefeste IP-Adresse zur Verfügung stellt, können Sie diese eintragen. Andernfalls lassen wir uns einfach von der Gegenstelle eine IP-Adresse zuweisen. Falls Ihnen die erforderlichen Informationen fehlen sollten, nehmen Sie bitte Kontakt mit Ihrem ISP auf. Die Beispieldateien, die in diesem Kapitel dargestellt werden, enthalten Zeilennummern. Die Nummerierung dient lediglich einer leichteren Orientierung und sollte von Ihnen nicht in Ihre Dateien übernommen werden. Richtiges Einrücken, durch Tabulatoren und Leerzeichen, ist ebenfalls wichtig. Automatische Konfiguration von <application>PPP</application> PPP Konfiguration Sowohl ppp als auch pppd (die PPP-Implementierung auf Kernelebene, nur unter &os; 7.X) verwenden die Konfigurationsdateien im Verzeichnis /etc/ppp. Beispiele für User-PPP sind in /usr/share/examples/ppp/ zu finden. Die Konfiguration von ppp erfordert, je nach Ihren besonderen Bedingungen, die Bearbeitung einiger Dateien. Was Sie in diese Dateien eintragen, hängt unter anderem davon ab, ob Ihnen Ihr ISP eine statische IP-Adresse (Sie verwenden immer dieselbe IP-Adresse, die Ihnen einmal zugeteilt wurde) oder eine dynamische IP-Adresse (Ihre IP-Adresse ändert sich bei jeder Verbindung mit dem ISP) zugewiesen hat. PPP und statische IP-Adressen PPP mit fester IP-Adresse Sie müssen die Konfigurationsdatei /etc/ppp/ppp.conf bearbeiten. Sie sollte so aussehen, wie in dem unten angegebenen Beispiel. Zeilen die mit einem : enden, beginnen in der ersten Spalte (am Beginn der Zeile). Alle anderen Zeilen sollten wie dargestellt durch Leerzeichen oder Tabulatoren eingerückt werden. 1 default: 2 set log Phase Chat LCP IPCP CCP tun command 3 ident user-ppp VERSION (built COMPILATIONDATE) 4 set device /dev/cuau0 5 set speed 115200 6 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \ 7 \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT" 8 set timeout 180 9 enable dns 10 11 provider: 12 set phone "(123) 456 7890" 13 set authname foo 14 set authkey bar 15 set login "TIMEOUT 10 \"\" \"\" gin:--gin: \\U word: \\P col: ppp" 16 set timeout 300 17 set ifaddr x.x.x.x y.y.y.y 255.255.255.255 0.0.0.0 18 add default HISADDR Zeile 1: Gibt den Standardeintrag an. Befehle dieses Eintrags werden automatisch ausgeführt, wenn ppp läuft. Zeile 2: Schaltet die Loggingparameter ein. Wenn die Verbindung zufriedenstellend funktioniert, können Sie diese Zeile verkürzen: set log phase tun Dies verhindert ein übermäßiges Anwachsen der Logdateien. Zeile 3: Gibt PPP an, wie es sich gegenüber der Gegenstelle identifizieren soll. PPP identifiziert sich gegenüber der Gegenstelle, wenn es Schwierigkeiten bei der Aushandlung und beim Aufbau der Verbindung gibt. Dabei werden Informationen bereitgestellt, die dem Administrator der Gegenstelle helfen können, die Ursache der Probleme zu finden. Zeile 4: Gibt das Device an, an dem das Modem angeschlossen ist. COM1 entspricht /dev/cuad0 und COM2 entspricht /dev/cuad1. Zeile 5: Legt die Geschwindigkeit fest, mit der Sie die Verbindung betreiben möchten. Falls ein Wert von 115200 nicht funktioniert (was aber bei jedem einigermaßen neuen Modem funktionieren sollte), versuchen Sie es stattdessen mit 38400. Zeilen 6 & 7: - - PPP - User-PPP - - - Die Zeichenfolge für die Einwahl. User-PPP + Die Zeichenfolge für die Einwahl. User-PPPPPPUser-PPP verwendet eine expect-send Syntax, ähnlich dem &man.chat.8;-Programm. Weitere Informationen zu den Eigenschaften dieser Sprache bietet die Manual-Seite. Beachten Sie, dass dieser Befehl aufgrund der besseren Lesbarkeit auf der nächsten Zeile weitergeht. Das kann für jeden Befehl in ppp.conf gelten, wenn \ das letzte Zeichen in einer Zeile ist. Zeile 8: Legt den Zeitrahmen fest, innerhalb dessen eine Reaktion erfolgen muss. Der Standardwert liegt bei 180 Sekunden, so dass diese Zeile lediglich einen kosmetischen Charakter hat. Zeile 9: Weist PPP an, bei der Gegenstelle eine Bestätigung der lokalen Resolvereinstellungen anzufordern. Wenn Sie einen lokalen Nameserver betreiben, sollte diese Zeile auskommentiert oder gelöscht werden. Zeile 10: Eine leere Zeile zur besseren Lesbarkeit. Leere Zeilen werden von PPP ignoriert. Zeile 11: Bestimmt einen Provider, namens provider. Wenn Sie hier den Namen Ihres ISP einsetzen, können Sie später die Verbindung mit aufbauen. Zeile 12: Gibt die Telefonnummer des Providers an. Mehrere Telefonnummern können angegeben werden, indem Doppelpunkte (:) oder Pipe-Zeichen (|) als Trennzeichen verwendet werden. Der Unterschied zwischen diesen beiden Trennzeichen ist in &man.ppp.8; beschrieben. Zusammenfassend: Wenn Sie die verschiedenen Nummern abwechselnd verwenden möchten, sollten Sie die Nummern durch einen Doppelpunkt trennen. Wenn Sie immer die erste Nummer verwenden möchten und die anderen nur zum Einsatz kommen sollen, wenn eine Einwahl mit der ersten Telefonnummer nicht möglich ist, sollten Sie das Pipe-Zeichen zur Trennung verwenden. Wie im Beispiel, sollten Sie die gesamte Reihe der Telefonnummern in Anführungszeichen setzen. Sie müssen die Telefonnummer in Anführungszeichen (") setzen, wenn Sie Leerzeichen in der Telefonnummer verwenden, ansonsten rufen Sie einen Fehler hervor, der vielleicht schwer zu finden ist. Zeilen 13 & 14: Gibt den Benutzernamen und das Passwort an. Wenn Sie zur Verbindung einen Login-Prompt im UNIX-Stil verwenden, bezieht sich der Befehl set login mit den \U und \P Variablen auf diese Werte. Wenn Sie zum Verbindungsaufbau PAP oder CHAP verwenden, werden diese Werte zum Zeitpunkt der Authentifizierung verwendet. Zeile 15: - PAP - CHAP - - Wenn Sie PAP oder CHAP einsetzen, gibt es an + Wenn Sie PAPPAP oder CHAPCHAP einsetzen, gibt es an dieser Stelle keinen Login-Prompt, weshalb Sie diese Zeile auskommentieren oder löschen sollten. Der Abschnitt Authentifizierung mit PAP und CHAP enthält hierzu weitere Einzelheiten. Der Login-String hat die gleiche chat-ähnliche Syntax, wie der Einwahlstring. Der String in diesem Beispiel funktioniert mit einem ISP, dessen Login-Session folgendermaßen aussieht: J. Random Provider login: foo password: bar protocol: ppp Sie müssen dieses Skript noch an Ihre eigenen Erfordernisse anpassen. Wenn Sie dieses Skript zum ersten Mal schreiben, sollten Sie sicherstellen, dass Sie chat-logging aktiviert haben, damit Sie überprüfen zu können, ob die Konversation zwischen Ihrem Rechner und dem Rechner des Providers wie erwartet abläuft. Zeile 16: - Zeitbeschränkung - - Setzt einen Zeitrahmen (in Sekunden), innerhalb + Setzt einen ZeitrahmenZeitbeschränkung (in Sekunden), innerhalb dessen eine Reaktion erfolgen muss. In diesem Fall, wird die Verbindung nach 300 Sekunden automatisch geschlossen, wenn keine Aktivität zu verzeichnen ist. Wenn Sie keinen Zeitrahmen festlegen wollen, nach dessen Überschreiten die Verbindung geschlossen wird, können Sie diesen Wert auf 0 setzen oder die Kommandozeilen-Option verwenden. Zeile 17: - ISP - Gibt die IP-Adresse für das Interface an. Der String x.x.x.x sollte durch die IP-Adresse ersetzt werden, die Ihnen Ihr Provider zugeteilt hat. Der String y.y.y.y sollte durch die - IP-Adresse ersetzt werden, die Ihr ISP als Gateway + IP-Adresse ersetzt werden, die Ihr ISP ISP als Gateway angegeben hat (das ist der Rechner, mit dem Ihr Rechner eine Verbindung aufbaut). Wenn Ihnen Ihr ISP keine Gateway Adresse zur Verfügung gestellt hat, verwenden Sie hier einfach 10.0.0.2/0. Wenn Sie eine erratene IP-Adresse verwenden müssen, sollten Sie in der Datei /etc/ppp/ppp.linkup einen entsprechenden Eintrag machen. Folgen Sie dazu den Anweisungen im Abschnitt PPP und dynamische IP-Adressen. Wenn diese Zeile ausgelassen wird, kann ppp nicht im Modus betrieben werden. Zeile 18: Fügt eine Defaultroute für das Gateway Ihres Providers hinzu. Das Wort HISADDR wird dabei durch die in Zeile 17 angegebene Gateway Adresse ersetzt. Wichtig ist, dass diese Zeile nach Zeile 17 erscheint, da andernfalls HISADDR noch nicht initialisiert ist. Wenn Sie ppp nicht im Modus betreiben, sollte diese Zeile in die Datei ppp.linkup verschoben werden. Wenn Sie eine statische IP-Adresse verwenden und ppp im Modus läuft, ist es nicht notwendig, einen Eintrag in die Datei ppp.linkup hinzuzufügen. In diesem Fall hat ihre Routingtabelle bereits die richtigen Einträge, bevor Sie die Verbindung aufbauen. Sie möchten aber vielleicht einen Eintrag hinzufügen, um ein Programm aufzurufen, nachdem die Verbindung aufgebaut ist. Dies wird weiter unten am Beispiel von Sendmail erklärt. Beispiele für Konfigurationsdateien finden Sie im Verzeichnis /usr/share/examples/ppp/. PPP und dynamische IP-Adressen PPP mit dynamischen IP-Adressen IPCP Wenn Ihnen Ihr ISP keine statische IP-Adresse zuteilt, kann ppp so konfiguriert werden, dass die lokale und die entfernte IP-Adresse beim Verbindungsaufbau ausgehandelt werden. Dies geschieht, indem zunächst eine IP-Adresse erraten wird, die von ppp, unter Verwendung des IP Configuration Protocol (IPCP) durch eine richtige ersetzt wird, wenn die Verbindung aufgebaut ist. Die Konfiguration der Datei ppp.conf entspricht derjenigen, die im Abschnitt PPP und statische IP- Adressen dargestellt wurde, jedoch mit folgender Änderung: 17 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255 0.0.0.0 Auch hier dient die Zeilennummerierung lediglich der besseren Übersichtlichkeit. Einrückungen, von mindestens einem Leerzeichen, sind allerdings erforderlich. Zeile 17: Die Zahl nach dem / Zeichen, gibt die Anzahl der Bits der Adresse an, auf die ppp besteht. Sie möchten vielleicht andere IP-Adressen verwenden, die oben angegebenen werden aber immer funktionieren. Das letzte Argument (0.0.0.0) weist PPP an, den Verbindungsaufbau mit der Adresse 0.0.0.0 zu beginnen, statt 10.0.0.1 zu verwenden. Dies ist bei einigen ISPs notwendig. Verwenden Sie nicht 0.0.0.0 als erstes Argument für set ifaddr, da so verhindert wird, dass PPP im Modus eine initiale Route setzt. Wenn PPP nicht im Modus läuft, müssen Sie die Datei/etc/ppp/ppp.linkup editieren. ppp.linkup kommt zum Einsatz, wenn eine Verbindung aufgebaut worden ist. Zu diesem Zeitpunkt hat ppp die Interface Adressen vergeben und es ist möglich, die Einträge in der Routingtabelle hinzuzufügen: 1 provider: 2 add default HISADDR Zeile 1: Beim Aufbau einer Verbindung sucht ppp in der Datei ppp.linkup nach einem Eintrag. PPP geht dabei nach folgenden Regeln vor: Suche zunächst nach der gleichen Bezeichnung, die wir auch in der Datei ppp.conf verwendet haben. Falls das nicht funktioniert, suche nach einem Eintrag der IP-Adresse unseres Gateways. Dieser Eintrag ist eine Bezeichnung im Stil von IP-Adressen, die sich aus vier Oktetts zusammensetzt. Falls immer noch kein passender Eintrag gefunden wurde, suche nach dem Eintrag MYADDR. Zeile 2: Diese Zeile weist ppp an, eine Defaultroute zu verwenden, die auf HISADDR zeigt. HISADDR wird nach der Aushandlung mit IPCP durch die IP-Adresse des Gateways ersetzt. Die Dateien /usr/share/examples/ppp/ppp.conf.sample und /usr/share/examples/ppp/ppp.linkup.sample bieten detaillierte Beispiele für pmdemand Einträge. Annahme eingehender Anrufe PPP eingehende Anrufe annehmen Wenn Sie ppp auf einem Rechner, der in ein LAN eingebunden ist, so konfigurieren, dass eingehende Anrufe angenommen werden, müssen Sie entscheiden, ob Pakete an das LAN weitergeleitet werden sollen. Wenn Sie das möchten, sollten Sie an die Gegenstelle eine IP-Adresse aus Ihrem lokalen Subnetz vergeben und den Befehl enable proxy in die Datei /etc/ppp/ppp.conf einfügen. Außerdem sollte die Datei /etc/rc.conf Folgendes enthalten: gateway_enable="YES" Welches getty? Der Abschnitt Einwählverbindungen bietet eine gute Beschreibung, wie Einwählverbindungen unter Verwendung von &man.getty.8; genutzt werden können. Eine Alternative zu getty ist mgetty, eine raffiniertere Version von getty, die mit Blick auf Einwählverbindungen entworfen wurde. Sie können dieses Paket über den Port comms/mgetty+sendfax installieren. Der Vorteil von mgetty ist, dass es auf aktive Weise mit Modems spricht, das heißt wenn ein Port in /etc/ttys ausgeschaltet ist, wird Ihr Modem nicht auf Anrufe reagieren. Spätere Versionen von mgetty (von 0.99beta aufwärts) unterstützen auch die automatische Erkennung von PPP-Streams, was Ihren Clients den skriptlosen Zugang zu Ihren Servern erlaubt. Der Abschnitt Mgetty und AutoPPP bietet weitere Informationen zu mgetty. <application>PPP</application> und Rechte Der Befehl ppp muss normalerweise als root ausgeführt werden. Wenn Sie jedoch möchten, dass ppp im Server-Modus auch von einem normalen Benutzer, wie unten beschrieben, durch Aufruf von ppp ausgeführt werden kann, müssen Sie diesem Benutzer die Rechte erteilen, ppp auszuführen, indem Sie ihn in der Datei /etc/group der Gruppe network hinzufügen. Sie werden ihm ebenfalls den Zugriff auf einen oder mehrere Abschnitte der Konfigurationsdatei geben müssen, indem Sie den allow Befehl verwenden: allow users fred mary Wenn dieser Befehl im default Abschnitt verwendet wird, erhalten die angegebenen Benutzer vollständigen Zugriff. PPP-Shells für dynamische IP-Adressen PPP Shells Erzeugen Sie eine Datei mit dem Namen /etc/ppp/ppp-shell, die Folgendes enthält: #!/bin/sh IDENT=`echo $0 | sed -e 's/^.*-\(.*\)$/\1/'` CALLEDAS="$IDENT" TTY=`tty` if [ x$IDENT = xdialup ]; then IDENT=`basename $TTY` fi echo "PPP for $CALLEDAS on $TTY" echo "Starting PPP for $IDENT" exec /usr/sbin/ppp -direct $IDENT Dieses Skript sollte ausführbar sein. Nun erzeugen Sie einen symbolischen Link ppp-dialup auf dieses Skript mit folgendem Befehl: &prompt.root; ln -s ppp-shell /etc/ppp/ppp-dialup Sie sollten dieses Skript als Shell für alle Benutzer von Einwählverbindungen verwenden. Dies ist ein Beispiel aus der Datei /etc/passwd für einen Benutzer namens pchilds, der PPP für Einwählverbindungen verwenden kann (Denken Sie daran, die Passwortdatei nicht direkt zu editieren, sondern dafür &man.vipw.8; zu verwenden). pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialup Erstellen Sie ein Verzeichnis /home/ppp, das von allen Benutzern gelesen werden kann und die folgenden leeren Dateien enthält: -r--r--r-- 1 root wheel 0 May 27 02:23 .hushlogin -r--r--r-- 1 root wheel 0 May 27 02:22 .rhosts Dies verhindert, dass /etc/motd angezeigt wird. PPP-Shells für statische IP-Adressen PPP Shells Erstellen Sie die Datei ppp-shell wie oben oben dargestellt. Erzeugen Sie nun für jeden Account mit statischer IP-Adresse einen symbolischen Link auf ppp-shell. Wenn Sie beispielsweise die drei Kunden, fred, sam und mary haben, für die Sie CIDR-/24-Netzwerke routen, schreiben Sie Folgendes: &prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-fred &prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-sam &prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-mary Jeder Einwählzugang dieser Kunden sollte den oben erzeugten symbolischen Link als Shell haben (mary's Shell sollte also /etc/ppp/ppp-mary sein). Einrichten von <filename>ppp.conf</filename> für dynamische IP-Adressen Die Datei /etc/ppp/ppp.conf sollte in etwa wie folgt aussehen: default: set debug phase lcp chat set timeout 0 ttyu0: set ifaddr 203.14.100.1 203.14.100.20 255.255.255.255 enable proxy ttyu1: set ifaddr 203.14.100.1 203.14.100.21 255.255.255.255 enable proxy Die Einrückungen sind wichtig. Der Abschnitt default: wird für jede Sitzung geladen. Erstellen Sie für jede Einwählverbindung, die Sie in der Datei /etc/ttys ermöglicht haben, einen Eintrag, wie oben für ttyu0: gezeigt. Jede Verbindung sollte eine eigene IP-Adresse aus dem Pool der Adressen bekommen, die sie für diese Benutzergruppe reserviert haben. Einrichten von <filename>ppp.conf</filename> für statische IP-Adressen Zu dem bisher dargestellten Inhalt der Beispieldatei /usr/share/examples/ppp/ppp.conf sollten Sie einen Abschnitt für jeden Benutzer mit statisch zugewiesener IP-Adresse hinzufügen. Wir werden nun unser Beispiel mit den Accounts fred, sam und mary weiterführen. fred: set ifaddr 203.14.100.1 203.14.101.1 255.255.255.255 sam: set ifaddr 203.14.100.1 203.14.102.1 255.255.255.255 mary: set ifaddr 203.14.100.1 203.14.103.1 255.255.255.255 Die Datei /etc/ppp/ppp.linkup sollte, falls erforderlich, ebenfalls Routinginformationen für jeden Benutzer mit statischer IP-Adresse enthalten. Die unten dargestellte Zeile würde dem Netzwerk 203.14.101.0/24 eine Route über die PPP-Verbindung des Client hinzufügen. fred: add 203.14.101.0 netmask 255.255.255.0 HISADDR sam: add 203.14.102.0 netmask 255.255.255.0 HISADDR mary: add 203.14.103.0 netmask 255.255.255.0 HISADDR <command>mgetty</command> und AutoPPP mgetty AutoPPP LCP In der Voreinstellung wird mgetty mit der Option AUTO_PPP konfiguriert und kompiliert. Dadurch kann mgetty die LCP Phase von PPP-Verbindungen erkennen und automatisch eine ppp-Shell starten. Da hierbei jedoch die Login/Passwort-Sequenz nicht durchlaufen wird, ist es notwendig, Benutzer durch PAP oder CHAP zu authentifizieren. In diesem Abschnitt wird davon ausgegangen, dass der Benutzer den Port comms/mgetty+sendfax auf seinem System kompiliert und installiert hat. Stellen Sie sicher, dass die Datei /usr/local/etc/mgetty+sendfax/login.config Folgendes enthält: /AutoPPP/ - - /etc/ppp/ppp-pap-dialup Hierdurch wird mgetty angewiesen, das Skript ppp-pap-dialup für die erkannten PPP-Verbindungen auszuführen. Erstellen Sie nun die Datei /etc/ppp/ppp-pap-dialup mit folgendem Inhalt (die Datei sollte ausführbar sein): #!/bin/sh exec /usr/sbin/ppp -direct pap$IDENT Erstellen Sie bitte für jede Einwählverbindung, die Sie in /etc/ttys ermöglicht haben, einen korrespondierenden Eintrag in der Datei /etc/ppp/ppp.conf. Diese Einträge können problemlos, mit den Definitionen die wir weiter oben gemacht haben, koexistieren. pap: enable pap set ifaddr 203.14.100.1 203.14.100.20-203.14.100.40 enable proxy Jeder Benutzer, der sich auf diese Weise anmeldet, benötigt einen Benutzernamen und ein Passwort in der Datei /etc/ppp/ppp.secret. Sie haben auch die Möglichkeit, Benutzer mit Hilfe von PAP zu authentifizieren, indem Sie der Datei /etc/passwd folgende Option hinzufügen: enable passwdauth Wenn Sie bestimmten Benutzern eine statische IP-Adresse zuweisen möchten, können Sie diese als drittes Argument in der Datei /etc/ppp/ppp.secret angeben. In /usr/share/examples/ppp/ppp.secret.sample finden Sie hierfür Beispiele. MS-Erweiterungen DNS NetBIOS PPP Erweiterungen von Microsoft Es ist möglich PPP so zu konfigurieren, dass bei Bedarf DNS und NetBIOS Nameserveradressen bereitgestellt werden. Um diese Erweiterungen für die PPP Version 1.x zu aktivieren, sollte der entsprechende Abschnitt der Datei /etc/ppp/ppp.conf um folgende Zeilen ergänzt werden: enable msext set ns 203.14.100.1 203.14.100.2 set nbns 203.14.100.5 Für PPP Version 2 und höher: accept dns set dns 203.14.100.1 203.14.100.2 set nbns 203.14.100.5 Damit werden den Clients die primären und sekundären Nameserveradressen sowie ein NetBIOS Nameserver-Host mitgeteilt. In Version 2 und höher verwendet PPP die Werte, die in /etc/resolv.conf zu finden sind, wenn die Zeile set dns weggelassen wird. Authentifizierung durch PAP und CHAP PAP CHAP Einige ISPs haben ihr System so eingerichtet, dass der Authentifizierungsteil eines Verbindungsaufbaus mit Hilfe von PAP oder CHAP-Mechanismen durchgeführt wird. Wenn dies bei Ihnen der Fall sein sollte, wird Ihnen Ihr ISP bei der Verbindung keinen login:-Prompt präsentieren, sondern sofort mit der Aushandlung der PPP-Verbindung beginnen. PAP ist nicht so sicher wie CHAP, doch die Sicherheit ist hierbei normalerweise kein Problem, da Passwörter, obgleich von PAP im Klartext versandt, lediglich über die serielle Verbindung verschickt werden. Es gibt für Cracker wenig Möglichkeiten zu lauschen. Zurückkommend auf die Abschnitte PPP und statische IP-Adressen oder PPP und dynamische IP-Adressen müssen folgende Veränderungen vorgenommen werden: 13 set authname MyUserName 14 set authkey MyPassword 15 set login Zeile 13: Diese Zeile legt Ihren PAP/CHAP Benutzernamen fest. Sie müssen den richtigen Wert für MyUserName eingeben. Zeile 14: - Passwort - - Diese Zeile legt Ihr PAP/CHAP Passwort fest. Sie + Diese Zeile legt Ihr PAP/CHAP PasswortPasswort fest. Sie müssen den richtigen Wert für MyPassword eingeben. Sie können eine zusätzliche Zeile, wie etwa: 16 accept PAP oder 16 accept CHAP verwenden, um deutlich zu machen, dass dies beabsichtigt ist, aber sowohl PAP wie auch CHAP als standardmäßig akzeptiert werden. Zeile 15: Ihr ISP wird normalerweise nicht von Ihnen verlangen, dass Sie sich am Server einloggen, wenn Sie PAP oder CHAP verwenden. Sie müssen deshalb den String set login deaktivieren. Veränderung Ihrer <command>ppp</command> Konfiguration im laufenden Betrieb Es ist möglich, dem Programm ppp Befehle zu erteilen, während es im Hintergrund läuft. Dazu ist jedoch die Einrichtung eines passenden Diagnose-Ports erforderlich. Ergänzen Sie hierzu Ihre Konfigurationsdatei um folgende Zeile: set server /var/run/ppp-tun%d DiagnosticPassword 0177 Damit wird PPP angewiesen, auf den angegebenen UNIX-Domainsocket zu hören und Clients nach dem angegebenen Passwort zu fragen, bevor der Zugang Gewährt wird. Das %d wird durch die Nummer des benutzten tun-Devices ersetzt. Wenn ein Socket eingerichtet ist, kann das Programm &man.pppctl.8; in Skripten verwendet werden, mit denen in das laufende Programm eingegriffen wird. Interne NAT von PPP benutzen PPP NAT PPP kann Network Address Translation (NAT) ohne Hilfe des Kernels durchführen. Wenn Sie diese Funktion benutzen wollen, fügen Sie die folgende Zeile in /etc/ppp/ppp.conf ein: nat enable yes Sie können NAT mit der Option auf der Kommandozeile von PPP aktivieren. Weiterhin kann NAT in /etc/rc.conf mit der Variablen ppp_nat aktiviert werden. Dies ist auch die Voreinstellung. Die nachstehende /etc/ppp/ppp.conf benutzt NAT für bestimmte eingehende Verbindungen: nat port tcp 10.0.0.2:ftp ftp nat port tcp 10.0.0.2:http http Wenn Sie Verbindungen von außen überhaupt nicht trauen, benutzen Sie die folgende Zeile: nat deny_incoming yes Abschließende Systemkonfiguration PPP Konfiguration Sie haben ppp nun konfiguriert, aber bevor PPP eingesetzt werden kann, gibt noch einige weitere Dinge zu erledigen, die alle die Bearbeitung der Datei /etc/rc.conf erfordern. Gehen Sie diese Datei von oben nach unten durch, und stellen Sie als Erstes sicher, dass die Zeile hostname= vorhanden ist: hostname="foo.example.com" Wenn Ihnen Ihr ISP eine statische IP-Adresse und einen Namen zugewiesen hat, ist es wahrscheinlich am besten, wenn Sie diesen Namen als Hostnamen verwenden. Schauen Sie nach der Variable network_interfaces. Wenn Sie Ihr System so konfigurieren möchten, dass bei Bedarf eine Verbindung zu Ihrem ISP aufgebaut wird, sollten Sie das Device tun0 zu der Liste hinzufügen oder es andernfalls entfernen. network_interfaces="lo0 tun0" ifconfig_tun0= Die Variable ifconfig_tun0 sollte leer sein und eine Datei namens /etc/start_if.tun0 sollte erstellt werden. Diese Datei sollte die nachfolgende Zeile enthalten: ppp -auto mysystem Dieses Skript startet Ihren ppp-Dæmon im Automatik-Modus. Es wird bei der Netzwerkkonfiguration ausgeführt. Wenn Ihr Rechner als Gateway für ein LAN fungiert, möchten Sie vielleicht auch die Option verwenden. In der Manual-Seite sind weitere Einzelheiten hierzu zu finden. Stellen Sie sicher, dass der Start eines Routerprogramms in /etc/rc.conf wie folgt deaktiviert ist: router_enable="NO" routed Es ist wichtig, dass der routed Dæmon nicht gestartet wird da routed dazu tendiert, die von ppp erstellten Einträge der Standardroute zu überschreiben. Es ist außerdem sinnvoll, darauf zu achten, dass die Zeile sendmail_flags nicht die Option enthält, da sendmail sonst ab und zu die Netzwerkverbindung prüfen wird, was möglicherweise dazu führt, dass sich Ihr Rechner einwählt. Sie können hier Folgendes angeben: sendmail_flags="-bd" sendmail Der Nachteil dieser Lösung ist, dass Sie sendmail nach jedem Aufbau einer ppp-Verbindung auffordern müssen, die Mailwarteschlange zu überprüfen, indem Sie Folgendes eingeben: &prompt.root; /usr/sbin/sendmail -q Vielleicht möchten Sie den Befehl !bg in der Datei ppp.linkup verwenden, um dies zu automatisieren: 1 provider: 2 delete ALL 3 add 0 0 HISADDR 4 !bg sendmail -bd -q30m SMTP Wenn Sie dies nicht möchten, ist es möglich, einen dfilter einzusetzen, um SMTP-Verkehr zu blockieren. Weitere Einzelheiten hierzu finden Sie in den Beispieldateien. Das Einzige, was nun noch zu tun bleibt, ist Ihren Rechner neu zu starten. Nach dem Neustart können Sie entweder: &prompt.root; ppp und danach dial provider eingeben, um eine PPP-Sitzung zu starten, oder Sie geben: &prompt.root; ppp -auto provider ein, um ppp bei Datenverkehr aus Ihrem Netzwerk heraus, automatisch eine Verbindung herstellen zu lassen (vorausgesetzt Sie haben kein start_if.tun0 Skript erstellt). Zusammenfassung Die folgenden Schritte sind nötig, wenn ppp zum ersten Mal eingerichtet werden soll: Clientseite: Stellen Sie sicher, dass das tun Device in den Kernel eingebaut ist. Vergewissern Sie sich, dass die Gerätedatei tunN im Verzeichnis /dev vorhanden ist. Bearbeiten Sie die Datei /etc/ppp/ppp.conf. Das Beispiel pmdemand sollte für die meisten ISP ausreichen. Wenn Sie eine dynamische IP-Adresse haben, erstellen Sie einen Eintrag in der Datei /etc/ppp/ppp.linkup. Aktualisieren Sie die Datei /etc/rc.conf. Erstellen Sie das Skript start_if.tun0, wenn Sie einen bedarfgesteuerten Einwahlprozess (demand dialing) benötigen. Serverseite: Stellen Sie sicher, dass das tun Device in den Kernel eingebaut ist. Vergewissern Sie sich, dass die Gerätedatei tunN im Verzeichnis /dev vorhanden ist Erstellen Sie einen Eintrag in der Datei /etc/passwd (verwenden Sie dazu das Programm &man.vipw.8;). Erstellen Sie ein Profil im Heimatverzeichnis des Benutzers, das ppp -direct direct-server o.Ä. ausführt. Bearbeiten Sie die Datei /etc/ppp/ppp.conf. Das Beispiel direct-server sollte ausreichen. Erzeugen Sie einen Eintrag in /etc/ppp/ppp.linkup. Aktualisieren Sie die Datei /etc/rc.conf. Gennady B. Sorokopud Teile wurden ursprünglich beigetragen von Robert Huff Kernel-PPP Der folgende Abschnitt ist ausschließlich für &os; 7.X relevant und gültig. Einrichtung von Kernel-PPP PPP Kernel-PPP Bevor Sie PPP auf Ihrem Computer einrichten, sollten Sie dafür sorgen, dass pppd im Verzeichnis /usr/sbin vorhanden ist und /etc/ppp existiert. pppd kann auf zweierlei Weise arbeiten: Als Client – Sie möchten Ihren Rechner mit einem Netz verbinden, indem Sie eine serielle PPP-Verbindung aufbauen. - - PPP - Server - - - Als Server – Ihr Rechner ist in + Als ServerPPPServer – Ihr Rechner ist in ein Netzwerk eingebunden und stellt die PPP-Verbindung für andere Rechner im Netzwerk her. In beiden Fällen werden Sie eine Datei mit den benötigten Optionen erstellen müssen (/etc/ppp/options oder, wenn mehr als ein Benutzer PPP verwendet, ~/.ppprc). Sie benötigen außerdem eine Software (vorzugsweise comms/kermit), mit der Sie seriell per Modem wählen und eine Verbindung zu dem entfernten Host aufbauen können. Trev Roydhouse Basierend auf Informationen von Verwendung von <command>pppd</command> als Client PPP Client Cisco Die folgende Datei /etc/ppp/options kann für einen Verbindungsaufbau mit PPP zu einem Cisco Terminalserver verwendet werden. crtscts # enable hardware flow control modem # modem control line noipdefault # remote PPP server must supply your IP address # if the remote host does not send your IP during IPCP # negotiation, remove this option passive # wait for LCP packets domain ppp.foo.com # put your domain name here :remote_ip # put the IP of remote PPP host here # it will be used to route packets via PPP link # if you didn't specified the noipdefault option # change this line to local_ip:remote_ip defaultroute # put this if you want that PPP server will be your # default router Um eine Verbindung herzustellen, sollten Sie: Kermit Modem Mit Kermit (oder einem anderen Modemprogramm) den entfernten Host anwählen und Ihren Benutzernamen sowie Ihr Passwort (oder was sonst nötig ist, um PPP auf dem entfernten Host zu aktivieren) eingeben. Kermit beenden (ohne die Verbindung abzubrechen). Folgendes eingeben: &prompt.root; /usr/sbin/pppd /dev/tty01 19200 Achten Sie darauf, dass sie eine geeignete Geschwindigkeit wählen und das richtige Device verwenden. Nun ist Ihr Computer mit Hilfe von PPP verbunden. Wenn die Verbindung nicht funktionieren sollte, können Sie die Option in die Datei /etc/ppp/options eintragen und die Ausgaben auf der Konsole beobachten, um die Fehler zu finden. Das folgende Skript /etc/ppp/pppup führt alle 3 Schritte automatisch aus: #!/bin/sh pgrep -l pppd pid=`pgrep pppd` if [ "X${pid}" != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill ${pid} fi pgrep -l kermit pid=`pgrep kermit` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi ifconfig ppp0 down ifconfig ppp0 delete kermit -y /etc/ppp/kermit.dial pppd /dev/tty01 19200 Kermit /etc/ppp/kermit.dial ist ein Kermit-Skript das den Einwählvorgang und alle notwendigen Autorisationen auf dem entfernten Host durchführt (ein Beispiel für ein solches Skript ist im Anhang zu diesem Dokument zu finden). Verwenden Sie das folgende Skript /etc/ppp/pppdown, um die PPP-Verbindung abzubrechen: #!/bin/sh pid=`pgrep pppd` if [ X${pid} != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill -TERM ${pid} fi pgrep -l kermit pid=`pgrep kermit` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi /sbin/ifconfig ppp0 down /sbin/ifconfig ppp0 delete kermit -y /etc/ppp/kermit.hup /etc/ppp/ppptest Prüfen Sie, ob pppd immer noch läuft, indem Sie /usr/etc/ppp/ppptest ausführen. Dieses Skript sollte folgendermaßen aussehen: #!/bin/sh pid=`pgrep pppd` if [ X${pid} != "X" ] ; then echo 'pppd running: PID=' ${pid-NONE} else echo 'No pppd running.' fi set -x netstat -n -I ppp0 ifconfig ppp0 Um die Modemverbindung abzubrechen, können Sie das Skript /etc/ppp/kermit.hup verwenden, das Folgendes enthalten sollte: set line /dev/tty01 ; put your modem device here set speed 19200 set file type binary set file names literal set win 8 set rec pack 1024 set send pack 1024 set block 3 set term bytesize 8 set command bytesize 8 set flow none pau 1 out +++ inp 5 OK out ATH0\13 echo \13 exit Hier ist eine alternative Methode, bei der chat an Stelle von Kermit eingesetzt wird: Die folgenden beiden Dateien reichen aus, um eine Verbindung über pppd herzustellen. /etc/ppp/options: /dev/cuad1 115200 crtscts # enable hardware flow control modem # modem control line connect "/usr/bin/chat -f /etc/ppp/login.chat.script" noipdefault # remote PPP serve must supply your IP address # if the remote host doesn't send your IP during # IPCP negotiation, remove this option passive # wait for LCP packets domain <your.domain> # put your domain name here : # put the IP of remote PPP host here # it will be used to route packets via PPP link # if you didn't specified the noipdefault option # change this line to local_ip:remote_ip; defaultroute # put this if you want that PPP server will be # your default router /etc/ppp/login.chat.script: Die folgenden Angaben sollten in einer Zeile stehen. ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDTphone.number CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: login-id TIMEOUT 5 sword: password Wenn diese Dateien richtig installiert und modifiziert sind, müssen Sie pppd, nur noch wie folgt starten: &prompt.root; pppd Verwendung von <command>pppd</command> als Server /etc/ppp/options sollte etwa Folgendes enthalten: crtscts # Hardware flow control netmask 255.255.255.0 # netmask (not required) 192.114.208.20:192.114.208.165 # IP's of local and remote hosts # local ip must be different from one # you assigned to the Ethernet (or other) # interface on your machine. # remote IP is IP address that will be # assigned to the remote machine domain ppp.foo.com # your domain passive # wait for LCP modem # modem line Das folgende Skript /etc/ppp/pppserv lässt pppd als Server zu arbeiten: #!/bin/sh pgrep -l pppd pid=`pgrep pppd` if [ "X${pid}" != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill ${pid} fi pgrep -l kermit pid=`pgrep kermit` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi # reset ppp interface ifconfig ppp0 down ifconfig ppp0 delete # enable autoanswer mode kermit -y /etc/ppp/kermit.ans # run ppp pppd /dev/tty01 19200 Verwenden Sie das Skript/etc/ppp/pppservdown, um den Server zu beenden: #!/bin/sh pgrep -l pppd pid=`pgrep pppd` if [ "X${pid}" != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill ${pid} fi pgrep -l kermit pid=`pgrep kermit` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi ifconfig ppp0 down ifconfig ppp0 delete kermit -y /etc/ppp/kermit.noans Mit dem Kermit-Skript (/etc/ppp/kermit.ans) lässt sich die Funktion Ihres Modems, automatisch zu antworten, ein- bzw. ausschalten. Es sollte folgendermaßen aussehen: set line /dev/tty01 set speed 19200 set file type binary set file names literal set win 8 set rec pack 1024 set send pack 1024 set block 3 set term bytesize 8 set command bytesize 8 set flow none pau 1 out +++ inp 5 OK out ATH0\13 inp 5 OK echo \13 out ATS0=1\13 ; change this to out ATS0=0\13 if you want to disable ; autoanswer mode inp 5 OK echo \13 exit Ein Skript namens /etc/ppp/kermit.dial wird für die Einwahl und Authentifizierung am entfernten Host verwendet. Sie müssen es noch an Ihre lokalen Gegebenheiten anpassen. Geben Sie in diesem Skript Ihren Benutzernamen und Ihr Passwort ein. In Abhängigkeit von der Reaktion Ihres Modems und des entfernten Hosts, werden Sie auch noch die input Anweisungen verändern müssen. ; ; put the com line attached to the modem here: ; set line /dev/tty01 ; ; put the modem speed here: ; set speed 19200 set file type binary ; full 8 bit file xfer set file names literal set win 8 set rec pack 1024 set send pack 1024 set block 3 set term bytesize 8 set command bytesize 8 set flow none set modem hayes set dial hangup off set carrier auto ; Then SET CARRIER if necessary, set dial display on ; Then SET DIAL if necessary, set input echo on set input timeout proceed set input case ignore def \%x 0 ; login prompt counter goto slhup :slcmd ; put the modem in command mode echo Put the modem in command mode. clear ; Clear unread characters from input buffer pause 1 output +++ ; hayes escape sequence input 1 OK\13\10 ; wait for OK if success goto slhup output \13 pause 1 output at\13 input 1 OK\13\10 if fail goto slcmd ; if modem doesn't answer OK, try again :slhup ; hang up the phone clear ; Clear unread characters from input buffer pause 1 echo Hanging up the phone. output ath0\13 ; hayes command for on hook input 2 OK\13\10 if fail goto slcmd ; if no OK answer, put modem in command mode :sldial ; dial the number pause 1 echo Dialing. output atdt9,550311\13\10 ; put phone number here assign \%x 0 ; zero the time counter :look clear ; Clear unread characters from input buffer increment \%x ; Count the seconds input 1 {CONNECT } if success goto sllogin reinput 1 {NO CARRIER\13\10} if success goto sldial reinput 1 {NO DIALTONE\13\10} if success goto slnodial reinput 1 {\255} if success goto slhup reinput 1 {\127} if success goto slhup if < \%x 60 goto look else goto slhup :sllogin ; login assign \%x 0 ; zero the time counter pause 1 echo Looking for login prompt. :slloop increment \%x ; Count the seconds clear ; Clear unread characters from input buffer output \13 ; ; put your expected login prompt here: ; input 1 {Username: } if success goto sluid reinput 1 {\255} if success goto slhup reinput 1 {\127} if success goto slhup if < \%x 10 goto slloop ; try 10 times to get a login prompt else goto slhup ; hang up and start again if 10 failures :sluid ; ; put your userid here: ; output ppp-login\13 input 1 {Password: } ; ; put your password here: ; output ppp-password\13 input 1 {Entering SLIP mode.} echo quit :slnodial echo \7No dialtone. Check the telephone line!\7 exit 1 ; local variables: ; mode: csh ; comment-start: "; " ; comment-start-skip: "; " ; end: Tom Rhodes Beigetragen von Probleme bei <acronym>PPP</acronym>-Verbindungen PPP Fehlersuche Mit &os; 8.0 wurde der &man.sio.4;-Treiber durch den Treiber &man.uart.4; ersetzt. Parallel dazu wurden auch die entsprechenden Gerätedateien für die seriellen Ports umbenannt: /dev/cuadN wurde zu /dev/cuauN, /dev/ttydN zu /dev/ttyuN. Verwenden Sie noch &os; 7.X, müssen Sie dies beim Lesen der folgenden Abschnitte berücksichtigen. Dieser Abschnitt behandelt Probleme, die auftauchen können, wenn PPP über ein Modem verwendet wird. Sie müssen beispielsweise genau die Eingabeaufforderung des Systems kennen, in das Sie sich einwählen. Einige ISPs verwenden ssword andere verwenden password; wenn das Einwahlskript falsch ist, scheitert die Anmeldung. Üblicherweise suchen Sie nach Fehlern der PPP-Verbindung indem Sie sich manuell verbinden. Wie das genau geht, wird im Folgenden gezeigt. Gerätedateien überprüfen Wenn Sie einen eigenen Kernel verwenden, stellen Sie sicher, dass die folgende Zeile in der Kernelkonfigurationsdatei vorhanden ist: device uart Das uart-Gerät ist bereits im GENERIC-Kernel vorhanden, deshalb sind in diesem Fall keine zusätzlichen Schritte vonnöten. Kontrollieren Sie die Ausgabe von dmesg: &prompt.root; dmesg | grep uart In der Ausgabe sollten die entsprechenden uart-Geräte, beispielsweise uart1 (COM2), angezeigt werden. Wird ein passendes Gerät angezeigt, brauchen Sie keinen neuen Kernel zu erstellen. Wenn Ihr Modem an uart1 angeschlossen ist (in DOS ist dieser Anschluss als COM2 bekannt), ist /dev/cuau1 die dazugehörende Gerätedatei. Manuelle Verbindungen Ein Verbindungsaufbau zum Internet durch manuelle Steuerung von ppp geht schnell, ist einfach und stellt einen guten Weg dar, eine Verbindung auf Fehler hin zu überprüfen oder einfach Informationen darüber zu sammeln, wie Ihr ISP Verbindungen handhabt. Lassen Sie uns PPP von der Kommandozeile aus starten. Beachten Sie, dass in allen Beispielen example der Hostname der Maschine ist, auf der PPP läuft. Sie starten ppp, indem Sie einfach ppp eingeben: &prompt.root; ppp Wir haben ppp nun gestartet. ppp ON example> set device /dev/cuau1 Wir geben das Device an, an das unser Modem angeschlossen ist. In diesem Fall ist es cuau1. ppp ON example> set speed 115200 Wir geben die Verbindungsgeschwindigkeit an. Im Beispiel verwenden wir 115200 kbps ppp ON example> enable dns Wir weisen ppp an, unseren Resolver zu konfigurieren und in der Datei /etc/resolv.conf Einträge für den Nameserver hinzuzufügen. Falls ppp unseren Hostnamen nicht bestimmen kann, geben wir diesen später manuell an. ppp ON example> term Wir wechseln in den Terminal-Modus, um das Modem manuell kontrollieren zu können. deflink: Entering terminal mode on /dev/cuau1 type '~h' for help at OK atdt123456789 Sie verwenden at zur Initialisierung Ihres Modems und dann atdt sowie die Nummer Ihres ISP, um den Einwählprozess zu starten. CONNECT Dies ist die Bestätigung, dass eine Verbindung aufgebaut wurde. Falls wir Verbindungsprobleme bekommen, die nicht mit der Hardware zusammenhängen, werden wir an dieser Stelle ansetzen müssen, um eine Lösung zu finden. ISP Login:myusername Hier werden Sie nach einem Benutzernamen gefragt. Geben Sie am Prompt den Namen ein, den Ihnen Ihr ISP zur Verfügung gestellt hat. ISP Pass:mypassword An dieser Stelle müssen Sie das Passwort angeben, das Ihnen von Ihrem ISP vorgegeben wurde. Das Passwort wird, analog dem normalen Anmeldevorgang, nicht angezeigt. Shell or PPP:ppp Abhängig von Ihrem ISP, kann es sein, dass dieser Prompt bei Ihnen gar nicht erscheint. Wir werden hier gefragt, ob wir eine Shell beim Provider verwenden oder ppp starten wollen. Weil wir eine Internetverbindung aufbauen wollen, haben wir uns in diesem Beispiel für ppp entschieden. Ppp ON example> Beachten Sie, dass sich in diesem Beispiel das erste in einen Großbuchstaben verwandelt hat. Dies zeigt, dass wir erfolgreich eine Verbindung zu unserem ISP hergestellt haben. PPp ON example> An dieser Stelle haben wir uns erfolgreich bei unserem ISP authentifiziert und warten darauf, dass uns eine IP-Adresse zugewiesen wird. PPP ON example> Wir haben uns mit der Gegenstelle auf eine IP-Adresse geeinigt und den Verbindungsaufbau erfolgreich abgeschlossen PPP ON example> add default HISADDR Hier geben wir unsere Standardroute an. Weil zu diesem Zeitpunkt unsere einzige Verbindung zu unserer Gegenstelle besteht, müssen wir dies tun, bevor wir Kontakt zu unserer Umwelt aufnehmen können. Falls dies aufgrund bestehender Routen nicht funktionieren sollte, können Sie ein Ausrufungszeichen ! vor setzen. Sie können diese Standardroute aber auch vor dem eigentlichen Verbindungsaufbau angeben und PPP wird entsprechend eine neue Route aushandeln. Wenn alles gut ging, sollten wir nun eine aktive Internetverbindung haben, die wir mit Ctrl z in den Hintergrund schicken können Wenn sie feststellen, dass PPP wieder zu ppp wird, ist die Verbindung abgebrochen. Es ist gut dies zu wissen, weil dadurch der Verbindungsstatus angezeigt wird. Große Ps zeigen an, dass wir eine Verbindung zum ISP haben und kleine ps zeigen an, dass wir aus irgendeinem Grund die Verbindung verloren haben. ppp hat nur diese beiden Zustände. Fehlersuche Wenn sie einen Direktanschluss haben und keine Verbindung aufbauen können, schalten Sie die Hardware-Flusssteuerung CTS/RTS aus, indem Sie die Option verwenden. Dies ist zumeist dann der Fall, wenn Sie mit einem PPP-fähigen Terminalserver verbunden sind. Hier bleibt PPP bei dem Versuch hängen, Daten über Ihre Nachrichtenverbindung zu schicken, weil auf ein CTS-Signal (Clear-to-Send) gewartet wird, das nie kommt. Wenn Sie diese Option jedoch gebrauchen, sollten Sie auch die Option verwenden, die erforderlich sein kann, um bestimmte Hardware zu kontrollieren, die auf die Übertragung bestimmter Zeichen zwischen den Kommunikations-Endpunkten (zumeist XON/XOFF) angewiesen ist. Die Manual-Seite &man.ppp.8; bietet mehr Informationen zu dieser Option und ihrer Verwendung. Wenn Sie ein älteres Modem haben, benötigen Sie vielleicht die Option . Standardmäßig wird keine Parität vorausgesetzt, sie ist aber für die Fehlerprüfung bei älteren Modems und bei bestimmten ISPs erforderlich. Sie könnten diese Option für den ISP Compuserve benötigen. PPP kehrt möglicherweise nicht in den Befehlsmodus zurück, was normalerweise auf einen Fehler bei der Aushandlung hinweist, wobei der ISP wartet, dass Ihre Seite den Aushandlungsprozess beginnt. Die Option ~p erzwingt in diesem Fall den Beginn des Aushandlungsprozesses. Wenn Sie nie einen Login-Prompt erhalten, müssen Sie statt des im Beispiel gezeigten UNIX-Stils höchst wahrscheinlich PAP oder CHAP für die Authentifizierung verwenden. Um PAP oder CHAP zu verwenden, ergänzen Sie PPP einfach um folgende Optionen, bevor Sie in den Terminalmodus wechseln: ppp ON example> set authname myusername Hierbei sollte myusername durch den Benutzernamen ersetzt werden, den Sie von Ihrem ISP bekommen haben. ppp ON example> set authkey mypassword mypassword sollten Sie durch das Passwort ersetzen, das Ihnen Ihr ISP gegeben hat. Wenn die Verbindung aufgebaut wird, Sie aber keine Rechner unter ihrem Domänen-Namen erreichen können, versuchen Sie, einen Rechner mit &man.ping.8; und seiner IP-Adresse zu erreichen. Wenn 100% der Pakete verloren gehen, ist es sehr wahrscheinlich, dass Ihnen keine Standardroute zugewiesen wurde. Überprüfen Sie, ob während des Verbindungsaufbaus die Option gesetzt war. Wenn Sie zu einer entfernten IP-Adresse eine Verbindung aufbauen können, ist es möglich, dass die Adresse eines Nameservers nicht in die Datei /etc/resolv.conf eingetragen wurde. Diese Datei sollte folgendermaßen aussehen: domain example.com nameserver x.x.x.x nameserver y.y.y.y Dabei sollten x.x.x.x und y.y.y.y durch die IP-Adressen der DNS-Server Ihres ISPs ersetzt werden. Diese Information ist Ihnen bei Vertragsabschluss mitgeteilt worden. Wenn nicht, sollte ein Anruf bei Ihrem ISP Abhilfe schaffen. Mit &man.syslog.3; können Sie Ihre PPP-Verbindung protokollieren. Fügen Sie einfach die folgende Zeile in /etc/syslog.conf ein: !ppp *.* /var/log/ppp.log In den meisten Fällen existiert diese Funktionalität bereits. Jim Mock Beigetragen (durch http://node.to/freebsd/how-tos/how-to-freebsd-pppoe.html) von PPP over Ethernet (PPPoE) PPP over Ethernet PPPoE PPP, over Ethernet Dieser Abschnitt beschreibt, wie Sie PPP over Ethernet (PPPoE) einrichten. Konfiguration des Kernels Eine besondere Kernelkonfiguration ist für PPPoE nicht mehr erforderlich. Sofern die notwendige NetGraph-Unterstützung nicht in den Kernel eingebaut wurde, wird diese von ppp dynamisch geladen. Einrichtung von <filename>ppp.conf</filename> Dies hier ist ein Beispiel einer funktionierenden ppp.conf: default: set log Phase tun command # you can add more detailed logging if you wish set ifaddr 10.0.0.1/0 10.0.0.2/0 name_of_service_provider: set device PPPoE:xl1 # replace xl1 with your Ethernet device set authname YOURLOGINNAME set authkey YOURPASSWORD set dial set login add default HISADDR <application>ppp</application> ausführen Als root, geben Sie ein: &prompt.root; ppp -ddial name_of_service_provider <application>ppp</application> beim Systemstart ausführen Fügen Sie Folgendes in Ihre Datei /etc/rc.conf ein: ppp_enable="YES" ppp_mode="ddial" ppp_nat="YES" # if you want to enable nat for your local network, otherwise NO ppp_profile="name_of_service_provider" Verwendung einer PPPoE-Dienstbezeichnung (service tag) Manchmal kann es notwendig sein, eine Dienstbezeichnung (service tag) zu verwenden, um eine Verbindung aufzubauen. Dienstbezeichnungen werden eingesetzt, um zwischen verschiedenen PPPoE-Servern unterscheiden zu können, die einem bestehenden Netzwerk zugeteilt sind. Die erforderlichen Dienstbezeichnungen sollten in der Dokumentation, zu finden sein, die Ihnen Ihr ISP zur Verfügung gestellt hat. Wenn Sie diese Informationen dort nicht finden, fragen Sie beim technischen Kundendienst Ihres ISP danach. Als letzte Möglichkeit, bleibt die Methode, die von dem Programm Roaring Penguin PPPoE vorgeschlagen wird, das in der Ports-Sammlung zu finden ist. Bedenken Sie aber, dass dadurch Daten Ihres Modems gelöscht werden können, so dass es nicht mehr benutzt werden kann. Überlegen Sie also genau, ob Sie dies machen wollen. Installieren Sie einfach das Programm, das Ihnen Ihr Provider zusammen mit dem Modem geliefert hat. Gehen Sie dann in das Menü System dieses Programms. Der Name Ihres Profils, sollte in der Liste aufgeführt sein. Normalerweise ist dies ISP. Der Name des Profils (service tag) wird im Eintrag für die PPPoE-Konfiguration in der Datei ppp.conf verwendet, als der Teil des Befehls set device (die manpage &man.ppp.8; enthält Einzelheiten hierzu), der den Provider angibt. Dieser Eintrag sollte folgendermaßen aussehen: set device PPPoE:xl1:ISP Vergessen Sie nicht, statt xl1 das richtige Device Ihrer Netzwerkkarte anzugeben. Denken sie auch daran, ISP durch das Profil, das Sie oben gefunden haben zu ersetzen. Weitere Informationen bieten: Cheaper Broadband with FreeBSD on DSL von Renaud Waldura. PPPoE mit einem &tm.3com; <trademark class="registered">HomeConnect</trademark> ADSL Modem Dual Link Dieses Modem folgt nicht dem RFC 2516 (A Method for transmitting PPP over Ethernet (PPPoE), verfasst von L. Mamakos, K. Lidl, J. Evarts, D. Carrel, D. Simone, und R. Wheeler). Stattdessen wurden andere Pakettyp-Codes für die Ethernet Frames verwendet. Bitte beschweren Sie sich unter 3Com, wenn Sie der Ansicht sind, dass dieses Modem die PPPoE-Spezifikation einhalten sollte. Um FreeBSD in die Lage zu versetzen, mit diesem Gerät zu kommunizieren, muss ein sysctl Befehl angegeben werden. Dies kann beim Systemstart automatisch geschehen, indem die Datei /etc/sysctl.conf angepasst wird: net.graph.nonstandard_pppoe=1 oder, wenn der Befehl unmittelbar wirksam werden soll, durch: &prompt.root; sysctl net.graph.nonstandard_pppoe=1 Da hiermit eine systemweit gültige Einstellung vorgenommen wird, ist es nicht möglich, gleichzeitig mit einem normalen PPPoE-Client oder Server und einem &tm.3com; HomeConnect ADSL Modem zu kommunizieren. <application>PPP</application> over ATM (PPPoA) PPP over ATM PPPoA PPP, over ATM Nachfolgend wird beschrieben, wie PPP over ATM (PPPoA) eingerichtet wird. PPPoA ist vor allem unter europäischen DSL-Providern populär. Der Einsatz von PPPoA mit dem Alcatel &speedtouch; USB PPPoA-Unterstützung für dieses Gerät ist unter FreeBSD als Port verfügbar, da die Firmware unter Alcatels Lizenzvereinbarung vertrieben wird und deshalb nicht mit dem FreeBSD-Basissystem frei verteilt werden kann. Um die Software zu installieren, verwenden Sie einfach die Ports-Sammlung. Installieren Sie den Port net/pppoa und folgen Sie den dabei angegebenen Instruktionen. Für den ordnungsgemäßen Betrieb muss das Alcatel &speedtouch; USB, wie viele USB-Geräte, Firmware auf den Gastrechner laden. FreeBSD kann die Firmware automatisch laden, wenn das Gerät mit dem USB-Anschluss verbunden wird. Dazu fügen Sie als Benutzer root die nachstehenden Zeilen in /etc/usbd.conf ein: device "Alcatel SpeedTouch USB" devname "ugen[0-9]+" vendor 0x06b9 product 0x4061 attach "/usr/local/sbin/modem_run -f /usr/local/libdata/mgmt.o" Den USB-Dæmon aktivieren Sie mit der folgenden Zeile in /etc/rc.conf: usbd_enable="YES" Wenn die Verbindung beim Start von ppp aufgebaut werden soll, fügen Sie die nachstehenden Zeilen als Benutzer root in /etc/rc.conf ein: ppp_enable="YES" ppp_mode="ddial" ppp_profile="adsl" Verwenden Sie bitte diese Einstellungen zusammen mit der Beispielkonfiguration in ppp.conf des Ports net/pppoa. Die Verwendung von mpd Sie können mpd verwenden, um zu einer Reihe von Diensten, insbesondere PPTP-Diensten eine Verbindung herzustellen. Sie finden mpd in der Ports-Sammlung unter net/mpd. Viele ADSL Modems, wie das Alcatel &speedtouch; Home, sind auf einen PPTP-Tunnel zwischen dem Modem und dem Rechner angewiesen. Zuerst müssen Sie den Port installieren, um danach mpd entsprechend Ihren Anforderungen und den Vorgaben Ihres Providers konfigurieren zu können. Der Port installiert auch einige gut dokumentierte Beispielkonfigurationsdateien in PREFIX/etc/mpd/. Beachten Sie, dass PREFIX hier das Verzeichnis angibt, in das Ihre Ports installiert werden. Standardmäßig ist dies das Verzeichnis /usr/local/. Ein kompletter Leitfaden zur Konfiguration von mpd ist im HTML-Format verfügbar, sobald der Port installiert ist. Dieser ist in PREFIX/share/doc/mpd/ zu finden. Hier ist eine Beispielkonfiguration, um mit mpd eine Verbindung zu einem ADSL-Dienst aufzubauen. Die Konfiguration ist auf zwei Dateien verteilt. Zunächst die Datei mpd.conf: default: load adsl adsl: new -i ng0 adsl adsl set bundle authname username set bundle password password set bundle disable multilink set link no pap acfcomp protocomp set link disable chap set link accept chap set link keep-alive 30 10 set ipcp no vjcomp set ipcp ranges 0.0.0.0/0 0.0.0.0/0 set iface route default set iface disable on-demand set iface enable proxy-arp set iface idle 0 open Der Benutzername, den Sie zur Authentifizierung bei Ihrem ISP verwenden. Das Passwort, das Sie zur Authentifizierung bei Ihrem ISP verwenden. Die Datei mpd.links enthält Informationen über die Verbindung(en), die Sie aufbauen möchten. Eine Beispieldatei mpd.links, die das vorige Beispiel ergänzt, wird unten angegeben: adsl: set link type pptp set pptp mode active set pptp enable originate outcall set pptp self 10.0.0.1 set pptp peer 10.0.0.138 Die IP-Adresse des &os;-Rechners von dem aus Sie mpd verwenden. Die IP-Adresse des ADSL-Modems. Das Alcatel &speedtouch; Home hat die Adresse 10.0.0.138 voreingestellt. Ein Verbindungsaufbau kann einfach durch Eingabe des folgenden Befehls als root gestartet werden: &prompt.root; mpd -b adsl Sie können sich den Status der Verbindung durch folgenden Befehl anzeigen lassen: &prompt.user; ifconfig ng0 ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1500 inet 216.136.204.117 --> 204.152.186.171 netmask 0xffffffff Die Verwendung von mpd ist der empfehlenswerteste Weg, um mit &os; eine Verbindung zu einem ADSL-Dienst aufzubauen. Die Verwendung von pptpclient Es ist außerdem möglich, mit FreeBSD eine Verbindung zu anderen PPPoA-Diensten aufzubauen. Dazu wird net/pptpclient verwendet. Um mit net/pptpclient eine eine Verbindung zu einem DSL-Dienst aufbauen zu können, müssen Sie den entsprechenden Port bzw. das Paket installieren und die Datei /etc/ppp/ppp.conf bearbeiten. Sie müssen root sein, um diese Schritte durchführen zu können. Eine Beispieldatei für ppp.conf ist weiter unten angegeben. Weitere Informationen zu den Optionen von ppp.conf bietet die Manual-Seite ppp &man.ppp.8;: adsl: set log phase chat lcp ipcp ccp tun command set timeout 0 enable dns set authname username set authkey password set ifaddr 0 0 add default HISADDR Der Benutzername für den Zugang zu den Diensten Ihres ISP. Das Passwort für Ihren Account. Weil Sie Ihr Passwort in der Datei ppp.conf in Klartext angeben müssen, sollten Sie sicherstellen, dass niemand den Inhalt dieser Datei lesen kann. Die folgende Reihe von Befehlen stellt sicher, dass die Datei nur von root lesbar ist. Zusätzliche Informationen bieten die Manual-Seiten &man.chmod.1; und &man.chown.8;: &prompt.root; chown root:wheel /etc/ppp/ppp.conf &prompt.root; chmod 600 /etc/ppp/ppp.conf Dies wird einen Tunnel für eine PPP-Session zu Ihrem DSL-Router öffnen. Ethernet-DSL-Modems haben eine vorkonfigurierte LAN-IP-Adresse, mit der Sie eine Verbindung aufbauen. Im Falle des Alcatel &speedtouch; Home handelt es sich dabei um die Adresse 10.0.0.138. In der Dokumentation Ihres Routers sollte angegeben sein, welche Adresse Ihr Gerät verwendet. Um den Tunnel zu öffnen und eine PPP-Session zu starten, führen Sie bitte folgenden Befehl aus: &prompt.root; pptp address adsl Vielleicht möchten Sie ein kaufmännisches Und (&) an das Ende oben angegebenen Kommandos anfügen, da pptp sonst den Prompt nicht zurückgibt. Ein virtuelles Tunnel-Device tun wird für das Zusammenspiel der Prozesse pptp und ppp geschaffen. Wenn Sie den Prompt zurückerhalten haben oder der pptp-Prozess das Vorliegen einer Verbindung bestätigt, können Sie den Tunnel folgendermaßen überprüfen: &prompt.user; ifconfig tun0 tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500 inet 216.136.204.21 --> 204.152.186.171 netmask 0xffffff00 Opened by PID 918 Wenn Sie nicht in der Lage sein sollten, eine Verbindung aufzubauen, überprüfen Sie die Konfiguration Ihres Routers, den Sie normalerweise per telnet oder mit einem Web-Browser erreichen können. Falls dennoch keine Verbindung zustande kommt, sollten Sie die Ausgabe des Befehls pptp und die Logdatei /var/log/ppp.log von ppp nach Hinweisen auf die Ursache durchsuchen. Satoshi Asami Ursprünglich beigetragen von Guy Helmer Mit Beiträgen von Piero Serini SLIP SLIP Der folgende Abschnitt ist ausschließlich für &os; 7.X relevant und gültig. Einrichtung eines SLIP-Clients SLIP Client Im Folgenden wird ein Weg beschrieben, SLIP auf einer FreeBSD-Maschine für ein Netzwerk mit festen Hostnamen einzurichten. Bei einer dynamischen Zuweisung des Hostnamens (das heißt wenn sich Ihre Adresse bei jeder Einwahl ändert) wird die Einrichtung wahrscheinlich etwas komplexer aussehen. Bestimmen Sie zuerst, an welcher seriellen Schnittstelle Ihr Modem angeschlossen ist. Viele Leute erzeugen einen symbolischen Link, wie etwa /dev/modem, der auf den wirklichen Gerätenamen /dev/cuadN verweist. Damit ist es Ihnen möglich, vom eigentlichen Gerätenamen zu abstrahieren, sollten Sie das Modem einmal an eine andere Schnittstelle anschließen müssen. Es kann ziemlich umständlich sein, wenn Sie eine viele Dateien in /etc und .kermrc-Dateien, die über das ganze System verstreut sind, anpassen müssen! /dev/cuau0 ist COM1, /dev/cuau1 ist COM2, etc. Stellen Sie sicher, dass Folgendes in Ihrer Kernelkonfigurationsdatei steht: device sl 1 Dieses pseudo-device ist im GENERIC Kernel enthalten. Falls es von Ihnen nicht gelöscht wurde, sollten Sie hier kein Problem haben. Dinge, die Sie nur einmal erledigen müssen Tragen Sie Ihren lokalen Rechner, das Gateway, sowie die Nameserver in Ihre Datei /etc/hosts ein. Diese Datei sieht bei mir so aus: 127.0.0.1 localhost loghost 136.152.64.181 water.CS.Example.EDU water.CS water 136.152.64.1 inr-3.CS.Example.EDU inr-3 slip-gateway 128.32.136.9 ns1.Example.EDU ns1 128.32.136.12 ns2.Example.EDU ns2 Vergewissern Sie sich, dass in der Datei /etc/host.conf im Abschnitt hosts: files vor dns steht. Ohne diese Reihenfolge könnten lustige Dinge passieren. Editieren Sie die Datei /etc/rc.conf. Ihren Hostnamen geben Sie an, indem Sie folgende Zeile bearbeiten: hostname="myname.my.domain" Hier sollte der vollständige Internethostname Ihres Rechners angegeben werden. - Defaultroute - - Den Defaultrouter geben Sie durch die Modifikation + Den DefaultrouterDefaultroute geben Sie durch die Modifikation folgender Zeile an: defaultrouter="NO" wird zu: defaultrouter="slip-gateway" Erstellen Sie die Datei /etc/resolv.conf, die Folgendes enthält: domain CS.Example.EDU nameserver 128.32.136.9 nameserver 128.32.136.12 Nameserver Domain Name Wie Sie sehen, werden hiermit die Nameserver angegeben. Natürlich hängen die tatsächlichen Domainnamen und Adressen von Ihren Gegebenheiten ab. Legen Sie ein Passwort für root und toor (sowie für alle anderen Accounts die kein Passwort haben) fest. Starten Sie Ihren Rechner neu und überprüfen Sie, ob er mir dem richtigen Hostnamen startet. Aufbau einer SLIP-Verbindung SLIP Verbindungsaufbau Wählen Sie sich ein, geben Sie slip und am Prompt den Namen Ihres Rechners sowie Ihr Passwort ein. Was Sie eingeben müssen, hängt von Ihren Gegebenheiten ab. Wenn Sie Kermit verwenden, können Sie ein Skript ähnlich dem Folgenden verwenden: # kermit setup set modem hayes set line /dev/modem set speed 115200 set parity none set flow rts/cts set terminal bytesize 8 set file type binary # The next macro will dial up and login define slip dial 643-9600, input 10 =>, if failure stop, - output slip\x0d, input 10 Username:, if failure stop, - output silvia\x0d, input 10 Password:, if failure stop, - output ***\x0d, echo \x0aCONNECTED\x0a Natürlich müssen Sie hier Ihren Benutzernamen und Ihr Passwort eintragen. Wenn Sie das getan haben, können Sie am Kermit-Prompt einfach slip eingeben, um sich zu verbinden. Es ist generell eine schlechte Idee, Ihr Passwort in einer unverschlüsselten Textdatei irgendwo im Dateisystem zu speichern. Tun Sie dies auf Ihr eigenes Risiko. Belassen Sie Kermit so (Sie können es mit Ctrl z unterbrechen) und geben Sie als root ein: &prompt.root; slattach -h -c -s 115200 /dev/modem Wenn Sie mit ping Hosts auf der anderen Seite des Routers erreichen können, sind Sie verbunden! Wenn es nicht funktionieren sollte, können Sie versuchen statt als Argument für slattach zu verwenden. Beenden der Verbindung Um slattach zu beenden, geben Sie Folgendes ein: &prompt.root; kill -INT `cat /var/run/slattach.modem.pid` Beachten Sie, dass Sie root sein müssen, um dies durchführen zu können. Kehren Sie zu kermit zurück (mit Hilfe von fg, wenn Sie es unterbrochen haben) und beenden Sie dieses Programm (q). &man.slattach.8; gibt an, dass ifconfig sl0 down verwendet werden soll, um das Interface zu deaktivieren, doch das scheint keinen Unterschied zu machen. (ifconfig sl0 gibt dasselbe aus). Es kann vorkommen, dass Ihr Modem sich weigert, das Trägersignal zu beenden. In diesem Fall starten Sie kermit einfach neu und beenden es wieder. Beim zweiten Versuch geht es meist aus. Lösungen bei Problemen Wenn es nicht funktionieren sollte, können Sie an die Mailingliste &a.net.name; schreiben. Über diese Dinge sind Benutzer bisher gestolpert: Nicht oder in slattach verwenden (Das sollte nicht entscheidend sein, aber einige Benutzer haben berichtet, dass dies ihre Probleme löst). Verwendung von statt (bei einigen Schriftarten kann der Unterschied schwer zu erkennen sein). Probieren Sie ifconfig sl0, um den Status Ihrer Schnittstelle abzufragen. Das Ergebnis könnte beispielsweise so aussehen: &prompt.root; ifconfig sl0 sl0: flags=10<POINTOPOINT> inet 136.152.64.181 --> 136.152.64.1 netmask ffffff00 Wenn &man.ping.8; die Fehlermeldung no route to host ausgibt, kann die Routingtabelle falsch sein. Die Routen können Sie sich mit dem Kommando netstat -r ansehen: &prompt.root; netstat -r Routing tables Destination Gateway Flags Refs Use IfaceMTU Rtt Netmasks: (root node) (root node) Route Tree for Protocol Family inet: (root node) => default inr-3.Example.EDU UG 8 224515 sl0 - - localhost.Exampl localhost.Example. UH 5 42127 lo0 - 0.438 inr-3.Example.ED water.CS.Example.E UH 1 0 sl0 - - water.CS.Example localhost.Example. UGH 34 47641234 lo0 - 0.438 (root node) Die Zahlen im Beispiel stammen von einer recht ausgelasteten Maschine. Die Zahlen auf Ihrem System werden, je nach Netzaktivität, von den gezeigten abweichen. Einrichtung eines SLIP-Servers SLIP Server Dieses Dokument bietet Empfehlungen, wie Sie Ihr FreeBSD-System als SLIP-Server einrichten. Typischerweise bedeutet dies, Ihr System so zu, konfigurieren, dass beim Login automatisch eine Verbindung für entfernte SLIP-Clients aufgebaut wird. Voraussetzungen TCP/IP Netze Dieser Abschnitt ist ausgesprochen technischer Natur, weshalb Hintergrundwissen erforderlich ist. Wir gehen davon aus, dass Sie mit dem TCP/IP Protokoll, insbesondere mit Netzwerk- und Rechneradressierung, Netzwerkmasken, Subnetzen, Routing und Routingprotokollen, wie RIP, vertraut sind. Die Konfiguration von SLIP-Diensten auf einem Einwählserver erfordert die Kenntnis dieser Konzepte. Wenn Sie damit nicht vertraut sein sollten, lesen Sie bitte Craig Hunt's TCP/IP Network Administration publiziert von O'Reilly & Associates, Inc. (ISBN Nummer 0-937175-82-X) oder die Bücher von Douglas Comer über das TCP/IP Protokoll. Modem Wir gehen außerdem davon aus, dass Sie Ihr(e) Modem(s) eingerichtet haben und die entsprechenden Systemdateien so konfiguriert haben, dass Logins durch Ihr Modem zugelassen sind. Wenn Sie Ihr System dafür noch nicht vorbereitet haben, lesen Sie bitte , um Ihre Einwahlverbindung zu konfigurieren. Hilfreich sind auch die Manualpages &man.sio.4; mit Informationen zum Gerätetreiber der seriellen Schnittstelle &man.ttys.5;, sowie &man.gettytab.5;, &man.getty.8; und &man.init.8; für Informationen zur Konfiguration von Logins über ein Modem. &man.stty.1; bietet Informationen zur Einstellung der Parameter der seriellen Schnittstelle (etwa von clocal für direkt angeschlossene serielle Geräte). Ein kurzer Überblick Mit der normal verwendeten Konfiguration funktioniert der FreeBSD-SLIP-Server folgendermaßen: Ein SLIP-Benutzer wählt einen FreeBSD-SLIP-Server an und meldet sich mit einer speziellen SLIP-Login-ID ein, wobei /usr/sbin/sliplogin als Shell dieses besonderen Accounts dient. Das Programm sliplogin durchsucht die Datei /etc/sliphome/slip.hosts nach einer passenden Zeile für diesen Account. Falls ein Treffer erzielt wird, verbindet es den seriellen Anschluss mit einem verfügbaren SLIP-Interface und führt das Shellskript /etc/sliphome/slip.login aus, um das SLIP-Interface zu konfigurieren. Ein Beispiel für ein Login eines SLIP-Servers Wenn beispielsweise die Kennung eines SLIP-Benutzers, Shelmerg wäre, könnte der Eintrag des Benutzers Shelmerg in der Datei /etc/master.passwd etwa so aussehen: Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:/usr/users/Shelmerg:/usr/sbin/sliplogin Wenn sich Shelmerg anmeldet, wird sliplogin die Datei /etc/sliphome/slip.hosts nach einer übereinstimmenden Benutzerkennung durchsuchen. So könnte etwa folgende Zeile in /etc/sliphome/slip.hosts stehen: Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp sliplogin wird die passende Zeile finden, den seriellen Anschluss mit dem nächsten verfügbaren SLIP-Interface verbinden und dann /etc/sliphome/slip.login wie hier dargestellt ausführen: /etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp Wenn alles gut läuft, wird /etc/sliphome/slip.login ein ifconfig für das SLIP-Interface durchführen, mit dem sich sliplogin verbunden hat (in obigem Beispiel ist das slip 0, der als erster Parameter in der Liste an slip.login übergeben wurde), um die lokale IP-Adresse (dc-slip), die entfernte IP-Adresse (sl-helmer), die Netzmaske des SLIP-Interface (0xfffffc00) und alle zusätzlichen Optionen (autocomp) festzulegen. Wenn etwas schief laufen sollte, bietet, sliplogin normalerweise informative Meldungen durch den syslogd-Daemon, der die Meldungen standardmäßig nach /var/log/messages schreibt (sehen Sie hierzu auch in den Manual-Seiten für &man.syslogd.8; und &man.syslog.conf.5; nach). Überprüfen Sie auch /etc/syslog.conf, um zu sehen, was syslogd aufzeichnet und wo es aufgezeichnet wird. Kernelkonfiguration Kernel Konfiguration Der Standardkernel von &os; (GENERIC) bietet bereits SLIP-Unterstützung (&man.sl.4;). Falls Sie einen angepassten Kernel verwenden, müssen Sie sicherstellen, dass Ihre Kernelkonfigurationsdatei folgende Zeile enthält: device sl In der Voreinstellung leitet Ihr &os;-Rechner keine Pakete weiter. Wenn Sie Ihren FreeBSD-SLIP-Server als Router einsetzen möchten, müssen Sie die Datei /etc/rc.conf bearbeiten und den Wert der Variable gateway_enable auf setzen. Dadurch ist sichergestellt, dass die Routingoptionen auch nach einem Neustart erhalten bleiben. Um die Einstellungen sofort anzuwenden, führen Sie den folgenden Befehl als root-Benutzer aus: &prompt.root; /etc/rc.d/routing start Weitere Informationen zur Konfiguration Ihres Kernels, finden Sie in dieses Handbuches. Konfiguration des Sliplogin Wie bereits erwähnt, gibt es im Verzeichnis /etc/sliphome drei Dateien, die Teil der Konfiguration für /usr/sbin/sliplogin sind (sliplogin ist in &man.sliplogin.8; beschrieben): slip.hosts, definiert die SLIP-Benutzer sowie deren IP-Adresse; slip.login, womit normalerweise nur das SLIP-Interface konfiguriert wird und (optional) slip.logout, womit die Auswirkungen von slip.login rückgängig gemacht werden, wenn die serielle Verbindung beendet wird. Konfiguration der Datei <filename>slip.hosts</filename> /etc/sliphome/slip.hosts enthält Zeilen, die mindestens vier durch Leerzeichen getrennte Elemente enthalten: Login-Kennung des SLIP-Benutzers Lokale Adresse (lokal für den SLIP-Server) der SLIP-Verbindung Entfernte Adresse der SLIP-Verbindung Netzwerkmaske Die lokalen und entfernten Adressen können Hostnamen sein, deren zugehörige IP-Adresse durch die Datei /etc/hosts oder mithilfe des Domain Name Service aufgelöst wird. Wie die Adressen aufgelöst werden, hängt von den Einstellungen in /etc/nsswitch.conf ab. Die Netzwerkmaske kann ein Name sein, der durch eine Suche in /etc/networks aufgelöst werden kann. Auf einem Beispielsystem, würde die Datei /etc/sliphome/slip.hosts folgendermaßen aussehen: # # login local-addr remote-addr mask opt1 opt2 # (normal,compress,noicmp) # Shelmerg dc-slip sl-helmerg 0xfffffc00 autocomp Am Ende der Zeile stehen eine oder mehrere der folgenden Optionen. – keine Header-Kompression – Header werden komprimiert – Header werden komprimiert, sofern die Gegenstelle es erlaubt – ICMP-Pakete werden deaktiviert (ping Pakete werden unterdrückt, statt die Ihnen zur Verfügung stehende Bandbreite aufzubrauchen) SLIP TCP/IP Netze Die Auswahl von lokalen und entfernten Adressen für Ihre SLIP-Verbindung, hängt davon ab, ob Sie ein TCP/IP-Subnetz reservieren oder ob Sie proxy ARP auf Ihrem SLIP-Server verwenden (es handelt sich nicht um echtes proxy ARP, aber dieser Begriff wird in diesem Abschnitt verwendet, um diesen Sachverhalt zu beschreiben). Wenn Sie nicht sicher sind, welche Methode Sie wählen sollen oder wie IP-Adressen zugewiesen werden, lesen Sie bitte in den Büchern zum Thema TCP/IP nach, die als Voraussetzungen für SLIP () angegeben worden sind oder fragen Sie Ihren IP-Netzwerkadministrator. Wenn Sie für Ihre SLIP-Clients ein eigenes Subnetz verwenden, werden Sie die Nummer des Subnetzes aus der Ihnen zugewiesenen IP-Netzwerknummer zuteilen und die IP-Adressen Ihrer SLIP-Clients aus diesem Subnetz verwenden müssen. Dann können Sie eine statische Route zu Ihrem SLIP-Subnetz über Ihren SLIP-Server auf Ihren nächsten IP-Router konfigurieren. Ethernet Wenn Sie aber andererseits die proxy ARP Methode verwenden möchten, werden Sie die IP-Adressen Ihrer SLIP-Clients aus dem Subnetz Ihres SLIP-Server nehmen und die Skripte /etc/sliphome/slip.login /etc/sliphome/slip.logout anpassen müssen, damit diese &man.arp.8; zur Verwaltung der proxy ARP-Einträge in der ARP-Tabelle Ihres SLIP-Servers verwenden. Konfiguration von <filename>slip.login</filename> Eine typische Datei /etc/sliphome/slip.login sieht folgendermaßen aus: #!/bin/sh - # # @(#)slip.login 5.1 (Berkeley) 7/1/90 # # generic login file for a slip line. sliplogin invokes this with # the parameters: # 1 2 3 4 5 6 7-n # slipunit ttyspeed loginname local-addr remote-addr mask opt-args # /sbin/ifconfig sl$1 inet $4 $5 netmask $6 Diese slip.login Datei führt lediglich ifconfig für das entsprechende SLIP-Interface mit den lokalen und entfernten Adressen und der Netzwerkmaske des SLIP-Interface aus. Wenn Sie sich dafür entschieden haben, die proxy ARP Methode zu verwenden (statt eines separaten Subnetzes für Ihre SLIP-Clients) sollte Ihre Datei /etc/sliphome/slip.login etwa folgendermaßen aussehen: #!/bin/sh - # # @(#)slip.login 5.1 (Berkeley) 7/1/90 # # generic login file for a slip line. sliplogin invokes this with # the parameters: # 1 2 3 4 5 6 7-n # slipunit ttyspeed loginname local-addr remote-addr mask opt-args # /sbin/ifconfig sl$1 inet $4 $5 netmask $6 # Answer ARP requests for the SLIP client with our Ethernet addr /usr/sbin/arp -s $5 00:11:22:33:44:55 pub Die zusätzliche Zeile arp -s $5 00:11:22:33:44:55 pub in der Datei slip.login erzeugt einen ARP-Eintrag in der ARP-Tabelle des SLIP-Servers. Dieser ARP-Eintrag veranlasst den SLIP-Server mit seiner Ethernet MAC-Adresse zu antworten, sobald ein anderer IP-Knoten im Ethernet mit der IP-Adresse des SLIP-Clients Kontakt aufnehmen möchte. Ethernet MAC Adresse Wenn Sie das Beispiel von oben verwenden, achten Sie darauf die Ethernet MAC-Adresse (00:11:22:33:44:55) durch die MAC-Adresse der Ethernetkarte Ihres Systems zu ersetzen. Sonst wird Ihr proxy ARP sicher nicht funktionieren! Sie können die MAC-Adresse Ihres SLIP-Servers herausfinden, indem Sie sich die Ausgabe von netstat -i ansehen. Die zweite Zeile der Ausgabe sollte ungefähr aussehen wie diese hier: ed0 1500 <Link>0.2.c1.28.5f.4a 191923 0 129457 0 116 Dies zeigt an, dass die Ethernet MAC-Adresse dieses Systems 00:02:c1:28:5f:4a lautet. Die Punkte in der Ethernet MAC-Adresse, die von netstat -i ausgegeben wird, müssen durch Doppelpunkte ersetzt werden. Bei jeder einstelligen Hexadezimalzahl sollten außerdem führende Nullen hinzugefügt werden, um die Adresse in die Form zu bringen, die von &man.arp.8; verlangt wird. Die Manual-Seite von &man.arp.8; bietet hierzu eine vollständige Übersicht. Wenn Sie die Dateien /etc/sliphome/slip.login und /etc/sliphome/slip.logout erstellen, müssen diese ausführbar gemacht werden (chmod 755 /etc/sliphome/slip.login /etc/sliphome/slip.logout), da sliplogin auf deren Ausführbarkeit angewiesen ist. Konfiguration von <filename>slip.logout</filename> Die Datei/etc/sliphome/slip.logout ist nicht zwingend erforderlich (außer Sie verwenden proxy ARP), aber falls Sie diese Datei erzeugen möchten, ist hier ein Beispiel für ein grundlegendes slip.logout Skript: #!/bin/sh - # # slip.logout # # logout file for a slip line. sliplogin invokes this with # the parameters: # 1 2 3 4 5 6 7-n # slipunit ttyspeed loginname local-addr remote-addr mask opt-args # /sbin/ifconfig sl$1 down Wenn Sie proxy ARP einsetzen, muss /etc/sliphome/slip.logout den ARP-Eintrag für den SLIP-Client löschen: #!/bin/sh - # # @(#)slip.logout # # logout file for a slip line. sliplogin invokes this with # the parameters: # 1 2 3 4 5 6 7-n # slipunit ttyspeed loginname local-addr remote-addr mask opt-args # /sbin/ifconfig sl$1 down # Quit answering ARP requests for the SLIP client /usr/sbin/arp -d $5 arp -d $5 löscht den ARP-Eintrag, den die proxy ARP slip.login hinzufügte, als der SLIP-Client sich eingeloggt hatte. Es soll nochmals darauf hingewiesen werden, dass für die Datei /etc/sliphome/slip.logout das Ausführungs-Bit gesetzt werden muss, nachdem die Datei erstellt worden ist (z.B. chmod 755 /etc/sliphome/slip.logout). Überlegungen zum Routing SLIP Routing Wenn Sie nicht die proxy ARP Methode benutzen, um Datenpakete zwischen Ihren SLIP-Clients und dem Rest Ihres Netzwerkes (oder vielleicht dem Internet) zu routen, werden Sie wahrscheinlich statische Routen zu Ihrem nächsten Standardrouter hinzufügen müssen, um Pakete aus dem Subnetz Ihres SLIP-Clients über Ihren SLIP-Server weiterzuleiten. Statische Routen statische Routen Das Hinzufügen von statischen Routen zu Ihrem nächsten Standardrouter kann problematisch sein (oder unmöglich, wenn Sie nicht die erforderliche Berechtigung haben...). Wenn Sie in Ihrer Organisation ein Netzwerk mit mehreren Routern haben, müssen einige Router, wie etwa die von Cisco und Proteon hergestellten, nicht nur mit der statischen Route zum SLIP-Subnetz konfiguriert werden, sondern es muss ihnen auch mitgeteilt werden, über welche statischen Routen sie andere Router informieren sollen. Daher ist einiges an Fachwissen und Problemlösungskompetenz erforderlich, um auf statischen Routen basierendes Routing erfolgreich einzurichten. diff --git a/el_GR.ISO8859-7/books/handbook/boot/chapter.xml b/el_GR.ISO8859-7/books/handbook/boot/chapter.xml index 1eb393009f..87e1c0d1aa 100644 --- a/el_GR.ISO8859-7/books/handbook/boot/chapter.xml +++ b/el_GR.ISO8859-7/books/handbook/boot/chapter.xml @@ -1,1080 +1,1079 @@ Ç Äéáäéêáóßá Åêêßíçóçò ôïõ &os; Óýíïøç åêêßíçóç åêêßíçóç óõóôÞìáôïò booting bootstrap Ç äéáäéêáóßá ôçò åêêßíçóçò åíüò õðïëïãéóôÞ êáé öüñôùóçò ôïõ ëåéôïõñãéêïý óõóôÞìáôïò áíáöÝñåôáé ùò äéáäéêáóßá bootstrap, Þ áðëþò booting. Ç äéáäéêáóßá åêêßíçóçò ôïõ &os; ìðïñåß íá ðñïóáñìïóôåß ðïëý åýêïëá óôéò áðáéôÞóåéò óáò, åðéôñÝðïíôáò óÜò íá åðéëÝîåôå åßôå äéáöïñåôéêÜ ëåéôïõñãéêÜ óõóôÞìáôá ðïõ åßíáé åãêáôåóôçìÝíá óôïí ßäéï õðïëïãéóôÞ, Þ áêüìá êáé äéáöïñåôéêÝò åêäüóåéò ôïõ ßäéïõ ëåéôïõñãéêïý óõóôÞìáôüò Þ ôïõ åãêáôåóôçìÝíïõ ðõñÞíá. Ôï êåöÜëáéï áõôü ðåñéãñÜöåé ëåðôïìåñþò ôéò åðéëïãÝò ñõèìßóåùí ðïõ ìðïñåßôå íá êÜíåôå êáé ðùò íá öÝñåôå óôá ìÝôñá óáò ôç äéáäéêáóßá åêêßíçóçò ôïõ &os;. Ç äéáäéêáóßá åêêßíçóçò ðåñéëáìâÜíåé ïôéäÞðïôå óõìâáßíåé áðü ôçí åêêßíçóç ôïõ ðõñÞíá ôïõ &os;, ôçí áíß÷íåõóç ôùí óõóêåõþí, ìÝ÷ñé êáé ôçí åêêßíçóç ôçò &man.init.8;. Ç åêêßíçóç ôçò &man.init.8; óçìáôïäïôåßôáé áðü ôçí áëëáãÞ ÷ñþìáôïò ôïõ êåéìÝíïõ áðü öùôåéíü ëåõêü óå ãêñé. Áöïý äéáâÜóåôå áõôü ôï êåöÜëáéï, èá îÝñåôå: Ðïéá åßíáé ôá ôìÞìáôá ôïõ óõóôÞìáôïò åêêßíçóçò ôïõ &os;, êáé ðùò áëëçëåðéäñïýí ìåôáîý ôïõò. Ôéò åðéëïãÝò ðïõ ìðïñåßôå íá äþóåôå óôá ôìÞìáôá ôçò åêêßíçóçò ôïõ &os; ãéá íá åëÝãîåôå ôç äéáäéêáóßá åêêßíçóçò. Ôá âáóéêÜ ôïõ &man.device.hints.5;. Ìüíï ãéá õðïëïãéóôÝò áñ÷éôåêôïíéêÞò x86 Ôï êåöÜëáéï áõôü ðåñéãñÜöåé ôç äéáäéêáóßá åêêßíçóçò ôïõ &os; ìüíï óå óõóôÞìáôá áñ÷éôåêôïíéêÞò Intel x86. Ôï Ðñüâëçìá ôçò Åêêßíçóçò Ç åíåñãïðïßçóç åíüò õðïëïãéóôÞ êáé ç åêêßíçóç ôïõ ëåéôïõñãéêïý óõóôÞìáôïò, ìáò öÝñíåé áíôéìÝôùðïõò ìå Ýíá åíäéáöÝñïí äßëçììá. Åî' ïñéóìïý, ï õðïëïãéóôÞò äåí îÝñåé íá êÜíåé ôßðïôá ìÝ÷ñé ôçí åêêßíçóç ôïõ ëåéôïõñãéêïý óõóôÞìáôïò. Áõôü ðåñéëáìâÜíåé êáé ôçí åêôÝëåóç ðñïãñáììÜôùí áðü ôï äßóêï. ¸ôóé, áí ï õðïëïãéóôÞò äåí ìðïñåß íá åêôåëÝóåé ðñïãñÜììáôá áðü ôï äßóêï ÷ùñßò ôï ëåéôïõñãéêü óýóôçìá, áëëÜ êáé ôá ðñïãñÜììáôá ôïõ ëåéôïõñãéêïý óõóôÞìáôïò åßíáé åðßóçò óôï äßóêï, ðùò åßíáé äõíáôÞ ç åêêßíçóç ôïõ ëåéôïõñãéêïý; Ôï ðñüâëçìá ìïéÜæåé ìå áõôü óôï âéâëßï Ïé ÐåñéðÝôåéåò ôïõ Âáñþíïõ Ìéí÷Üïõæåí. ¸íáò ÷áñáêôÞñáò Ý÷åé ðÝóåé óå Ýíá ðçãÜäé, êáé âãáßíåé ðéÜíïíôáò êáé ôñáâþíôáò ôá êïñäüíéá ôïõ (bootstraps). Óôéò ðñþôåò ìÝñåò ôùí õðïëïãéóôþí, ÷ñçóéìïðïéïýíôáí ï üñïò bootstrap ãéá ôï ìç÷áíéóìü öüñôùóçò ôïõ ëåéôïõñãéêïý óõóôÞìáôïò, ôï ïðïßï óõíôïìåýôçêå óå booting. BIOS Basic Input/Output SystemBIOS Óôçí áñ÷éôåêôïíéêÞ x86, ôï Âáóéêü Óýóôçìá Åéóüäïõ Åîüäïõ (BIOS) åßíáé õðåýèõíï ãéá ôç öüñôùóç ôïõ ëåéôïõñãéêïý óõóôÞìáôïò. Ãéá íá ôï åðéôý÷åé áõôü, ôï BIOS áíé÷íåýåé ôï óêëçñü äßóêï ãéá ôçí ÊåíôñéêÞ ÅããñáöÞ Åêêßíçóçò (Master Boot Record, MBR), ç ïðïßá ðñÝðåé íá âñßóêåôáé óå óõãêåêñéìÝíï óçìåßï óôï äßóêï. Ôï BIOS ãíùñßæåé áñêåôÜ ãéá íá öïñôþóåé êáé íá åêôåëÝóåé ôï MBR, êáé õðïèÝôåé üôé ôï MBR ìðïñåß êáôüðéí íá åêôåëÝóåé ôçí õðüëïéðç äéáäéêáóßá öüñôùóçò ôïõ ëåéôïõñãéêïý óõóôÞìáôïò, åíäå÷ïìÝíùò êáé ìå ôç âïÞèåéá ôïõ BIOS. Master Boot Record (MBR) Boot Manager Boot Loader Ï êþäéêáò ìÝóá óôï MBR óõíÞèùò áíáöÝñåôáé ùò äéá÷åéñéóôÞò åêêßíçóçò (boot manager), åéäéêÜ üôáí áëëçëåðéäñÜ ìå ôï ÷ñÞóôç. Óôçí ðåñßðôùóç áõôÞ, ï äéá÷åéñéóôÞò åêêßíçóçò Ý÷åé óõíÞèùò ðåñéóóüôåñï êþäéêá óôçí ðñþôç ôñï÷éÜ (track) ôïõ äßóêïõ Þ ìÝóá óå êÜðïéï óýóôçìá áñ÷åßùí ôïõ ëåéôïõñãéêïý. (ÌåñéêÝò öïñÝò ï äéá÷åéñéóôÞò åêêßíçóçò áðïêáëåßôáé êáé öïñôùôÞò åêêßíçóçò (boot loader), áëëÜ óôï &os; ï üñïò áõôüò ÷ñçóéìïðïéåßôáé óå ìåôáãåíÝóôåñï óôÜäéï ôçò åêêßíçóçò.) Óôïõò äçìïöéëåßò äéá÷åéñéóôÝò åêêßíçóçò ðåñéëáìâÜíïíôáé ôï boot0 (ãíùóôü êáé ùò Boot Easy, ï óôÜíôáñ äéá÷åéñéóôÞò åêêßíçóçò ôïõ &os;), ôï Grub, ôï GAG, êáé ôï LILO. (Ìüíï ôï boot0 ÷ùñÜåé ìÝóá óôï MBR.) Áí Ý÷åôå åãêáôåóôçìÝíï Ýíá ìüíï ëåéôïõñãéêü óýóôçìá óôïõò äßóêïõò óáò, ôï ôõðïðïéçìÝíï MBR ãéá PC åßíáé åðáñêÝò. Áõôü ôï MBR øÜ÷íåé ãéá ôï ðñþôï åêêéíÞóéìï (Þ åíåñãü) äéáìÝñéóìá (slice) óôï äßóêï, êáé åêôåëåß ôïí êþäéêá ðïõ õðÜñ÷åé óå áõôü ãéá íá öïñôþóåé ôï õðüëïéðï ôïõ ëåéôïõñãéêïý óõóôÞìáôïò. ¸íá MBR áõôïý ôïõ ôýðïõ, åßíáé áõôü ðïõ åãêáèßóôáôáé áðü ðñïåðéëïãÞ ìå ôçí &man.fdisk.8;. Âáóßæåôáé óôï /boot/mbr. Áí Ý÷åôå åãêáôáóôÞóåé ðïëëáðëÜ ëåéôïõñãéêÜ óõóôÞìáôá óôïõò äßóêïõò óáò, ìðïñåßôå íá åãêáôáóôÞóåôå äéáöïñåôéêü äéá÷åéñéóôÞ åêêßíçóçò, êÜðïéïí ðïõ íá ìðïñåß íá äåßîåé ìéá ëßóôá ôùí äéáöïñåôéêþí óõóôçìÜôùí êáé íá óáò åðéôñÝøåé íá äéáëÝîåôå ðïéï íá îåêéíÞóåé. Óôï åðüìåíï ôìÞìá èá óõæçôÞóïõìå ãéá äýï áðü áõôïýò ôïõò äéá÷åéñéóôÝò åêêßíçóçò. Ôï õðüëïéðï ôïõ óõóôÞìáôïò åêêßíçóçò ôïõ &os; åßíáé ÷ùñéóìÝíï óå ôñßá óôÜäéá. Ôï ðñþôï óôÜäéï åêôåëåßôáé áðü ôï MBR, ôï ïðïßï ãíùñßæåé áðëþò üôé áðáéôåßôáé ãéá íá öÝñåé ôïí õðïëïãéóôÞ óå ìéá óõãêåêñéìÝíç êáôÜóôáóç êáé íá åêôåëÝóåé ôï äåýôåñï óôÜäéï. Ôï äåýôåñï óôÜäéï ìðïñåß íá êÜíåé ëßãá ðåñéóóüôåñá ðñÜãìáôá ðñéí ôçí åêôÝëåóç ôïõ ôñßôïõ óôáäßïõ. Ôï ôñßôï óôÜäéï ïëïêëçñþíåé ôç äéáäéêáóßá öüñôùóçò ôïõ ëåéôïõñãéêïý óõóôÞìáôïò. Ç åñãáóßá ãßíåôáé óå ôñßá óôÜäéá, ãéáôß ôï ðñüôõðï ôïõ PC åðéâÜëëåé ðåñéïñéóìïýò óôï ìÝãåèïò ôùí ðñïãñáììÜôùí ðïõ ìðïñïýí íá åêôåëåóôïýí óôá óôÜäéá Ýíá êáé äýï. Ç óõíÝíùóç áõôÞ ôùí åñãáóéþí åðéôñÝðåé óôï &os; íá ðáñÝ÷åé Ýíá ðéï åõÝëéêôï óýóôçìá öüñôùóçò. kernel init ¸ðåéôá îåêéíÜåé ï ðõñÞíáò êáé áñ÷ßæåé ôçí áíß÷íåõóç êáé áñ÷éêïðïßçóç ôùí óõóêåõþí þóôå íá ìðïñïýí íá ÷ñçóéìïðïéçèïýí. ÌÝôá ôçí ïëïêëÞñùóç ôçò äéáäéêáóßáò åêêßíçóçò ôïõ ðõñÞíá, ï Ýëåã÷ïò ðåñíÜåé óôç äéáäéêáóßá ÷ñÞóôç &man.init.8;, ç ïðïßá êáé åðéâåâáéþíåé üôé ïé äßóêïé åßíáé óå ëåéôïõñãéêÞ (÷ùñßò ëÜèç) êáôÜóôáóç. Ç &man.init.8; îåêéíÜåé Ýðåéôá ôçí ñýèìéóç ðüñùí (åðßðåäï ÷ñÞóôç), ìå ôçí ïðïßá ðñïóáñôþíôáé ôá óõóôÞìáôá áñ÷åßùí, ñõèìßæïíôáé ïé êÜñôåò äéêôýïõ ãéá åðéêïéíùíßá ìå ôï äßêôõï, êáé ãåíéêÜ åêêéíïýí üëåò ïé äéáäéêáóßåò ðïõ åêôåëïýíôáé ôõðéêÜ êáôÜ ôçí åêêßíçóç åíüò &os; óõóôÞìáôïò. Ï Äéá÷åéñéóôÞò Åêêßíçóçò êáé ôá ÓôÜäéá Åêêßíçóçò Boot Manager Ï Äéá÷åéñéóôÞò Åêêßíçóçò (boot manager) Master Boot Record (MBR) Ï êþäéêáò óôï MBR Þ äéá÷åéñéóôÞò åêêßíçóçò áíáöÝñåôáé ìåñéêÝò öïñÝò êáé ùò óôÜäéï ìçäÝí (stage zero) ôçò äéáäéêáóßáò åêêßíçóçò. Ôï ôìÞìá áõôü ðåñéãñÜöåé äýï áðü ôïõò äéá÷åéñéóôÝò åêêßíçóçò ðïõ áíáöÝñáìå ðñïçãïõìÝíùò: Ôï boot0 êáé ôï LILO. Ï Äéá÷åéñéóôÞò Åêêßíçóçò <application>boot0</application>: Ôï MBR ðïõ åãêáèßóôáôáé áðü ôï ðñüãñáììá åãêáôÜóôáóçò ôïõ &os; Þ ôï &man.boot0cfg.8;, âáóßæåôáé áðü ðñïåðéëïãÞ óôï /boot/boot0. (Ôï ðñüãñáììá boot0 åßíáé ðïëý áðëü, êáèþò ï êþäéêáò óôï MBR ìðïñåß íá Ý÷åé ìÝãåèïò ùò 446 bytes, åîáéôßáò ôïõ ðßíáêá êáôáôìÞóåùí (slice table) êáé ôïõ áíáãíùñéóôéêïý 0x55AA ðïõ âñßóêåôáé óôï ôÝëïò ôïõ MBR.) Áí Ý÷åôå åãêáôáóôÞóåé ôï boot0 êáé ðïëëáðëÜ ëåéôïõñãéêÜ óõóôÞìáôá óôïõò óêëçñïýò äßóêïõò óáò, èá äåßôå êáôÜ ôçí åêêßíçóç, ìéá ïèüíç ðáñüìïéá ìå ôçí ðáñáêÜôù: <filename>boot0</filename> Screenshot F1 DOS F2 FreeBSD F3 Linux F4 ?? F5 Drive 1 Default: F2 ¶ëëá ëåéôïõñãéêÜ óõóôÞìáôá, êáé åéäéêüôåñá ôá &windows;, åßíáé ãíùóôü üôé ãñÜöïõí ôï äéêü ôïõò MBR ðÜíù óå êÜðïéï Þäç õðÜñ÷ïí. Áí óáò óõìâåß áõôü, Þ áí èÝëåôå íá áíôéêáôáóôÞóåôå ôï õðÜñ÷ïí MBR óáò ìå áõôü ôïõ &os;, ÷ñçóéìïðïéÞóôå ôçí áêüëïõèç åíôïëÞ: &prompt.root; fdisk -B -b /boot/boot0 device üðïõ device åßíáé ç óõóêåõÞ áðü ôçí ïðïßá ãßíåôáé åêêßíçóç, üðùò ð.÷. ôï ad0 ãéá ôïí ðñþôï äßóêï IDE, ôï ad2 ãéá ôïí ðñþôï IDE äßóêï óôï äåõôåñåýïíôá åëåãêôÞ, ôï da0 ãéá ôïí ðñþôï SCSI äßóêï ê.ï.ê. Áí ðÜëé èÝëåôå ðñïóáñìïóìÝíç ñýèìéóç ôïõ MBR, ÷ñçóéìïðïéÞóôå ôï &man.boot0cfg.8;. Ï Äéá÷åéñéóôÞò Åêêßíçóçò LILO Ãéá íá åãêáôáóôÞóåôå áõôü ôï äéá÷åéñéóôÞ åêêßíçóçò þóôå íá ìðïñåß íá åêêéíåß ôï &os;, åãêáôáóôÞóôå ðñþôá ôï Linux êáé ðñïóèÝóôå ôçí áêüëïõèç êáôá÷þñçóç óôï õðÜñ÷ïí áñ÷åßï ñõèìßóåùí /etc/lilo.conf: other=/dev/hdXY table=/dev/hdX loader=/boot/chain.b label=FreeBSD Óôï ðáñáðÜíù, êáèïñßóôå ôï ðñùôåýïí äéáìÝñéóìá êáé ôï äßóêï ôïõ &os; áíôéêáèéóôþíôáò ôï X ìå ôï ãñÜììá äßóêïõ êáé ôï Y ìå ôïí áñéèìü ôïõ ðñùôåýïíôïò äéáìåñßóìáôïò, ÷ñçóéìïðïéþíôáò üìùò ôçí ïíïìáôïëïãßá ôïõ Linux. Áí ÷ñçóéìïðïéåßôå ïäçãü SCSI èá ÷ñåéáóôåß íá áëëÜîåôå ôï /dev/hd óå êÜôé áíôßóôïé÷ï ìå /dev/sd. Ç ãñáììÞ ìðïñåß íá ðáñáëåéöèåß áí Ý÷åôå êáé ôá äýï ëåéôïõñãéêÜ óõóôÞìáôá óôïí ßäéï äßóêï. ÅêôåëÝóôå ôþñá ôçí åíôïëÞ /sbin/lilo -v ãéá íá êáôá÷ùñÞóåôå ôéò íÝåò áëëáãÝò óáò óôï óýóôçìá. Ìðïñåßôå íá ôéò åðéâåâáéþóåôå åëÝã÷ïíôáò ôá ìçíýìáôá ðïõ èá åìöáíéóôïýí óôçí ïèüíç óáò. Ôï ÓôÜäéï ¸íá, <filename>/boot/boot1</filename>, êáé ôï ÓôÜäéï Äýï, <filename>/boot/boot2</filename> ÏõóéáóôéêÜ, ôï ðñþôï êáé äåýôåñï óôÜäéï åßíáé ôìÞìáôá ôïõ ßäéïõ ðñïãñÜììáôïò, óôçí ßäéá ðåñéï÷Þ ôïõ äßóêïõ. Ëüãù ðåñéïñéóìþí ÷þñïõ Ý÷ïõí ÷ùñéóôåß óå äýï, áëëÜ åãêáèßóôáíôáé ðÜíôá ìáæß. ÁíôéãñÜöïíôáé áðü ôï óõíäõáóìÝíï áñ÷åßï /boot/boot áðü ôï ðñüãñáììá åãêáôÜóôáóçò Þ ôï bsdlabel (äåßôå ðáñáêÜôù). Âñßóêïíôáé Ýîù áðü óõóôÞìáôá áñ÷åßùí, óôçí ðñþôç ôñï÷éÜ (track) ôïõ slice åêêßíçóçò, îåêéíþíôáò áðü ôïí ðñþôï ôïìÝá. Åßíáé ôï óçìåßï üðïõ ôï boot0, Þ ïðïéïóäÞðïôå Üëëïò äéá÷åéñéóôÞò åêêßíçóçò, áíáìÝíåé íá âñåé ðñüãñáììá ðñïò åêôÝëåóç ìå ôï ïðïßï èá óõíå÷éóôåß ç äéáäéêáóßá åêêßíçóçò. Ï áñéèìüò ôùí ôïìÝùí ðïõ ÷ñçóéìïðïéïýíôáé ìðïñåß íá âñåèåß åýêïëá áðü ôï ìÝãåèïò ôïõ áñ÷åßïõ /boot/boot. Ôï boot1 åßíáé ðïëý áðëü, ìéá êáé ìðïñåß íá åßíáé ìüíï 512 bytes óå ìÝãåèïò, êáé ãíùñßæåé üóá ÷ñåéÜæåôáé ãéá ôï bsdlabel ôïõ &os;, ôï ïðïßï áðïèçêåýåé ðëçñïöïñßåò ó÷åôéêÜ ìå ôï slice, þóôå íá âñåé êáé íá åêôåëÝóåé ôï boot2. Ôï boot2 åßíáé åëáöñÜ ðéï ðïëýðëïêï êáé êáôáíïåß åðáñêþò ôï óýóôçìá áñ÷åßùí ôïõ &os; þóôå íá ìðïñåß íá âñåé áñ÷åßá óå áõôü, êáé ìðïñåß åðßóçò íá ðáñÝ÷åé ìéá áðëÞ äéåðáöÞ ìå ôï ÷ñÞóôç þóôå íá ìðïñåß íá ãßíåé ç åðéëïãÞ ôïõ ðõñÞíá Þ ôïõ ðñïãñÜììáôïò öüñôùóçò ðïõ èá åêôåëåóôåß. Ôï boot2 óõíÞèùò åêôåëåß ôïí loader (öïñôùôÞò åêêßíçóçò) ï ïðïßïò åßíáé åîáéñåôéêÜ ðéï ðïëýðëïêïò, áëëÜ ðáñÝ÷åé Ýíá ùñáßï êáé åýêïëï ôñüðï ñýèìéóçò ôçò åêêßíçóçò. Ðáëéüôåñá ôï boot2 áíáëÜìâáíå íá öïñôþóåé áðåõèåßáò ôïí ðõñÞíá. Åéêüíá áðü ôï <filename>boot2</filename> >> FreeBSD/i386 BOOT Default: 0:ad(0,a)/boot/loader boot: Áí ÷ñåéáóôåß ðïôÝ íá áíôéêáôáóôÞóåôå ôá åãêáôåóôçìÝíá boot1 êáé boot2 ÷ñçóéìïðïéÞóôå ôï &man.bsdlabel.8;: &prompt.root; bsdlabel -B diskslice üðïõ ôï diskslice åßíáé ï äßóêïò êáé ôï slice áðü ôï ïðïßï ãßíåôáé ç åêêßíçóç, üðùò ð.÷. ad0s1 ãéá ôï ðñþôï slice óôïí ðñþôï IDE äßóêï. Åðéêßíäõíá ÁöïóéùìÝíç ÊáôÜóôáóç (Dangerously Dedicated Mode) Áí ÷ñçóéìïðïéÞóåôå ìüíï ôï üíïìá ôïõ äßóêïõ, üðùò ð.÷. ad0, óôçí åíôïëÞ &man.bsdlabel.8; èá äçìéïõñãÞóåôå Ýíá åðéêßíäõíá áöïóéùìÝíï äßóêï, ÷ùñßò slices. Åßíáé ó÷åäüí óßãïõñï üôé äåí èÝëåôå íá ôï êÜíåôå áõôü, ãé' áõôü óéãïõñåõôåßôå üôé åëÝãîáôå ôçí åíôïëÞ &man.bsdlabel.8; ðñéí ðéÝóåôå Return. ÓôÜäéï Ôñßá, <filename>/boot/loader</filename> boot-loader Ï loader, Þ öïñôùôÞò åêêßíçóçò, åßíáé ôï ôåëéêü óôÜäéï ôïõ óõóôÞìáôïò åêêßíçóçò ôñéþí óôáäßùí, êáé âñßóêåôáé óôï óýóôçìá áñ÷åßùí, óõíÞèùò ùò /boot/loader. Ðñïïñéóìüò ôïõ loader åßíáé íá ðáñÝ÷åé ìéá ìÝèïäï ñýèìéóçò öéëéêÞ ðñïò ôï ÷ñÞóôç, êáé ÷ñçóéìïðïéåß Ýíá åýêïëï óýíïëï åíôïëþí, ôï ïðïßï õðïóôçñßæåôáé áðü Ýíá éó÷õñü ìåôáöñáóôÞ åíôïëþí ìå Ýíá ðïëõðëïêüôåñï óýíïëï åíôïëþí. ÑïÞ ôïõ ÐñïãñÜììáôïò Loader ÊáôÜ ôçí áñ÷éêïðïßçóç, ï loader èá áíé÷íåýóåé ôçí êïíóüëá êáé ôïõò äßóêïõò êáé èá êáèïñßóåé áðü ðïéï äßóêï ãßíåôáé ç åêêßíçóç. Èá ñõèìßóåé êáôÜëëçëá ôéò áíôßóôïé÷åò ìåôáâëçôÝò êáé èá îåêéíÞóåé Ýíá ðñüãñáììá ìåôÜöñáóçò åíôïëþí (interpreter) óôï ïðïßï ìðïñåß ï ÷ñÞóôçò íá äßíåé åíôïëÝò, åßôå áðåõèåßáò, åßôå ìÝóù êÜðïéïõ script. loader loader configuration Ï loader êáôüðéí èá äéáâÜóåé ôï áñ÷åßï /boot/loader.rc, ôï ïðïßï ìå ôç óåéñÜ ôïõ äéáâÜæåé, áðü ðñïåðéëïãÞ, ôï /boot/defaults/loader.conf. ÌÝóá áðü ôï áñ÷åßï áõôü ôßèåíôáé ëïãéêÝò ðñïåðéëåãìÝíåò ôéìÝò ãéá êÜðïéåò ìåôáâëçôÝò. ¸ðåéôá, äéáâÜæåôáé ôï áñ÷åßï /boot/loader.conf ãéá ôõ÷üí ôïðéêÝò áëëáãÝò óôéò ìåôáâëçôÝò áõôÝò. Êáôüðéí ôï loader.rc ÷ñçóéìïðïéåß áõôÝò ôéò ìåôáâëçôÝò, öïñôþíïíôáò ôá áñèñþìáôá (modules) êáé ôïí ðõñÞíá ðïõ Ý÷åé åðéëåãåß. ÔåëéêÜ, ï loader, ðåñéìÝíåé 10 äåõôåñüëåðôá (ðñïåðéëåãìÝíï ÷ñïíéêü äéÜóôçìá) ãéá ôçí ðßåóç êÜðïéïõ ðëÞêôñïõ, êáé áí äåí õðÜñîåé ðáñÝìâáóç áðü ôïí ÷ñÞóôç, îåêéíÜåé ôïí ðõñÞíá. Áí ãßíåé ðáñÝìâáóç, åìöáíßæåôáé óôïí ÷ñÞóôç ìéá ðñïôñïðÞ ç ïðïßï êáôáíïåß ôï åýêïëï óýíïëï åíôïëþí ðïõ áíáöÝñáìå ðñïçãïõìÝíùò, êáé üðïõ ï ÷ñÞóôçò ìðïñåß íá ñõèìßóåé ìåôáâëçôÝò, íá áðïöïñôþóåé üëá ôá áñèñþìáôá, íá öïñôþóåé áñèñþìáôá êáé ôåëéêÜ íá ðñïâåß óå åêêßíçóç Þ åðáíåêêßíçóç. ÅíôïëÝò ÅíóùìáôùìÝíåò óôï Loader ÐáñáêÜôù èá äåßôå ôéò ðéï óõ÷íÜ ÷ñçóéìïðïéïýìåíåò åíôïëÝò ôïõ loader. Ãéá ðåñéóóüôåñåò ëåðôïìÝñåéåò ó÷åôéêÜ ìå üëåò ôéò äéáèÝóéìåò åíôïëÝò, ðáñáêáëïýìå íá äåßôå ôï &man.loader.8;. autoboot seconds Ðñï÷ùñÜ óôçí åêêßíçóç ôïõ ðõñÞíá, áí äåí õðÜñîåé ðáñÝìâáóç áðü ôï ÷ñÞóôç ìÝóá óôï êáèïñéóìÝíï ÷ñïíéêü äéÜóôçìá ðïõ äßíåôáé óå äåõôåñüëåðôá. Áðåéêïíßæåé áíôßóôñïöç ìÝôñçóç, êáé ï ðñïåðéëåãìÝíïò ÷ñüíïò åßíáé ôá 10 äåõôåñüëåðôá. boot -options kernelname Ðñï÷ùñÜåé Üìåóá óôçí åêêßíçóç ôïõ ðõñÞíá, ÷ñçóéìïðïéþíôáò üðïéåò ôõ÷üí åðéëïãÝò Ý÷ïõí äïèåß êáé ôï üíïìá ôïõ ðõñÞíá ðïõ èá åêôåëåóôåß áí Ý÷åé åðßóçò äïèåß. Ãéá íá äþóåôå äéáöïñåôéêü üíïìá ðõñÞíá óôçí ãñáììÞ åíôïëÞò, èá ðñÝðåé ðñþôá íá ÷ñçóéìïðïéÞóåôå ôçí åíôïëÞ unload. ÄéáöïñåôéêÜ, èá ÷ñçóéìïðïéçèåß ï ðõñÞíáò ðïõ Ý÷åé öïñôùèåß Þäç. boot-conf ÄéáôñÝ÷åé ôçí áõôüìáôç ñýèìéóç ôùí áñèñùìÜôùí (module) ðïõ âáóßæåôáé óå ìåôáâëçôÝò, ìå ôïí ßäéï ôñüðï ðïõ ãßíåôáé êáé óå êáíïíéêÞ åêêßíçóç. Áõôü Ý÷åé íüçìá ìüíï áí ÷ñçóéìïðïéÞóåôå ðñþôá ôï unload êáé áëëÜîåôå êÜðïéåò ìåôáâëçôÝò, óõíÞèùò ôï kernel. help topic Äåß÷íåé ìçíýìáôá âïÞèåéáò, ôá ïðïßá äéáâÜæïíôáé áðü ôï /boot/loader.help. Áí ôï topic (èÝìá) ðïõ äüèçêå åßíáé ç ëÝîç index, èá äåßôå ìéá ëßóôá ìå ôá äéáèÝóéìá èÝìáôá âïÞèåéáò. include filename ÅðåîåñãÜæåôáé ôï áñ÷åßï ìå ôï üíïìá áñ÷åßïõ ðïõ äüèçêå (filename). Ãßíåôáé áíÜãíùóç êáé ãñáììÞ ðñïò ãñáììÞ ìåôÜöñáóç ôïõ áñ÷åßïõ. Ç åíôïëÞ include óôáìáôÜåé Üìåóá áí åíôïðéóôåß êÜðïéï ëÜèïò. load type filename Öïñôþíåé ôïí ðõñÞíá, ôï Üñèñùìá ðõñÞíá Þ Ýíá áñ÷åßï ôïõ ôýðïõ ðïõ êáèïñßóôçêå, ìå âÜóç ôï üíïìá áñ÷åßïõ ðïõ äüèçêå. Áí ìåôÜ ôï üíïìá áñ÷åßïõ õðÜñ÷ïõí ðáñÜìåôñïé, ðåñíéïýíôáé ùò ðáñÜìåôñïé óôï áñ÷åßï ðïõ öïñôþíåôáé. ls path Äåß÷íåé Ýíá êáôÜëïãï ôùí áñ÷åßùí ôçò äéáäñïìÞò ðïõ äüèçêå, Þ áí äåí êáèïñßóôçêå äéáäñïìÞ, ôïõ ñéæéêïý êáôáëüãïõ. Áí äïèåß êáé ç åðéëïãÞ èá åìöáíßæïíôáé åðßóçò êáé ôá ìåãÝèç ôùí áñ÷åßùí. lsdev Åìöáíßæåé üëåò ôéò óõóêåõÝò áðü ôéò ïðïßåò åßíáé äõíáôÞ ç öüñôùóç áñèñùìÜôùí. Áí äïèåß ìå ôçí åðéëïãÞ , åìöáíßæïíôáé ðåñéóóüôåñåò ëåðôïìÝñåéåò. lsmod Åìöáíßæåé ôá áñèñþìáôá ðïõ Ý÷ïõí öïñôùèåß. Áí äïèåß ç åðéëïãÞ , åìöáíßæïíôáé ðåñéóóüôåñåò ëåðôïìÝñåéåò. more filename Åìöáíßæåé ôï áñ÷åßï ðïõ êáèïñßæåôáé, ìå ðáýóåéò êÜèå LINES áñéèìü ãñáììþí. reboot Åðáíåêêéíåß Üìåóá ôï óýóôçìá. set variable set variable=value Êáèïñßæåé ìåôáâëçôÝò ðåñéâÜëëïíôïò ãéá ôïí loader. unload Áðïöïñôþíåé üëá ôá áñèñþìáôá. Ðáñáäåßãìáôá ãéá ôïí Loader Åäþ èá âñåßôå ìåñéêÜ ðñáêôéêÜ ðáñáäåßãìáôá ó÷åôéêÜ ìå ôçí ÷ñÞóç ôïõ loader: - single-user mode Ãéá íá îåêéíÞóåôå ôï óõíçèéóìÝíï ðõñÞíá óáò, áëëÜ óå - êáôÜóôáóç åíüò ÷ñÞóôç: + êáôÜóôáóç åíüò ÷ñÞóôç:single-user mode boot -s Ãéá íá áðïöïñôþóåôå ôï óõíçèéóìÝíï ðõñÞíá óáò êáé íá öïñôþóåôå ôïí ðáëéü óáò (Þ êÜðïéï Üëëï): kernel.old unload load kernel.old Ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôï üíïìá kernel.GENERIC ãéá íá áíáöåñèåßôå óôïí áñ÷éêü (generic) ðõñÞíá ï ïðïßïò õðÜñ÷åé óôï CD ôçò åãêáôÜóôáóçò, Þ ôï kernel.old ãéá íá áíáöåñèåßôå óôïí ðõñÞíá ðïõ åß÷áôå åãêáôåóôçìÝíï ðñéí (ãéá ðáñÜäåéãìá, ôïí ðáëéü óáò ðõñÞíá áí êÜíáôå ðñüóöáôá ñýèìéóç êáé åãêáôÜóôáóç íÝïõ äéêïý óáò ðñïóáñìïóìÝíïõ ðõñÞíá). ×ñçóéìïðïéÞóôå ôï ðáñáêÜôù ãéá íá öïñôþóåôå ôá óõíçèéóìÝíá óáò áñèñþìáôá óå êÜðïéï Üëëï ðõñÞíá: unload set kernel="kernel.old" boot-conf Ãéá íá öïñôþóåôå Ýíá script ñýèìéóçò ðõñÞíá (Ýíá áõôïìáôïðïéçìÝíï ðñüãñáììá ôï ïðïßï åêôåëåß ôéò ëåéôïõñãßåò ðïõ êáíïíéêÜ èá êÜíáôå ìÝóù êÜðïéïõ ðñïãñÜììáôïò ñýèìéóçò ðõñÞíá êáôÜ ôçí åêêßíçóç): load -t userconfig_script /boot/kernel.conf Joseph J. Barbish ÓõíåéóöïñÜ áðü ôïí ÃñáöéêÞ Ïèüíç Åêêßíçóçò Ç ãñáöéêÞ ïèüíç åêêßíçóçò (splash screen) äçìéïõñãåß Ýíá ðéï åõ÷Üñéóôï ðåñéâÜëëïí óå ó÷Ýóç ìå ôçí áðëÞ áðåéêüíéóç ôùí ìçíõìÜôùí åêêßíçóçò óå ìïñöÞ êåéìÝíïõ. Ç ãñáöéêÞ ïèüíç åêêßíçóçò åìöáíßæåôáé ùò üôïõ ôï óýóôçìá öôÜóåé óôçí ðñïôñïðÞ åéóüäïõ (login), åßôå óôçí êïíóüëá, åßôå óôï ãñáöéêü ðåñéâÜëëïí. Ôï &os; äéáèÝôåé äýï âáóéêÜ ðåñéâÜëëïíôá. Ôï ðñþôï åßíáé ôï ðñïåðéëåãìÝíï ðåñéâÜëëïí êåéìÝíïõ ãñáììÞò åíôïëþí (êïíóüëá). ÌåôÜ ôï ôÝëïò ôçò åêêßíçóçò, åìöáíßæåôáé óôçí êïíóüëá ìéá ðñïôñïðÞ åéóüäïõ. Ôï äåýôåñï, åßíáé ôï ãñáöéêü ðåñéâÜëëïí ðïõ ðáñÝ÷åôáé áðü ôï óýóôçìá ×11. ÌåôÜ ôçí åãêáôÜóôáóç ôïõ X11 êáé åíüò áðü ôïõò ãñáöéêïýò äéá÷åéñéóôÝò ðáñáèýñùí Þ desktop, üðùò åßíáé ôá GNOME, KDE Þ XFce, ìðïñåßôå íá îåêéíÞóåôå ôï ãñáöéêü ðåñéâÜëëïí ìå ôçí åíôïëÞ startx. Ìåñéêïß ÷ñÞóôåò ðñïôéìïýí íá óõíäÝïíôáé óôï óýóôçìá ìÝóù ãñáöéêÞò ïèüíç åéóüäïõ, áíôß íá ÷ñçóéìïðïéïýí ôçí ðñïôñïðÞ åéóüäïõ ôçò êïíóüëáò. Ç äõíáôüôçôá áõôÞ ðáñÝ÷åôáé áðï äéá÷åéñéóôÝò ïèüíçò, üðùò ï XDM ãéá ôï &xorg;, o gdm ãéá ôï GNOME êáé ï kdm ãéá ôï KDE (êáèþò êáé Üëëïõò ðïõ äéáôßèåíôáé óôç ÓõëëïãÞ ôùí Ports). ÌåôÜ áðü ìéá åðéôõ÷çìÝíç åßóïäï, ðáñïõóéÜæåôáé Üìåóá óôï ÷ñÞóôç ôï ãñáöéêü ðåñéâÜëëïí ôçò åðéëïãÞò ôïõ. Óôï ðåñéâÜëëïí ôçò ãñáììÞò åíôïëþí, ç ãñáöéêÞ ïèüíç åêêßíçóçò èá áðïêñýøåé üëá ôá ìçíýìáôá áíß÷íåõóçò ôùí óõóêåõþí êáé õðçñåóéþí, ìÝ÷ñé ôçí åìöÜíéóç ôçò ðñïôñïðÞò åéóüäïõ. Ìå áðåõèåßáò åêêßíçóç óå ðåñéâÜëëïí X11, ç åìðåéñßá åêêßíçóçò èá åßíáé áêüìá ðéï êáèáñÞ, êáé èá ìïéÜæåé ðåñéóóüôåñï ìå ôçí áíôßóôïé÷ç óå Ýíá ðåñéâÜëëïí µsoft; &windows; Þ Üëëïõ ìç-UNIX óõóôÞìáôïò. Ëåéôïõñãßá ôçò ÃñáöéêÞò Ïèüíçò Åêêßíçóçò Ç ãñáöéêÞ ïèüíç åêêßíçóçò õðïóôçñßæåé åéêüíåò bitmap (.bmp), ZSoft PCX (.pcx) Þ TheDraw (.bin) 256 ÷ñùìÜôùí. Åðéðñüóèåôá, ïé åéêüíåò ðïõ ÷ñçóéìïðïéïýíôáé ðñÝðåé íá Ý÷ïõí áíÜëõóç 320x200 Þ ìéêñüôåñç ãéá íá ëåéôïõñãÞóïõí óå ôõðéêïýò ðñïóáñìïãåßò ïèüíçò VGA. Ãéá íá ÷ñçóéìïðïéÞóåôå ìåãáëýôåñåò åéêüíåò, ìÝ÷ñé ôçí ìÝãéóôç áíÜëõóç ôùí 1024x768 pixels, åíåñãïðïéÞóôå ôçí õðïóôÞñéîç VESA ðïõ ðåñéëáìâÜíåôáé óôï &os;. Ìðïñåßôå íá ôçí åíåñãïðïéÞóåôå öïñôþíïíôáò ôï Üñèñùìá VESA êáôÜ ôçí åêêßíçóç ôïõ óõóôÞìáôïò, ç ðñïóèÝôïíôáò ôçí åðéëïãÞ VESA óôï áñ÷åßï ñõèìßóåùí ôïõ ðõñÞíá, êáé äçìéïõñãþíôáò Ýíá íÝï ðñïóáñìïóìÝíï ðõñÞíá (). Ç õðïóôÞñéîç VESA äßíåé óôïõò ÷ñÞóôåò ôçí äõíáôüôçôá íá ÷ñçóéìïðïéÞóïõí ìéá åéêüíá ðïõ íá êáëýðôåé üëç ôçí ïèüíç. Ìðïñåßôå íá äåßôå ôá êáíïíéêÜ ìçíýìáôá åêêßíçóçò üóï åìöáíßæåôáé ç ãñáöéêÞ ïèüíç åêêßíçóçò, ðéÝæïíôáò áðëþò ïðïéïäÞðïôå ðëÞêôñï. Ç ïèüíç åêêßíçóçò ãßíåôáé åðßóçò ç ðñïåðéëåãìÝíç ðñïöýëáîç ïèüíçò, üóï ôï óýóôçìá ëåéôïõñãåß óå ðåñéâÜëëïí êïíóüëáò. ÌåôÜ áðü êÜðïéï ÷ñïíéêü äéÜóôçìá áäñÜíåéáò, ç ïèüíç áëëÜæåé, áðåéêïíßæïíôáò ôçí åéêüíá ðïõ ÷ñçóéìïðïéÞèçêå óôçí åêêßíçóç, ìå êõêëéêÞ åíáëëáãÞ ôçò öùôåéíüôçôáò áðü ðïëý öùôåéíÞ ùò ðïëý óêïôåéíÞ. Ìðïñåßôå íá áëëÜîåôå áõôÞ ôçí ðñïåðéëåãìÝíç ðñïöýëáîç ïèüíçò, ðñïóèÝôïíôáò ìéá ãñáììÞ saver= óôï áñ÷åßï /etc/rc.conf. Ãéá ôçí åðéëïãÞ saver=, õðÜñ÷ïõí áñêåôÝò åíóùìáôùìÝíåò ðñïöõëÜîåéò ïèüíçò ãéá íá åðéëÝîåôå. Ìðïñåßôå íá äåßôå ôçí ðëÞñç ëßóôá óôç óåëßäá manual ôïõ &man.splash.4;. Ç ðñïåðéëåãìÝíç ðñïöýëáîç ïèüíçò ïíïìÜæåôáé warp. Óçìåéþóôå üôé ç ðñïöýëáîç ïèüíçò ðïõ êáèïñßæåôáé óôï áñ÷åßï /etc/rc.conf ìÝóù ôçò åðéëïãÞò saver= Ý÷åé åðßäñáóç ìüíï óôéò åéêïíéêÝò êïíóüëåò. Äåí åðçñåÜæåé êáèüëïõ ôï ãñáöéêü ðåñéâÜëëïí X11. ÊÜðïéá ìçíýìáôá åêêßíçóçò åîáêïëïõèïýí íá åìöáíßæïíôáé, áêüìá êáé ìåôÜ ôçí åöáñìïãÞ ôçò ãñáöéêÞò ïèüíçò åêêßíçóçò. Ôá ìçíýìáôá áõôÜ ðåñéëáìâÜíïõí ôï ìåíïý åðéëïãþí åêêßíçóçò êáé ôçí áíôßóôñïöç ìÝôñçóç ÷ñüíïõ ðïõ ôï óõíïäåýåé. Ìðïñåßôå íá êáôåâÜóåôå õðïäåßãìáôá åéêüíùí ãéá ÷ñÞóç óôçí åêêßíçóç, áðü ôç óõëëïãÞ åéêüíùí óôçí ôïðïèåóßá http://artwork.freebsdgr.org. Áí åãêáôáóôÞóåôå ôï Port sysutils/bsd-splash-changer, èá Ý÷åôå ôõ÷áßá åíáëëáãÞ åéêüíùí (ðïõ èá åðéëÝãïíôáé áðü ìéá Ýôïéìç óõëëïãÞ) óå êÜèå åêêßíçóç ôïõ óõóôÞìáôïò. Åíåñãïðïßçóç ôçò ÃñáöéêÞò Ïèüíçò Åêêßíçóçò Ôï áñ÷åßï ðïõ èá ÷ñçóéìïðïéçèåß ãéá ôçí ãñáöéêÞ ïèüíç åêêßíçóçò (ôýðïõ .bmp, .pcx Þ .bin) èá ðñÝðåé íá ôïðïèåôçèåß óôçí ñéæéêÞ (root) êáôÜôìçóç, ãéá ðáñÜäåéãìá óôïí êáôÜëïãï /boot/. Ãéá ôçí ðñïåðéëåãìÝíç áíÜëõóç ïèüíçò (320x200 Þ ìéêñüôåñç, 256 ÷ñþìáôá), åðåîåñãáóôåßôå ôï áñ÷åßï /boot/loader.conf þóôå íá ðåñéÝ÷åé ôá ðáñáêÜôù: splash_bmp_load="YES" bitmap_load="YES" bitmap_name="/boot/splash.bmp" Ãéá ìåãáëýôåñåò áíáëýóåéò, ìÝ÷ñé ôçí ìÝãéóôç 1024x768, åðåîåñãáóôåßôå ôï áñ÷åßï /boot/loader.conf þóôå íá ðåñéÝ÷åé ôï ðáñáêÜôù: vesa_load="YES" splash_bmp_load="YES" bitmap_load="YES" bitmap_name="/boot/splash.bmp" Ôï ðáñáðÜíù õðïèÝôåé üôé èá ÷ñçóéìïðïéÞóåôå ôï áñ÷åßï /boot/splash.bmp ãéá ôçí ãñáöéêÞ ïèüíç åêêßíçóçò. Áí èÝëåôå íá ÷ñçóéìïðïéÞóåôå åéêüíá ôýðïõ PCX, ÷ñçóéìïðïéÞóôå ôéò ðáñáêÜôù åðéëïãÝò, êáèþò êáé ôçí åðéëïãÞ vesa_load="YES", áíÜëïãá ìå ôçí áíÜëõóç: splash_pcx_load="YES" bitmap_load="YES" bitmap_name="/boot/splash.pcx" Óôçí Ýêäïóç 8.3, ìéá áêüìá åðéëïãÞ åßíáé ç ÷ñÞóç ascii art óå ìïñöÞ The Draw. splash_txt="YES" bitmap_load="YES" bitmap_name="/boot/splash.bin" Ôï üíïìá áñ÷åßïõ äåí åßíáé áðáñáßôçôï íá åßíáé splash üðùò öáßíåôáé óôï ðáñáðÜíù ðáñÜäåéãìá. Ìðïñåß íá åßíáé ïôéäÞðïôå, áñêåß íá ðñüêåéôáé ãéá áñ÷åßï ôùí ôýðùí ðïõ áíáöÝñáìå ðáñáðÜíù, ãéá ðáñÜäåéãìá splash_640x400.bmp Þ blue_wave.pcx. ÐáñáêÜôù öáßíïíôáé ìåñéêÝò áêüìá åíäéáöÝñïõóåò åðéëïãÝò ðïõ ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå óôï /boot/loader.conf: beastie_disable="YES" Ç åðéëïãÞ áõôÞ êáôáñãåß ôçí åìöÜíéóç ôïõ ìåíïý åðéëïãþí åêêßíçóçò. ÐáñáìÝíåé ùóôüóï ç áíôßóôñïöç ìÝôñçóç ìå ôçí ðñïôñïðÞ åéóáãùãÞò åðéëïãþí åêêßíçóçò. Áêüìá êáé üôáí äåí åìöáíßæåôáé ôï ìåíïý åðéëïãþí, áí ï ÷ñÞóôçò êÜíåé ìéá åðéëïãÞ óôç äéÜñêåéá ôïõ ðñïåðéëåãìÝíïõ ÷ñüíïõ áíáìïíÞò, ç åðéëïãÞ áõôÞ èá éó÷ýóåé ãéá ôçí åêêßíçóç. loader_logo="beastie" Ç åðéëïãÞ áõôÞ áëëÜæåé ôï êåßìåíï &os; ðïõ åìöáíßæåôáé óôï äåîéü ìÝñïò ôïõ ìåíïý åðéëïãþí åêêßíçóçò, ìå Ýíá Ýã÷ñùìï ëïãüôõðï ôïõ beastie, üðùò åìöáíéæüôáí óôéò ðáëáéüôåñåò åêäüóåéò. Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò, ðáñáêáëïýìå áíáôñÝîôå óôéò óåëßäåò manual &man.splash.4;, &man.loader.conf.5; êáé &man.vga.4;. Áëëçëåðßäñáóç ìå ôïí ÐõñÞíá êáôÜ ôçí Åêêßíçóç kernel boot interaction Áðü ôç óôéãìÞ ðïõ ï ðõñÞíáò öïñôùèåß, åßôå ìÝóù ôïõ loader (üðùò óõíÞèùò) åßôå ìÝóù ôïõ boot2 (ðáñáêÜìðôïíôáò ôïí loader), åîåôÜæåé ôéò ðáñáìÝôñïõò åêêßíçóçò (boot flags), áí õðÜñ÷ïõí, êáé ðñïóáñìüæåé áíÜëïãá ôç óõìðåñéöïñÜ ôïõ. ÐáñÜìåôñïé Åêêßíçóçò ÐõñÞíá (Boot Flags) kernel bootflags ÐáñáêÜôù èá âñåßôå ôéò ðéï óõíçèéóìÝíåò ðáñáìÝôñïõò åêêßíçóçò: êáôÜ ôç äéÜñêåéá ôçò åêêßíçóçò, èá ãßíåé åñþôçóç ãéá ôçí óõóêåõÞ áðü ôçí ïðïßá èá ãßíåé ç ðñïóÜñôçóç ôïõ ñéæéêïý (root) óõóôÞìáôïò áñ÷åßùí. åêêßíçóç áðü ôï CDROM. åêôÝëåóç ôïõ UserConfig, ôïõ ðñïãñÜììáôïò ñýèìéóçò ðõñÞíá êáôÜ ôçí åêêßíçóç. åêêßíçóç óå êáôÜóôáóç ëåéôïõñãßáò åíüò ÷ñÞóôç (single user). åìöÜíéóç ðåñéóóüôåñùí ðëçñïöïñéþí êáôÜ ôç äéÜñêåéá åêêßíçóçò ôïõ ðõñÞíá. ÕðÜñ÷ïõí êáé Üëëåò ðáñÜìåôñïé åêêßíçóçò, äéáâÜóôå ôç óåëßäá &man.boot.8; ãéá ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìå áõôÝò. Tom Rhodes ÓõíåéóöïñÜ áðü ôïí Device Hints device.hints ÊáôÜ ôç äéÜñêåéá ôçò áñ÷éêÞò åêêßíçóçò ôïõ óõóôÞìáôïò, ôï ðñüãñáììá ôïõ boot &man.loader.8; äéáâÜæåé ôï áñ÷åßï &man.device.hints.5;. Ôï áñ÷åßï áõôü ðåñéÝ÷åé ðëçñïöïñßåò åêêßíçóçò ãéá ôïí ðõñÞíá, ãíùóôÝò ùò ìåôáâëçôÝò, ïé ïðïßåò ìåñéêÝò öïñÝò áíáöÝñïíôáé åðßóçò êáé ùò device hints. ÁõôÜ ôá device hints ÷ñçóéìïðïéïýíôáé áðü ðñïãñÜììáôá ïäÞãçóçò óõóêåõþí ãéá ñýèìéóç ôùí áíôßóôïé÷ùí óõóêåõþí. Ìðïñïýìå åðßóçò íá ïñßóïõìå Device hints óôçí ðñïôñïðÞ ôïõ Óôáäßïõ 3 ôïõ boot loader. Ïé ìåôáâëçôÝò ìðïñïýí íá ïñéóôïýí ìå ÷ñÞóç ôçò åíôïëÞò set, êáé íá áöáéñåèïýí ìå ôçí unset. Ìðïñïýìå åðßóçò íá ôéò åìöáíßóïõìå ìå ôçí åíôïëÞ show. Áêüìá, ìðïñïýìå åäþ íá ðáñáêÜìøïõìå êáé íá áëëÜîïõìå ôçí ôéìÞ ìåôáâëçôþí ðïõ Ý÷ïõí ïñéóôåß óôï áñ÷åßï /boot/device.hints. Ôá Device hints ðïõ ïñßæïõìå óôï boot loader äåí ðáñáìÝíïõí ìüíéìá êáé äåí èá éó÷ýóïõí óôçí åðüìåíç åêêßíçóç. ÌåôÜ ôçí åêêßíçóç ôïõ óõóôÞìáôïò, ìðïñåß íá ÷ñçóéìïðïéçèåß ç åíôïëÞ &man.kenv.1; ãéá íá åìöáíéóôïýí ïé ôéìÝò üëùí ôùí ìåôáâëçôþí. Ôï óõíôáêôéêü ôïõ áñ÷åßïõ /boot/device.hints åßíáé ìéá ìåôáâëçôÞ áíÜ ãñáììÞ, êáé ÷ñçóéìïðïéåßôáé ôï ôõðïðïéçìÝíï # ãéá ãñáììÝò ðïõ äçëþíïíôáé ùò ó÷üëéá. Ïé ãñáììÝò äçìéïõñãïýíôáé üðùò öáßíåôáé ðáñáêÜôù: hint.driver.unit.keyword="value" Ç óýíôáîç ãéá ôï ÓôÜäéï 3 ôïõ boot loader åßíáé: set hint.driver.unit.keyword=value üðïõ driver åßíáé ôï üíïìá ôïõ ïäçãïý óõóêåõÞò, unit åßíáé ï áñéèìüò ìïíÜäáò ôçò óõóêåõÞò, êáé keyword åßíáé ç ëÝîç-êëåéäß ãéá ôï óõãêåêñéìÝíï hint. Ç ëÝîç-êëåéäß ìðïñåß íá áðïôåëåßôáé áðü ôéò áêüëïõèåò åðéëïãÝò: at: êáèïñßæåé ôï äßáõëï (bus) óôïí ïðïßï ðñïóáñôÜôáé ç óõóêåõÞ. port: êáèïñßæåé ôçí áñ÷éêÞ äéåýèõíóç ôçò èýñáò I/O ðïõ èá ÷ñçóéìïðïéçèåß. irq: êáèïñßæåé ôïí áñéèìü ôçò áßôçóçò äéáêïðÞò (interrupt request) ðïõ èá ÷ñçóéìïðïéçèåß. drq: êáèïñßæåé ôïí áñéèìü ôïõ êáíáëéïý DMA. maddr: êáèïñßæåé ôç öõóéêÞ äéåýèõíóç ìíÞìçò ðïõ êáôáëáìâÜíåôáé áðü ôç óõóêåõÞ. flags: ïñßæåé äéÜöïñá bits ðáñáìÝôñùí ãéá ôçí óõóêåõÞ. disabled: Áí ïñéóôåß óå ôéìÞ 1, ç óõóêåõÞ áðåíåñãïðïéåßôáé. Ïé ïäçãïß óõóêåõþí ìðïñåß íá äÝ÷ïíôáé (Þ íá áðáéôïýí) ðåñéóóüôåñá hints ôá ïðïßá äåí öáßíïíôáé åäþ, êáé óáò óõíéóôïýìå íá äåßôå ôçí áíôßóôïé÷ç óåëßäá manual ôïõ êÜèå ïäçãïý. Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò óõìâïõëåõèåßôå åðßóçò ôéò óåëßäåò manual ôùí &man.device.hints.5;, &man.kenv.1;, &man.loader.conf.5;, êáé &man.loader.8;. Init: Áñ÷éêïðïßçóç ÅëÝã÷ïõ Äéáäéêáóéþí init Ìüëéò ïëïêëçñùèåß ç åêêßíçóç ôïõ ðõñÞíá, ï Ýëåã÷ïò ìåôáöÝñåôáé óôçí äéáäéêáóßá ÷ñÞóôç &man.init.8;, ç ïðïßá âñßóêåôáé óôï áñ÷åßï /sbin/init, Þ óôç äéáäñïìÞ ðïõ êáèïñßæåôáé óôçí ìåôáâëçôÞ init_path ôïõ loader. Áêïëïõèßá Áõôüìáôçò Åðáíåêêßíçóçò Ç áêïëïõèßá áõôüìáôçò åðáíåêêßíçóçò åîáóöáëßæåé üôé ôá óõóôÞìáôá áñ÷åßùí åßíáé óå êáíïíéêÞ, óôáèåñÞ êáôÜóôáóç. Áí äåí åßíáé, êáé ç &man.fsck.8; äåí ìðïñåß íá äéïñèþóåé ôá ðñïâëÞìáôá, ôüôå ç &man.init.8; èá ìåôáöÝñåé ôï óýóôçìá óå êáôÜóôáóç ëåéôïõñãßáò åíüò ÷ñÞóôç þóôå íá ìðïñÝóåé Üìåóá ï äéá÷åéñéóôÞò óõóôÞìáôïò íá åðéëçöèåß ôùí ðñïâëçìÜôùí áõôþí. ÊáôÜóôáóç Ëåéôïõñãßáò Åíüò ×ñÞóôç single-user mode console Ìðïñåßôå íá åéóÝëèåôå óôçí êáôÜóôáóç áõôÞ ìÝóù ôçò áêïëïõèßáò áõôüìáôçò åðáíåêêßíçóçò, Þ ìÝóù ôçò åðéëïãÞò êáôÜ ôçí åêêßíçóç Þ áêüìá êáé èÝôïíôáò ôç ìåôáâëçôÞ boot_single óôïí loader. Ìðïñåßôå åðßóçò íá åéóÝëèåôå óå áõôÞ åêôåëþíôáò ôçí åíôïëÞ &man.shutdown.8; ÷ùñßò ôçí åðéëïãÞ åðáíåêêßíçóçò () Þ ôåñìáôéóìïý (), åíþ åßóôå óå êáôÜóôáóç ëåéôïõñãßáò ðïëëþí ÷ñçóôþí (multi-user). Áí ç êïíóüëá ôïõ óõóôÞìáôïò Ý÷åé ôåèåß ùò insecure (áíáóöáëÞò) óôï /etc/ttys, ôï óýóôçìá èá æçôÞóåé ôïí êùäéêü ôïõ root ðñéí åéóÝëèåé óå êáôÜóôáóç ëåéôïõñãßáò åíüò ÷ñÞóôç. ÁíáóöáëÞò Êïíóüëá óôï <filename>/etc/ttys</filename> # name getty type status comments # # If console is marked "insecure", then init will ask for the root password # when going to single-user mode. console none unknown off insecure Ìéá insecure (áíáóöáëÞò) êïíóüëá óçìáßíåé üôé äåí èåùñåßôå áóöáëÞ ôçí êïíóüëá üóï áöïñÜ ôç öõóéêÞ ôçò ðñüóâáóç êáé èÝëåôå íá åßóôå âÝâáéïò üôé ìüíï üðïéïò ãíùñßæåé ôïí êùäéêü ôïõ root èá ìðïñåß íá ÷ñçóéìïðïéÞóåé ôç ëåéôïõñãßá åíüò ÷ñÞóôç. Ç åðéëïãÞ áõôÞ äåí óçìáßíåé üôé èÝëåôå ç êïíóüëá óáò íá ëåéôïõñãåß ÷ùñßò áóöÜëåéá. Áí èÝëåôå áóöÜëåéá, èá ðñÝðåé íá åðéëÝîåôå insecure, ü÷é secure. ÊáôÜóôáóç Ëåéôïõñãßá Ðïëëáðëþí ×ñçóôþí (multi-user) multi-user mode Áí ç &man.init.8; äåí âñåé ðñïâëÞìáôá óôá óõóôÞìáôá áñ÷åßùí óáò, Þ ìüëéò ï ÷ñÞóôçò ôåñìáôßóåé ôçí êáôÜóôáóç ëåéôïõñãßáò åíüò ÷ñÞóôç, ôï óýóôçìá åéóÝñ÷åôáé óå ëåéôïõñãßá ðïëëáðëþí ÷ñçóôþí, üðïõ êáé îåêéíÜ ðëÝïí ç ñýèìéóç ðüñùí (resources) ôïõ óõóôÞìáôïò. Ñýèìéóç Ðüñùí (rc) rc files Ôï óýóôçìá ñýèìéóçò ðüñùí, äéáâÜæåé ôéò ðñïåðéëåãìÝíåò åðéëïãÝò áðü ôï /etc/defaults/rc.conf, êáé åðéëïãÝò ãéá ôï óõãêåêñéìÝíï ìç÷Üíçìá áðü ôï /etc/rc.conf, êáé ðñï÷ùñåß óôçí ðñïóÜñôçóç ôùí óõóôçìÜôùí áñ÷åßùí ðïõ áíáãñÜöïíôáé óôï /etc/fstab, îåêéíÜ ôéò õðçñåóßåò äéêôýïõ, åêêéíåß äéÜöïñïõò äáßìïíåò, êáé ôÝëïò åêôåëåß ôá scripts åêêßíçóçò ôùí ôïðéêÜ åãêáôåóôçìÝíùí ðáêÝôùí (åöáñìïãþí). Ç óåëßäá manual &man.rc.8; ðáñÝ÷åé ìéá êáëÞ áíáöïñÜ óôï óýóôçìá ñýèìéóçò ðüñùí, êáèþò åîåôÜæåé ôá ßäéá ôá scripts åêêßíçóçò. Áêïëïõèßá Ôåñìáôéóìïý shutdown ÊáôÜ ôïí åëåã÷üìåíï ôåñìáôéóìü, ìÝóù ôçò &man.shutdown.8;, ç &man.init.8; èá áðïðåéñáèåß íá åêôåëÝóåé ôï script /etc/rc.shutdown, êáé áêïëïýèùò èá óôåßëåé óå üëåò ôéò äéåñãáóßåò ôï óÞìá TERM, êáé ôÝëïò ôï óÞìá KILL óå üðïéá äéåñãáóßá äåí ôåñìáôßóåé óå åýëïãï ÷ñïíéêü äéÜóôçìá. Ãéá íá ãßíåé êáé äéáêïðÞ ôçò ôñïöïäïóßáò óå Ýíá óýóôçìá &os; ìå áñ÷éôåêôïíéêÞ ðïõ õðïóôçñßæåé äéá÷åßñéóç åíÝñãåéáò, áðëþò ÷ñçóéìïðïéÞóôå ôçí åíôïëÞ shutdown -p now ãéá áðåíåñãïðïßçóç ìåôÜ ôïí ôåñìáôéóìü. Ãéá íá êÜíåôå áðëþò åðáíåêêßíçóç óå Ýíá óýóôçìá &os; ÷ñçóéìïðïéÞóôå ôçí åíôïëÞ shutdown -r now. Èá ðñÝðåé íá åßóôå root Þ ìÝëïò ôçò ïìÜäáò operator ãéá íá åêôåëÝóåôå ôçí &man.shutdown.8;. Ìðïñåßôå åðßóçò íá ÷ñçóéìïðïéÞóåôå ôéò åíôïëÝò &man.halt.8; êáé &man.reboot.8;, êïéôÜîôå ôéò áíôßóôïé÷åò óåëßäåò manual êáèþò êáé ôç óåëßäá manual ôçò &man.shutdown.8; ãéá ðåñéóóüôåñåò ðëçñïöïñßåò. Ç äéá÷åßñéóç åíÝñãåéáò áðáéôåß ôçí õðïóôÞñéîç ôïõ &man.acpi.4;, åßôå óôïí ðõñÞíá, åßôå öïñôùìÝíç ùò Üñèñùìá (module). diff --git a/el_GR.ISO8859-7/books/handbook/cutting-edge/chapter.xml b/el_GR.ISO8859-7/books/handbook/cutting-edge/chapter.xml index 80d9177061..ad53348eeb 100644 --- a/el_GR.ISO8859-7/books/handbook/cutting-edge/chapter.xml +++ b/el_GR.ISO8859-7/books/handbook/cutting-edge/chapter.xml @@ -1,3521 +1,3473 @@ Jim Mock ÁíáäïìÞèçêå, áíáäéïñãáíþèçêå, êáé ôìÞìáôá ôïõ áíáíåþèçêáí áðü ôïí Jordan Hubbard Áñ÷éêÞ óõíåéóöïñÜ áðü ôïõò Poul-Henning Kamp John Polstra Nik Clayton ÅíçìÝñùóç êáé ÁíáâÜèìéóç ôïõ &os; Óýíïøç Ôï &os; âñßóêåôáé õðü óõíå÷Þ åîÝëéîç ìåôáîý ôùí åðßóçìùí åêäüóåùí ôïõ. Ìåñéêïß Üíèñùðïé ðñïôéìïýí íá ÷ñçóéìïðïéïýí ôéò åðßóçìåò åêäüóåéò, åíþ Üëëïé ðñïôéìïýí íá êñáôïýí ôï óýóôçìá ôïõò åíçìåñùìÝíï ìå ôéò ôåëåõôáßåò åîåëßîåéò. Ùóôüóï, áêüìá êáé ïé åðßóçìåò åêäüóåéò åíçìåñþíïíôáé óõ÷íÜ ìå äéïñèþóåéò êñßóéìùí óöáëìÜôùí êáé áóöáëåßáò. ¼ðïéá Ýêäïóç êáé íá ÷ñçóéìïðïéÞóåôå, ôï &os; ðáñÝ÷åé üëá ôá áðáñáßôçôá åñãáëåßá ãéá íá êñáôÞóåôå ôï óýóôçìá óáò åíçìåñùìÝíï, êáé åðßóçò óáò åðéôñÝðåé íá áíáâáèìéóôåßôå åýêïëá óå êÜðïéá åðüìåíç Ýêäïóç. Ôï êåöÜëáéï áõôü èá óáò âïçèÞóåé íá áðïöáóßóåôå áí èÝëåôå íá ðáñáêïëïõèåßôå ôï óýóôçìá áíÜðôõîçò, Þ áí èá ðñïôéìÞóåôå íá ðáñáìåßíåôå óå ìéá áðü ôéò ðáãéùìÝíåò åêäüóåéò. Èá ðáñïõóéÜóïõìå åðßóçò ôá âáóéêÜ åñãáëåßá ðïõ áðáéôïýíôáé ãéá ôçí åíçìÝñùóç êáé áíáâÜèìéóç ôïõ óõóôÞìáôïò. Áöïý äéáâÜóåôå áõôü ôï êåöÜëáéï, èá îÝñåôå: Ðïéá âïçèçôéêÜ ðñïãñÜììáôá ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ãéá íá åíçìåñþóåôå ôï óýóôçìá êáé ôçí ÓõëëïãÞ ôùí Ports. Ðùò íá äéáôçñåßôå ôï óýóôçìá óáò åíçìåñùìÝíï ìå ôá ðñïãñÜììáôá freebsd-update CVSup, CVS, Þ CTM. Ðùò íá óõãêñßíåôå ôçí êáôÜóôáóç åíüò åãêáôåóôçìÝíïõ óõóôÞìáôïò, ìå áíáöïñÜ Ýíá ãíùóôü êáé åããõçìÝíá óùóôü óýóôçìá. Ðùò íá äéáôçñÞóåôå ôçí ôåêìçñßùóç óáò åíçìåñùìÝíç ìÝóù ôïõ CVSup Þ ôùí ports ôçò ôåêìçñßùóçò . Ôç äéáöïñÜ ìåôáîý ôùí äýï êëÜäùí ðïõ âñßóêïíôáé óå åîÝëéîç: ôïõ &os.stable; êáé ôïõ &os.current;. Ðùò íá îáíáöôéÜîåôå êáé íá åðáíåãêáôáóôÞóåôå ïëüêëçñï ôï âáóéêü óýóôçìá ìå ôçí make buildworld (êëð). Ðñéí äéáâÜóåôå áõôü ôï êåöÜëáéï, èá ðñÝðåé: Íá ñõèìßóåôå óùóôÜ ôç óýíäåóç óáò óôï äßêôõï (). Íá ãíùñßæåôå ðùò íá åãêáôáóôÞóåôå ðñüóèåôï ëïãéóìéêü ôñßôïõ êáôáóêåõáóôÞ (). Óôï êåöÜëáéï áõôü ãßíåôáé óõ÷íÜ ÷ñÞóç ôçò åíôïëÞò cvsup ãéá ôçí áíÜêôçóç Þ åíçìÝñùóç ôùí áñ÷åßùí ðçãáßïõ êþäéêá ôïõ &os;. Ãéá íá ôçí ÷ñçóéìïðïéÞóåôå, èá ðñÝðåé íá åãêáôáóôÞóåôå Ýíá ðáêÝôï Þ port üðùò ôï net/cvsup (áí äåí èÝëåôå íá åãêáôáóôÞóåôå ãñáöéêü ðñüãñáììá cvsup, ìðïñåßôå íá åãêáôáóôÞóåôå ôï port net/cvsup-without-gui). Ìðïñåßôå íá áíôéêáôáóôÞóåôå áõôÞ ôçí åíôïëÞ ìå ôçí &man.csup.1; ç ïðïßá áíÞêåé óôï âáóéêü óýóôçìá. Tom Rhodes ÃñÜöçêå áðü ôïí Colin Percival Âáóßóôçêå óå óçìåéþóåéò ðïõ ðáñåß÷å ï Åíçìåñþíïíôáò ôï &os; Updating and Upgrading FreeBSD freebsd-update updating-upgrading Ç åöáñìïãÞ åíçìåñþóåùí áóöáëåßáò áðïôåëåß Ýíá óçìáíôéêü ôìÞìá ôçò óõíôÞñçóçò ëïãéóìéêïý, åéäéêÜ üôáí ðñüêåéôáé ãéá ôï ëåéôïõñãéêü óýóôçìá. Ãéá ìåãÜëï äéÜóôçìá, ç äéáäéêáóßá áõôÞ äåí Þôáí åýêïëç óôï &os;. ¸ðñåðå íá åöáñìïóôïýí patches óôïí ðçãáßï êþäéêá, íá ãßíåé ìåôáãëþôôéóç ôïõ áðü ôçí áñ÷Þ, êáé íá åãêáôáóôáèïýí îáíÜ ôá íÝá åêôåëÝóéìá. Áõôü äåí åßíáé ðëÝïí áíáãêáßï, êáèþò ôï &os; äéáèÝôåé ôþñá Ýíá âïçèçôéêü ðñüãñáììá, ôï freebsd-update. Ôï ðñüãñáììá ðáñÝ÷åé äýï äéáöïñåôéêÝò ëåéôïõñãßåò. Ç ðñþôç åßíáé ç äõíáôüôçôá äõáäéêÞò (binary) åíçìÝñùóçò ôïõ âáóéêïý óõóôÞìáôïò ìå ôéò ôåëåõôáßåò äéïñèþóåéò áóöÜëåéáò êáé ëáèþí, ÷ùñßò íá ÷ñåéÜæåôáé îáíÜ ìåôáãëþôôéóç êáé åãêáôÜóôáóç. Ç äåýôåñç åßíáé ç äõíáôüôçôá áíáâÜèìéóçò ôïõ óõóôÞìáôïò óå ìéá íÝá ìéêñÞ Þ ìåãÜëç åðßóçìç Ýêäïóç (release). ÄõáäéêÝò äéïñèþóåéò ëáèþí êáé áóöÜëåéáò, äéáôßèåíôáé ãéá üëåò ôéò áñ÷éôåêôïíéêÝò êáé åêäüóåéò ðïõ õðïóôçñßæïíôáé áðü ôçí ïìÜäá áóöÜëåéáò. Ðñéí ðñï÷ùñÞóåôå óôçí áíáâÜèìéóç óå ìéá íÝá Ýêäïóç, èá ðñÝðåé íá äéáâÜóåôå ôéò ó÷åôéêÝò ìå áõôÞí áíáêïéíþóåéò, êáèþò ìðïñåß íá ðåñéÝ÷ïõí óçìáíôéêÝò ðëçñïöïñßåò. Ìðïñåßôå íá äåßôå ôéò áíáêïéíþóåéò åêäüóåùí óôçí ðáñáêÜôù ôïðïèåóßá: . Áí õðÜñ÷åé êÜðïéï crontab ðïõ ÷ñçóéìïðïéåß ôéò äõíáôüôçôåò ôïõ freebsd-update, èá ðñÝðåé íá áðåíåñãïðïéçèåß ðñéí îåêéíÞóåé ç ðáñáêÜôù äéáäéêáóßá. Ìðïñåßôå íá åãêáôáóôÞóåôå ôçí ôåëåõôáßá Ýêäïóç ôïõ freebsd-update êáôåâÜæïíôáò ôï óõìðéåóìÝíï ðáêÝôï áðü ôï ðáñáðÜíù URL êáé åêôåëþíôáò ôéò ðáñáêÜôù åíôïëÝò: &prompt.root; gunzip -c freebsd-update-upgrade.tgz | tar xvf - &prompt.root; mv freebsd-update.sh /usr/sbin/freebsd-update &prompt.root; mv freebsd-update.conf /etc Äåí áðáéôåßôáé íá êáôåâÜóåôå ôçí ôåëåõôáßá Ýêäïóç, áí ÷ñçóéìïðïéåßôå êÜðïéá áðü ôéò ôñÝ÷ïõóåò åêäüóåéò ôïõ &os;. Ôï Áñ÷åßï Ñõèìßóåùí ÊÜðïéïé ÷ñÞóôåò ßóùò èÝëïõí íá áëëÜîïõí ôï ðñïåðéëåãìÝíï áñ÷åßï ñõèìßóåùí /etc/freebsd-update.conf, þóôå íá Ý÷ïõí êáëýôåñï Ýëåã÷ï ôçò äéáäéêáóßáò. Ïé åðéëïãÝò åßíáé ãåíéêÜ áñêåôÜ êáëÜ ôåêìçñéùìÝíåò, áëëÜ ïé ðáñáêÜôù ßóùò íá ÷ñåéÜæïíôáé êÜðïéåò åðéðëÝïí åðåîçãÞóåéò: # Components of the base system which should be kept updated. Components src world kernel ÁõôÞ ç ðáñÜìåôñïò åëÝã÷åé ðïéá ôìÞìáôá ôïõ &os; èá äéáôçñïýíôáé åíçìåñùìÝíá. Ç ðñïåðéëïãÞ åßíáé íá åíçìåñþíåôáé ï ðçãáßïò êþäéêáò, üëï ôï âáóéêü óýóôçìá, êáé ï ðõñÞíáò. Ôá ôìÞìáôá åßíáé ôá ßäéá ðïõ äéáôßèåíôáé êáé êáôÜ ôçí åãêáôÜóôáóç, ãéá ðáñÜäåéãìá áí âÜëåôå ôçí åðéëïãÞ world/games èá åãêáèßóôáíôáé åíçìåñþóåéò ãéá ôá ðáé÷íßäéá. Áí âÜëåôå src/bin èá åðéôñÝøåôå ôçí åíçìÝñùóç ôïõ ðçãáßïõ êþäéêá ôïõ êáôáëüãïõ src/bin. Ç êáëýôåñç åðéëïãÞ åßíáé íá áöÞóåôå åäþ ôçí ðñïåðéëåãìÝíç ôéìÞ, êáèþò áí ôçí áëëÜîåôå þóôå íá ðåñéÝ÷åé óõãêåêñéìÝíá ìüíï ôìÞìáôá, èá áíáãêáóôåßôå íá áíáöÝñåôå ÷ùñéóôÜ ìÝóá óôï áñ÷åßï ñõèìßóåùí êÜèå ôìÞìá ðïõ èÝëåôå íá åíçìåñþíåôáé. Áõôü ßóùò Ý÷åé êáôáóôñïöéêÜ áðïôåëÝóìáôá, êáèþò åßíáé ðéèáíü ï ðçãáßïò êþäéêáò êáé ôá åêôåëÝóéìá ðñïãñÜììáôá íá ìçí åßíáé ðëÝïí óå óõã÷ñïíéóìü ìåôáîý ôïõò. # Paths which start with anything matching an entry in an IgnorePaths # statement will be ignored. IgnorePaths ÐñïóèÝóôå äéáäñïìÝò óå êáôáëüãïõò, üðùò /bin Þ /sbin ãéá íá áöÞóåôå áðåßñá÷ôïõò ôïõò óõãêåêñéìÝíïõò êáôáëüãïõò êáôÜ ôçí äéáäéêáóßá åíçìÝñùóçò. Ç åðéëïãÞ áõôÞ ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá íá áðïôñÝøåé ôï freebsd-update íá ãñÜøåé ðÜíù óå ðéèáíüí äéêÝò óáò ôïðéêÝò áëëáãÝò. # Paths which start with anything matching an entry in an UpdateIfUnmodified # statement will only be updated if the contents of the file have not been # modified by the user (unless changes are merged; see below). UpdateIfUnmodified /etc/ /var/ /root/ /.cshrc /.profile Ç åðéëïãÞ áõôÞ èá åíçìåñþóåé ôá áñ÷åßá ñõèìßóåùí óôïõò êáôáëüãïõò ðïõ êáèïñßæïíôáé, ìüíï áí áõôÜ äåí Ý÷ïõí ìåôáâëçèåß áðü ôï ÷ñÞóôç. Áí õðÜñ÷ïõí ôïðéêÝò áëëáãÝò, äåí èá ãßíåé åíçìÝñùóç. ÕðÜñ÷åé ìéá áêüìá åðéëïãÞ, ç KeepModifiedMetadata, ç ïðïßá ïäçãåß ôï freebsd-update íá áðïèçêåýóåé ôéò áëëáãÝò ìåôáîý ôùí äýï åêäüóåùí êáôÜ ôç äéÜñêåéá ôçò óõã÷þíåõóçò (merge). # When upgrading to a new &os; release, files which match MergeChanges # will have any local changes merged into the version from the new release. MergeChanges /etc/ /var/named/etc/ Ðñüêåéôáé ãéá ôç ëßóôá ôùí êáôáëüãùí ðïõ ðåñéÝ÷ïõí áñ÷åßá ñõèìßóåùí, êáé óôá ïðïßá ôï freebsd-update èá åðé÷åéñåß ôçí äéáäéêáóßá óõã÷þíåõóçò áëëáãþí. Ç äéáäéêáóßá óõã÷þíåõóçò ãßíåôáé ìå ìéá óåéñÜ áðü patches ôýðïõ &man.diff.1; ðáñüìïéá ìå ôï &man.mergemaster.8; áëëÜ ìå ëéãüôåñåò åðéëïãÝò. Ïé óõã÷ùíåýóåéò åßôå ãßíïíôáé äåêôÝò, åßôå ðñïêáëïýí ôï Üíïéãìá êÜðïéïõ óõíôÜêôç êåéìÝíïõ, äéáöïñåôéêÜ ç åêôÝëåóç ôïõ freebsd-update áêõñþíåôáé. Áí äåí åßóôå óßãïõñïò, êñáôÞóôå áíôßãñáöï áóöáëåßáò ôïõ êáôáëüãïõ /etc êáé áðëþò äå÷èåßôå ôéò áëëáãÝò. Äåßôå ôï ãéá ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôçí åíôïëÞ mergemaster. # Directory in which to store downloaded updates and temporary # files used by &os; Update. # WorkDir /var/db/freebsd-update Óôïí êáôÜëïãï áõôü öõëÜóóïíôáé üëá ôá patches êáé ôá ðñïóùñéíÜ áñ÷åßá. Óå ðåñéðôþóåéò üðïõ ï ÷ñÞóôçò åêôåëåß áíáâÜèìéóç óå ìéá íåüôåñç Ýêäïóç ôïõ &os;, èá ðñÝðåé íá äéáèÝôåé ôïõëÜ÷éóôïí Ýíá gigabyte åëåýèåñïõ ÷þñïõ. # When upgrading between releases, should the list of Components be # read strictly (StrictComponents yes) or merely as a list of components # which *might* be installed of which &os; Update should figure out # which actually are installed and upgrade those (StrictComponents no)? # StrictComponents no Áí èÝóåôå ôçí ðáñáðÜíù åðéëïãÞ óôï yes, ôï freebsd-update èá õðïèÝóåé üôé ç ëßóôá Components åßíáé ðëÞñçò êáé äåí èá åðé÷åéñÞóåé íá ðñï÷ùñÞóåé óå áëëáãÝò åêôüò ëßóôáò. ÏõóéáóôéêÜ, ôï freebsd-update èá ðñïóðáèÞóåé íá åíçìåñþóåé êÜèå áñ÷åßï ðïõ áíÞêåé óôç ëßóôá Components. Patches Ó÷åôéêÜ ìå ôçí ÁóöÜëåéá Ôá patches ðïõ ó÷åôßæïíôáé ìå ôçí áóöÜëåéá, áðïèçêåýïíôáé óå Ýíá áðïìáêñõóìÝíï ìç÷Üíçìá êáé ìðïñïýí íá ìåôáöïñôùèïýí êáé íá åãêáôáóôáèïýí ìå ôçí áêüëïõèç åíôïëÞ: &prompt.root; freebsd-update fetch &prompt.root; freebsd-update install Áí ìå ôçí ðáñáðÜíù åíôïëÞ åãêáôáóôáèïýí åíçìåñþóåéò óôïí ðõñÞíá, èá ÷ñåéáóôåß íá åðáíåêêéíÞóåôå ôï óýóôçìá. Áí üëá ðÜíå êáëÜ, ôï óýóôçìá èá åßíáé ðëÝïí åíçìåñùìÝíï êáé ìðïñåßôå íá åêôåëåßôå ôï freebsd-update áõôüìáôá ìå ôçí âïÞèåéá ôïõ &man.cron.8;. Ìéá áðëÞ êáôá÷þñéóç óôï áñ÷åßï /etc/crontab åßíáé åðáñêÞò ãéá áõôü ôï óêïðü: @daily root freebsd-update cron Ç ðáñáðÜíù êáôá÷þñéóç ïñßæåé üôé ôï freebsd-update èá åêôåëåßôáé ìéá öïñÜ ôçí çìÝñá. Ìå ôïí ôñüðï áõôü, êáé üôáí ç åêôÝëåóç åßíáé ìÝóù ôçò åðéëïãÞò , ôï freebsd-update áðëþò èá åëÝã÷åé ãéá åíçìåñþóåéò. Áí õðÜñ÷ïõí, ç åöáñìïãÞ èá ôéò êáôåâÜæåé, áëëÜ äåí èá ôéò åãêáèéóôÜ. Èá óôÝëíåé üìùò Ýíá email óôï ÷ñÞóôç root þóôå íá ôéò åãêáôáóôÞóåé ÷åéñïêßíçôá. Áí ïôéäÞðïôå ðÜåé óôñáâÜ, ôï freebsd-update Ý÷åé ôçí éêáíüôçôá íá åðéóôñÝöåé óôçí ðñïçãïýìåíç óôáèåñÞ êáôÜóôáóç, áíáéñþíôáò ôï ôåëåõôáßï óåô áëëáãþí ìå ôçí áêüëïõèç åíôïëÞ: &prompt.root; freebsd-update rollback Ìå ôçí ïëïêëÞñùóç ôçò åíôïëÞò, èá ðñÝðåé íá åðáíåêêéíÞóåôå ôï óýóôçìá áí Ý÷ïõí ãßíåé áëëáãÝò óôïí ðõñÞíá Þ óå êÜðïéï áðü ôá áñèñþìáôá ôïõ. Áõôü èá åðéôñÝøåé óôï &os; íá öïñôþóåé ôá íÝá åêôåëÝóéìá óôç ìíÞìç. Ôï âïçèçôéêü ðñüãñáììá freebsd-update ìðïñåß íá åíçìåñþóåé áõôüìáôá ìüíï ôïí ðõñÞíá GENERIC. Áí ÷ñçóéìïðïéåßôáé ðñïóáñìïóìÝíïò ðõñÞíáò, èá ðñÝðåé íá ìåôáãëùôôéóôåß îáíÜ, üôáí ôï freebsd-update ôåëåéþóåé ìå ôçí åãêáôÜóôáóç ôùí õðüëïéðùí åíçìåñþóåùí. Ùóôüóï, ôï freebsd-update èá áíé÷íåýóåé êáé èá åíçìåñþóåé ôïí ðõñÞíá GENERIC óôï /boot/GENERIC (áí õðÜñ÷åé), áêüìá êáé áí äåí åßíáé ï åíåñãüò ðõñÞíáò ôïõ óõóôÞìáôïò (áõôüò ðïõ åêôåëåßôáé ôç óõãêåêñéìÝíç óôéãìÞ). Åßíáé ãåíéêÜ êáëÞ éäÝá íá Ý÷åôå ðÜíôá Ýíá áíôßãñáöï ôïõ ðõñÞíá GENERIC óôïí êáôÜëïãï /boot/GENERIC. Èá óáò âïçèÞóåé óôçí äéÜãíùóç äéÜöïñùí ðñïâëçìÜôùí, êáèþò êáé óôçí áíáâÜèìéóç óå åðüìåíåò åêäüóåéò ôïõ &os;, ìÝóù ôïõ freebsd-update. Ç äéáäéêáóßá áõôÞ ðåñéãñÜöåôáé óôï . Áí äåí Ý÷ïõí ãßíåé áëëáãÝò óôéò ðñïåðéëåãìÝíåò ñõèìßóåéò óôï áñ÷åßï /etc/freebsd-update.conf, ôï freebsd-update èá åãêáôáóôÞóåé ôá áíáíåùìÝíá áñ÷åßá ðçãáßïõ êþäéêá ìáæß ìå ôéò õðüëïéðåò åíçìåñþóåéò. Ìðïñåßôå Ýðåéôá íá ðñï÷ùñÞóåôå óôç ìåôáãëþôôéóç êáé åãêáôÜóôáóç íÝïõ ðñïóáñìïóìÝíïõ ðõñÞíá, ìå ôï óõíÞèç ôñüðï. Ïé åíçìåñþóåéò ðïõ äéáíÝìïíôáé ìÝóù ôïõ freebsd-update äåí ðåñéëáìâÜíïõí ðÜíôïôå áëëáãÝò óôïí ðõñÞíá. Äåí åßíáé áðáñáßôçôï íá åðáíáìåôáãëùôôßóåôå ôïí ðñïóáñìïóìÝíï ðõñÞíá óáò, áí ç åêôÝëåóç ôïõ freebsd-update install äåí åðÝöåñå áëëáãÝò óôá áñ÷åßá ðçãáßïõ êþäéêá ôïõ ðõñÞíá. Ùóôüóï, ôï freebsd-update åíçìåñþíåé ðÜíôïôå ôï áñ÷åßï /usr/src/sys/conf/newvers.sh. Ôï áñ÷åßï áõôü ðåñéÝ÷åé ôï ôñÝ÷ïí åðßðåäï åíçìåñþóåùí (patch level) ôï ïðïßï êáé áíáöÝñåôáé ùò áñéèìüò -p áðü åíôïëÝò üðùò ç uname -r. Ìåôáãëùôôßæïíôáò îáíÜ ôïí ðñïóáñìïóìÝíï ðõñÞíá óáò (áêüìá êáé áí äåí õðÜñ÷ïõí Üëëåò áëëáãÝò) èá äþóåôå ôç äõíáôüôçôá óôçí &man.uname.1; íá áíáöÝñåé ìå áêñßâåéá ôï åðßðåäï åíçìåñþóåùí. Áõôü ìðïñåß íá åßíáé éäéáßôåñá ÷ñÞóéìï üôáí óõíôçñåßôå ðïëëáðëÜ óõóôÞìáôá, êáèþò óáò åðéôñÝðåé íá áîéïëïãÞóåôå ìå ìéá ìáôéÜ ôé åíçìåñþóåéò Ý÷ïõí åãêáôáóôáèåß óôï êáèÝíá. Áíáâáèìßóåéò óå ÌéêñÝò êáé ÌåãÜëåò Åêäüóåéò Ç äéáäéêáóßá áõôÞ èá áðïìáêñýíåé ôá ðáëéÜ áñ÷åßá áíôéêåéìåíéêïý êþäéêá (object files) êáèþò êáé ôéò ðáëéÝò âéâëéïèÞêåò, êÜíïíôáò ôéò ðåñéóóüôåñåò åöáñìïãÝò ôñßôùí êáôáóêåõáóôþí íá ìç ëåéôïõñãïýí. Óáò óõíéóôïýìå åßôå íá áðåãêáôáóôÞóåôå üëá ôá åãêáôåóôçìÝíá ports êáé íá ôá åãêáôáóôÞóåôå îáíÜ, Þ íá ôá áíáâáèìßóåôå áñãüôåñá, ÷ñçóéìïðïéþíôáò ôï âïçèçôéêü ðñüãñáììá ports-mgmt/portupgrade. Ïé ðåñéóóüôåñïé ÷ñÞóôåò èá èÝëïõí íá êÜíïõí ìéá äïêéìáóôéêÞ ìåôáãëþôôéóç ÷ñçóéìïðïéþíôáò ôçí áêüëïõèç åíôïëÞ: &prompt.root; portupgrade -af Ìå áõôü ôïí ôñüðï åîáóöáëßæåôáé üôé ôá ðÜíôá èá åðáíåãêáôáóôáèïýí óùóôÜ. Óçìåéþóôå üôé áí èÝóåôå ôçí ìåôáâëçôÞ ðåñéâÜëëïíôïò BATCH óôçí ôéìÞ yes, üëåò ïé ðéèáíÝò åñùôÞóåéò ðïõ èá åìöáíéóôïýí êáôÜ ôç äéáäéêáóßá, èá áðáíôçèïýí áõôüìáôá ìå yes. ¸ôóé äåí õðÜñ÷åé ðëÝïí áíÜãêç ãéá ðáñÝìâáóç ôïõ ÷ñÞóôç êáôÜ ôç äéÜñêåéá ôçò äéáäéêáóßáò ìåôáãëþôôéóçò. Áí ÷ñçóéìïðïéåßôáé ðñïóáñìïóìÝíïò ðõñÞíáò, ç äéáäéêáóßá áíáâÜèìéóçò åßíáé åëáöñÜ ðéï ðïëýðëïêç. Èá ÷ñåéáóôåßôå Ýíá áíôßãñáöï ôïõ ðõñÞíá GENERIC óôïí êáôÜëïãï /boot/GENERIC. Áí äåí õðÜñ÷åé Þäç ï ðõñÞíáò GENERIC óôï óýóôçìá óáò, ìðïñåßôå íá ôïí áíáêôÞóåôå ÷ñçóéìïðïéþíôáò ìéá áðü ôéò ðáñáêÜôù ìåèüäïõò: Áí Ý÷åôå ìåôáãëùôôßóåé ðñïóáñìïóìÝíï ðõñÞíá ìüíï ìéá öïñÜ, ï ðõñÞíáò óôïí êáôÜëïãï /boot/kernel.old åßíáé óôçí ðñáãìáôéêüôçôá ï GENERIC. Áðëþò ìåôïíïìÜóôå ôïí êáôÜëïãï óå /boot/GENERIC. Áí Ý÷åôå öõóéêÞ ðñüóâáóç óôï ìç÷Üíçìá, ìðïñåßôå íá åãêáôáóôÞóåôå Ýíá áíôßãñáöï ôïõ ðõñÞíá GENERIC áðü ôï CD-ROM ôçò åãêáôÜóôáóçò. ÔïðïèåôÞóôå ôï CD-ROM óôïí ïäçãü êáé ÷ñçóéìïðïéÞóôå ôéò ðáñáêÜôù åíôïëÝò: &prompt.root; mount /cdrom &prompt.root; cd /cdrom/X.Y-RELEASE/kernels &prompt.root; ./install.sh GENERIC ÁíôéêáôáóôÞóôå ôï X.Y-RELEASE ìå ôïõò ðñáãìáôéêïýò áñéèìïýò ôçò Ýêäïóçò ðïõ ÷ñçóéìïðïéåßôå. Ï ðõñÞíáò GENERIC èá åãêáôáóôáèåß áðü ðñïåðéëïãÞ óôïí êáôÜëïãï /boot/GENERIC. Áí äåí Ý÷åôå êÜðïéá áðü ôéò ðáñáðÜíù åðéëïãÝò, ìðïñåßôå íá ìåôáãëùôôßóåôå êáé íá åãêáôáóôÞóåôå ôïí ðõñÞíá GENERIC ìÝóù ôïõ ðçãáßïõ êþäéêá: &prompt.root; cd /usr/src/ &prompt.root; env DESTDIR=/boot/GENERIC make kernel &prompt.root; mv /boot/GENERIC/boot/kernel/* /boot/GENERIC &prompt.root; rm -rf /boot/GENERIC/boot Ãéá íá áíáãíùñéóôåß áõôüò ï ðõñÞíáò ùò GENERIC áðü ôï freebsd-update, äåí èá ðñÝðåé íá Ý÷ïõí ãßíåé áëëáãÝò óôï áñ÷åßï ñõèìßóåùí ôïõ GENERIC. Óõíßóôáôáé åðßóçò ç ìåôáãëþôôéóç íá ãßíåé ÷ùñßò Üëëåò åîåéäéêåõìÝíåò ñõèìßóåéò (êáôÜ ðñïôßìçóç ìå êåíü ôï /etc/make.conf). Äåí ÷ñåéÜæåôáé ôç äåäïìÝíç óôéãìÞ íá åðáíåêêéíÞóåôå ìå ôïí ðõñÞíá GENERIC. Åßíáé äõíáôÝò ïé áíáâáèìßóåéò ôüóï óå ìéêñÝò üóï êáé óå ìåãÜëåò åêäüóåéò, äßíïíôáò óôçí åíôïëÞ freebsd-update ôïí åðéèõìçôü áñéèìü Ýêäïóçò. Ãéá ðáñÜäåéãìá, ç áêüëïõèç åíôïëÞ èá áíáâáèìßóåé ôï óýóôçìá óå &os; 8.1: &prompt.root; freebsd-update -r 8.1-RELEASE upgrade ÌåôÜ ôç ëÞøç ôçò åíôïëÞò, ôï freebsd-update èá áîéïëïãÞóåé ôçí êáôÜóôáóç ôïõ óõóôÞìáôïò êáé ôïõ áñ÷åßïõ ñõèìßóåùí ôïõ, óå ìéá áðüðåéñá íá ìáæÝøåé ôéò áðáñáßôçôåò ðëçñïöïñßåò ãéá ôçí áíáâÜèìéóç ôïõ óõóôÞìáôïò. Ïé ðëçñïöïñßåò ðïõ áíé÷íåýèçêáí èá åìöáíéóôïýí óôçí ïèüíç ìå ôç ìïñöÞ ìéáò ëßóôáò åãêáôåóôçìÝíùí ðñïãñáììÜôùí. Ãéá ðáñÜäåéãìá: Looking up update.FreeBSD.org mirrors... 1 mirrors found. Fetching metadata signature for 8.0-RELEASE from update1.FreeBSD.org... done. Fetching metadata index... done. Inspecting system... done. The following components of FreeBSD seem to be installed: kernel/smp src/base src/bin src/contrib src/crypto src/etc src/games src/gnu src/include src/krb5 src/lib src/libexec src/release src/rescue src/sbin src/secure src/share src/sys src/tools src/ubin src/usbin world/base world/info world/lib32 world/manpages The following components of FreeBSD do not seem to be installed: kernel/generic world/catpages world/dict world/doc world/games world/proflibs Does this look reasonable (y/n)? y Óôï óçìåßï áõôü, ôï freebsd-update èá êáôåâÜóåé üëá ôá áñ÷åßá ðïõ áðáéôïýíôáé ãéá ôçí áíáâÜèìéóç. Óå ìåñéêÝò ðåñéðôþóåéò, ï ÷ñÞóôçò èá êëçèåß íá áðáíôÞóåé óå åñùôÞóåéò ó÷åôéêÜ ìå ôï ôé èá åãêáôáóôáèåß Þ ðùò ðñÝðåé íá ðñï÷ùñÞóåé ç äéáäéêáóßá. ¼ôáí ÷ñçóéìïðïéåßôáé ðñïóáñìïóìÝíïò ðõñÞíáò, ôï ðáñáðÜíù âÞìá èá ðñïêáëÝóåé ôçí åìöÜíéóç ôçò ðáñáêÜôù ðñïåéäïðïßçóçò: WARNING: This system is running a "MYKERNEL" kernel, which is not a kernel configuration distributed as part of FreeBSD 8.0-RELEASE. This kernel will not be updated: you MUST update the kernel manually before running "/usr/sbin/freebsd-update install" Ìðïñåßôå íá áãíïÞóåôå áõôÞ ôçí ðñïåéäïðïßçóç. Èá ÷ñçóéìïðïéÞóïõìå ôïí åíçìåñùìÝíï ðõñÞíá GENERIC ùò åíäéÜìåóï âÞìá óôç äéáäéêáóßá áíáâÜèìéóçò. Áöïý ìåôáöïñôùèïýí üëá ôá patches óôï ôïðéêü óýóôçìá, èá ãßíåé êáé ç åöáñìïãÞ ôïõò. Ç äéáäéêáóßá áõôÞ ßóùò ðÜñåé ëßãï ÷ñüíï, áíÜëïãá ìå ôçí ôá÷ýôçôá êáé ôï öïñôßï ôïõ ìç÷áíÞìáôïò. ¸ðåéôá èá ãßíåé ç óõã÷þíåõóç ôùí áñ÷åßùí ñõèìßóåùí. Áõôü ôï ìÝñïò ôçò äéáäéêáóßáò áðáéôåß ðáñÝìâáóç ôïõ ÷ñÞóôç, êáèþò óå êÜðïéá áñ÷åßá èá ÷ñåéáóôåß ç óõã÷þíåõóç íá ãßíåé ÷åéñïêßíçôá ìå ôç âïÞèåéá êÜðïéïõ óõíôÜêôç êåéìÝíïõ. Ï ÷ñÞóôçò èá åíçìåñþíåôáé ãéá ôï áðïôÝëåóìá êÜèå åðéôõ÷çìÝíçò óõã÷þíåõóçò êáèþò åîåëßóóåôáé ç äéáäéêáóßá. Óå ðåñßðôùóç áðïôõ÷çìÝíçò óõã÷þíåõóçò (Þ áãíüçóçò ôçò), ç äéáäéêáóßá áíáâÜèìéóçò èá äéáêïðåß. Åíäå÷ïìÝíùò íá èÝëåôå íá êñáôÞóåôå áíôßãñáöï áóöáëåßáò ôïõ êáôáëüãïõ /etc êáé íá óõã÷ùíåýóåôå áñãüôåñá (÷åéñïêßíçôá) êÜðïéá óçìáíôéêÜ áñ÷åßá, üðùò ôï master.passwd Þ ôï group. Óôï óçìåßï áõôü äåí Ý÷åé ãßíåé áêüìá êáìéÜ áëëáãÞ óôï óýóôçìá, êáèþò üëç ç äéáäéêáóßá ôçò áíáâÜèìéóçò êáé óõã÷þíåõóçò ãßíåôáé óå äéáöïñåôéêü êáôÜëïãï. ¼ôáí åöáñìïóôïýí åðéôõ÷þò üëá ôá patches êáé ïëïêëçñùèåß ìå åðéôõ÷ßá ç äéáäéêáóßá ôçò óõã÷þíåõóçò üëùí ôùí áñ÷åßùí ñýèìéóçò, ï ÷ñÞóôçò èá ðñÝðåé íá åðéâåâáéþóåé ôçí ôåëéêÞ åãêáôÜóôáóç. Ìå ôï ôÝëïò áõôÞò ôç äéáäéêáóßáò, ç áíáâÜèìéóç ìðïñåß íá ïñéóôéêïðïéçèåß óôï äßóêï, ìå ôç ÷ñÞóç ôçò áêüëïõèçò åíôïëÞò: &prompt.root; freebsd-update install Óôçí ðñþôç öÜóç, èá áëëá÷èåß ï ðõñÞíáò êáé ôá ó÷åôéêÜ áñèñþìáôá. Óôï óçìåßï áõôü, èá ðñÝðåé íá ãßíåé åðáíåêêßíçóç ôïõ ìç÷áíÞìáôïò. Óå ìç÷Üíçìá ìå ðñïóáñìïóìÝíï ðõñÞíá, ÷ñçóéìïðïéÞóôå ôçí åíôïëÞ &man.nextboot.8; þóôå íá èÝóåôå ôïí ðõñÞíá ãéá ôçí åðüìåíç åêêßíçóç óôïí /boot/GENERIC (ï ïðïßïò Ý÷åé Þäç áíáâáèìéóôåß): &prompt.root; nextboot -k GENERIC Ðñéí åðáíåêêéíÞóåôå ìå ôïí ðõñÞíá GENERIC, âåâáéùèåßôå üôé ðåñéÝ÷åé üëá ôá ðñïãñÜììáôá ïäÞãçóçò ðïõ áðáéôïýíôáé ãéá ôçí åðéôõ÷Þ åêêßíçóç ôïõ óõóôÞìáôïò óáò (êáé ôç ëåéôïõñãßá ôïõ äéêôýïõ, áí áíáâáèìßæåôå êÜðïéï áðïìáêñõóìÝíï ìç÷Üíçìá). Åéäéêüôåñá, áí ï ðñïçãïýìåíïò ðñïóáñìïóìÝíïò ðõñÞíáò ðåñéåß÷å ëåéôïõñãßåò ðïõ óõíÞèùò ðáñÝ÷ïíôáé áðü áñèñþìáôá (modules), âåâáéùèåßôå üôé öñïíôßóáôå íá öïñôùèïýí ðñïóùñéíÜ óôïí ðõñÞíá GENERIC ÷ñçóéìïðïéþíôáò ôéò äõíáôüôçôåò ôïõ áñ÷åßïõ /boot/loader.conf. ºóùò åðßóçò íá èÝëåôå íá áðåíåñãïðïéÞóåôå õðçñåóßåò, ðñïóáñôÞóåéò äßóêùí êáé äéêôýïõ ê.ë.ð. ðïõ äåí åßíáé áðáñáßôçôåò, ìÝ÷ñé ôçí ïëïêëÞñùóç ôçò äéáäéêáóßáò áíáâÜèìéóçò. Ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôçí áêüëïõèç åíôïëÞ ãéá íá åðáíåêêéíÞóåôå ôï ìç÷Üíçìá ìå ôïí íÝï ðõñÞíá: &prompt.root; shutdown -r now Ìüëéò ôï óýóôçìá åðáíÝëèåé óå ëåéôïõñãßá, èá ðñÝðåé íá åêôåëÝóåôå îáíÜ ôï freebsd-update. Ç ðñïçãïýìåíç ëåéôïõñãßá Ý÷åé áðïèçêåõèåß, êáé Ýôóé ôï freebsd-update äåí èá îåêéíÞóåé áðü ôçí áñ÷Þ, áëëÜ èá áðïìáêñýíåé üëåò ôéò ðáëéÝò êïéíü÷ñçóôåò âéâëéïèÞêåò êáé ôá áñ÷åßá áíôéêåéìåíéêïý êþäéêá. Ãéá íá óõíå÷ßóåôå óå áõôü ôï óôÜäéï, äþóôå ôçí áêüëïõèç åíôïëÞ: &prompt.root; freebsd-update install ÁíÜëïãá ìå ôï áí õðÞñîáí áëëáãÝò óôïõò áñéèìïýò åêäüóåùí ôùí âéâëéïèçêþí, ßóùò íá õðÜñ÷ïõí ìüíï äýï öÜóåéò åãêáôÜóôáóçò áíôß ãéá ôñåéò. ¼ëï ôï ëïãéóìéêü ôñßôïõ êáôáóêåõáóôÞ èá ðñÝðåé ôþñá íá ìåôáãëùôôéóôåß êáé íá åðáíåãêáôáóôáèåß áðü ôçí áñ÷Þ. Áõôü áðáéôåßôáé êáèþò ôï åãêáôåóôçìÝíï ëïãéóìéêü ßóùò åîáñôÜôáé áðü âéâëéïèÞêåò ïé ïðïßåò áöáéñÝèçêáí êáôÜ ôç äéáäéêáóßá ôçò áíáâÜèìéóçò. Ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôçí åíôïëÞ ports-mgmt/portupgrade ãéá íá áõôïìáôïðïéÞóåôå áõôÞ ôç äéáäéêáóßá. Ãéá íá îåêéíÞóåôå, äþóôå ôéò ðáñáêÜôù åíôïëÝò: &prompt.root; portupgrade -f ruby &prompt.root; rm /var/db/pkg/pkgdb.db &prompt.root; portupgrade -f ruby18-bdb &prompt.root; rm /var/db/pkg/pkgdb.db /usr/ports/INDEX-*.db &prompt.root; portupgrade -af Ìüëéò ïëïêëçñùèåß ôï ðáñáðÜíù, ïëïêëçñþóôå ôç äéáäéêáóßá áíáâÜèìéóçò ìå ìéá ôåëåõôáßá êëÞóç ôçò åíôïëÞò freebsd-update. Äþóôå ôçí ðáñáêÜôù åíôïëÞ ãéá íá ïëïêëçñþóåôå ïôéäÞðïôå Ý÷åé áðïìåßíåé óôç äéáäéêáóßá áíáâÜèìéóçò: &prompt.root; freebsd-update install Áí ÷ñçóéìïðïéïýóáôå ðñïóùñéíÜ ôïí ðõñÞíá GENERIC, áõôÞ åßíáé ç êáôÜëëçëç óôéãìÞ ãéá íá ìåôáãëùôôßóåôå êáé íá åãêáôáóôÞóåôå íÝï ðñïóáñìïóìÝíï ðõñÞíá, ìå ôï óõíÞèç ôñüðï. ÅðáíåêêéíÞóôå ôï ìç÷Üíçìá óáò óôçí íÝá Ýêäïóç ôïõ &os;. Ç äéáäéêáóßá Ý÷åé ïëïêëçñùèåß. Óýãêñéóç ÊáôÜóôáóçò ôïõ ÓõóôÞìáôïò Ôï âïçèçôéêü ðñüãñáììá freebsd-update ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá íá åëÝãîåôå ôçí êáôÜóôáóç ôçò åãêáôåóôçìÝíçò Ýêäïóçò ôïõ &os; óå ó÷Ýóç ìå ìéá ãíùóôÞ êáé óùóôÞ åãêáôÜóôáóç. Ç åðéëïãÞ áõôÞ óõãêñßíåé êáé áîéïëïãåß ôçí ôñÝ÷ïõóá Ýêäïóç ôùí ðñïãñáììÜôùí óõóôÞìáôïò, ôùí âéâëéïèçêþí êáé ôùí áñ÷åßùí ñýèìéóçò. Ãéá íá îåêéíÞóåôå ôç óýãêñéóç, äþóôå ôçí áêüëïõèç åíôïëÞ: &prompt.root; freebsd-update IDS >> outfile.ids Áí êáé ôï üíïìá ôçò åíôïëÞò åßíáé IDS, äåí èá ðñÝðåé óå êáìéÜ ðåñßðôùóç íá èåùñçèåß õðïêáôÜóôáôï åíüò óõóôÞìáôïò áíß÷íåõóçò åéóâïëÝá (intrusion detection system) üðùò åßíáé ãéá ðáñÜäåéãìá ôï security/snort. Êáèþò ôï freebsd-update áðïèçêåýåé ôá äåäïìÝíá ôïõ óôï äßóêï, õðÜñ÷åé ðÜíôá ç ðéèáíüôçôá íá Ý÷åé ãßíåé áëëïßùóç ôïõò. Áí êáé ç ðéèáíüôçôá áõôÞ ìðïñåß íá ìåéùèåß ÷ñçóéìïðïéþíôáò ôç ñýèìéóç kern.securelevel êáé áðïèçêåýïíôáò ôá äåäïìÝíá ôçò åíôïëÞò freebsd-update óå Ýíá óýóôçìá áñ÷åßùí ìüíï ãéá áíÜãíùóç, ìéá áêüìá êáëýôåñç ëýóç èá Þôáí íá óõãêñßíåôå ôï óýóôçìá ìå êÜðïéï äßóêï ðïõ èåùñåßôå óßãïõñá áóöáëÞ. Ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå Ýíá äßóêï DVD Þ Ýíá åîùôåñéêü äßóêï USB ðïõ öõëÜóóåôå óå áóöáëÞ ôïðïèåóßá. Èá ãßíåé ôþñá ìéá åðéèåþñçóç ôïõ óõóôÞìáôïò êáé èá åêôõðùèåß ìéá ëßóôá áðü áñ÷åßá êáé ôéìÝò hash ôïõ ôýðïõ &man.sha256.1;, ôüóï ãéá ôï åãêáôåóôçìÝíï üóï êáé ãéá ôï ãíùóôü óýóôçìá. ÅðåéäÞ ðñüêåéôáé ãéá ìåãÜëç ëßóôá, ôçí áíáêáôåõèýíïõìå óôï áñ÷åßï outfile.ids. Óôçí ïèüíç ôï êåßìåíï èá êõëïýóå ðïëý ãñÞãïñá, êáé óýíôïìá èá ãÝìéæå ôçí ðñïóùñéíÞ ìíÞìç áðåéêüíéóçò ôçò êïíóüëáò. Ïé ãñáììÝò áõôÝò Ý÷ïõí ãåíéêÜ ìåãÜëï ìÞêïò, áëëÜ åßíáé åýêïëï íá åðåîåñãáóôïýìå ôçí Ýîïäï. Ãéá ðáñÜäåéãìá, ãéá íá äåßôå ìéá ëßóôá üëùí ôùí áñ÷åßùí ðïõ äéáöÝñïõí áðü áõôÜ ôçò åðßóçìçò Ýêäïóçò, äþóôå ôçí áêüëïõèç åíôïëÞ: &prompt.root; cat outfile.ids | awk '{ print $1 }' | more /etc/master.passwd /etc/motd /etc/passwd /etc/pf.conf Ôá ðáñáðÜíù åßíáé ìüíï Ýíá ìÝñïò ôçò åîüäïõ, õðÜñ÷ïõí áêüìá ðïëëÜ äéáöïñåôéêÜ áñ÷åßá. ÊÜðïéá áðü áõôÜ ôá áñ÷åßá åßíáé öõóéïëïãéêü íá Ý÷ïõí ôñïðïðïéçèåß. Ãéá ðáñÜäåéãìá, ôï /etc/passwd Ý÷åé ôñïðïðïéçèåß, êáèþò Ý÷ïõí ðñïóôåèåß ÷ñÞóôåò óôï óýóôçìá. Óå ìåñéêÝò ðåñéðôþóåéò, ìðïñåß íá õðÜñ÷ïõí êáé Üëëá áñ÷åßá, üðùò ð.÷. áñèñþìáôá ðõñÞíá ôá ïðïßá äéáöÝñïõí áöïý Ý÷ïõí åíçìåñùèåß ìÝóù ôçò freebsd-update. Ãéá íá åîáéñÝóåôå óõãêåêñéìÝíá áñ÷åßá Þ êáôáëüãïõò, ðñïóèÝóôå ôá óôçí åðéëïãÞ IDSIgnorePaths óôï áñ÷åßï ñõèìßóåùí /etc/freebsd-update.conf. Åêôüò áðü ôçí ÷ñÞóç ðïõ áíáöÝñáìå ðñïçãïõìÝíùò, ôï óýóôçìá áõôü ìðïñåß íá ÷ñçóéìïðïéçèåß êáé ùò ôìÞìá ìéáò ëåðôïìåñïýò äéáäéêáóßáò áíáâÜèìéóçò. Tom Rhodes ÃñÜöçêå áðü ôïí Colin Percival ÂáóéóìÝíï óå óçìåéþóåéò ðïõ ðáñåß÷å ï Portsnap: ¸íá Åñãáëåßï ÅíçìÝñùóçò ôçò ÓõëëïãÞò ôùí Ports Updating and Upgrading Portsnap Updating and Upgrading Ôï âáóéêü óýóôçìá ôïõ &os; ðåñéëáìâÜíåé åðßóçò Ýíá âïçèçôéêü ðñüãñáììá ãéá ôçí åíçìÝñùóç ôçò ÓõëëïãÞò ôùí Ports. Ðñüêåéôáé ãéá ôï &man.portsnap.8;. ¼ôáí ôï åêôåëÝóåôå, èá óõíäåèåß óå Ýíá áðïìáêñõóìÝíï äéáêïìéóôÞ, èá åðáëçèåýóåé ôï êëåéäß ôïõ ðçãáßïõ êþäéêá, êáé èá êáôåâÜóåé Ýíá íÝï áíôßãñáöï ôçò ÓõëëïãÞò ôùí Ports. Ôï êëåéäß ÷ñçóéìïðïéåßôáé ãéá íá åðáëçèåýóåé ôçí áêåñáéüôçôá üëùí ôùí áñ÷åßùí ðïõ ìåôáöïñôþíïíôáé, åîáóöáëßæïíôáò üôé äåí Ý÷ïõí áëëïéùèåß êáôÜ ôçí ìåôáöïñÜ. Ãéá íá êáôåâÜóåôå ôá ôåëåõôáßá áñ÷åßá ôçò ÓõëëïãÞò ôùí Ports, åêôåëÝóôå ôçí áêüëïõèç åíôïëÞ: &prompt.root; portsnap fetch Looking up portsnap.FreeBSD.org mirrors... 9 mirrors found. Fetching snapshot tag from geodns-1.FreeBSD.org... done. Fetching snapshot metadata... done. Updating from Tue May 22 02:12:15 CEST 2012 to Wed May 23 16:28:31 CEST 2012. Fetching 3 metadata patches.. done. Applying metadata patches... done. Fetching 3 metadata files... done. Fetching 90 patches.....10....20....30....40....50....60....70....80....90. done. Applying patches... done. Fetching 133 new ports or files... done. Ôï ðáñáðÜíù ðáñÜäåéãìá äåß÷íåé üôé ôï &man.portsnap.8; âñÞêå êáé åðáëÞèåõóå áñêåôÜ patches ôá ïðïßá ðñÝðåé íá åöáñìïóôïýí óôï õðÜñ÷ïí äÝíôñï ôùí ports. Áõôü äåß÷íåé åðßóçò üôé ôï ðñüãñáììá Ý÷åé åêôåëåóôåß êáôÜ ôï ðáñåëèüí. Áí áõôÞ Þôáí ç ðñþôç öïñÜ ðïõ åêôåëïýíôáí, èá ãßíïíôáí áðëþò êáôÝâáóìá ôçò óõëëïãÞò. ¼ôáí ôï &man.portsnap.8; åêôåëÝóåé åðéôõ÷þò ôç ëåéôïõñãßá fetch, ç ÓõëëïãÞ ôùí Ports êáé ôá áíôßóôïé÷á patches Ý÷ïõí áðïèçêåõèåß óôï ôïðéêü óýóôçìá êáé Ý÷åé ãßíåé ç åðáëÞèåõóç ôïõò. Ôçí ðñþôç öïñÜ ðïõ èá åêôåëÝóåôå ôï portsnap, èá ðñÝðåé íá ÷ñçóéìïðïéÞóåôå ôï extract ãéá íá åãêáôáóôÞóåôå ôá åíçìåñùìÝíá áñ÷åßá: &prompt.root; portsnap extract /usr/ports/.cvsignore /usr/ports/CHANGES /usr/ports/COPYRIGHT /usr/ports/GIDs /usr/ports/KNOBS /usr/ports/LEGAL /usr/ports/MOVED /usr/ports/Makefile /usr/ports/Mk/bsd.apache.mk /usr/ports/Mk/bsd.autotools.mk /usr/ports/Mk/bsd.cmake.mk ... Áí Ý÷åôå Þäç åãêáôåóôçìÝíç ôçí ÓõëëïãÞ ôùí Ports, ÷ñçóéìïðïéÞóôå ôçí åíôïëÞ portsnap update ãéá íá ôçí åíçìÝñùóåôå: &prompt.root; portsnap update Ç äéáäéêáóßá Ý÷åé ðëÝïí ïëïêëçñùèåß, êáé ìðïñåßôå íá åãêáôáóôÞóåôå Þ íá áíáâáèìßóåôå åöáñìïãÝò ÷ñçóéìïðïéþíôáò ôçí åíçìåñùìÝíç ÓõëëïãÞ ôùí Ports. Ìðïñåßôå íá åêôåëÝóåôå ôéò äéáäéêáóßåò fetch êáé extract Þ update äéáäï÷éêÜ, üðùò öáßíåôáé óôï ðáñáêÜôù ðáñÜäåéãìá: &prompt.root; portsnap fetch update Ç ðáñáðÜíù åíôïëÞ èá êáôåâÜóåé ôçí ôåëåõôáßá Ýêäïóç ôçò ÓõëëïãÞò ôùí Ports êáé èá åíçìåñþóåé ôá ôïðéêÜ áñ÷åßá óáò óôïí êáôÜëïãï /usr/ports. Åíçìåñþíïíôáò ôçí Ôåêìçñßùóç Updating and Upgrading Documentation Updating and Upgrading Åêôüò áðü ôï âáóéêü óýóôçìá êáé ôçí ÓõëëïãÞ ôùí Ports, ç ôåêìçñßùóç áðïôåëåß åðßóçò âáóéêü ôìÞìá åíüò óõóôÞìáôïò &os;. Áí êáé ðÜíôá ìðïñåßôå íá âñåßôå ôçí ðéï ðñüóöáôç ôåêìçñßùóç óôçí äéêôõáêÞ ôïðïèåóßá ôïõ &os;, ïñéóìÝíïé ÷ñÞóôåò ßóùò Ý÷ïõí áñãÞ Þ ìç óôáèåñÞ óýíäåóç ìå ôï Äéáäßêôõï. Åõôõ÷þò õðÜñ÷ïõí áñêåôïß ôñüðïé ãéá íá åíçìåñþóåôå ôçí ôåêìçñßùóç ç ïðïßá ðáñÝ÷åôáé ìå êÜèå åðßóçìç Ýêäïóç, äéáôçñþíôáò ôï äéêü óáò ôïðéêü áíôßãñáöï ôçò ðéï ðñüóöáôçò ôåêìçñßùóçò ôïõ &os;. ×ñçóéìïðïéþíôáò ôï CVSup ãéá ôçí ÅíçìÝñùóç ôçò Ôåêìçñßùóçò Ï ðçãáßïò êþäéêáò êáé ôï åãêáôåóôçìÝíï áíôßãñáöï ôçò ôåêìçñßùóçò ôïõ &os;, ìðïñïýí íá åíçìåñùèïýí ìå ôçí âïÞèåéá ôïõ CVSup, ÷ñçóéìïðïéþíôáò Ýíá ìç÷áíéóìü ðáñüìïéï ìå áõôüí ðïõ ÷ñçóéìïðïéåßôáé óôï âáóéêü óýóôçìá (äåßôå ôï ). Ç åíüôçôá áõôÞ ðåñéãñÜöåé: Ðùò íá åãêáôáóôÞóåôå ôá åñãáëåßá ðïõ áðáéôïýíôáé ãéá ôçí ôåêìçñßùóç, ìå ôá ïðïßá ìðïñåßôå íá äçìéïõñãÞóåôå ôçí ôåêìçñßùóç ôïõ &os; îåêéíþíôáò áðü ôïí ðçãáßï ôçò êþäéêá. Ðùò íá êáôåâÜóåôå Ýíá áíôßãñáöï ôïõ ðçãáßïõ êþäéêá ôçò ôåêìçñßùóçò óôïí êáôÜëïãï /usr/doc ÷ñçóéìïðïéþíôáò ôï CVSup. Ðùò íá áíáäçìéïõñãÞóåôå ôçí ôåêìçñßùóç ôïõ &os; áðü ôïí ðçãáßï ôçò êþäéêá, êáé íá ôçí åãêáôáóôÞóåôå óôïí êáôÜëïãï /usr/share/doc/. Åãêáèéóôþíôáò ôï CVSup êáé ôç ÓåéñÜ Åñãáëåßùí ôçò Ôåêìçñßùóçò Ç áíáäçìéïõñãßá ôçò ôåêìçñßùóçò ôïõ &os; áðü ôïí ðçãáßï êþäéêá, áðáéôåß ìéá ó÷åôéêÜ ìåãÜëç óõëëïãÞ åñãáëåßùí. Ôá åñãáëåßá áõôÜ äåí åßíáé ìÝñïò ôïõ âáóéêïý óõóôÞìáôïò ôïõ &os;, êáèþò ÷ñåéÜæïíôáé áñêåôü ÷þñï óôï äßóêï êáé äåí åßíáé ÷ñÞóéìá óå üëïõò ôïõò ÷ñÞóôåò. Åßíáé ÷ñÞóéìá ìüíï óôïõò ÷ñÞóôåò ðïõ áó÷ïëïýíôáé ìå ôç óõããñáöÞ íÝáò ôåêìçñßùóçò ãéá ôï &os;, Þ ðïõ åíçìåñþíïõí óõ÷íÜ ôçí ôïðéêÞ ôïõò ôåêìçñßùóç ìÝóù ôïõ ðçãáßïõ êþäéêá. ¼ëá ôá áðáéôïýìåíá åñãáëåßá äéáôßèåíôáé ìÝóù ôçò ÓõëëïãÞò ôùí Ports. Ôï textproc/docproj åßíáé ôï êýñéï port ôï ïðïßï Ý÷åé áíáðôõ÷èåß áðü ôçí ÏìÜäá Ôåêìçñßùóçò ôïõ &os;, ãéá íá âïçèÞóåé óôçí áñ÷éêÞ åãêáôÜóôáóç êáé ôéò ìåëëïíôéêÝò áíáâáèìßóåéò áõôþí ôùí åñãáëåßùí. Áí äåí áðáéôåßôáé ç äçìéïõñãßá ôåêìçñßùóçò óå ìïñöÝò &postscript; Þ PDF, ìðïñåßôå íá åãêáôáóôÞóåôå ôï port textproc/docproj-nojadetex. ÁõôÞ ç Ýêäïóç ôùí åñãáëåßùí ðåñéÝ÷åé ôá ðÜíôá åêôüò áðü ôçí ìç÷áíÞ óôïé÷åéïèåóßáò teTeX. Ôï teTeX åßíáé ìéá áñêåôÜ ìåãÜëç óõëëïãÞ åñãáëåßùí, êáé äåí Ý÷åé íüçìá íá ôï åãêáôáóôÞóåôå áí äåí óáò åßíáé áðáñáßôçôç ç ðáñáãùãÞ ôçò ôåêìçñßùóçò óå ìïñöÞ PDF. Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôçí åãêáôÜóôáóç êáé ÷ñÞóç ôïõ CVSup, äåßôå ôçí åíüôçôá ×ñçóéìïðïéþíôáò ôï CVSup. Åíçìåñþíïíôáò ôïí Ðçãáßï Êþäéêá ôçò Ôåêìçñßùóçò Ôï âïçèçôéêü ðñüãñáììá CVSup ìðïñåß íá êáôåâÜóåé Ýíá êáèáñü áíôßãñáöï ôïõ ðçãáßïõ êþäéêá ôçò ôåêìçñßùóçò, ÷ñçóéìïðïéþíôáò ôï /usr/share/examples/cvsup/doc-supfile ùò ðñüôõðï áñ÷åßï ñõèìßóåùí. Ï ðñïåðéëåãìÝíïò õðïëïãéóôÞò åíçìåñþóåùí óôï ðáñáðÜíù áñ÷åßï åßíáé ñõèìéóìÝíïò óå ðëáóìáôéêÞ ôéìÞ. Ùóôüóï, ç &man.cvsup.1; äÝ÷åôáé üíïìá õðïëïãéóôÞ ìÝóù ôçò ãñáììÞò åíôïëþí, Ýôóé ìðïñåßôå íá áíáêôÞóåôå ôïí ðçãáßï êþäéêá ôçò ôåêìçñßùóçò ìÝóù êÜðïéïõ åîõðçñåôçôÞ CVSup ãñÜöïíôáò: &prompt.root; cvsup -h cvsup.FreeBSD.org -g -L 2 /usr/share/examples/cvsup/doc-supfile ÁëëÜîôå ôï cvsup.FreeBSD.org ìå ôïí êïíôéíüôåñï óáò åîõðçñåôçôÞ CVSup. Äåßôå ôï ãéá ìéá ðëÞñç ëßóôá ôùí mirror sites. Ôï áñ÷éêü êáôÝâáóìá ôïõ ðçãáßïõ êþäéêá ôçò ôåêìçñßùóçò ìðïñåß íá äéáñêÝóåé áñêåôÞ þñá. ÁöÞóôå ôï íá åêôåëåßôáé ìÝ÷ñé íá ïëïêëçñùèåß. Ìðïñåßôå íá óõíå÷ßóåôå íá åíçìåñþíåôå ôïí ðçãáßï êþäéêá ôçò ôåêìçñßùóçò ÷ñçóéìïðïéþíôáò ôçí ßäéá åíôïëÞ. Ôï âïçèçôéêü ðñüãñáììá CVSup êáôåâÜæåé êáé áíôéãñÜöåé ìüíï ôéò åíçìåñþóåéò óå ó÷Ýóç ìå ôçí ôåëåõôáßá åêôÝëåóç ôïõ, Ýôóé êÜèå åêôÝëåóç ôïõ CVSup ìåôÜ ôçí ðñþôç èá ðñÝðåé íá åßíáé áñêåôÜ ãñÞãïñç. ÌåôÜ ôçí áñ÷éêÞ áíÜêôçóç ôïõ ðçãáßïõ êþäéêá, Ýíáò åíáëëáêôéêüò ôñüðïò åíçìÝñùóçò ôçò ôåêìçñßùóçò åßíáé ìÝóù ôïõ áñ÷åßïõ Makefile óôïí êáôÜëïãï /usr/doc. ÈÝôïíôáò ôéò ìåôáâëçôÝò SUP_UPDATE, SUPHOST êáé DOCSUPFILE óôï áñ÷åßï /etc/make.conf, ìðïñåßôå íá åêôåëÝóåôå: &prompt.root; cd /usr/doc &prompt.root; make update ÔõðéêÝò ôéìÝò ãéá ôéò ðáñáðÜíù åðéëïãÝò ôïõ &man.make.1; óôï áñ÷åßï /etc/make.conf åßíáé: SUP_UPDATE= yes SUPHOST?= cvsup.freebsd.org DOCSUPFILE?= /usr/share/examples/cvsup/doc-supfile Áí èÝóåôå ôéò ôéìÝò ôùí SUPHOST êáé DOCSUPFILE óå ?=, èá ìðïñåßôå íá ïñßóåôå Üëëåò ôéìÝò ãéá áõôÝò óôç ãñáììÞ åíôïëÞò ôïõ make. Áõôüò åßíáé êáé ï óõíéóôþìåíïò ôñüðïò íá ðñïóèÝóåôå åðéëïãÝò óôï make.conf, þóôå íá áðïöåýãåôå íá ôñïðïðïéåßôå óõíÝ÷åéá ôï áñ÷åßï êÜèå öïñÜ ðïõ èÝëåôå íá äïêéìÜóåôå ìéá íÝá ôéìÞ óå ìéá åðéëïãÞ. ÐñïóáñìïãÞ Åðéëïãþí óôïí Ðçãáßï Êþäéêá ôçò Ôåêìçñßùóçò Ôï óýóôçìá åíçìÝñùóçò êáé ìåôáãëþôôéóçò ôçò ôåêìçñßùóçò ôïõ &os;, õðïóôçñßæåé ìåñéêÝò åðéëïãÝò ðïõ äéåõêïëýíïõí ôç äéáäéêáóßá åíçìÝñùóçò åíüò ìüíï ìÝñïõò ôçò ôåêìçñßùóçò, Þ ôçí ìåôáãëþôôéóç ôçò ôåêìçñßùóçò êÜðïéùí óõãêåêñéìÝíùí ìåôáöñÜóåùí. Áí èÝëåôå ïé åðéëïãÝò áõôÝò íá éó÷ýïõí ìüíéìá, ìðïñåßôå íá ôéò ïñßóåôå ìÝóá óôï áñ÷åßï /etc/make.conf, äéáöïñåôéêÜ ìðïñåßôå íá ôéò ïñßæåôå êÜèå öïñÜ óôç ãñáììÞ åíôïëÞò ôçò &man.make.1;. ÊÜðïéåò áðü ôéò åðéëïãÝò áõôÝò öáßíïíôáé ðáñáêÜôù: DOC_LANG Ëßóôá ôùí ãëùóóþí êáé êùäéêïðïéÞóåùí ðïõ èá ìåôáãëùôôéóôïýí êáé èá åãêáôáóôáèïýí, ð.÷. en_US.ISO8859-1 áí åßíáé åðéèõìçôÞ ìüíï ç ÁããëéêÞ ôåêìçñßùóç. FORMATS Ç ìïñöÞ (Þ ìéá ëßóôá áðü ìïñöÝò) óôçí ïðïßá èá ðáñá÷èåß ç ìåôáãëùôôéóìÝíç ôåêìçñßùóç. Ôç äåäïìÝíç óôéãìÞ õðïóôçñßæïíôáé ïé ìïñöÝò html, html-split, txt, ps, pdf êáé rtf. SUPHOST Ôï üíïìá ôïõ åîõðçñåôçôÞ CVSup ðïõ èá ÷ñçóéìïðïéçèåß êáôÜ ôçí åíçìÝñùóç. DOCDIR Ï êáôÜëïãïò óôïí ïðïßï èá åãêáôáóôáèåß ç ôåêìçñßùóç. Áðü ðñïåðéëïãÞ åßíáé ï /usr/share/doc. Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôéò ìåôáâëçôÝò ôïõ make ðïõ õðïóôçñßæïíôáé ùò åðéëïãÝò óõóôÞìáôïò óôï &os;, äåßôå ôçí óåëßäá manual ôïõ &man.make.conf.5;. Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò êáé ìåôáâëçôÝò make ðïõ õðïóôçñßæïíôáé áðü ôï óýóôçìá ìåôáãëþôôéóçò ôçò ôåêìçñßùóçò ôïõ &os;, ðáñáêáëïýìå äåßôå ôéò Ïäçãßåò ôçò ÏìÜäáò Ôåêìçñßùóçò ôïõ &os; ãéá ÍÝïõò Óõããñáöåßò. ÅãêáôÜóôáóç ôçò Ôåêìçñßùóçò ôïõ FreeBSD áðü ôïí Ðçãáßï Êþäéêá ¸÷ïíôáò åíçìåñþóåé ôï ôïðéêü áíôßãñáöï ôïõ ðçãáßïõ êþäéêá ôçò ôåêìçñßùóçò óôïí êáôÜëïãï /usr/doc, åßìáóôå Ýôïéìïé ãéá ôçí åíçìÝñùóç ôçò åãêáôåóôçìÝíçò ôåêìçñßùóçò. Ìðïñåßôå íá ðñï÷ùñÞóåôå óå ðëÞñç åíçìÝñùóç üëùí ôùí ãëùóóþí ðïõ ïñßæïíôáé óôçí åðéëïãÞ DOC_LANG ôïõ Makefile, ãñÜöïíôáò: &prompt.root; cd /usr/doc &prompt.root; make install clean Áí Ý÷åôå ñõèìßóåé ôï make.conf ìå ôéò óùóôÝò ôéìÝò ãéá ôéò åðéëïãÝò DOCSUPFILE, SUPHOST êáé SUP_UPDATE, ìðïñåßôå íá óõíäõÜóåôå ôá âÞìáôá åíçìÝñùóçò êáé åãêáôÜóôáóçò ôïõ ðçãáßïõ êþäéêá óå Ýíá, ãñÜöïíôáò: &prompt.root; cd /usr/doc &prompt.root; make update install clean Áí åðéèõìåßôå ôçí åíçìÝñùóç ìéáò ìüíï óõãêåêñéìÝíçò ãëþóóáò, ìðïñåßôå íá êáëÝóåôå ôçí &man.make.1; óå Ýíá óõãêåêñéìÝíï õðïêáôÜëïãï ôïõ /usr/doc, ð.÷.: &prompt.root; cd /usr/doc/en_US.ISO8859-1 &prompt.root; make update install clean Ìðïñåßôå íá êáèïñßóåôå ôç ìïñöÞ ôçò ôåêìçñßùóçò ðïõ èá åãêáôáóôáèåß, ñõèìßæïíôáò ôç ìåôáâëçôÞ FORMATS ôïõ make, ð.÷.: &prompt.root; cd /usr/doc &prompt.root; make FORMATS='html html-split' install clean Marc Fonvieille ÂáóéóìÝíï óå åñãáóßá ôïõ ×ñçóéìïðïéþíôáò ôá Ports ôçò Ôåêìçñßùóçò Updating and Upgrading documentation package Updating and Upgrading Óôçí ðñïçãïýìåíç åíüôçôá, ðáñïõóéÜóáìå ìéá ìÝèïäï ãéá ôçí åíçìÝñùóç ôçò ôåêìçñßùóçò ôïõ &os; ìÝóù ôïõ ðçãáßïõ êþäéêá. Ùóôüóï, ïé åíçìåñþóåéò ðïõ âáóßæïíôáé óôïí ðçãáßï êþäéêá ìðïñåß íá ìçí åßíáé äõíáôÝò Þ ðñáêôéêÝò ãéá êÜèå óýóôçìá &os;. Ç äéáäéêáóßá ìåôáãëþôôéóçò ôïõ ðçãáßïõ êþäéêá ôçò ôåêìçñßùóçò áðáéôåß ó÷åôéêÜ ìåãÜëï áñéèìü åñãáëåßùí êáé âïçèçôéêþí ðñïãñáììÜôùí, ãíùóôÜ ùò åñãáëåßá ôåêìçñßùóçò. Áðáéôåß åðßóçò êáé ìéá ó÷åôéêÞ åîïéêåßùóç ìå ôï CVS êáé ôç äéáäéêáóßá áíÜêôçóçò ôùí áñ÷åßùí áðü áõôü, êáèþò êáé ìéá óåéñÜ áðü âÞìáôá ãéá ôç ìåôáãëþôôéóç ôïõ êþäéêá. Óôçí åíüôçôá áõôÞ ðåñéãñÜöïõìå Ýíá åíáëëáêôéêü ôñüðï åíçìÝñùóçò ôçò ôåêìçñßùóçò ðïõ åãêáèßóôáôáé ìáæß ìå ôï &os;. Ç ìÝèïäïò áõôÞ ÷ñçóéìïðïéåß ôçí ÓõëëïãÞ ôùí Ports êáé äßíåé ôéò ðáñáêÜôù äõíáôüôçôåò: ÊáôÝâáóìá êáé åãêáôÜóôáóç ðñï-ìåôáãëùôôéóìÝíùí óôéãìéüôõðùí ôçò ôåêìçñßùóçò, ÷ùñßò íá áðáéôåßôáé êáìéÜ ôïðéêÞ ìåôáãëþôôéóç (åîáëåßöïíôáò Ýôóé êáé ôçí áíÜãêç åãêáôÜóôáóçò üëùí ôùí åñãáëåßùí ôåêìçñßùóçò). ÊáôÝâáóìá ôïõ ðçãáßïõ êþäéêá ôçò ôåêìçñßùóçò êáé ìåôáãëþôôéóç ôïõ ìÝóù ôùí äõíáôïôÞôùí ðïõ ðáñÝ÷ïõí ôá åñãáëåßá ôùí ports (áðëïðïéþíôáò ìå áõôü ôïí ôñüðï ôç ÷åéñïêßíçôç äéáäéêáóßá áíÜêôçóçò êáé ìåôáãëþôôéóçò). ÁõôÝò ïé äýï ìÝèïäïé åíçìÝñùóçò ôçò ôåêìçñßùóçò ôïõ &os; õðïóôçñßæïíôáé áðü ìéá óåéñÜ áðü ports ôåêìçñßùóçò ôá ïðïßá åíçìåñþíïíôáé êÜèå ìÞíá áðü ôçí &a.doceng;. Óôç ÓõëëïãÞ ôùí Ports, èá ôá âñåßôå êÜôù áðü ôçí êáôçãïñßá docs. Ìåôáãëþôôéóç êáé ÅãêáôÜóôáóç ôùí Ports ôçò Ôåêìçñßùóçò Ôá ports ôçò ôåêìçñßùóçò ÷ñçóéìïðïéïýí ôéò äõíáôüôçôåò ìåôáãëþôôéóçò ðïõ ðáñÝ÷åé ôï óýóôçìá ôùí ports þóôå íá äéåõêïëýíïõí ôç äéáäéêáóßá äçìéïõñãßáò ôçò ôåêìçñßùóçò. Ìå áõôü ôïí ôñüðï ç áíÜêôçóç ôïõ ðçãáßïõ êþäéêá ôçò ôåêìçñßùóçò ãßíåôáé áõôüìáôá ìå ôçí åêôÝëåóç ôçò &man.make.1; êáé ôéò êáôÜëëçëåò ñõèìßóåéò óôï ðåñéâÜëëïí. Ç åãêáôÜóôáóç êáé áðåãêáôÜóôáóç ôçò ôåêìçñßùóçò åßíáé ôï ßäéï åýêïëç ìå ôçí åãêáôÜóôáóç ïðïéïõäÞðïôå Üëëïõ port Þ ðáêÝôïõ óôï &os;. Óå ðåñßðôùóç ôïðéêÞò ìåôáãëþôôéóçò ôùí ports ôçò ôåêìçñßùóçò, áðáéôåßôáé êáé ç åãêáôÜóôáóç ôùí åñãáëåßùí ôåêìçñßùóçò. Ôá åñãáëåßá áõôÜ ùóôüóï èá åãêáôáóôáèïýí áõôüìáôá. Ç ïñãÜíùóç ôùí ports ôåêìçñßùóçò öáßíåôáé ðáñáêÜôù: ÕðÜñ÷åé Ýíá êåíôñéêü master port, ôï misc/freebsd-doc-en ôï ïðïßï äéáèÝôåé ôá áðáñáßôçôá áñ÷åßá êáé áðïôåëåß ôçí âÜóç üëùí ôùí Üëëùí ports ôåêìçñßùóçò. Áðü ðñïåðéëïãÞ, ôï port áõôü ìåôáãëùôôßæåé ìüíï ôçí ÁããëéêÞ ôåêìçñßùóç. ÕðÜñ÷åé Ýíá port üëá óå Ýíá, ôï misc/freebsd-doc-all ôï ïðïßï ìåôáãëùôôßæåé êáé åãêáèéóôÜ üëç ôçí ôåêìçñßùóç óå üëåò ôéò äéáèÝóéìåò ãëþóóåò. ÔÝëïò, õðÜñ÷åé Ýíá åîáñôþìåíï port ãéá êÜèå ìåôÜöñáóç, ð.÷.: misc/freebsd-doc-el ãéá ôçí ÅëëçíéêÞ ôåêìçñßùóç. ¼ëá áõôÜ ôá ports åîáñôþíôáé áðü ôï master port êáé åãêáèéóôïýí ôçí ôåêìçñßùóç ðïõ Ý÷åé ìåôáöñáóôåß óôçí áíôßóôïé÷ç ãëþóóá. Ãéá íá åãêáôáóôÞóåôå Ýíá port ôåêìçñßùóçò áðü ôïí ðçãáßï êþäéêá, åêôåëÝóôå ôéò ðáñáêÜôù åíôïëÝò (ùò root): &prompt.root; cd /usr/ports/misc/freebsd-doc-en &prompt.root; make install clean Ôï ðáñáðÜíù èá ìåôáãëùôôßóåé êáé èá åãêáôáóôÞóåé ôçí ÁããëéêÞ ôåêìçñßùóç óå ìïñöÞ ôìçìáôéêþí HTML êåéìÝíùí (üðùò ÷ñçóéìïðïéïýíôáé êáé óôï ), óôïí êáôÜëïãï /usr/local/share/doc/freebsd. ÓõíçèéóìÝíåò ÅðéëïãÝò êáé ÐáñÜìåôñïé Ìåôáãëþôôéóçò Ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå áñêåôÝò åðéëïãÝò ãéá ôçí ôñïðïðïßçóç ôçò ðñïåðéëåãìÝíçò óõìðåñéöïñÜò ôùí ports ôåêìçñßùóçò. ÐáñáêÜôù äåß÷íïõìå ìåñéêÝò ìüíï áðü áõôÝò: WITH_HTML ÅðéôñÝðåé ôç äçìéïõñãßá ôçò ôåêìçñßùóçò óå ìïñöÞ HTML. Èá äçìéïõñãçèåß Ýíá áñ÷åßï HTML ãéá êÜèå êåßìåíï. Ç ìïñöïðïéçìÝíç ôåêìçñßùóç èá áðïèçêåõèåß, áíÜëïãá ìå ôçí ðåñßðôùóç, óå Ýíá áñ÷åßï ìå üíïìá article.html Þ book.html. Èá ãßíåé åðßóçò êáé áðïèÞêåõóç ôùí áíôßóôïé÷ùí åéêüíùí. WITH_PDF ÅðéôñÝðåé ôç äçìéïõñãßá åããñÜöïõ óå ìïñöÞ &adobe; Portable Document Format (PDF) ãéá ÷ñÞóç ìå ôïí &adobe; &acrobat.reader;, ôï Ghostscript, Þ Üëëá ðñïãñÜììáôá ðñïâïëÞò åããñÜöùí PDF. Ç ìïñöïðïéçìÝíç ôåêìçñßùóç èá áðïèçêåõèåß, áíÜëïãá ìå ôçí ðåñßðôùóç, óå Ýíá áñ÷åßï article.pdf Þ book.pdf. DOCBASE Ðñüêåéôáé ãéá ôçí èÝóç óôçí ïðïßá èá åãêáôáóôáèåß ç ôåêìçñßùóç. Áðü ðñïåðéëïãÞ, åßíáé ï êáôÜëïãïò /usr/local/share/doc/freebsd. ÐáñáôçñÞóôå üôé ï ðñïåðéëåãìÝíïò êáôÜëïãïò äéáöÝñåé áðü áõôüí ðïõ ÷ñçóéìïðïéåßôáé óôç ìÝèïäï CVSup. Áõôü óõìâáßíåé åðåéäÞ ãßíåôáé åãêáôÜóôáóç port, ôá ïðïßá áðü ðñïåðéëïãÞ ÷ñçóéìïðïéïýí ôïí êáôÜëïãï /usr/local. Ìðïñåßôå íá ðáñáêÜìøåôå áõôÞ ôçí ðñïåðéëïãÞ, áëëÜæïíôáò ôçí ôéìÞ ôçò ìåôáâëçôÞò PREFIX. ÐáñáêÜôù èá âñåßôå Ýíá óýíôïìï ðáñÜäåéãìá ó÷åôéêü ìå ôç ÷ñÞóç ôùí ìåôáâëçôþí ãéá ôçí åãêáôÜóôáóç ôçò ÁããëéêÞò ôåêìçñßùóçò óå ìïñöÞ PDF: &prompt.root; cd /usr/ports/misc/freebsd-doc-en &prompt.root; make -DWITH_PDF DOCBASE=share/doc/freebsd/en install clean ×ñÞóç ¸ôïéìùí ÐáêÝôùí Ôåêìçñßùóçò Ç ìåôáãëþôôéóç ôùí ports ôåêìçñßùóçò áðü ôïí ðçãáßï êþäéêá (üðùò åßäáìå óôçí ðñïçãïýìåíç åíüôçôá), áðáéôåß ôïðéêÞ åãêáôÜóôáóç ôùí áíôßóôïé÷ùí åñãáëåßùí ôåêìçñßùóçò êáé åðÜñêåéá ÷þñïõ óôï äßóêï ãéá ôçí äéáäéêáóßá. ¼ôáí äåí äéáôßèåíôáé ïé áðáñáßôçôïé ðüñïé ãéá ôçí åãêáôÜóôáóç ôùí åñãáëåßùí ôåêìçñßùóçò (Þ åðåéäÞ ç ìåôáãëþôôéóç áðü ôá ports èá ÷ñçóéìïðïéïýóå ðïëý ÷þñï), ç åãêáôÜóôáóç ìðïñåß íá ãßíåé ìÝóù Ýôïéìùí ðáêÝôùí ôåêìçñßùóçò. H &a.doceng; ðñïåôïéìÜæåé ìçíéáßá óôéãìéüôõðá ðáêÝôùí ôåêìçñßùóçò ôïõ &os;. Ôá Ýôïéìá áõôÜ ðáêÝôá ìðïñïýí íá ÷ñçóéìïðïéçèïýí ìå ôçí âïÞèåéá ïðïéïõäÞðïôå åñãáëåßïõ äéá÷åßñéóçò ðáêÝôùí ðïõ äéáôßèåôáé ìå ôï &os;, üðùò ãéá ðáñÜäåéãìá ôá &man.pkg.add.1;, &man.pkg.delete.1; ê.ë.ð. ¼ôáí ÷ñçóéìïðïéåßôå Ýôïéìá ðáêÝôá, ç åãêáôÜóôáóç ôçò ôåêìçñßùóçò ôçò åðéëåãìÝíçò ãëþóóáò èá ãßíåôáé óå üëåò ôéò äéáèÝóéìåò ìïñöÝò. Ãéá ðáñÜäåéãìá, ç ðáñáêÜôù åíôïëÞ èá åãêáôáóôÞóåé ôçí ôåëåõôáßá Ýêäïóç ôïõ Ýôïéìïõ ðáêÝôïõ ôçò ÅëëçíéêÞò ôåêìçñßùóçò: &prompt.root; pkg_add -r el-freebsd-doc Ôá ðáêÝôá ÷ñçóéìïðïéïýí ôç ìïñöÞ lang-freebsd-doc óôï üíïìá ôïõò, ç ïðïßá äéáöÝñåé áðü ôçí áíôßóôïé÷ç ìïñöÞ ôïõ port. Ôï lang åßíáé ç óýíôïìç ìïñöÞ ôçò ãëþóóáò, ð.÷. el ãéá ÅëëçíéêÜ Þ zh_cn ãéá ÁðëïðïéçìÝíá ÊéíÝæéêá. Åíçìåñþíïíôáò ôá Ports ôçò Ôåêìçñßùóçò Ãéá íá åíçìåñþóåôå Ýíá Þäç åãêáôåóôçìÝíï port ôåêìçñßùóçò, ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ïðïéïäÞðïôå åñãáëåßï áíáâÜèìéóçò ports. Ãéá ðáñÜäåéãìá, ç ðáñáêÜôù åíôïëÞ åíçìåñþíåé ôçí åãêáôåóôçìÝíç ÅëëçíéêÞ ôåêìçñßùóç ìÝóù ôïõ åñãáëåßïõ ports-mgmt/portupgrade ìå ôç ÷ñÞóç ìüíï Ýôïéìùí ðáêÝôùí: &prompt.root; portupgrade -PP el-freebsd-doc Ðáñáêïëïýèçóç Åíüò ÊëÜäïõ ÁíÜðôõîçò -CURRENT -STABLE ÕðÜñ÷ïõí äýï êëÜäïé áíÜðôõîçò óôï &os;, ôï &os.current; êáé ôï &os.stable;. Óôçí åíüôçôá áõôÞ, èá åîçãÞóïõìå êÜðïéá ðñÜãìáôá ó÷åôéêÜ ìå áõôïýò ôïõò êëÜäïõò, êáé èá ðåñéãñÜøïõìå ðùò ìðïñåßôå íá äéáôçñÞóåôå ôï óýóôçìá óáò åíçìåñùìÝíï óå êÜðïéïí áðü áõôïýò. Èá ìéëÞóïõìå áñ÷éêÜ ãéá ôï &os.current; êáé Ýðåéôá ãéá ôï &os.stable;. Ðáñáêïëïõèþíôáò ôï &os.current; Êáèþò äéáâÜæåôå áõôü ôï êåßìåíï, íá Ý÷åôå õðüøéí óáò üôé ôï &os.current; åßíáé ðñÜãìáôé ç êüøç ôïõ îõñáöéïý óôçí áíÜðôõîç ôïõ &os;. Ïé ÷ñÞóôåò ôïõ &os.current; áíáìÝíåôáé íá Ý÷ïõí áõîçìÝíåò ôå÷íéêÝò ãíþóåéò, êáé íá åßíáé éêáíïß íá åðéëýïõí äýóêïëá ðñïâëÞìáôá ôïõ óõóôÞìáôïò ôïõò, ÷ùñßò âïÞèåéá. Áí åßóôå êáéíïýñéïò óôï &os;, ìÜëëïí èá ðñÝðåé íá ôï îáíáóêåöôåßôå ðñéí ôï åãêáôáóôÞóåôå. Ôé Åßíáé ôï &os.current;; snapshot Ôï &os.current; áðïôåëåßôáé áðü ôïí ðëÝïí ðñüóöáôï ëåéôïõñãéêü ðçãáßï êþäéêá ôïõ &os;. ÐåñéëáìâÜíåé áëëáãÝò ðïõ âñßóêïíôáé óå åîÝëéîç, ðåéñáìáôéêÝò áëëáãÝò, êáé ìç÷áíéóìïýò ìåôÜâáóçò ïé ïðïßïé äåí åßíáé óßãïõñï üôé èá ðåñéëáìâÜíïíôáé óôçí åðüìåíç åðßóçìç Ýêäïóç ôïõ ëïãéóìéêïý. Áí êáé ðïëëÜ ìÝëç ôçò ïìÜäáò áíÜðôõîçò ôïõ &os; ìåôáãëùôôßæïõí êáèçìåñéíÜ ôïí ðçãáßï êþäéêá ôïõ &os.current;, õðÜñ÷ïõí ÷ñïíéêÝò ðåñßïäïé ðïõ ç ìåôáãëþôôéóç ôïõ åßíáé áäýíáôç. Ôá ðñïâëÞìáôá áõôÜ ãåíéêÜ åðéëýïíôáé üóï ðéï ãñÞãïñá ãßíåôáé, áëëÜ ôï áí ôï &os.current; èá óáò öÝñåé ôçí êáôáóôñïöÞ Þ êÜðïéï ðïëõðüèçôï ÷áñáêôçñéóôéêü, åßíáé ðåñéóóüôåñï èÝìá ôçò ÷ñïíéêÞò óôéãìÞò ðïõ èá åðéëÝîåôå íá áíáêôÞóåôå ôïí ðçãáßï êþäéêá! Ðïéïò ×ñåéÜæåôáé ôï &os.current;; Ôï &os.current; äéáôßèåôáé êáé åíäéáöÝñåé êõñßùò ôéò ðáñáêÜôù ôñåéò ïìÜäåò: ÌÝëç ôçò êïéíüôçôáò ôïõ &os; ðïõ äïõëåýïõí åíåñãÜ óå êÜðïéï ôìÞìá ôïõ ðçãáßïõ êþäéêá, êáé ãéá ôïõò ïðïßïõò ç ðáñáêïëïýèçóç ôïõ &os.current; åßíáé áðüëõôá áðáñáßôçôç. ÌÝëç ôçò êïéíüôçôáò ôïõ &os; ðïõ åßíáé åíåñãïß testers êáé åßíáé ðñüèõìïé íá áíáëþóïõí ôï ÷ñüíï ôïõò ãéá íá ëýóïõí ðñïâëÞìáôá, þóôå íá åîáóöáëßóïõí üôé ôï &os.current; èá ðáñáìåßíåé üóï ôï äõíáôüí ðéï óùóôü. ÓõíÞèùò, ôá ìÝëç áõôÜ êÜíïõí ðñïôÜóåéò ãéá ôïðéêÝò áëëáãÝò êáé ãéá ôçí ãåíéêÞ êáôåýèõíóç ôïõ &os;, êáé óôÝëíïõí patches ãéá ôçí ðñáãìáôïðïßçóç ôïõò. Áõôïß ðïõ áðëþò èÝëïõí íá âëÝðïõí ôéò ôåëåõôáßåò åíçìåñþóåéò, Þ íá ÷ñçóéìïðïéïýí ôïí ôåëåõôáßï ðçãáßï êþäéêá ùò áíáöïñÜ (ð.÷. ãéá ìåëÝôç êáé ü÷é ãéá åêôÝëåóç). ÌÝëç áõôÞò ôçò ïìÜäáò ìðïñåß åðßóçò ðåñéóôáóéáêÜ íá óõíåéóöÝñïõí ó÷üëéá Þ êþäéêá. Ôé <emphasis>Äåí</emphasis> Åßíáé ôï &os.current;; Äåí åßíáé Ýíáò ãñÞãïñïò ôñüðïò íá ðÜñåôå êþäéêá ï ïðïßïò äåí Ý÷åé êõêëïöïñÞóåé áêüìá óå êÜðïéá Ýêäïóç, ìå ôçí åëðßäá üôé ðåñéÝ÷åé êÜðïéá íÝá åêðëçêôéêÞ äõíáôüôçôá êáé èÝëåôå íá åßóôå ï ðñþôïò ðïõ ôç ÷ñçóéìïðïéåß. Áí åßóôå ðñÜãìáôé ï ðñþôïò ðïõ ôçí ÷ñçóéìïðïéåß, èá åßóôå åðßóçò êáé ï ðñþôïò ðïõ èá óõíáíôÞóåôå ôá íÝá ðñïâëÞìáôá êáé bugs. Äåí åßíáé Ýíáò ãñÞãïñïò ôñüðïò ãéá íá áíáêôÞóåôå äéïñèþóåéò ðñïâëçìÜôùí. ÊÜèå íÝá Ýêäïóç ôïõ &os.current; ìðïñåß íá åéóÜãåé ôüóá íÝá bugs üóá êáé áõôÜ ðïõ äéïñèþíåé. Ôï &os.current; äåí áðïôåëåß åðßóçìá õðïóôçñéæüìåíï êþäéêá. Áí êáé êáôáâÜëëïõìå êÜèå äõíáôÞ ðñïóðÜèåéá íá âïçèÞóïõìå üóïõò áíÞêïõí ðñáãìáôéêÜ óå êÜðïéá áðü ôéò ôñåéò ïìÜäåò ðïõ áíáöÝñáìå, ùóôüóï äåí Ý÷ïõìå ôï ÷ñüíï íá ðáñÝ÷ïõìå ôå÷íéêÞ õðïóôÞñéîç. Áõôü äåí óõìâáßíåé åðåéäÞ åßìáóôå êáêïÞèåéò êáé äýóêïëïé êáé äåí èÝëïõìå íá âïçèÜìå ôïõò áíèñþðïõò (äåí èá åß÷áìå êáí äçìéïõñãÞóåé ôï &os; áí óêåöôüìáóôáí Ýôóé). Ðïëý áðëÜ, äåí ìðïñïýìå íá áðáíôÜìå åêáôïíôÜäåò ìçíýìáôá ôçí çìÝñá êáé ôáõôü÷ñïíá íá äïõëåýïõìå óôï &os;! Áí äþóåôå óå ïðïéïäÞðïôå ìÝëïò ôçò ïìÜäáò áíÜðôõîçò ôçí åðéëïãÞ íá áðáíôÜåé óå ðïëëÝò åñùôÞóåéò ó÷åôéêÜ ìå ðåéñáìáôéêü êþäéêá Þ íá äïõëåýåé ãéá ôç âåëôßùóç ôïõ &os;, èá åðéëÝîåé óßãïõñá ôï äåýôåñï. ×ñçóéìïðïéþíôáò ôï &os.current; - - -CURRENT - using - Ãñáöôåßôå óôéò ëßóôåò &a.current.name; êáé - &a.svn-src-head.name;. Äåí åßíáé áðëþò êáëÞ éäÝá, åßíáé + &a.svn-src-head.name;-CURRENTusing. Äåí åßíáé áðëþò êáëÞ éäÝá, åßíáé âáóéêü íá ôï êÜíåôå. Áí äåí åßóôå ãñáììÝíïò óôç ëßóôá &a.current.name;, äåí èá âëÝðåôå ôá ó÷üëéá ó÷åôéêÜ ìå ôçí ôñÝ÷ïõóá êáôÜóôáóç ôïõ óõóôÞìáôïò áðü üóïõò ôï ÷ñçóéìïðïéïýí, êáé Ýôóé ðéèáíþò èá êáôáëÞîåôå íá áíôéìåôùðßæåôå ðïëëÜ ðñïâëÞìáôá ðïõ Üëëïé Ý÷ïõí Þäç áíáêáëýøåé êáé ëýóåé. Áêüìá ðéï óçìáíôéêü åßíáé üôé èá ÷Üíåôå óçìáíôéêÝò áíáêïéíþóåéò, ïé ïðïßåò ìðïñåß íá åßíáé êñßóéìåò ãéá ôçí äéáôÞñçóç ôïõ óõóôÞìáôïò óáò óå õãéÞ êáôÜóôáóç. Ç ëßóôá &a.svn-src-head.name; èá óáò åðéôñÝøåé íá âëÝðåôå ôéò êáôá÷ùñÞóåéò óôï commit log ãéá êÜèå áëëáãÞ ðïõ ãßíåôáé, êáèþò êáé ðëçñïöïñßåò ãéá ðéèáíÝò ðáñåíÝñãåéåò ðïõ ìðïñåß íá Ý÷åé. Ãéá íá ãñáöôåßôå óå áõôÝò, Þ óå ïðïéåóäÞðïôå áðü ôéò õðÜñ÷ïõóåò ëßóôåò, åðéóêåöèåßôå ôçí ôïðïèåóßá &a.mailman.lists.link; êáé åðéëÝîôå ôç ëßóôá óôçí ïðïßá èÝëåôå íá ãßíåôå óõíäñïìçôÞò. Ïäçãßåò ãéá ôçí õðüëïéðç äéáäéêáóßá èá âñåßôå åðéôüðïõ. Áí óáò åíäéáöÝñåé íá ðáñáêïëïõèåßôå ôéò áëëáãÝò óå üëï ôï äÝíôñï ðçãáßïõ êþäéêá, óáò óõíéóôïýìå íá åããñáöåßôå óôç ëßóôá &a.svn-src-all.name;. ÁíáêôÞóôå ôïí ðçãáßï êþäéêá áðü Ýíá mirror site ôïõ &os;. Áõôü ìðïñåß íá ãßíåé ìå äýï ôñüðïõò: - - cvsup - - - cron - - - -CURRENT - Syncing with CVSup - - ×ñçóéìïðïéÞóôå ôï ðñüãñáììá cvsup óå óõíäõáóìü ìå ôï + linkend="cvsup">cvsupcvsup óå óõíäõáóìü ìå ôï supfile ìå ôçí ïíïìáóßá standard-supfile ôï ïðïßï èá âñåßôå óôïí êáôÜëïãï /usr/share/examples/cvsup. ÁõôÞ åßíáé êáé ç ðëÝïí óõíéóôþìåíç ìÝèïäïò, êáèþò óáò åðéôñÝðåé íá áíáêôÞóåôå üëç ôç óõëëïãÞ ìå ìéá êßíçóç, êáé óôéò åðüìåíåò áíáíåþóåéò èá ðáßñíåôå ìüíï ôéò áëëáãÝò. - Ðïëëïß ÷ñÞóôåò åêôåëïýí ôï cvsup ìÝóù + Ðïëëïß ÷ñÞóôåò åêôåëïýí ôï cvsup-CURRENTSyncing with CVSup ìÝóù ôïõ cron þóôå íá êñáôÜíå ôïí ðçãáßï êþäéêá ôïõ óõóôÞìáôïò ôïõò ðÜíôá áíáíåùìÝíï áõôüìáôá. Èá ðñÝðåé íá ðñïóáñìüóåôå ôï õðüäåéãìá ôïõ supfile ðïõ äßíïõìå ðáñáðÜíù, êáé íá ñõèìßóåôå ôï cvsup ãéá ôï ðåñéâÜëëïí óáò. Ôï õðüäåéãìá ôïõ áñ÷åßïõ standard-supfile ðñïïñßæåôáé ãéá ÷ñÞóç ìå êÜðïéï óõãêåêñéìÝíï êëÜäï áóöÜëåéáò (security branch) ôïõ &os;, êáé ü÷é ìå ôï &os.current;. Èá ðñÝðåé íá åðåîåñãáóôåßôå ôï áñ÷åßï êáé íá áíôéêáôáóôÞóåôå ôçí ðáñáêÜôù ãñáììÞ: *default release=cvs tag=RELENG_X_Y ìå ôçí áêüëïõèç: *default release=cvs tag=. Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôá tags ðïõ ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå, ðáñáêáëïýìå äéáâÜóôå óôï Åã÷åéñßäéï ôçí åíüôçôá ÅôéêÝôåò (Tags) ãéá ôï CVS. - - -CURRENT - Syncing with CTM - - ×ñçóéìïðïéÞóôå ôçí õðçñåóßá CTM. Áí Ý÷åôå ðïëý êáêÞ + linkend="ctm">CTM-CURRENTSyncing with CTM. Áí Ý÷åôå ðïëý êáêÞ óõíäåóéìüôçôá (õøçëü êüóôïò óýíäåóçò Þ ðñüóâáóç ìüíï ìÝóù email) ôï CTM áðïôåëåß ãéá óáò ìéá åíáëëáêôéêÞ ëýóç. Ìðïñåß ùóôüóï íá óáò äçìéïõñãÞóåé äéÜöïñá ðñïâëÞìáôá êáé íá êáôáëÞîåôå ìå ÷áëáóìÝíá áñ÷åßá. Ãéá ôï ëüãï áõôü, ôï CTM ÷ñçóéìïðïéåßôáé óðÜíéá, êÜôé ôï ïðïßï áõîÜíåé áêüìá ðåñéóóüôåñï ôçí ðéèáíüôçôá íá ìç äïõëåýåé óùóôÜ ãéá ìåãÜëá ÷ñïíéêÜ äéáóôÞìáôá. Óáò óõíéóôïýìå íá ÷ñçóéìïðïéÞóåôå ôï CVSup áí äéáèÝôåôå modem 9600 bps Þ ôá÷ýôåñï. Áí óêïðåýåôå íá áíáêôÞóåôå ôïí ðçãáßï êþäéêá ãéá êáíïíéêÞ ÷ñÞóç (åêôÝëåóç) êáé ü÷é áðëþò ãéá íá ôïí äåßôå, ôüôå áíáêôÞóôå ïëüêëçñï ôï &os.current; êáé ü÷é êÜðïéá åðéëåãìÝíá ôìÞìáôá. Óå äéáöïñåôéêÞ ðåñßðôùóç, åßíáé áñêåôÜ ðéèáíü íá óõíáíôÞóåôå ðñïâëÞìáôá, êáèþò ðïëëÜ êïììÜôéá ôïõ êþäéêá åîáñôþíôáé áðü áíáíåþóåéò óå Üëëá, êáé äåí ìðïñïýí íá ìåôáãëùôôéóôïýí áõôüíïìá. - - -CURRENT - compiling - - Ðñéí ìåôáãëùôôßóåôå ôï &os.current;, äéáâÜóôå ðñïóåêôéêÜ ôï + Ðñéí ìåôáãëùôôßóåôå ôï &os.current;-CURRENTcompiling, äéáâÜóôå ðñïóåêôéêÜ ôï Makefile óôïí êáôÜëïãï /usr/src. Èá ðñÝðåé íá ìåôáãëùôôßóåôå ôïí ðõñÞíá êáé üëï ôï âáóéêü óýóôçìá (world) ôçí ðñþôç öïñÜ, ùò ìÝñïò ôçò äéáäéêáóßáò áíáâÜèìéóçò. ÄéáâÜæïíôáò ôçí &a.current; êáé ôï /usr/src/UPDATING èá åßóôå åíçìåñùìÝíïé ãéá íÝåò äéáäéêáóßåò üóï áöïñÜ ôçí åêêßíçóç óôï íÝï óáò óýóôçìá. Ïé äéáäéêáóßåò áõôÝò åßíáé óõ÷íÜ áðáñáßôçôåò üóï ðëçóéÜæïõìå óå ìéá íÝá åðßóçìç Ýêäïóç. Ãßíåôå åíåñãü ìÝëïò! Áí ÷ñçóéìïðïéåßôå ôï &os.current;, èÝëïõìå íá îÝñïõìå ôç ãíþìç óáò ãéá áõôü, åéäéêÜ áí Ý÷åôå ðñïôÜóåéò ãéá âåëôéþóåéò Þ äéïñèþóåéò ëáèþí. ÐñïôÜóåéò ðïõ óõíïäåýïíôáé êáé áðü êþäéêá ãßíïíôáé äåêôÝò ìå åíèïõóéáóìü! ×ñçóéìïðïéþíôáò ôï &os;-STABLE Ôé Åßíáé ôï &os.stable;; -STABLE Ôï &os.stable; åßíáé Ýíáò êëÜäïò áíÜðôõîçò áðü ôïí ïðïßï ðñïêýðôïõí ïé ìåãÜëåò (major) åêäüóåéò. Ïé áëëáãÝò åéóÜãïíôáé óå áõôü ôïí êëÜäï ìå äéáöïñåôéêü ñõèìü, êáé ìå ôç ãåíéêÞ ðáñáäï÷Þ üôé Ý÷ïõí ðñþôá ðåñÜóåé áðü ôï &os.current; ãéá äïêéìÞ. Ùóôüóï, äåí ðáýåé íá åßíáé Ýíáò êëÜäïò áíÜðôõîçò, êáé áõôü óçìáßíåé üôé ï êþäéêáò ôïõ &os.stable; ìðïñåß ìéá äåäïìÝíç ÷ñïíéêÞ óôéãìÞ íá åßíáé áêáôÜëëçëïò ãéá óõãêåêñéìÝíåò åöáñìïãÝò. Ðñüêåéôáé ãéá ìéá áêüìá ãñáììÞ áíÜðôõîçò ãéá ôïõò ðñïãñáììáôéóôÝò, êáé äåí åßíáé áðáñáßôçôá êáôÜëëçëç ãéá ôïõò ôåëéêïýò ÷ñÞóôåò. Ðïéïò ×ñåéÜæåôáé ôï &os.stable;; Áí óáò åíäéáöÝñåé íá ðáñáêïëïõèåßôå Þ íá óõìâÜëëåôå óôçí áíÜðôõîç ôïõ &os;, êáé åéäéêÜ üóï áöïñÜ ôçí åðüìåíç åðßóçìç Ýêäïóç ôïõ áðü ôïí ßäéï êëÜäï (point release), åßíáé êáëÞ éäÝá íá ðáñáêïëïõèåßôå ôï &os.stable;. Áí êáé åßíáé áëÞèåéá üôé ïé äéïñèþóåéò áóöÜëåéáò ãßíïíôáé êáé óôïí êëÜäï &os.stable;, ùóôüóï äåí ÷ñåéÜæåôáé íá ðáñáêïëïõèåßôå ôï &os.stable; ìüíï ãéá áõôü ôï ëüãï. ÊÜèå áíáöïñÜ ðñïâëÞìáôïò áóöÜëåéáò ôïõ &os; åîçãåß ðùò íá äéïñèþóåôå ôï ðñüâëçìá ãéá êÜèå åðßóçìç Ýêäïóç ç ïðïßá åðçñåÜæåôáé áðü áõôü Áõôü âÝâáéá äåí åßíáé áðüëõôá áëçèéíü. Äåí ìðïñïýìå íá óõíå÷ßóïõìå íá õðïóôçñßæïõìå ôéò ðáëéÝò åêäüóåéò ôïõ &os; ãéá ðÜíôá, áí êáé ôéò õðïóôçñßæïõìå ãéá ðïëëÜ ÷ñüíéá. Ãéá ðëÞñç ðåñéãñáöÞ ôçò ôñÝ÷ïõóáò ðïëéôéêÞò üóï áöïñÜ ôçí áóöÜëåéá ôùí ðáëéþí åêäüóåùí ôïõ &os;, äåßôå http://www.FreeBSD.org/security/. , êáé ç ðáñáêïëïýèçóç åíüò êëÜäïõ áíÜðôõîçò ìüíï ãéá ëüãïõò áóöáëåßáò, ðéèáíüí íá öÝñåé åðßóçò êáé Üëëåò áíåðéèýìçôåò áëëáãÝò ìáæß ôçò. Áí êáé êáôáâÜëëïõìå êÜèå äõíáôÞ ðñïóðÜèåéá þóôå íá åîáóöáëßóïõìå üôé ï êëÜäïò &os.stable; ìðïñåß íá ìåôáãëùôôéóôåß êáé íá åêôåëåóôåß óå êÜèå äåäïìÝíç ÷ñïíéêÞ óôéãìÞ, äåí ìðïñïýìå ùóôüóï íá ôï åããõçèïýìå. Åðéðñüóèåôá, áí êáé ï êþäéêáò áíáðôýóóåôáé óôï &os.current; ðñéí ðåñÜóåé óôï &os.stable;, ï êüóìïò ðïõ åêôåëåß ôï &os.stable; åßíáé ðåñéóóüôåñïò, êáé Ýôóé åßíáé áíáðüöåõêôï íá áíáêáëýðôïíôáé ðéï ðïëëÜ óöÜëìáôá êáé áêñáßåò ðåñéðôþóåéò óôï &os.stable; ôá ïðïßá äåí Ý÷ïõí ãßíåé åìöáíÞ óôï &os.current;. Ãéá ôïõò ëüãïõò áõôïýò, äåí óõíéóôïýìå íá ðáñáêïëïõèåßôå ôõöëÜ ôï &os.stable;, êáé åéäéêüôåñá åßíáé óçìáíôéêü íá ìçí áíáâáèìßæåôå óå áõôü åîõðçñåôçôÝò óå ðåñéâÜëëïíôá ðáñáãùãÞò, ÷ùñßò íá Ý÷åôå ðñþôá åëÝãîåé áíáëõôéêÜ ôïí êþäéêá óôï äéêü óáò ðåñéâÜëëïí áíÜðôõîçò. Áí äåí äéáèÝôåôå ôïõò ðüñïõò ãéá íá ôï êÜíåôå áõôü, óáò óõíéóôïýìå íá ÷ñçóéìïðïéåßôå ôçí ôåëåõôáßá åðßóçìç Ýêäïóç ôïõ &os;, êáé íá áíáâáèìßæåóôå áðü ôç ìéá Ýêäïóç óôçí åðüìåíç ìÝóù ôïõ ìç÷áíéóìïý äõáäéêþí åíçìåñþóåùí. ×ñçóéìïðïéþíôáò ôï &os.stable; - - -STABLE - using - Ãñáöôåßôå óõíäñïìçôÞò óôç ëßóôá &a.stable.name;. Èá åßóôå Ýôóé åíçìåñùìÝíïé ãéá åîáñôÞóåéò ìåôáãëþôôéóçò ðïõ ßóùò - åìöáíéóôïýí óôï &os.stable;, Þ ãéá Üëëá ðñïâëÞìáôá ðïõ ÷ñÞæïõí + åìöáíéóôïýí óôï &os.stable;-STABLEusing, Þ ãéá Üëëá ðñïâëÞìáôá ðïõ ÷ñÞæïõí åéäéêÞò ðñïóï÷Þò. Óôç ëßóôá áõôÞ èá âñßóêåôå åðßóçò áíáêïéíþóåéò áðü ìÝëç ôçò ïìÜäáò áíÜðôõîçò, üôáí ðñüêåéôáé íá óõìðåñéëçöèåß êÜðïéá áìöéëåãüìåíç áíáíÝùóç Þ äéüñèùóç, äßíïíôáò Ýôóé óôïõò ÷ñÞóôåò ôçí åõêáéñßá íá åêöÝñïõí ãíþìç ó÷åôéêÜ ìå ôá ðñïâëÞìáôá ðïõ èá ðñïêáëÝóåé ç ðñïôåéíüìåíç áëëáãÞ. Èá ðñÝðåé íá åããñáöåßôå óôçí êáôÜëëçëç ëßóôá SVN áíÜëïãá ìå ôïí êëÜäï ðïõ ðáñáêïëïõèåßôå. Ãéá ðáñÜäåéãìá, áí ðáñáêïëïõèåßôå ôïí êëÜäï 7-STABLE, ç êáôÜëëçëç ëßóôá åßíáé ç &a.svn-src-stable-7.name;. Áõôü èá óáò åðéôñÝøåé íá âëÝðåôå ôéò êáôá÷ùñÞóåéò óôï commit log ãéá êÜèå áëëáãÞ ðïõ ãßíåôáé, êáèþò êáé ðëçñïöïñßåò ãéá ðéèáíÝò ðáñåíÝñãåéåò ðïõ ìðïñåß íá Ý÷åé. Ãéá íá ãñáöôåßôå óå áõôÝò, Þ óå ïðïéåóäÞðïôå áðü ôéò õðÜñ÷ïõóåò ëßóôåò, åðéóêåöèåßôå ôçí ôïðïèåóßá &a.mailman.lists.link; êáé åðéëÝîôå ôç ëßóôá óôçí ïðïßá èÝëåôå íá ãßíåôå óõíäñïìçôÞò. Ïäçãßåò ãéá ôçí õðüëïéðç äéáäéêáóßá èá âñåßôå åðéôüðïõ. Áí óáò åíäéáöÝñåé íá ðáñáêïëïõèåßôå ôéò áëëáãÝò óå üëï ôï äÝíôñï ðçãáßïõ êþäéêá, óáò óõíéóôïýìå íá åããñáöåßôå óôç ëßóôá &a.svn-src-all.name;. Áí ðñüêåéôáé íá åãêáôáóôÞóåôå Ýíá íÝï óýóôçìá ìå óêïðü íá åêôåëåßôå ôá ìçíéáßá snapshot ôïõ &os.stable;, ðáñáêáëïýìå íá åëÝãîåôå ôçí ôïðïèåóßá Snapshots ãéá ðåñéóóüôåñåò ðëçñïöïñßåò. ÅíáëëáêôéêÜ, åßíáé äõíáôüí íá åãêáôáóôÞóåôå ôï ðéï ðñüóöáôï &os.stable; áðü êÜðïéï mirror site áêïëïõèþíôáò ôéò ðáñáêÜôù ïäçãßåò þóôå íá áíáâáèìßóåôå ôï óýóôçìá óáò óôçí ðëÝïí ðñüóöáôç Ýêäïóç ðçãáßïõ êþäéêá ôïõ &os.stable;. Áí äéáèÝôåôå Þäç êÜðïéá ðñïçãïýìåíç Ýêäïóç ôïõ &os; êáé åðéèõìåßôå íá áíáâáèìéóôåßôå ìÝóù ôïõ ðçãáßïõ êþäéêá, ìðïñåßôå åýêïëá íá ÷ñçóéìïðïéÞóåôå êÜðïéï mirror site ôïõ &os;. ÕðÜñ÷ïõí äýï ôñüðïé ãéá íá ãßíåé áõôü: - - cvsup - - - cron - - - -STABLE - syncing with CVSup - ×ñçóéìïðïéÞóôå ôï ðñüãñáììá cvsup óå óõíäõáóìü ìå ôï + linkend="cvsup">cvsupcvsup óå óõíäõáóìü ìå ôï supfile ìå ôçí ïíïìáóßá stable-supfile ôï ïðïßï èá âñåßôå óôïí êáôÜëïãï /usr/share/examples/cvsup. ÁõôÞ åßíáé êáé ç ðëÝïí óõíéóôþìåíç ìÝèïäïò, êáèþò óáò åðéôñÝðåé íá áíáêôÞóåôå üëç ôç óõëëïãÞ ìå ìéá êßíçóç, êáé óôéò åðüìåíåò áíáíåþóåéò èá ðáßñíåôå ìüíï ôéò áëëáãÝò. Ðïëëïß ÷ñÞóôåò åêôåëïýí ôï cvsup ìÝóù ôïõ cron þóôå íá êñáôÜíå ôïí ðçãáßï êþäéêá ôïõ óõóôÞìáôïò ôïõò ðÜíôá áíáíåùìÝíï áõôüìáôá. Èá ðñÝðåé íá ðñïóáñìüóåôå ôï õðüäåéãìá ôïõ supfile ðïõ äßíïõìå ðáñáðÜíù, êáé íá - ñõèìßóåôå ôï cvsup ãéá ôï + ñõèìßóåôå ôï cvsup-STABLEsyncing with CVSup ãéá ôï ðåñéâÜëëïí óáò. - - -STABLE - syncing with CTM - - ×ñçóéìïðïéÞóôå ôçí õðçñåóßá CTM. Áí äåí Ý÷åôå + linkend="ctm">CTM-STABLEsyncing with CTM. Áí äåí Ý÷åôå ãñÞãïñç êáé öôçíÞ óýíäåóç ìå ôï Internet, áõôÞ åßíáé ç óõíéóôþìåíç ìÝèïäïò. ÏõóéáóôéêÜ, áí ÷ñåéÜæåóôå ãñÞãïñç êáé êáôÜ áðáßôçóç ðñüóâáóç óôïí ðçãáßï êþäéêá, êáé ôï åýñïò æþíçò ôçò óýíäåóçò äåí áðïôåëåß ðñüâëçìá, ÷ñçóéìïðïéÞóôå ôï cvsup Þ ôï ftp. ÄéáöïñåôéêÜ, ÷ñçóéìïðïéÞóôå ôï CTM. - - -STABLE - compiling - - - Ðñéí ìåôáãëùôôßóåôå ôï &os.stable;, äéáâÜóôå ðñïóåêôéêÜ ôï + Ðñéí ìåôáãëùôôßóåôå ôï &os.stable;-STABLEcompiling, äéáâÜóôå ðñïóåêôéêÜ ôï Makefile óôïí êáôÜëïãï /usr/src. Èá ðñÝðåé íá ìåôáãëùôôßóåôå ôïí ðõñÞíá êáé üëï ôï âáóéêü óýóôçìá (world) ôçí ðñþôç öïñÜ, ùò ìÝñïò ôçò äéáäéêáóßáò áíáâÜèìéóçò. ÄéáâÜæïíôáò ôçí &a.stable; êáé ôï /usr/src/UPDATING èá åßóôå åíçìåñùìÝíïé ãéá íÝåò äéáäéêáóßåò üóï áöïñÜ ôçí åêêßíçóç óôï íÝï óáò óýóôçìá. Ïé äéáäéêáóßåò áõôÝò åßíáé óõ÷íÜ áðáñáßôçôåò üóï ðëçóéÜæïõìå óå ìéá íÝá åðßóçìç Ýêäïóç. Óõã÷ñïíßæïíôáò ôïí Ðçãáßï óáò Êþäéêá ÕðÜñ÷ïõí äéÜöïñïé ôñüðïé íá ÷ñçóéìïðïéÞóåôå ìéá óýíäåóç Internet (Þ email) ãéá íá åíçìåñþíåôå ïðïéïäÞðïôå ôìÞìá ðçãáßïõ êþäéêá ôïõ &os; Project óáò åíäéáöÝñåé, Þ êáé üëá áí ôï åðéèõìåßôå. Ïé âáóéêÝò õðçñåóßåò ðïõ ðñïóöÝñïõìå åßíáé ôï Áíþíõìï CVS, ôï CVSup, êáé ôï CTM. Áí êáé åßíáé äõíáôüí íá åíçìåñþóåôå ìüíï êÜðïéá ôìÞìáôá ôïõ äÝíôñïõ ðçãáßïõ êþäéêá, ç ìüíç äéáäéêáóßá åíçìÝñùóçò ðïõ õðïóôçñßæåôáé áöïñÜ ôçí åíçìÝñùóç ïëüêëçñïõ ôïõ äÝíôñïõ. ÌåôÜ ôçí åíçìÝñùóç, èá ðñÝðåé íá ìåôáãëùôôßóåôå îáíÜ ôüóï ôï userland (äçë. ôá ðñïãñÜììáôá ðïõ åêôåëïýíôáé óôçí ðåñéï÷Þ ÷ñÞóôç, üðùò áõôÜ ðïõ âñßóêïíôáé óôïõò êáôáëüãïõò /bin êáé /sbin) üóï êáé ôïí ðçãáßï êþäéêá ôïõ ðõñÞíá. Áí åíçìåñþóåôå ìüíï Ýíá ôìÞìá ôïõ ðçãáßïõ êþäéêá, ìüíï ôïí ðõñÞíá Þ ìüíï ôï userland, èá áíôéìåôùðßóåôå ðñïâëÞìáôá. Ôá ðñïâëÞìáôá áõôÜ ìðïñåß íá êõìáßíïíôáé áðü óöÜëìáôá ìåôáãëþôôéóçò ìÝ÷ñé kernel panic êáé êáôáóôñïöÞ äåäïìÝíùí. CVS anonymous Ôï Áíþíõìï CVS êáé ôï CVSup ÷ñçóéìïðïéïýí ôç ìÝèïäï pull ãéá ôçí åíçìÝñùóç ôïõ ðçãáßïõ êþäéêá. Óôçí ðåñßðôùóç ôïõ CVSup, ï ÷ñÞóôçò (ç êÜðïéï script ðïõ åêôåëåßôáé ìÝóù cron) åêôåëåß ôï ðñüãñáììá cvsup ôï ïðïßï áëëçëåðéäñÜ ìå Ýíá áíôßóôïé÷ï åîõðçñåôçôÞ cvsupd þóôå íá åíçìåñþóåé ôá ó÷åôéêÜ áñ÷åßá. Ïé åíçìåñþóåéò ðïõ ëáìâÜíåôå åßíáé ðÜíôïôå ïé ôåëåõôáßåò äéáèÝóéìåò, êáé èá ôéò ëÜâåôå ìüíï üôáí ôéò æçôÞóåôå. Ìðïñåßôå åýêïëá íá ðåñéïñßóåôå ôéò åíçìåñþóåéò óå óõãêåêñéìÝíá áñ÷åßá Þ êáôáëüãïõò ôá ïðïßá óáò åíäéáöÝñïõí. Ïé åíçìåñþóåéò äçìéïõñãïýíôáé äõíáìéêÜ áðü ôïí åîõðçñåôçôÞ, áíÜëïãá ìå ôï ôé Ý÷åôå åãêáôåóôçìÝíï êáé ôé åðéèõìåßôå íá ëÜâåôå. Ôï Áíþíõìï CVS åßíáé êÜðùò ðéï áðëïúêü áðü ôï CVSup, äåäïìÝíïõ üôé åßíáé áðëþò ìéá åðÝêôáóç ôïõ CVS ðïõ åðéôñÝðåé ôçí áíÜêôçóç áëëáãþí áðåõèåßáò áðü êÜðïéï áðïìáêñõóìÝíï CVS repository. Ôï CVSup åßíáé áñêåôÜ ðéï áðïôåëåóìáôéêü óå áõôüí ôï ôïìÝá, áëëÜ ôï Áíþíõìï CVS åßíáé áðëïýóôåñï óôç ÷ñÞóç. CTM Áðü ôçí Üëëç ìåñéÜ, ôï CTM äåí óõãêñßíåé Üìåóá ôïí ðçãáßï êþäéêá ðïõ Ý÷åôå ìå áõôüí ðïõ õðÜñ÷åé óôïí êåíôñéêü åîõðçñåôçôÞ þóôå íá áíáêôÞóåé ìüíï ôéò áëëáãÝò. Áíôßèåôá, óôï êåíôñéêü ìç÷Üíçìá CTM, åêôåëåßôáé áñêåôÝò öïñÝò ôçí çìÝñá Ýíá script. Ôï script áõôü áíáãíùñßæåé ôéò áëëáãÝò óôá áñ÷åßá óå ó÷Ýóç ìå ôçí ðñïçãïýìåíç åêôÝëåóç ôïõ, êáé Ýðåéôá ðáêåôÜñåé êáé óõìðéÝæåé ôéò áëëáãÝò ìå ôñüðï êáôÜëëçëï ãéá áðïóôïëÞ ìÝóù email (ìüíï åêôõðþóéìïé ASCII ÷áñáêôÞñåò). Óå êÜèå ôÝôïéï ðáêÝôï áëëáãþí áíôéóôïé÷ßæåôáé Ýíáò ìïíáäéáßïò áñéèìüò áêïëïõèßáò (sequence number) ðïõ ôï áíáãíùñßæåé. ÌåôÜ ôç ëÞøç ôïõò, ìðïñåßôå íá äþóåôå áõôÜ ôá áñ÷åßá äéáöïñþí ôïõ CTM (CTM deltas) óôï âïçèçôéêü ðñüãñáììá &man.ctm.rmail.1; ôï ïðïßï áõôüìáôá èá ôá áðïêùäéêïðïéÞóåé, èá ôá åðáëçèåýóåé, êáé èá åöáñìüóåé ôéò áëëáãÝò óôï áíôßãñáöï ðçãáßïõ êþäéêá ôïõ ÷ñÞóôç. Ç äéáäéêáóßá áõôÞ åßíáé ðïëý ðéï áðïäïôéêÞ áðü ôï CVSup, êáé åðéâáñýíåé ëéãüôåñï ôïõò åîõðçñåôçôÝò ìáò, êáèþò åßíáé ìéá äéáäéêáóßá ôýðïõ push áíôß ãéá pull. ÕðÜñ÷ïõí öõóéêÜ êÜðïéá óçìåßá ðïõ õóôåñåß. Áí áðü ëÜèïò äéáãñÜøåôå êÜðïéá ôìÞìáôá ôïõ ðçãáßïõ óáò êþäéêá, ôï CVSup èá áíé÷íåýóåé êáé èá äéïñèþóåé áõôüìáôá ôç âëÜâç ãéá óáò. Ôï CTM äåí èá ôï êÜíåé áõôü, êáé áí óâÞóåôå êÜðïéï ôìÞìá ôïõ äÝíôñïõ óáò (êáé äåí Ý÷åôå áíôßãñáöï áóöáëåßáò) èá ðñÝðåé íá îåêéíÞóåôå áðü ôçí áñ÷Þ (áðü ôï ðéï ðñüóöáôï CVS base delta) êáé íá ôï îáíáêôßóåôå áðü ôçí áñ÷Þ ìå ôï CTM. Ìå ôï Áíþíõìï CVS, ìðïñåßôå áðëþò íá äéáãñÜøåôå ôá ðñïâëçìáôéêÜ áñ÷åßá êáé íá óõã÷ñïíßóåôå îáíÜ ôïí ðçãáßï óáò êþäéêá. Ìåôáãëùôôßæïíôáò ôï Âáóéêü Óýóôçìá (<quote>world</quote>) Rebuilding world ¸÷ïíôáò óõã÷ñïíßóåé ôï ôïðéêü óáò äÝíôñï ðçãáßïõ êþäéêá óå êÜðïéá óõãêåêñéìÝíç Ýêäïóç ôïõ &os; (&os.stable;, &os.current;, ê.ï.ê.), ìðïñåßôå Ýðåéôá íá ôï ÷ñçóéìïðïéÞóåôå ãéá íá ìåôáãëùôôßóåôå ôï óýóôçìá óáò áðü ôçí áñ÷Þ. ÄçìéïõñãÞóôå ¸íá Áíôßãñáöï Áóöáëåßáò Äåí ìðïñïýìå ðáñÜ íá ôïíßóïõìå ðüóï óçìáíôéêü åßíáé íá äçìéïõñãÞóåôå Ýíá áíôßãñáöï áóöáëåßáò ôïõ óõóôÞìáôïò óáò ðñéí îåêéíÞóåôå áõôÞ ôç äéáäéêáóßá. Áí êáé ç ìåôáãëþôôéóç ôïõ âáóéêïý óõóôÞìáôïò åßíáé (üóï ôïõëÜ÷éóôïí áêïëïõèåßôå áõôÝò ôéò ïäçãßåò) ìéá ó÷åôéêÜ áðëÞ äéáäéêáóßá, áíáìößâïëá èá õðÜñîïõí êáé ðåñéðôþóåéò ðïõ ëÜèç äéêÜ óáò, Þ Üëëùí (óôï äÝíôñï ðçãáßïõ êþäéêá), èá óáò ïäçãÞóïõí óå Ýíá óýóôçìá ðïõ äåí èá ìðïñåß íá åêêéíÞóåé. Âåâáéùèåßôå üôé Ý÷åôå åíçìåñùìÝíï áíôßãñáöï áóöáëåßáò. Êáëü èá åßíáé íá Ý÷åôå åðßóçò ðñü÷åéñç ìéá äéóêÝôá fixit Þ Ýíá CD åêêßíçóçò. ºóùò íá ìçí ÷ñåéáóôåß ðïôÝ íá ôá ÷ñçóéìïðïéÞóåôå, áëëÜ êáëýôåñá íá åßóôå áóöáëÞò ðáñÜ íá ôï ìåôáíïéþíåôå áñãüôåñá! Ãßíåôå ÓõíäñïìçôÞò óôç ÓùóôÞ Ëßóôá Çë. Ôá÷õäñïìåßïõ mailing list Áðü ôç öýóç ôïõò, ïé êëÜäïé &os.stable; êáé &os.current; âñßóêïíôáé óå óõíå÷Þ áíÜðôõîç. ¼óïé óõíåéóöÝñïõí óôï &os; åßíáé áðëþò Üíèñùðïé, êáé ðåñéóôáóéáêÜ ëÜèç áðëþò óõìâáßíïõí. ÏñéóìÝíåò öïñÝò ôá ëÜèç áõôÜ åßíáé ìÜëëïí áêßíäõíá, êáé ôï ìüíï ðïõ êÜíïõí åßíáé íá åìöáíßæïõí ìåñéêÝò äéáãíùóôéêÝò ðñïåéäïðïéÞóåéò óôï óýóôçìá óáò. ¹ ìðïñåß ç áëëáãÞ íá åßíáé êáôáóôñïöéêÞ, êáé íá ïäçãÞóåé ôï óýóôçìá óáò óå áäõíáìßá åêêßíçóçò Þ áêüìá êáé íá êáôáóôñÝøåé ôá óõóôÞìáôá áñ÷åßùí óáò (Þ êáé áêüìá ÷åéñüôåñåò óõíÝðåéåò). Áí óõìâïýí ôÝôïéá ðñïâëÞìáôá, óýíôïìá èá åìöáíéóôåß Ýíá ìÞíõìá ôýðïõ heads up óôéò ó÷åôéêÝò ëßóôåò ôá÷õäñïìåßïõ, ôï ïðïßï èá åîçãåß ôï ðñüâëçìá êáé ðïéá óõóôÞìáôá åðçñåÜæåé. ¼ôáí ôï ðñüâëçìá ëõèåß, èá ãßíåé ìéá áíôßóôïé÷ç all clear áíáêïßíùóç. Áí ðñïóðáèåßôå íá áêïëïõèÞóåôå ôï &os.stable; Þ ôï &os.current;, êáé äåí äéáâÜæåôå ôéò áíôßóôïé÷åò ëßóôåò &a.stable.name; êáé &a.current.name;, øÜ÷íåôå ãéá ìðåëÜäåò. Ìçí ×ñçóéìïðïéÞóåôå ôçí åíôïëÞ <command>make world</command> ÌåãÜëï ìÝñïò ôçò ðáëáéüôåñçò ôåêìçñßùóçò, óõíéóôÜ ôç ÷ñÞóç ôçò åíôïëÞò make world. Áí ôçí ÷ñçóéìïðïéÞóåôå, èá ðáñáëåéöèïýí ïñéóìÝíá óçìáíôéêÜ âÞìáôá ôçò äéáäéêáóßáò. ×ñçóéìïðïéÞóôå ôç ìüíï áí åßóôå áðüëõôá óßãïõñïé ãéá áõôü ðïõ êÜíåôå. Ãéá ôéò ðåñéóóüôåñåò ðåñéðôþóåéò, ç åíôïëÞ make world åßíáé ëáíèáóìÝíç, êáé áíôß ãéá áõôÞ èá ðñÝðåé íá áêïëïõèÞóåôå ôç äéáäéêáóßá ðïõ ðåñéãñÜöïõìå ðáñáêÜôù. Ï Êáíïíéêüò Ôñüðïò íá Åíçìåñþóåôå ôï Óýóôçìá óáò Ðñéí åíçìåñþóåôå ôï óýóôçìá óáò, èá ðñÝðåé íá åëÝãîåôå ôï /usr/src/UPDATING ãéá ôõ÷üí âÞìáôá ðïõ èá ðñÝðåé íá åêôåëÝóåôå ðñéí ôçí åêêßíçóç ôçò ìåôáãëþôôéóçò. Ôá âÞìáôá áõôÜ åîáñôþíôáé áðü ôçí Ýêäïóç ôïõ ðçãáßïõ êþäéêá ðïõ ðñüêåéôáé íá ÷ñçóéìïðïéÞóåôå. ¸ðåéôá, áêïëïõèÞóôå ôç äéáäéêáóßá ðïõ ðåñéãñÜöåôáé óôéò åðüìåíåò ðáñáãñÜöïõò. Ç äéáäéêáóßá áíáâÜèìéóçò ç ïðïßá ðåñéãñÜöåôáé åäþ âáóßæåôáé óôçí õðüèåóç üôé Ý÷åôå Þäç åãêáôáóôÞóåé ìéá ðáëéüôåñç Ýêäïóç ôïõ &os;, ìå ìéá ðáëéÜ Ýêäïóç ôïõ ìåôáãëùôôéóôÞ, Ýíá ðáëéü ðõñÞíá, ðáëéÜ åñãáëåßá ÷ñÞóôç êáé áñ÷åßá ñõèìßóåùí. Åñãáëåßá ÷ñÞóôç èåùñïýíôáé ôá âáóéêÜ åêôåëÝóéìá, ïé âéâëéïèÞêåò êáé ôá áñ÷åßá ðñïãñáììáôéóìïý. Ï ìåôáãëùôôéóôÞò åßíáé êé áõôüò ìÝñïò ôùí åñãáëåßùí ÷ñÞóôç óôï &os;, áëëÜ ÷ñåéÜæåôáé åéäéêÞ ìåôá÷åßñéóç êáôÜ ôç äéáäéêáóßá áíáâÜèìéóçò. ÕðïèÝôïõìå, åðßóçò, üôé Ý÷åôå Þäç êáôåâÜóåé ìéá åíçìåñùìÝíç Ýêäïóç áðü ôïí ðçãáßï êþäéêá ôïõ óõóôÞìáôïò. Áí ï ðçãáßïò êþäéêáò óôï óõãêåêñéìÝíï óýóôçìá åßíáé áðü ðáëéüôåñç Ýêäïóç, äåßôå ôï ãéá ëåðôïìåñåßò ïäçãßåò ó÷åôéêÜ ìå ôï ðùò íá óõã÷ñïíßóåôå ôïí ðçãáßï êþäéêá óå ìéá íåüôåñç Ýêäïóç. Ç áíáâÜèìéóç ôïõ &os; áðü ôïí ðçãáßï êþäéêÜ ôïõ öáßíåôáé íá åßíáé ðïëý áðëÞ äéáäéêáóßá. Óôçí ðñáãìáôéêüôçôá, Ý÷åé êÜðïéåò éäéáéôåñüôçôåò. Ìå ôá ÷ñüíéá, êáèþò ïé åîáñôÞóåéò ìåôáîý ôùí âçìÜôùí ôçò áíáâÜèìéóçò áíáêáëýðôïíôáé Þ áíáëýïíôáé êáëýôåñá, ïé ðñïãñáììáôéóôÝò ôïõ &os; áëëÜæïõí óéãÜ-óéãÜ áõôÞ ôç äéáäéêáóßá. Ïé ðáñáêÜôù ðáñÜãñáöïé ðåñéãñÜöïõí ôç ëïãéêÞ ìå ôçí ïðïßá Ý÷åé ó÷åäéáóèåß ç ðñïôåéíüìåíç äéáäéêáóßá áíáâÜèìéóçò. Ìéá åðéôõ÷Þò äéáäéêáóßá áíáâÜèìéóçò ðñÝðåé íá êáëýøåé ôïõëÜ÷éóôïí ôéò äýï ðéï âáóéêÝò éäéáéôåñüôçôåò ìéáò áíáâÜèìéóçò áðü ðçãáßï êþäéêá: Ï ðáëéüò ìåôáãëùôôéóôÞò óõóôÞìáôïò ìðïñåß íá åßíáé áêáôÜëëçëïò ãéá ìåôáãëþôôéóç ôïõ íÝïõ ðõñÞíá. (Êáé ïé ìåôáãëùôôéóôÝò Ý÷ïõí ïñéóìÝíåò öïñÝò ðñïâëÞìáôá, üðùò êÜèå Üëëï ëïãéóìéêü.) Ïðüôå ï íÝïò ðõñÞíáò ðñÝðåé íá ìåôáãëùôôéóôåß ìå ôï íÝï ìåôáãëùôôéóôÞ. Ðéï óõãêåêñéìÝíá, ï íÝïò ìåôáãëùôôéóôÞò ðñÝðåé íá áíáâáèìéóôåß ðñéí áðü ôï íÝï ðõñÞíá. Áõôü äå óçìáßíåé âÝâáéá üôé áõôüò ï íÝïò ìåôáãëùôôéóôÞò ðñÝðåé íá åãêáôáóôáèåß ðñéí ìåôáãëùôôéóôåß ï íÝïò ðõñÞíáò. Ôá íÝá åñãáëåßá ÷ñÞóôç áðü ôï âáóéêü óýóôçìá ôïõ &os; ìðïñåß íá åîáñôþíôáé áðü ôïí ôñüðï ëåéôïõñãßáò ôïõ íÝïõ ðõñÞíá. Ïðüôå ï íÝïò ðõñÞíáò ðñÝðåé íá åãêáôáóôáèåß ðñéí áðü ôï íÝï âáóéêü óýóôçìá. ÁõôÜ ôá äýï óçìåßá åßíáé ïé âáóéêïß ëüãïé ãéá ôïõò ïðïßïõò ðñïôåßíïíôáé ôá êåíôñéêÜ âÞìáôá ìéáò áíáâÜèìéóçò, ôá âÞìáôá buildworld, buildkernel, installkernel, êáé installworld. Óôéò åðüìåíåò ðáñáãñÜöïõò èá ðåñéãñÜøïõìå ðéï áíáëõôéêÜ áõôÜ ôá âÞìáôá. ÕðÜñ÷ïõí êé Üëëïé ëüãïé üìùò ãéá ôïõò ïðïßïõò ÷ñåéÜæåôáé ðñïóï÷Þ üôáí êÜíåôå ìéá ôÝôïéá áíáâÜèìéóç. Ìåñéêïß áðü áõôïýò åßíáé ïé åîÞò: Ôá ðáëéÜ åñãáëåßá ôïõ âáóéêïý óõóôÞìáôïò ìðïñåß íá ìçí ôñÝ÷ïõí óùóôÜ ìå ôï íÝï ðõñÞíá. Ãé áõôü ðñÝðåé íá åãêáôáóôáèåß ôï åíçìåñùìÝíï âáóéêü óýóôçìá áìÝóùò ìåôÜ ôçí åãêáôÜóôáóç ôïõ íÝïõ ðõñÞíá. ÌåñéêÝò öïñÝò ÷ñåéÜæïíôáé áëëáãÝò óôá áñ÷åßá ñõèìßóåùí ðñéí åãêáôáóôáèåß ôï íÝï âáóéêü óýóôçìá. ¶ëëåò öïñÝò ç åãêáôÜóôáóç üëùí ôùí áñ÷åßùí ñõèìßóåùí ìðïñåß íá äçìéïõñãÞóåé ðñïâëÞìáôá óôçí åãêáôÜóôáóç. Ãé áõôü Ý÷ïõìå ÷ùñßóåé ôçí åíçìÝñùóç ôùí áñ÷åßùí ñõèìßóåùí óå äýï îå÷ùñéóôÜ âÞìáôá. Óôçí ðëåéïøçößá ôùí ðåñéðôþóåùí ç äéáäéêáóßá åãêáôÜóôáóçò áíôéêáèéóôÜ Þ ðñïóèÝôåé áñ÷åßá ôïõ óõóôÞìáôïò· äå óâÞíåé êáíÝíá õðÜñ÷ïí áñ÷åßï. Óå ìåñéêÝò ðåñéðôþóåéò áõôü ìðïñåß íá äçìéïõñãÞóåé ðñïâëÞìáôá. ¼ôáí õðÜñ÷åé ôÝôïéá ðåñßðôùóç, ç äéáäéêáóßá åãêáôÜóôáóçò ôõðþíåé åíçìåñùôéêÜ ìçíýìáôá ãéá ôá áñ÷åßá ôá ïðïßá ðñÝðåé íá óâçóôïýí ÷åéñïêßíçôá. Áõôü ôï âÞìá ìðïñåß íá áõôïìáôïðïéçèåß óôï ìÝëëïí. ¸÷ïíôáò üëåò áõôÝò ôéò éäéáéôåñüôçôåò ìéáò áíáâÜèìéóçò áðü ðçãáßï êþäéêá, êáôáëÞîáìå óôçí ðáñáêÜôù äéáäéêáóßá áíáâÜèìéóçò. ÏñéóìÝíåò öïñÝò ìðïñåß íá ÷ñåéÜæåôáé íá ðñïóèÝóåôå êÜðïéá âÞìáôá óå áõôÞ ôç äéáäéêáóßá. Ôá âáóéêÜ âÞìáôá üìùò ðáñáìÝíïõí ôá ßäéá, êé åßíáé ôá åîÞò: make buildworld Áõôü ôï âÞìá ìåôáãëùôôßæåé ðñþôá ìéá åíçìåñùìÝíç Ýêäïóç ôïõ ßäéïõ ôïõ ìåôáãëùôôéóôÞ óõóôÞìáôïò êáé ìåñéêþí áðáñáßôçôùí åñãáëåßùí. ¾óôåñá, ÷ñçóéìïðïéþíôáò ôï íÝï ìåôáãëùôôéóôÞ, ðñïåôïéìÜæåé ìéá íÝá Ýêäïóç üëïõ ôïõ âáóéêïý óõóôÞìáôïò ôïõ &os;. Ôá åíçìåñùìÝíá åêôåëÝóéìá, âéâëéïèÞêåò êáé áñ÷åßá ðñïãñáììáôéóìïý êáôáëÞãïõí óôïí êáôÜëïãï /usr/obj. make buildkernel Óå áíôßèåóç ìå ðáëéüôåñåò äéáäéêáóßåò áíáâÜèìéóçò (ïé ïðïßåò êáëïýóáí ÷åéñïêßíçôá ôï &man.config.8; êáé ôï &man.make.1;) áõôü ôï âÞìá ìåôáãëùôôßæåé ôïí ðõñÞíá ôïõ &os; ÷ñçóéìïðïéþíôáò ôïí åíçìåñùìÝíï ìåôáãëùôôéóôÞ óõóôÞìáôïò áðü ôïí êáôÜëïãï /usr/obj. Áõôü óáò ðñïóôáôåýåé áðü ðñïâëÞìáôá áóõìâáôüôçôáò ìåôáîý ôïõ ìåôáãëùôôéóôÞ êáé ôïõ ðõñÞíá. make installkernel ÅãêáôÜóôáóç ôïõ íÝïõ ðõñÞíá êáé ôùí áñèñùìÜôùí ôïõ óôï äßóêï ôïõ óõóôÞìáôïò. ¸ôóé ìðïñåß ðëÝïí ôï óýóôçìá íá îåêéíÞóåé ìå ôï íÝï, åíçìåñùìÝíï ðõñÞíá. Åêêßíçóç óå ëåéôïõñãßá single user. Ç ëåéôïõñãßá single user åëá÷éóôïðïéåß ôçí ðéèáíüôçôá íá Ý÷åôå ðñïâëÞìáôá åðåéäÞ áíáâáèìßóáôå êÜðïéï ðñüãñáììá ðïõ ôñÝ÷åé Þäç. Åßíáé åðßóçò ðéï áóöáëÞò, áöïý äå ÷ñåéÜæåôáé íá ôñÝîåôå ôéò åöáñìïãÝò ôïõ ðáëéïý âáóéêïý óõóôÞìáôïò ìå ôï íÝï ðõñÞíá. mergemaster Áõôü ôï âÞìá åíçìåñþíåé ôá áðïëýôùò âáóéêÜ áñ÷åßá ñõèìßóåùí ôïõ &os;, ãéá íá ìðïñÝóåôå íá åãêáôáóôÞóåôå óùóôÜ ôï íÝï âáóéêü óýóôçìá. Åíçìåñþíåé, ãéá ðáñÜäåéãìá, ôç âÜóç ÷ñçóôþí êáé ïìÜäùí ÷ñçóôþí ôïõ &os;. ÊÜèå öïñÜ ðïõ ðñïóôßèåôáé Ýíáò íÝïò ÷ñÞóôçò óõóôÞìáôïò Þ ìéá íÝá ïìÜäá ÷ñçóôþí, ôï âÞìá installworld ôçò áíáâÜèìéóçò èåùñåß üôé Ý÷åôå Þäç ñõèìßóåé ôïõò íÝïõò ÷ñÞóôåò Þ ôéò íÝåò ïìÜäåò. Áõôü áêñéâþò êÜíåé óå áõôü ôï óçìåßï ôï åñãáëåßï &man.mergemaster.8;. make installworld Ôï åðüìåíï âÞìá åßíáé íá åãêáôáóôÞóåôå ôï åíçìåñùìÝíï âáóéêü óýóôçìá áðü ôïí êáôÜëïãï /usr/obj. ÌåôÜ áðü áõôü Ý÷åôå ðëÝïí Ýíá íÝï ðõñÞíá êáé Ýíá åíçìåñùìÝíï âáóéêü óýóôçìá, ôï ïðïßï ôáéñéÜæåé ìå ôïí íÝï ðõñÞíá. mergemaster ¸íá áðü ôá ôåëåõôáßá âÞìáôá åßíáé ç áíáâÜèìéóç ôùí áñ÷åßùí ñõèìßóåùí ôïõ óõóôÞìáôïò. Ôï åñãáëåßï &man.mergemaster.8; ìðïñåß íá óáò âïçèÞóåé óå áõôü ôï âÞìá, áöïý åíçìåñþíåé ôá áñ÷åßá ñõèìßóåùí êñáôþíôáò êáé ïðïéåóäÞðïôå ôïðéêÝò áëëáãÝò Ý÷åôå êÜíåé óôï óýóôçìÜ óáò. ÅðáíåêêéíÞóôå ôï óýóôçìá. Ìéá ôåëåõôáßá åðáíåêêßíçóç ôïõ óõóôÞìáôïò óáò åîáóöáëßæåé üôé ôï óýóôçìá îåêéíÜåé ìå ôï íÝï ðõñÞíá, ôï åíçìåñùìÝíï âáóéêü óýóôçìá êáé ôá êáéíïýñéá áñ÷åßá ñõèìßóåùí. Áí ç áíáâÜèìéóç ðïõ êÜíåôå åßíáé áðü ìéá Ýêäïóç ôïõ &os; óå ìéá ðéï êáéíïýñéá Ýêäïóç ôïõ ßäéïõ êëÜäïõ áíÜðôõîçò, ð.÷. áðü 7.0 óå 7.1, ôüôå ìåñéêÜ áðü ôá âÞìáôá áõôÞ ôçò äéáäéêáóßáò ìðïñåß íá ìç ÷ñåéÜæïíôáé áöïý åßíáé ëéãüôåñï ðéèáíü íá óõíáíôÞóåôå áóõìâáôüôçôåò ìåôáîý ôïõ ìåôáãëùôôéóôÞ óõóôÞìáôïò, ôïõ ðõñÞíá, ôïõ âáóéêïý óõóôÞìáôïò êáé ôùí áñ÷åßùí ñõèìßóåùí. Ç áíáâÜèìéóç óå ôÝôïéåò ðåñéðôþóåéò, ìåôáîý äýï minor åêäüóåùí ôïõ &os;, ßóùò ìðïñåß íá ãßíåé êáé ìå ôçí ðáëéüôåñç äéáäéêáóßá: ôñÝ÷ïíôáòmake world êáé ýóôåñá ìåôáãëùôôßæïíôáò êáé óôÞíïíôáò Ýíá íÝï ðõñÞíá. ¼ôáí üìùò áíáâáèìßóåôå ôï &os; ìåôáîý major åêäüóåùí, êáëýôåñá íá ÷ñçóéìïðïéÞóåôå ôç äéáäéêáóßá ðïõ ðåñéãñÜöïõìå åäþ. Áëëéþò ìðïñåß íá áíôéìåôùðßóåôå ðñïâëÞìáôá åßôå êáôÜ ôç äéÜñêåéá ôçò áíáâÜèìéóçò Þ áöïý Ý÷åé ðëÝïí ïëïêëçñùèåß. ÊÜðïéåò áðü ôéò áíáâáèìßóåéò (ð.÷. áðü ìéá Ýêäïóç  4.X óå 5.0) ìðïñåß íá áðáéôïýí ìåñéêÜ ÷åéñïêßíçôá âÞìáôá (üðùò ôï íá ìåôáêéíÞóåôå Þ íá óâÞóåôå óõãêåêñéìÝíá áñ÷åßá ðñéí ôï âÞìá installworld). Ðñéí áðü êÜèå áíáâÜèìéóç äéáâÜóôå ðñïóåêôéêÜ ôéò ïäçãßåò óôï áñ÷åßï /usr/src/UPDATING· åéäéêÜ ôéò ïäçãßåò óôï ôÝëïò ôïõ áñ÷åßïõ, ïé ïðïßåò ðåñéãñÜöïõí áíáëõôéêÜ ôçí ðñïôåéíüìåíç äéáäéêáóßá áíáâÜèìéóçò. ÁõôÞ ç äéáäéêáóßá áíáâÜèìéóçò åîåëßóóåôáé êáé äéïñèþíåôáé êáèþò ïé ðñïãñáììáôéóôÝò ôïõ &os; áíáêáëýðôïõí êáéíïýñéåò åîáñôÞóåéò ìåôáîý ôùí óõóôáôéêþí ôïõ óõóôÞìáôïò Þ êÜíïõí äéïñèþóåéò ãéá íá áðïöýãïõí áóõìâáôüôçôåò ìåôáîý ôùí äéáöïñåôéêþí õðïóõóôçìÜôùí. Åëðßæïõìå üôé ôá êåíôñéêÜ âÞìáôá ôçò äéáäéêáóßáò ðïõ ðåñéãñÜöåôáé åäþ äå èá áëëÜîïõí ðïëý ãéá áñêåôü êáéñü ðëÝïí. Áíáêåöáëáéþíïíôáò üëá ôá âÞìáôá ôá ïðïßá ðåñéãñÜøáìå ðáñáðÜíù, ç ðñïôåéíüìåíç äéáäéêáóßá áíáâÜèìéóçò ôïõ &os; áðü ôïí ðçãáßï êþäéêá ôïõ óõóôÞìáôïò åßíáé: &prompt.root; cd /usr/src &prompt.root; make buildworld &prompt.root; make buildkernel &prompt.root; make installkernel &prompt.root; shutdown -r now ÕðÜñ÷ïõí êÜðïéåò ìÜëëïí óðÜíéåò ðåñéðôþóåéò, ðïõ áðáéôåßôáé ìéá åðéðëÝïí åêôÝëåóç ôïõ mergemaster -p ðñéí ôï âÞìá buildworld. Ïé ðåñéðôþóåéò áõôÝò ðåñéãñÜöïíôáé óôï UPDATING. Óå ãåíéêÝò ãñáììÝò ðÜíôùò, ìðïñåßôå ìå áóöÜëåéá íá ðáñáëåßøåôå áõôü ôï âÞìá, áí äåí áíáâáèìßæåôå ôï óýóôçìá óáò ìåôáîý ðïëëáðëþí åêäüóåùí ôïõ &os;. ÌåôÜ ôçí åðéôõ÷Þ ïëïêëÞñùóç ôïõ installkernel, èá ðñÝðåé íá åðáíåêêéíÞóåôå óå êáôÜóôáóç åíüò ÷ñÞóôç (ð.÷. ÷ñçóéìïðïéþíôáò ôçí åíôïëÞ boot -s óôçí ðñïôñïðÞ ôïõ öïñôùôÞ åêêßíçóçò). ¸ðåéôá åêôåëÝóôå: &prompt.root; mount -u / &prompt.root; mount -a -t ufs &prompt.root; adjkerntz -i &prompt.root; mergemaster -p &prompt.root; cd /usr/src &prompt.root; make installworld &prompt.root; mergemaster &prompt.root; reboot ÄéáâÜóôå ôéò ÅðéðëÝïí ÅîçãÞóåéò Ç äéáäéêáóßá ðïõ ðåñéãñÜøáìå ðáñáðÜíù åßíáé ìéá áðëÞ ðåñßëçøç ãéá íá óáò âïçèÞóåé íá îåêéíÞóåôå. Èá ðñÝðåé ùóôüóï íá äéáâÜóåôå ôéò ðáñáêÜôù åíüôçôåò ãéá íá êáôáíïÞóåôå ðëÞñùò êÜèå âÞìá, åéäéêÜ áí èÝëåôå íá ÷ñçóéìïðïéÞóåôå äéêü óáò ðñïóáñìïóìÝíï ðõñÞíá. ÄéáâÜóôå ôï <filename>/usr/src/UPDATING</filename> Ðñéí êÜíåôå ïôéäÞðïôå Üëëï, äéáâÜóôå ôï /usr/src/UPDATING (Þ ôï áíôßóôïé÷ï áñ÷åßï, áí Ý÷åôå áðïèçêåýóåé ôïí ðçãáßï êþäéêá óå Üëëï êáôÜëïãï). Ôï áñ÷åßï áõôü ðåñéÝ÷åé óçìáíôéêÝò ðëçñïöïñßåò ó÷åôéêÜ ìå ðñïâëÞìáôá ðïõ ìðïñåß íá óõíáíôÞóåôå Þ ßóùò íá êáèïñßæåé ôç óåéñÜ ìå ôçí ïðïßá ðñÝðåé íá åêôåëåóôïýí êÜðïéåò åíôïëÝò. Áí ôï áñ÷åßï UPDATING Ýñ÷åôáé óå óýãêñïõóç ìå êÜôé ðïõ äéáâÜóáôå åäþ, ðñïôåñáéüôçôá Ý÷åé ôï áñ÷åßï UPDATING. Ç áíÜãíùóç ôïõ áñ÷åßïõ UPDATING äåí åßíáé áðïäåêôü õðïêáôÜóôáôï ôçò óõíäñïìÞò óôç óùóôÞ ëßóôá çëåêôñïíéêïý ôá÷õäñïìåßïõ, üðùò ðåñéãñÜøáìå ðñïçãïõìÝíùò. Ïé äýï áðáéôÞóåéò åßíáé óõìðëçñùìáôéêÝò, äåí áëëçëïáíáéñïýíôáé. ÅëÝãîôå ôï <filename>/etc/make.conf</filename> make.conf ÅîåôÜóôå ôá áñ÷åßá /usr/share/examples/etc/make.conf êáé /etc/make.conf. Ôï ðñþôï ðåñéÝ÷åé êÜðïéåò ðñïåðéëåãìÝíåò ìåôáâëçôÝò (defines), ïé ðåñéóóüôåñåò áðü ôéò ïðïßåò åßíáé ùò ó÷üëéá. Ãéá íá ôá ÷ñçóéìïðïéÞóåôå üôáí ìåôáãëùôôßæåôå ôï óýóôçìá óáò, ðñïóèÝóôå ôá óôï /etc/make.conf. Íá Ý÷åôå õðüøç óáò, ðùò ïôéäÞðïôå ðñïóèÝôåôå óôï áñ÷åßï /etc/make.conf ÷ñçóéìïðïéåßôå åðßóçò êÜèå öïñÜ ðïõ åêôåëåßôå ôçí åíôïëÞ make, Ýôóé åßíáé ãåíéêÜ êáëÞ éäÝá íá âÜëåôå ôéìÝò ðïõ åßíáé ëïãéêÝò ãéá ôï óýóôçìá óáò. ¸íáò ôõðéêüò ÷ñÞóôçò èá èÝëåé ðéèáíþò íá áíôéãñÜøåé ôéò ãñáììÝò CFLAGS êáé NO_PROFILE áðü ôï áñ÷åßï /usr/share/examples/etc/make.conf óôï /etc/make.conf áöáéñþíôáò ôáõôü÷ñïíá êáé ôï óýìâïëï ôïõ ó÷ïëßïõ. ÅîåôÜóôå êáé ôéò Üëëåò ìåôáâëçôÝò (COPTFLAGS, NOPORTDOCS ê.ï.ê.) êáé áðïöáóßóôå áí ó÷åôßæïíôáé ìå ôï åðéèõìçôü ãéá óáò áðïôÝëåóìá. Åíçìåñþóôå ôá Áñ÷åßá óôï <filename>/etc</filename> Ï êáôÜëïãïò /etc ðåñéÝ÷åé ìåãÜëï ìÝñïò ôùí ðëçñïöïñéþí ñýèìéóçò ôïõ óõóôÞìáôïò óáò, üðùò åðßóçò êáé scripts ðïõ åêôåëïýíôáé êáôÜ ôçí åêêßíçóç ôïõ óõóôÞìáôïò. ÌåñéêÜ áðü ôá scripts áõôÜ áëëÜæïõí áðü Ýêäïóç óå Ýêäïóç ôïõ &os;. ÏñéóìÝíá áðü ôá áñ÷åßá ñõèìßóåùí ÷ñçóéìïðïéïýíôáé åðßóçò êáôÜ ôçí êáèçìåñéíÞ ÷ñÞóç ôïõ óõóôÞìáôïò. Ôï /etc/group åßíáé Ýíá áðü áõôÜ. ¸÷ïõí õðÜñîåé ðåñéðôþóåéò óôï ðáñåëèüí, üðïõ ôï make installworld áíÝìåíå áðü ðñéí ôçí ýðáñîç óõãêåêñéìÝíùí ïíïìÜôùí ÷ñçóôþí (usernames) Þ ïìÜäùí (groups). ÊáôÜ ôç äéáäéêáóßá ôçò áíáâÜèìéóçò Þôáí áñêåôÜ ðéèáíü áõôïß ïé ÷ñÞóôåò Þ ïìÜäåò íá ìçí õðÞñ÷áí. Áõôü äçìéïõñãïýóå ðñïâëÞìáôá óôçí äéáäéêáóßá. Óå êÜðïéåò ðåñéðôþóåéò, ôï make buildworld èá åëÝãîåé áí õðÜñ÷ïõí áõôïß ïé ÷ñÞóôåò Þ ïìÜäåò. Ìéá ôÝôïéá ðåñßðôùóç ðáñïõóéÜóôçêå üôáí ðñïóôÝèçêå ï ÷ñÞóôçò smmsp. Ç äéáäéêáóßá áíáâÜèìéóçò áðïôýã÷áíå óå ðïëëïýò ÷ñÞóôåò, ôç óôéãìÞ ðïõ ôï &man.mtree.8; ðñïóðáèïýóå íá äçìéïõñãÞóåé ôïí êáôÜëïãï /var/spool/clientmqueue. Ç ëýóç åßíáé íá åêôåëÝóåôå ôï &man.mergemaster.8; óå êáôÜóôáóç ðñï-åãêáôÜóôáóçò, äßíïíôáò ôçí åðéëïãÞ . ÁõôÞ èá óõãêñßíåé ìüíï ôá áñ÷åßá ðïõ åßíáé áðáñáßôçôá ãéá ôçí åðéôõ÷ßá åêôÝëåóçò ôïõ buildworld Þ ôïõ installworld. &prompt.root; cd /usr/src/usr.sbin/mergemaster &prompt.root; ./mergemaster.sh -p Áí áéóèÜíåóôå éäéáßôåñá ðáñáíïúêüò, ìðïñåßôå íá åëÝãîåôå ôï óýóôçìá óáò ãéá íá äåßôå ðïéá áñ÷åßá áíÞêïõí óôçí ïìÜäá ðïõ ìåôïíïìÜæåôå Þ äéáãñÜöåôå: &prompt.root; find / -group GID -print Ç ðáñáðÜíù åíôïëÞ èá óáò äåßîåé üëá ôá áñ÷åßá ôá ïðïßá áíÞêïõí óôçí ïìÜäá GID (ìðïñåßôå íá äþóåôå üíïìá Þ áñéèìçôéêü áíáãíùñéóôéêü ôçò ïìÜäáò). Ìåôáâåßôå óå ÊáôÜóôáóç Åíüò ×ñÞóôç single-user mode ºóùò ðñïôéìÜôå íá ìåôáãëùôôßóåôå ôï óýóôçìá óå êáôÜóôáóç åíüò ÷ñÞóôç. Åêôüò áðü ôï ðñïöáíÝò ðëåïíÝêôçìá ôçò åëáöñÜ ìåãáëýôåñçò ôá÷ýôçôáò, ç åðáíåãêáôÜóôáóç ôïõ óõóôÞìáôïò èá åðçñåÜóåé ðïëëÜ óçìáíôéêÜ áñ÷åßá ôïõ óõóôÞìáôïò, üëá ôá åêôåëÝóéìá áñ÷åßá ôïõ âáóéêïý óõóôÞìáôïò, ôéò âéâëéïèÞêåò, ôá áñ÷åßá include ê.á. Áí ôá áëëÜîåôå áõôÜ óå Ýíá óýóôçìá ðïõ âñßóêåôáé óå êáíïíéêÞ ëåéôïõñãßá (êáé åéäéêÜ áí õðÜñ÷ïõí åíåñãïß ÷ñÞóôåò ôçí äåäïìÝíç óôéãìÞ), øÜ÷íåôå ãéá ìðåëÜäåò. multi-user mode Ìéá Üëëç ìÝèïäïò åßíáé íá ìåôáãëùôôßóåôå ôï óýóôçìá óå êáôÜóôáóç êáíïíéêÞò ëåéôïõñãßáò, áëëÜ íá ìåôáâåßôå óå êáôÜóôáóç åíüò ÷ñÞóôç ãéá ôçí åãêáôÜóôáóç. Áí èÝëåôå íá ôï êÜíåôå ìå áõôü ôïí ôñüðï, áðëþò ìçí åêôåëÝóåôå ôá áêüëïõèá âÞìáôá ìÝ÷ñé ôï ôÝëïò ôçò ìåôáãëþôôéóçò. Ìðïñåßôå íá áíáâÜëëåôå ôç ìåôÜâáóç óå êáôÜóôáóç åíüò ÷ñÞóôç ìÝ÷ñé íá åßóôå Ýôïéìïé ãéá ôï installkernel Þ installworld. Ùò õðåñ÷ñÞóôçò ìðïñåßôå íá åêôåëÝóåôå: &prompt.root; shutdown now óå Ýíá óýóôçìá óå êáíïíéêÞ ëåéôïõñãßá ãéá íá ìåôáâåßôå óå êáôÜóôáóç åíüò ÷ñÞóôç. ÅíáëëáêôéêÜ, åðáíåêêéíÞóôå ôï óýóôçìá êáé óôçí ðñïôñïðÞ ôïõ öïñôùôÞ åêêßíçóçò, åðéëÝîôå single user. Ôï óýóôçìá èá îåêéíÞóåé óå êáôÜóôáóç åíüò ÷ñÞóôç. Óôçí ðñïôñïðÞ ôçò ãñáììÞò åíôïëþí èá ðñÝðåé íá ãñÜøåôå: &prompt.root; fsck -p &prompt.root; mount -u / &prompt.root; mount -a -t ufs &prompt.root; swapon -a Èá ãßíåé Ýëåã÷ïò óôá óõóôÞìáôá áñ÷åßùí, êáé ðñïóÜñôçóç ôïõ / ìå äõíáôüôçôá áíÜãíùóçò/åããñáöÞò. ¸ðåéôá èá ðñïóáñôçèïýí üëá ôá Üëëá óõóôÞìáôá áñ÷åßùí UFS ôá ïðïßá áíáöÝñïíôáé óôï /etc/fstab, êáé èá åíåñãïðïéçèåß ôï swap. Áí ôï CMOS ñïëüé ôïõ õðïëïãéóôÞ óáò åßíáé ñõèìéóìÝíï óå ôïðéêÞ þñá êáé ü÷é óå GMT (áõôü åßíáé áëÞèåéá áí ç Ýîïäïò ôçò åíôïëÞò &man.date.1; äåí äåß÷íåé óùóôÞ çìåñïìçíßá êáé þñá), ßóùò ÷ñåéáóôåß íá åêôåëÝóåôå åðßóçò ôçí ðáñáêÜôù åíôïëÞ: &prompt.root; adjkerntz -i Ìå áõôü ôïí ôñüðï èá âåâáéùèåßôå üôé ïé ôïðéêÝò óáò ñõèìßóåéò þñáò Ý÷ïõí ñõèìéóôåß óùóôÜ. ÄéáöïñåôéêÜ, ìðïñåß íá óõíáíôÞóåôå ðñïâëÞìáôá áñãüôåñá. ÄéáãñÜøôå ôï <filename>/usr/obj</filename> Êáèþò ãßíåôáé ç åðáíáìåôáãëþôôéóç, ôìÞìáôá ôïõ óõóôÞìáôïò ôïðïèåôïýíôáé áðü ðñïåðéëïãÞ óå õðïêáôáëüãïõò ôïõ /usr/obj. Ïé õðïêáôÜëïãïé áõôïß áíôéãñÜöïõí ôç äïìÞ ðïõ áêïëïõèåßôáé óôï /usr/src. Ìðïñåßôå íá åðéôá÷ýíåôå ôç äéáäéêáóßá ôïõ make buildworld êáé åðßóçò íá ãëõôþóåôå áðü êÜðïéá ðéèáíÜ ðñïâëÞìáôá, áí äéáãñÜøåôå êáé áõôü ôïí êáôÜëïãï. ÊÜðïéá áñ÷åßá óå õðïêáôáëüãïõò ôïõ /usr/obj ìðïñåß íá Ý÷ïõí ÷áñáêôçñéóôåß ùò immutable ìÝóù ôïõ áíôßóôïé÷ïõ flag (ãéá ðåñéóóüôåñåò ëåðôïìÝñåéåò äåßôå ôï &man.chflags.1;). Ðñéí äéáãñÜøåôå áõôÜ ôá áñ÷åßá, èá ðñÝðåé ðñþôá íá êáôáñãÞóåôå áõôü ôï flag. &prompt.root; cd /usr/obj &prompt.root; chflags -R noschg * &prompt.root; rm -rf * Åðáíáìåôáãëùôôßóôå ôï Âáóéêü Óýóôçìá Áðïèçêåýóôå ôçí ¸îïäï Êáèþò åêôåëåßôáé ç &man.make.1;, åßíáé êáëÞ éäÝá ç Ýîïäïò ôçò íá áðïèçêåýåôáé óå êÜðïéï Üëëï áñ÷åßï. Áí êÜôé ðÜåé óôñáâÜ, èá Ý÷åôå Ýíá áíôßãñáöï ôïõ ìçíýìáôïò ëÜèïõò. Áí êáé áõôü ßóùò äåí óáò âïçèÞóåé íá âñåßôå ôé ðÞãå óôñáâÜ, ìðïñåß íá äéåõêïëýíåé Üëëïõò áí óôåßëåôå ôï ìÞíõìá óáò óå ìéá áðü ôéò ëßóôåò çëåêôñïíéêïý ôá÷õäñïìåßïõ ôïõ &os;. Ï åõêïëüôåñïò ôñüðïò ãéá íá ãßíåé áõôü, åßíáé ÷ñçóéìïðïéþíôáò ôçí åíôïëÞ &man.script.1; ìå ìéá ðáñÜìåôñï ðïõ íá êáèïñßæåé ôï üíïìá ôïõ áñ÷åßïõ óôï ïðïßï èá áðïèçêåõôåß ç Ýîïäïò. Èá ðñÝðåé íá ôï åêôåëÝóåôå áìÝóùò ðñéí îåêéíÞóåôå ôçí ìåôáãëþôôéóç ôïõ âáóéêïý óõóôÞìáôïò, êáé íá ãñÜøåôå exit ìüëéò ç äéáäéêáóßá ïëïêëçñùèåß. &prompt.root; script /var/tmp/mw.out Script started, output file is /var/tmp/mw.out &prompt.root; make TARGET … ìåôáãëþôôéóç, ìåôáãëþôôéóç, ìåôáãëþôôéóç … &prompt.root; exit Script done, … Áí áðïöáóßóåôå íá áðïèçêåýóåôå ôçí Ýîïäï, ìç ÷ñçóéìïðïéÞóåôå ãéá áõôü ôï óêïðü ôïí êáôÜëïãï /tmp. Ôá ðåñéå÷üìåíá áõôïý ôïõ êáôáëüãïõ ðéèáíþò íá äéáãñáöïýí ôçí åðüìåíç öïñÜ ðïõ èá åêêéíÞóåôå ôï óýóôçìá óáò. ¸íáò êáëýôåñïò êáôÜëïãïò ãéá ôçí áðïèÞêåõóç ôïõ åßíáé ï /var/tmp (üðùò óôï ðñïçãïýìåíï ðáñÜäåéãìá) Þ ï ðñïóùðéêüò êáôÜëïãïò ôïõ root. Ìåôáãëùôôßóôå ôï Âáóéêü Óýóôçìá Èá ðñÝðåé íá âñßóêåóôå óôïí êáôÜëïãï /usr/src: &prompt.root; cd /usr/src (åêôüò áí öõóéêÜ Ý÷åôå áðïèçêåýóåé ôïí ðçãáßï êþäéêá óå êÜðïéï Üëëï êáôÜëïãï, ïðüôå áðëþò ìåôáêéíçèåßôå óå áõôüí). make Ãéá íá åðáíáìåôáãëùôôßóåôå ôï âáóéêü óýóôçìá, ÷ñçóéìïðïéÞóôå ôçí åíôïëÞ &man.make.1;. Ç åíôïëÞ áõôÞ äéáâÜæåé ôéò ó÷åôéêÝò ïäçãßåò áðü ôï áñ÷åßï Makefile, ôï ïðïßï ðåñéãñÜöåé ìå ðïéï ôñüðï ðñÝðåé íá ìåôáãëùôôéóôïýí ôá ðñïãñÜììáôá áðü ôá ïðïßá áðïôåëåßôáé ôï &os;, ôç óåéñÜ ìå ôçí ïðïßá ðñÝðåé íá ãßíåé ç ìåôáãëþôôéóç ê.ï.ê. Ç ãåíéêÞ ìïñöÞ ôçò åíôïëÞò ðïõ èá ðëçêôñïëïãÞóåôå åßíáé ç ðáñáêÜôù: &prompt.root; make -x -DVARIABLE target Óôï ðáñÜäåéãìá áõôü, ôï áíôéðñïóùðåýåé ìéá åðéëïãÞ ðïõ èÝëåôå íá äþóåôå óôçí &man.make.1;. Äåßôå ôçí óåëßäá manual ôïõ &man.make.1; ãéá ðáñáäåßãìáôá äõíáôþí åðéëïãþí. Ç åðéëïãÞ ðåñíÜåé ìéá ìåôáâëçôÞ óôï Makefile. Ç óõìðåñéöïñÜ ôïõ Makefile åëÝã÷åôáé áðü ôÝôïéïõ åßäïõò ìåôáâëçôÝò. Ðñüêåéôáé ãéá ôéò ßäéåò ìåôáâëçôÝò ðïõ êáèïñßæïíôáé êáé óôï /etc/make.conf, êáé áõôüò åßíáé Ýíáò áêüìá ôñüðïò êáèïñéóìïý ôïõò. &prompt.root; make -DNO_PROFILE target Ôï ðáñáðÜíù äåß÷íåé Ýíá åðéðëÝïí ôñüðï íá êáèïñßóåôå üôé äåí èÝëåôå íá ìåôáãëùôôéóôïýí ïé âéâëéïèÞêåò ìå ðëçñïöïñßåò profiling, êáé áíôéóôïé÷åß ìå ôçí ðáñáêÜôù ãñáììÞ óôï /etc/make.conf: NO_PROFILE= true # Avoid compiling profiled libraries Ôï target äçëþíåé óôï &man.make.1; ôé èÝëåôå íá êÜíåôå. Óå êÜèå Makefile ïñßæåôáé Ýíáò áñéèìüò äéáöïñåôéêþí targets, êáé ç åðéëïãÞ ðïõ èá êÜíåôå, êáèïñßæåé ôé áêñéâþò èá ãßíåé. ÊÜðïéá áðü ôá targets ðïõ êáèïñßæïíôáé óôï Makefile, äåí ðñïïñßæïíôáé ãéá Üìåóç åêôÝëåóç áðü ôï ÷ñÞóôç. Áíôß ãéá áõôü, ÷ñçóéìïðïéïýíôáé áðü ôç äéáäéêáóßá ìåôáãëþôôéóçò ãéá íá ìïéñáóôåß ï áñéèìüò ôùí âçìÜôùí ðïõ áðáéôïýíôáé ãéá ôç ìåôáãëþôôéóç ôïõ óõóôÞìáôïò, óå Ýíá áñéèìü õðo-âçìÜôùí. Óôéò ðåñéóóüôåñåò ðåñéðôþóåéò äåí èá ÷ñåéáóôåß íá äþóåôå êáìßá ðáñÜìåôñï óôï &man.make.1;, êáé Ýôóé ç åíôïëÞ óáò èá ìïéÜæåé ìå ôçí ðáñáêÜôù: &prompt.root; make target ¼ðïõ ôï target èá åßíáé ìéá áðü ôéò ðïëëÝò åðéëïãÝò ìåôáãëþôôéóçò. Ôï ðñþôï target èá ðñÝðåé ðÜíôá íá åßíáé ôï buildworld. ¼ðùò åííïåßôáé êáé áðü ôï üíïìá, ôï buildworld ìåôáãëùôôßæåé Ýíá ðëÞñåò äÝíôñï ìÝóá óôïí êáôÜëïãï /usr/obj, åíþ ôï installworld, åãêáèéóôÜ áõôü ôï äÝíôñï óôï ôñÝ÷ïí ìç÷Üíçìá. Ç ýðáñîç äéáöïñåôéêþí åðéëïãþí, åßíáé ÷ñÞóéìç ãéá äýï ëüãïõò. Ðñþôá áðü üëá, óáò åðéôñÝðåé íá åêôåëÝóåôå ôç äéáäéêáóßá ìåôáãëþôôéóçò ìå áóöÜëåéá, ãíùñßæïíôáò üôé äåí ðñüêåéôáé íá åðçñåáóôåß êáíÝíá ôìÞìá ôïõ ôñÝ÷ïíôïò óõóôÞìáôïò óáò. Ç äéáäéêáóßá ìåôáãëþôôéóçò åßíáé self hosted, áðïìïíùìÝíç áðü ôçí õðüëïéðç ëåéôïõñãßá ôïõ ìç÷áíÞìáôïò. Ìðïñåßôå Ýôóé íá åêôåëÝóåôå ôï buildworld óå Ýíá ìç÷Üíçìá ðïõ âñßóêåôáé óå êáíïíéêÞ ëåéôïõñãßá (ðïëëáðëþí ÷ñçóôþí) ÷ùñßò íá õðÜñ÷åé öüâïò ðáñåíåñãåéþí. Ùóôüóï, óõíßóôáôáé íá åêôåëÝóåôå ôï installworld óå êáôÜóôáóç ëåéôïõñãßáò åíüò ÷ñÞóôç. Ï äåýôåñïò ëüãïò åßíáé üôé óáò åðéôñÝðåé íá ÷ñçóéìïðïéÞóåôå ðñïóáñôÞóåéò NFS ãéá íá áíáâáèìßóåôå ðïëëÜ ìç÷áíÞìáôá ôïõ äéêôýïõ óáò. Áí Ý÷åôå ôñßá ìç÷áíÞìáôá, ôá A, B êáé C ôá ïðïßá èÝëåôå íá áíáâáèìßóåôå, åêôåëÝóôå ôï make buildworld êáé ôï make installworld óôï ìç÷Üíçìá A. Ôï B êáé ôï C ìðïñïýí íá ðñïóáñôÞóïõí ôïí êáôÜëïãï /usr/src êáé ôïí /usr/obj áðü ôïí A ìÝóù NFS, êáé Ýðåéôá ìðïñåßôå íá åêôåëÝóåôå ôï make installworld ãéá íá åãêáôáóôÞóåôå ôï Ýôïéìï ðëÝïí óýóôçìá óôïí B êáé C. Áí êáé õðÜñ÷åé áêüìá ôï target world, äåí óõíßóôáôáé ðëÝïí ç ÷ñÞóç ôïõ. ÅêôåëÝóôå ôçí åíôïëÞ: &prompt.root; make buildworld Ìðïñåßôå íá êáèïñßóåôå ôçí åðéëïãÞ óôçí make þóôå íá åêôåëåóôåß óå ðïëëáðëÝò äéåñãáóßåò. Áõôü åßíáé ðåñéóóüôåñï ÷ñÞóéìï óå ìç÷áíÞìáôá ìå ðïëëïýò åðåîåñãáóôÝò, ùóôüóï êáèþò ôï ìåãáëýôåñï ìÝñïò ôçò äéáäéêáóßáò ìåôáãëþôôéóçò êáèõóôåñåß åîáéôßáò ôïõ óêëçñïý äßóêïõ (IO bound) êáé ü÷é ôçò CPU, ìðïñåß íá óáò öáíåß ÷ñÞóéìï áêüìá êáé óå ìç÷áíÞìáôá ìå Ýíá åðåîåñãáóôÞ. Óå Ýíá ôõðéêü ìç÷Üíçìá ìå ìéá CPU, èá ìðïñïýóáôå íá äþóåôå: &prompt.root; make -j4 buildworld Ìå ôçí ðáñáðÜíù åíôïëÞ, ôï &man.make.1; èá ÷ñçóéìïðïéåß ìÝ÷ñé 4 äéåñãáóßåò êÜèå ÷ñïíéêÞ óôéãìÞ. Áðü ôçí åìðåéñßá ðïõ Ý÷ïõìå êáé áðü üôé áíáöÝñïõí ïé ÷ñÞóôåò óôéò ëßóôåò, öáßíåôáé üôé ç ñýèìéóç áõôÞ äßíåé ãåíéêÜ ôçí êáëýôåñç áðüäïóç. Áí Ý÷åôå ìç÷Üíçìá ìå ðïëëïýò åðåîåñãáóôÝò, êáé ÷ñçóéìïðïéåßôå ðõñÞíá ìå äõíáôüôçôá SMP, äïêéìÜóôå ôéìÝò ìåôáîý ôïõ 6 êáé ôïõ 10 ãéá íá äåßôå ðïéá åðéôá÷ýíåé êáëýôåñá ôï áðïôÝëåóìá. ×ñüíïò Ìåôáãëþôôéóçò rebuilding world timings Ï ÷ñüíïò ðïõ áðáéôåßôáé ãéá ôçí ìåôáãëþôôéóç åðçñåÜæåôáé áðü ðïëëïýò ðáñÜãïíôåò. Ùóôüóï, óå óýã÷ñïíá ìç÷áíÞìáôá ç äéáäéêáóßá äåí êñáôÜåé óõíÞèùò ðáñáðÜíù áðü ìßá Þ äýï þñåò, üôáí ãßíåôáé ìåôáãëþôôéóç ôïõ äÝíôñïõ &os.stable;, êáé ìÜëéóôá ÷ùñßò íá ÷ñåéÜæåôáé íá ãßíïõí åéäéêÝò ñõèìßóåéò Þ êüëðá. Ôï äÝíôñï &os.current; ÷ñåéÜæåôáé ãåíéêÜ ëßãï ðåñéóóüôåñï ÷ñüíï ãéá íá ìåôáãëùôôéóôåß. Ìåôáãëùôôßóôå êáé ÅãêáôáóôÞóôå ÍÝï ÐõñÞíá kernel compiling Ãéá íá åêìåôáëëåõèåßôå ðëÞñùò ôï íÝï óáò óýóôçìá, èá ðñÝðåé íá åðáíáìåôáãëùôôßóåôå ôïí ðõñÞíá. Áõôü åßíáé ðñáêôéêÜ áíáãêáßï, êáèþò êÜðïéåò äïìÝò óôç ìíÞìç ðéèáíþò íá Ý÷ïõí áëëÜîåé, êáé Ýôóé ðñïãñÜììáôá üðùò ôá &man.ps.1; êáé &man.top.1; äåí èá ëåéôïõñãïýí óùóôÜ ìÝ÷ñé íá óõã÷ñïíßóåôå ôïí ðõñÞíá ìå ôçí Ýêäïóç ðçãáßïõ êþäéêá ôïõ âáóéêïý óõóôÞìáôïò. Ï áðëïýóôåñïò êáé ðëÝïí áóöáëÞò ôñüðïò, åßíáé íá ìåôáãëùôôßóåôå êáé íá åãêáôáóôÞóåôå Ýíá ðõñÞíá âáóéóìÝíï óôïí GENERIC. Áí êáé ï GENERIC ìðïñåß íá ìçí ðåñéÝ÷åé üëåò ôéò áðáñáßôçôåò óõóêåõÝò ãéá ôï óýóôçìá óáò, èá ðñÝðåé íá ðåñéÝ÷åé üôé ÷ñåéÜæåôáé þóôå íá îåêéíÞóåôå îáíÜ ôï óýóôçìá óáò óå êáôÜóôáóç ëåéôïõñãßáò åíüò ÷ñÞóôç. Áõôü åßíáé Ýíá êáëü ôåóô óùóôÞò ëåéôïõñãßáò ôïõ óõóôÞìáôïò. ÌåôÜ ôçí åêêßíçóç ìå ôïí GENERIC, êáé áöïý åðáëçèåýóåôå ôç óùóôÞ ëåéôïõñãßá ôïõ óõóôÞìáôïò, ìðïñåßôå íá ìåôáãëùôôßóåôå Ýíá íÝï ðõñÞíá âáóéóìÝíï óôï äéêü óáò ðñïóáñìïóìÝíï áñ÷åßï ñõèìßóåùí. Óôï &os; åßíáé óçìáíôéêü íá åêôåëÝóåôå ôï build world ðñéí ìåôáãëùôôßóåôå íÝï ðõñÞíá. Áí èÝëåôå íá ìåôáãëùôôßóåôå íÝï ðõñÞíá, êáé Ý÷åôå Þäç Ýíá áñ÷åßï ìå ðñïóáñìïóìÝíåò ñõèìßóåéò, ÷ñçóéìïðïéÞóôå áðëþò ôçí åðéëïãÞ KERNCONF=MYKERNEL ìå ôïí ôñüðï ðïõ öáßíåôáé ðáñáêÜôù: &prompt.root; cd /usr/src &prompt.root; make buildkernel KERNCONF=MYKERNEL &prompt.root; make installkernel KERNCONF=MYKERNEL Óçìåéþóôå üôé áí Ý÷åôå áíåâÜóåé ôçí ôéìÞ ôïõ kern.securelevel ðÜíù áðü ôï 1, êáé Ý÷åôå èÝóåé ôï flag noschg Þ êÜðïéï áíôßóôïé÷ï óôï åêôåëÝóéìï áñ÷åßï ôïõ ðõñÞíá, ìÜëëïí èá ÷ñåéáóôåß íá ìåôáâåßôå óå êáôÜóôáóç ëåéôïõñãßáò åíüò ÷ñÞóôç ãéá íá ÷ñçóéìïðïéÞóåôå ôï installkernel. ÄéáöïñåôéêÜ, ìðïñåßôå íá åêôåëÝóåôå êáé ôéò äýï áõôÝò åíôïëÝò áðü ôçí êáíïíéêÞ êáôÜóôáóç ëåéôïõñãßáò (ðïëëþí ÷ñçóôþí) ÷ùñßò íá äçìéïõñãçèïýí ðñïâëÞìáôá. Äåßôå ôç óåëßäá manual ôïõ &man.init.8; ãéá ëåðôïìÝñåéåò ó÷åôéêÜ ìå ôç ñýèìéóç kern.securelevel êáé ôç óåëßäá ôïõ &man.chflags.1; ãéá ëåðôïìÝñåéåò ó÷åôéêÜ ìå ôá äéÜöïñá flags ðïõ ÷ñçóéìïðïéïýíôáé óå áñ÷åßá. ÅðáíåêêéíÞóôå óå ÊáôÜóôáóç Ëåéôïõñãßáò Åíüò ×ñÞóôç single-user mode Èá ðñÝðåé íá åðáíåêêéíÞóåôå óå êáôÜóôáóç ëåéôïõñãßáò åíüò ÷ñÞóôç ãéá íá åðáëçèåýóåôå ôç ëåéôïõñãßá ôïõ íÝïõ ðõñÞíá. Ãéá ôï óêïðü áõôü, ÷ñçóéìïðïéÞóôå ôéò ïäçãßåò ðïõ åßäáìå óôï . ÅãêáôáóôÞóôå ôá ÍÝá ÅêôåëÝóéìá ôïõ ÓõóôÞìáôïò Èá ðñÝðåé ôþñá íá ÷ñçóéìïðïéÞóåôå ôï installworld ãéá íá åãêáôáóôÞóåôå ôá íÝá åêôåëÝóéìá ôïõ óõóôÞìáôïò. ÅêôåëÝóôå ôéò ðáñáêÜôù åíôïëÝò: &prompt.root; cd /usr/src &prompt.root; make installworld Áí Ý÷åôå êáèïñßóåé ìåôáâëçôÝò óôç ãñáììÞ åíôïëþí ôïõ make buildworld èá ðñÝðåé íá êáèïñßóåôå ôéò ßäéåò ìåôáâëçôÝò êáé óôçí ãñáììÞ åíôïëþí ôïõ make installworld. Áõôü äåí åßíáé áðáñáßôçôá áëÞèåéá ãéá Üëëåò åðéëïãÝò. Ãéá ðáñÜäåéãìá, ç åðéëïãÞ äåí ðñÝðåé ðïôÝ íá ÷ñçóéìïðïéåßôå ìå ôï installworld. Ãéá ðáñÜäåéãìá áí åêôåëÝóåôå: &prompt.root; make -DNO_PROFILE buildworld Èá ðñÝðåé íá åãêáôáóôÞóåôå ôï áðïôÝëåóìá ÷ñçóéìïðïéþíôáò: &prompt.root; make -DNO_PROFILE installworld äéáöïñåôéêÜ ôï &man.make.1; èá ðñïóðáèÞóåé íá åãêáôáóôÞóåé âéâëéïèÞêåò ìå profiling, ôéò ïðïßåò üìùò äåí ìåôáãëùôôßóáôå êáôÜ ôç äéÜñêåéá ôçò öÜóçò make buildworld. Åíçìåñþóôå ¼óá Áñ÷åßá äåí Åíçìåñþèçêáí áðü ôï <command>make installworld</command> Ç åðáíáìåôáãëþôôéóç ôïõ âáóéêïý óõóôÞìáôïò äåí èá åíçìåñþóåé ïñéóìÝíïõò êáôáëüãïõò (åéäéêüôåñá ôïõò /etc, /var êáé /usr) ìå ôá íÝá Þ áëëáãìÝíá áñ÷åßá ñõèìßóåùí. Ï áðëïýóôåñïò ôñüðïò ãéá íá åíçìåñþóåôå ôá áñ÷åßá áõôÜ åßíáé íá ÷ñçóéìïðïéÞóåôå ôï &man.mergemaster.8;, áí êáé ìðïñåßôå íá ôï êÜíåôå êáé ÷åéñïêßíçôá áí ðñïôéìÜôå. ¶ó÷åôá áðü ôïí ôñüðï ðïõ èá ðñïôéìÞóåôå, âåâáéùèåßôå üôé Ý÷åôå ðÜñåé áíôßãñáöï áóöáëåßáò ôïõ /etc óå ðåñßðôùóç ðïõ êÜôé ðÜåé óôñáâÜ. Tom Rhodes ÓõíåéóöïñÜ ôïõ <command>mergemaster</command> mergemaster Ôï âïçèçôéêü ðñüãñáììá &man.mergemaster.8; åßíáé Ýíá Bourne script ôï ïðïßï èá óáò âïçèÞóåé íá êáèïñßóåôå ôéò äéáöïñÝò ìåôáîý ôùí åãêáôåóôçìÝíùí óôï /etc áñ÷åßùí ñõèìßóåùí, êáé ôùí áíôßóôïé÷ùí óôï äÝíôñï ðçãáßïõ êþäéêá óôï /usr/src/etc. ÁõôÞ åßíáé êáé ç óõíéóôþìåíç ëýóç ãéá íá åíçìåñþóåôå ôá áñ÷åßá ñõèìßóåùí ôïõ óõóôÞìáôïò ìå ôõ÷üí áëëáãÝò ðïõ Ý÷ïõí ãßíåé óôïí íÝï ðçãáßï êþäéêá. Ãéá íá îåêéíÞóåôå, áðëþò ãñÜøôå mergemaster óôçí ðñïôñïðÞ ôçò ãñáììÞò åíôïëþí êáé ðáñáêïëïõèÞóôå ôçí êáèþò ëåéôïõñãåß. Ôï mergemaster èá äçìéïõñãÞóåé Ýíá ðñïóùñéíü ðåñéâÜëëïí root, áðü ôï / êáé êÜôù, êáé èá ôï ãåìßóåé ìå äéÜöïñá áñ÷åßá ñõèìßóåùí ôïõ óõóôÞìáôïò. ¸ðåéôá èá ãßíåé óýãêñéóç áõôþí ôùí áñ÷åßùí ìå ôá áíôßóôïé÷á ðïõ âñßóêïíôáé Þäç åãêáôåóôçìÝíá óôï óýóôçìá óáò. Óôï óçìåßï áõôü, èá óáò äåßîåé ôá áñ÷åßá ðïõ äéáöÝñïõí ìå ìïñöÞ &man.diff.1;, üðïõ ïé ãñáììÝò ðïõ Ý÷ïõí ôñïðïðïéçèåß Þ åßíáé íÝåò èá öáßíïíôáé ìå Ýíá , åíþ ìå ôï èá öáßíïíôáé ïé ãñáììÝò ðïõ åßôå áöáéñïýíôáé åíôåëþò Þ ðïõ áíôéêáèßóôáíôáé áðü ìéá íÝá ãñáììÞ. Äåßôå ôç óåëßäá manual ôïõ &man.diff.1; ãéá ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôç óýíôáîç ôïõ &man.diff.1; êáé ãéá ôïí ôñüðï ìå ôïí ïðïßï öáßíïíôáé ïé äéáöïñÝò ìåôáîý ôùí áñ÷åßùí. Ôï &man.mergemaster.8; èá óáò äåßîåé Ýðåéôá êÜèå áñ÷åßï ðïõ ðáñïõóéÜæåé äéáöïñÝò, êáé óôï óçìåßï áõôü èá Ý÷åôå ôçí äõíáôüôçôá åßôå íá äéáãñÜøåôå ôï íÝï áñ÷åßï (ôï ïðïßï áíáöÝñåôáé ùò ðñïóùñéíü áñ÷åßï), åßôå íá åãêáôáóôÞóåôå ôï ðñïóùñéíü áñ÷åßï ÷ùñßò íá êÜíåôå óå áõôü êáìéÜ áëëáãÞ, åßôå íá óõã÷ùíåýóåôå ôéò áëëáãÝò ôùí äýï áñ÷åßùí, Þ ôÝëïò íá îáíáäåßôå ôéò äéáöïñÝò ìÝóù ôçò &man.diff.1;. Áí åðéëÝîåôå íá äéáãñÜøåôå ôï ðñïóùñéíü áñ÷åßï, ôï &man.mergemaster.8; èá êáôáëÜâåé üôé åðéèõìåßôå íá äéáôçñÞóåôå ôï ôñÝ÷ïí áñ÷åßï óáò ÷ùñßò áëëáãÝò, êáé íá äéáãñÜøåôå ôç íÝá Ýêäïóç. Ç åðéëïãÞ áõôÞ ãåíéêÜ äåí óõíßóôáôáé, åêôüò áí äåí âëÝðåôå êáíÝíá ëüãï íá áëëÜîåôå ôï ôñÝ÷ïí áñ÷åßï. Ìðïñåßôå íá äåßôå âïÞèåéá ïðïéáäÞðïôå óôéãìÞ êáôÜ ôç äéÜñêåéá ôçò äéáäéêáóßáò, ðëçêôñïëïãþíôáò ? óôçí ðñïôñïðÞ ôïõ &man.mergemaster.8;. Áí áðïöáóßóåôå íá ðáñáëåßøåôå êÜðïéï áñ÷åßï, áõôü èá åìöáíéóôåß îáíÜ ìåôÜ ôï ôÝëïò üëùí ôùí Üëëùí áñ÷åßùí. Áí åðéëÝîåôå íá åãêáôáóôÞóåôå ôï ðñïóùñéíü áñ÷åßï ÷ùñßò áëëáãÝò, áõôü èá áíôéêáôáóôÞóåé ôï Þäç åãêáôåóôçìÝíï óáò áñ÷åßï. ÁõôÞ åßíáé êáé ç êáëýôåñç åðéëïãÞ ãéá ôá áñ÷åßá ôá ïðïßá äåí Ý÷åôå áëëÜîåé åóåßò ÷åéñïêßíçôá. Áí åðéëÝîåôå íá óõã÷ùíåýóåôå ôá äýï áñ÷åßá, èá åìöáíéóôåß Ýíáò åðåîåñãáóôÞò êåéìÝíïõ ìå ôá ðåñéå÷üìåíá êáé ôùí äýï áñ÷åßùí. Ìðïñåßôå ôþñá íá ôá óõã÷ùíåýóåôå ðáñáôçñþíôáò ôáõôü÷ñïíá êáé ôá äýï áñ÷åßá äßðëá-äßðëá, êáé åðéëÝãïíôáò ôìÞìáôá êáé áðü ôá äýï ãéá íá äçìéïõñãÞóåôå ôçí ôåëéêÞ Ýêäïóç. ÊáôÜ ôç óýãêñéóç áõôÞ, ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôï ðëÞêôñï l ãéá íá åðéëÝîåôå ôá ðåñéå÷üìåíá ðïõ öáßíïíôáé óôçí áñéóôåñÞ ðëåõñÜ, Þ ôï r ãéá ôá áíôßóôïé÷á ðåñéå÷üìåíá óôç äåîéÜ. Ôï ôåëéêü áðïôÝëåóìá èá åßíáé Ýíá áñ÷åßï ðïõ èá áðïôåëåßôáé áðü ôìÞìáôá êáé ôùí äýï áñ÷åßùí, êáé ôï ïðïßï ìðïñåßôå íá åãêáôáóôÞóåôå. Ç åðéëïãÞ áõôÞ ÷ñçóéìïðïéåßôáé óõíÞèùò ãéá áñ÷åßá ôùí ïðïßùí ôï ðåñéå÷üìåíï Ý÷åé ìåôáâëçèåß áðü ôï ÷ñÞóôç. Áí åðéëÝîåôå íá äåßôå îáíÜ ôéò äéáöïñÝò ìÝóù ôçò &man.diff.1;, áõôÝò èá åìöáíéóôïýí áêñéâþò üðùò Ýãéíå êáé ðñéí óáò ñùôÞóåé ôï &man.mergemaster.8; íá åðéëÝîåôå ôé èÝëåôå íá êÜíåôå ìå ôï áñ÷åßï. Ìüëéò ïëïêëçñùèåß ç ëåéôïõñãßá ôïõ &man.mergemaster.8; óôá áñ÷åßá óõóôÞìáôïò, èá óáò ñùôÞóåé ãéá Üëëåò åðéëïãÝò. Ôï &man.mergemaster.8; ßóùò óáò ñùôÞóåé áí èÝëåôå íá áíáäçìéïõñãÞóåôå ôï áñ÷åßï ôùí êùäéêþí (password file), êáé èá ôåëåéþóåé äßíïíôáò óáò ôçí åðéëïãÞ íá äéáãñÜøåôå ôõ÷üí ðñïóùñéíÜ áñ÷åßá ðïõ äçìéïõñãÞèçêáí êáôÜ ôçí äéáäéêáóßá. ×åéñïêßíçôç ÅíçìÝñùóç Áí åðéèõìåßôå íá êÜíåôå ôçí åíçìÝñùóç ÷åéñïêßíçôá, äåí ìðïñåßôå áðëþò íá áíôéãñÜøåôå ôá áñ÷åßá áðü ôïí êáôÜëïãï /usr/src/etc óôïí /etc êáé íá ðåñéìÝíåôå üôé ôï óýóôçìá óáò èá ëåéôïõñãÞóåé óùóôÜ. ÊÜðïéá áðü áõôÜ ôá áñ÷åßá èá ðñÝðåé íá åãêáôáóôáèïýí ðñþôá. Áõôü óõìâáßíåé åðåéäÞ ï êáôÜëïãïò /usr/src/etc äåí åßíáé êáíïíéêü áíôßãñáöï ôïõ /etc. Åðéðñüóèåôá, õðÜñ÷ïõí áñ÷åßá ôá ïðïßá ðñÝðåé íá âñßóêïíôáé óôïí êáôÜëïãï /etc, áëëÜ äåí õðÜñ÷ïõí óôïí /usr/src/etc. Áí ÷ñçóéìïðïéåßôå ôï &man.mergemaster.8; (üðùò êáé óõíßóôáôáé), ìðïñåßôå íá äéáâÜóåôå êáôåõèåßáí ôçí åðüìåíç åíüôçôá. Ï áðëïýóôåñïò ôñüðïò íá ôï êÜíåôå áõôü ÷åéñïêßíçôá, åßíáé íá åãêáôáóôÞóåôå ôá áñ÷åßá óå Ýíá íÝï êáôÜëïãï, êáé Ýðåéôá íá ôá åîåôÜóåôå Ýíá-Ýíá øÜ÷íïíôáò ãéá ôéò áëëáãÝò. ÊñáôÞóôå ¸íá Áíôßãñáöï Áóöáëåßáò ôïõ Êáôáëüãïõ <filename>/etc</filename> Áí êáé èåùñçôéêÜ, ôßðïôá äåí ðñüêåéôáé íá ðåéñÜîåé áõôü ôïí êáôÜëïãï áõôüìáôá, åßíáé ðÜíôá êáëýôåñá íá åßìáóôå óßãïõñïé. Ãéá ôï ëüãï áõôü, áíôéãñÜøôå ôïí õðÜñ÷ïíôá êáôÜëïãï /etc óå êÜðïéï áóöáëÝò ìÝñïò. ×ñçóéìïðïéÞóôå ìéá åíôïëÞ üðùò ç ðáñáêÜôù: &prompt.root; cp -Rp /etc /etc.old Ç åðéëïãÞ ðñáãìáôïðïéåß áíáäñïìéêÞ áíôéãñáöÞ, åíþ ç äéáôçñåß ôá äéêáéþìáôá, ôçí éäéïêôçóßá, ôéò çìåñïìçíßåò ôùí áñ÷åßùí, ê.ï.ê. èá ðñÝðåé íá äçìéïõñãÞóåôå ìéá øåõôï-äïìÞ êáôáëüãùí ãéá íá åãêáôáóôÞóåôå ôï íÝï êáôÜëïãï /etc êáé Üëëá áñ÷åßá. Ìéá ëïãéêÞ åðéëïãÞ åßíáé ï êáôÜëïãïò /var/tmp/root, êáé êÜôù áðü áõôüí, èá ðñÝðåé åðßóçò íá äçìéïõñãÞóåôå êáé ìéá ïëüêëçñç óåéñÜ áðü ôïõò õðïêáôáëüãïõò ðïõ áðáéôïýíôáé. &prompt.root; mkdir /var/tmp/root &prompt.root; cd /usr/src/etc &prompt.root; make DESTDIR=/var/tmp/root distrib-dirs distribution Ïé ðáñáðÜíù åíôïëÝò èá äçìéïõñãÞóïõí ôçí áðáéôïýìåíç äïìÞ êáôáëüãùí êáé èá åãêáôáóôÞóïõí ôá áñ÷åßá. ÌåãÜëï ìÝñïò ôùí õðïêáôáëüãùí ðïõ Ý÷ïõí äçìéïõñãçèåß êÜôù áðü ôïí /var/tmp/root åßíáé Üäåéïé, êáé ðñÝðåé íá äéáãñáöïýí. Ï áðëïýóôåñïò ôñüðïò ãéá íá ãßíåé áõôü, öáßíåôáé ðáñáêÜôù: &prompt.root; cd /var/tmp/root &prompt.root; find -d . -type d | xargs rmdir 2>/dev/null Áõôü èá äéáãñÜøåé üëïõò ôïõò Üäåéïõò õðïêáôáëüãïõò. (Ç Ýîïäïò óöÜëìáôïò áíáêáôåõèýíåôáé óôï /dev/null þóôå íá ìçí åìöáíßæïíôáé óôçí ïèüíç ðñïåéäïðïéÞóåéò ãéá êáôáëüãïõò ðïõ äåí åßíáé Üäåéïé.) Ôþñá, ï /var/tmp/root ðåñéÝ÷åé üëá ôá áñ÷åßá ðïõ èá ðñÝðåé íá ôïðïèåôçèïýí óå êáôÜëëçëåò èÝóåéò êÜôù áðü ôïí /. Èá ðñÝðåé ôþñá íá äéáôñÝîåôå êáèÝíá áðü áõôÜ ôá áñ÷åßá, êáé íá êáèïñßóåôå ðùò êáèÝíá áðü áõôÜ äéáöÝñåé áðü ôï áíôßóôïé÷ï õðÜñ÷ïí (åãêáôåóôçìÝíï) áñ÷åßï. Óçìåéþóôå üôé êÜðïéá áðü ôá áñ÷åßá ôá ïðïßá Ý÷ïõí åãêáôáóôáèåß óôïí /var/tmp/root Ý÷ïõí ìéá áñ÷éêÞ .. Ôç óôéãìÞ ðïõ ãñÜöïíôáé áõôÝò ïé ãñáììÝò, ôá ìüíá áñ÷åßá óôá ïðïßá óõìâáßíåé áõôü åßíáé ôá áñ÷åßá åêêßíçóçò ôïõ êåëýöïõò óôïí êáôÜëïãï /var/tmp/root/ êáé /var/tmp/root/root/, áí êáé ìðïñåß íá õðÜñ÷ïõí êáé Üëëá (áíÜëïãá ìå ôï ðüôå äéáâÜæåôå ôï êåßìåíï). Âåâáéùèåßôå üôé ÷ñçóéìïðïéåßôå ôçí åíôïëÞ ls -a ãéá íá ôá äåßôå üëá. Ï áðëïýóôåñïò ôñüðïò ãéá íá óõãêñßíåôå äýï áñ÷åßá, åßíáé íá ÷ñçóéìïðïéÞóåôå ôçí åíôïëÞ &man.diff.1;: &prompt.root; diff /etc/shells /var/tmp/root/etc/shells Ç ðáñáðÜíù åíôïëÞ èá óáò äåßîåé ôéò äéáöïñÝò ìåôáîý ôïõ áñ÷åßïõ /etc/shells êáé ôïõ íÝïõ áñ÷åßïõ /var/tmp/root/etc/shells. ×ñçóéìïðïéÞóôå ôéò äéáöïñÝò áõôÝò ãéá íá áðïöáóßóåôå áí èá ðñÝðåé íá óõã÷ùíåýóåôå ôéò áëëáãÝò ðïõ Ý÷åôå êÜíåé, Þ áðëþò íá áíôéãñÜøåôå ôï ðáëéü óáò áñ÷åßï ðÜíù áðü ôï íÝï. ÐñïóèÝóôå ôçí Çìåñïìçíßá óôï ¼íïìá ôïõ ÍÝïõ Root Êáôáëüãïõ, (<filename>/var/tmp/root</filename>) ¿óôå íá Ìðïñåßôå Åýêïëá íá Óõãêñßíåôå ÄéáöïñåôéêÝò Åêäüóåéò Ìåôáîý ôïõò Áí ìåôáãëùôôßæåôå óõ÷íÜ ôï âáóéêü óýóôçìá, èá ðñÝðåé åðßóçò íá åíçìåñþíåôå óõ÷íÜ ôïí êáôÜëïãï /etc, ôï ïðïßï ìðïñåß íá åßíáé åíï÷ëçôéêü. Ìðïñåßôå íá åðéôá÷ýíåôå áõôÞ ôç äéáäéêáóßá, ôçñþíôáò Ýíá áíôßãñáöï ôïõ ôåëåõôáßïõ óåô áëëáãìÝíùí áñ÷åßùí ôá ïðïßá óõã÷ùíåýóáôå óôïí êáôÜëïãï /etc. Ç ðáñáêÜôù äéáäéêáóßá èá óáò äþóåé ìéá éäÝá ãéá ôï ðùò ìðïñåß íá ãßíåé áõôü: Ìåôáãëùôôßóôå ôï âáóéêü óýóôçìá üðùò êÜíåôå óõíÞèùò. ¼ôáí èÝëåôå íá åíçìåñþóåôå ôïí /etc êáé ôïõò Üëëïõò êáôáëüãïõò, äþóôå óôïí êáôÜëïãï ðñïïñéóìïý Ýíá üíïìá âáóéóìÝíï óôçí ôñÝ÷ïõóá çìåñïìçíßá. Áí ôï êÜíáôå áõôü óôéò 14 Öåâñïõáñßïõ 1998, èá ãñÜöáôå êÜôé óáí ôï ðáñáêÜôù: &prompt.root; mkdir /var/tmp/root-19980214 &prompt.root; cd /usr/src/etc &prompt.root; make DESTDIR=/var/tmp/root-19980214 \ distrib-dirs distribution Óõã÷ùíåýóôå ôéò áëëáãÝò áðü áõôü ôïí êáôÜëïãï, ìå ôïí ôñüðï ðïõ ðåñéãñÜøáìå ðáñáðÜíù. Ìçí äéáãñÜøåôå ôïí êáôÜëïãï /var/tmp/root-19980214 üôáí ôåëåéþóåôå ìå ôçí ðáñáðÜíù äéáäéêáóßá. ¼ôáí êáôåâÜóåôå ôçí ôåëåõôáßá Ýêäïóç ôïõ ðçãáßïõ êþäéêá êáé ôïí ìåôáãëùôôßóåôå îáíÜ, áêïëïõèÞóôå ôï âÞìá 1. Áõôü èá óáò äþóåé Ýíá êáôÜëïãï ðïõ ìðïñåß íá ïíïìÜæåôáé /var/tmp/root-19980221 (áí áíÜìåóá óôéò äýï ìåôáãëùôôßóåéò ðáñåìâÜëëåôáé äéÜóôçìá ìéáò åâäïìÜäáò). Ìðïñåßôå ôþñá íá äåßôå ôéò äéáöïñÝò ðïõ õðÜñ÷ïõí áíÜìåóá óôéò äýï åâäïìÜäåò, ÷ñçóéìïðïéþíôáò ôçí åíôïëÞ &man.diff.1; óå áíáäñïìéêÞ ëåéôïõñãßá ãéá íá äçìéïõñãÞóåôå ôéò äéáöïñÝò ìåôáîý ôùí äýï êáôáëüãùí: &prompt.root; cd /var/tmp &prompt.root; diff -r root-19980214 root-19980221 ÔõðéêÜ, áõôü ôï óåô áëëáãþí èá åßíáé ðïëý ìéêñüôåñï áðü áõôü ìåôáîý ôïõ /var/tmp/root-19980221/etc êáé ôïõ /etc. Êáèþò áõôü ôï óåô áëëáãþí åßíáé ìéêñüôåñï, åßíáé êáé ðéï åýêïëï íá åöáñìüóåôå áõôÝò ôéò áëëáãÝò óôïí êáôÜëïãï /etc. Ìðïñåßôå ôþñá íá äéáãñÜøåôå ôïí ðáëéüôåñï áðü ôïõò äýï êáôáëüãïõò /var/tmp/root-*: &prompt.root; rm -rf /var/tmp/root-19980214 ÅðáíáëÜâåôå áõôÞ ôç äéáäéêáóßá êÜèå öïñÜ ðïõ èÝëåôå íá óõã÷ùíåýóåôå ôéò áëëáãÝò óôïí êáôÜëïãï /etc. Ìðïñåßôå åðßóçò íá ÷ñçóéìïðïéÞóåôå ôçí åíôïëÞ &man.date.1; ãéá íá áõôïìáôïðïéÞóåôå ôçí äçìéïõñãßá ôùí ïíïìÜôùí êáôáëüãùí: &prompt.root; mkdir /var/tmp/root-`date "+%Y%m%d"` Åðáíåêêßíçóç Ç äéáäéêáóßá Ý÷åé ðëÝïí ïëïêëçñùèåß. Áöïý åðáëçèåýóåôå üôé üëá âñßóêïíôáé óôéò óùóôÝò èÝóåéò, ìðïñåßôå íá åðáíåêêéíÞóåôå ôï óýóôçìá. Ìéá áðëÞ åíôïëÞ &man.shutdown.8; åßíáé åðáñêÞò: &prompt.root; shutdown -r now ÏëïêëÞñùóç ¸÷åôå ðëÝïí áíáâáèìßóåé ôï &os; óýóôçìá óáò. Óõã÷áñçôÞñéá. Áí ôá ðñÜãìáôá äåí ðÞãáí åíôåëþò óùóôÜ, åßíáé åýêïëï íá ìåôáãëùôôßóåôå îáíÜ ïðïéïäÞðïôå ôìÞìá ôïõ óõóôÞìáôïò. Ãéá ðáñÜäåéãìá, áí äéáãñÜøåôå êáôÜ ëÜèïò ôï /etc/magic ùò ìÝñïò ìéáò áíáâÜèìéóçò Þ óõã÷þíåõóçò ôïõ /etc, ç åíôïëÞ &man.file.1; èá óôáìáôÞóåé íá ëåéôïõñãåß. Óôçí ðåñßðôùóç áõôÞ, ç äéüñèùóç åßíáé íá åêôåëÝóåôå: &prompt.root; cd /usr/src/usr.bin/file &prompt.root; make all install ÅñùôÞóåéò ÐñÝðåé íá ìåôáãëùôôßóù îáíÜ ïëüêëçñï ôï âáóéêü óýóôçìá óå êÜèå áëëáãÞ; Äåí õðÜñ÷åé åýêïëç áðÜíôçóç óå áõôü ôï åñþôçìá, êáèþò åîáñôÜôáé áðü ôç öýóç ôçò áëëáãÞò. Ãéá ðáñÜäåéãìá, áí åêôåëÝóåôå ôï CVSup, êáé äåßôå üôé åíçìåñþèçêáí ôá ðáñáêÜôù áñ÷åßá: src/games/cribbage/instr.c src/games/sail/pl_main.c src/release/sysinstall/config.c src/release/sysinstall/media.c src/share/mk/bsd.port.mk Ôï ðéèáíüôåñï åßíáé üôé äåí ÷ñåéÜæåôáé íá ìåôáãëùôôßóåôå îáíÜ üëï ôï âáóéêü óýóôçìá. Ìðïñåßôå áðëþò íá ìåôáâåßôå óôïõò ó÷åôéêïýò õðïêáôáëüãïõò êáé íá åêôåëÝóåôå ôï make all install, êáé èá Ý÷åôå ôåëåéþóåé. Áí üìùò õðÜñ÷åé êÜðïéá óçìáíôéêÞ áëëáãÞ, ãéá ðáñÜäåéãìá ôï src/lib/libc/stdlib, èá ðñÝðåé åßôå íá åðáíáìåôáãëùôôßóåôå ôï âáóéêü óýóôçìá, Þ ôïõëÜ÷éóôïí áõôÜ ôá êïììÜôéá ôá ïðïßá åßíáé óôáôéêÜ óõíäåäåìÝíá (üðùò êáé ïôéäÞðïôå Üëëï Ý÷åôå ðñïóèÝóåé åóåßò êáé ôï ïðïßï åßíáé óôáôéêÜ óõíäåäåìÝíï). ÔåëéêÜ, ç áðüöáóç åßíáé äéêÞ óáò. Ìðïñåß íá åßóôå éêáíïðïéçìÝíïò áí ìåôáãëùôôßæåôå ôï âáóéêü óýóôçìá êÜèå äýï âäïìÜäåò, áöÞíïíôáò ôéò áëëáãÝò íá óõãêåíôñùèïýí óôç äéÜñêåéá áõôïý ôïõ äéáóôÞìáôïò. ¹ ìðïñåß íá èÝëåôå íá ìåôáãëùôôßóåôå ìüíï ôéò áëëáãÝò, áí Ý÷åôå ôçí ðåðïßèçóç üôé ìðïñåßôå íá åíôïðßóåôå üëåò ôéò åîáñôÞóåéò ôïõò. Êáé öõóéêÜ, üëá áõôÜ åîáñôþíôáé áðü ôï ðüóï óõ÷íÜ èÝëåôå íá åíçìåñþíåôå ôï óýóôçìá óáò, êáé áðü ôï áí áêïëïõèåßôå ôï &os.stable; Þ ôï &os.current;. Ç ìåôáãëþôôéóç ìïõ áðÝôõ÷å ìå ðëÞèïò ìçíõìÜôùí signal 11signal 11 (Þ ëÜèç ìå Üëëá óÞìáôá). Ôé Ý÷åé óõìâåß; Áõôü óõíÞèùò äåß÷íåé ðñïâëÞìáôá õëéêïý. Ç äéáäéêáóßá ìåôáãëþôôéóçò ôïõ âáóéêïý óõóôÞìáôïò åßíáé Ýíáò áðïôåëåóìáôéêüò ôñüðïò íá äïêéìÜóåôå ôï õëéêü óáò óôá üñéá ôïõ, êáé óõ÷íÜ èá äåßîåé ðñïâëÞìáôá ðïõ ó÷åôßæïíôáé ìå ôç ìíÞìç. Ôï ðéï óýíçèåò óýìðôùìá, åßíáé ç áðüôïìç äéáêïðÞ ôçò ìåôáãëþôôéóçò, ìå ôïí ìåôáãëùôôéóôÞ íá öáßíåôáé üôé Ý÷åé ëÜâåé êÜðïéï ìõóôçñéþäåò óÞìá. ¸íá óßãïõñï óçìÜäé ãéá ôï ðáñáðÜíù, åßíáé íá åðáíåêêéíÞóåôå ôç äéáäéêáóßá, êáé áõôÞ íá óôáìáôÞóåé óå äéáöïñåôéêü óçìåßï. Óôçí ðåñßðôùóç áõôÞ, äåí õðÜñ÷ïõí êáé ðïëëÜ ðïõ ìðïñåßôå íá êÜíåôå, åêôüò áðü ôï íá áñ÷ßóåôå íá áëëÜæåôå åîáñôÞìáôá óôï ìç÷Üíçìá óáò ìÝ÷ñé íá âñåßôå áõôü ðïõ åßíáé õðáßôéï. Ìðïñþ íá äéáãñÜøù ôï /usr/obj üôáí ôåëåéþóù; Ç óýíôïìç áðÜíôçóç åßíáé íáé. Ôï /usr/obj ðåñéÝ÷åé üëá ôá áíôéêåéìåíéêÜ áñ÷åßá ðïõ ðáñÜãïíôáé êáôÜ ôç äéÜñêåéá ôçò ìåôáãëþôôéóçò. ÓõíÞèùò, Ýíá áðü ôá ðñþôá âÞìáôá óôçí äéáäéêáóßá make buildworld åßíáé ç äéáãñáöÞ áõôïý ôïõ êáôáëüãïõ êáé ç áíáäçìéïõñãßá ôïõ. Óôçí ðåñßðôùóç áõôÞ, ôï íá êñáôÞóåôå ôïí êáôÜëïãï /usr/obj áöïý Ý÷åôå ôåëåéþóåé, äåí Ý÷åé êáé ðïëý íüçìá, åíþ áí ôïí óâÞóåôå èá êåñäßóåôå Ýíá ìåãÜëï êïììÜôé åëåýèåñïõ ÷þñïõ (ôçí ðáñïýóá óôéãìÞ ðåñßðïõ 2 GB). ¼ìùò, áí îÝñåôå ôé êÜíåôå, ìðïñåßôå íá ïäçãÞóåôå ôï make buildworld íá ðáñáëåßøåé áõôü ôï âÞìá. Áõôü èá åðéôá÷ýíåé éäéáßôåñá ôéò íÝåò ìåôáãëùôôßóåéò, êáèþò ôá ðåñéóóüôåñá ôìÞìáôá ôïõ ðçãáßïõ êþäéêá äåí èá ÷ñåéÜæïíôáé îáíÜ ìåôáãëþôôéóç. Ôï ìåéïíÝêôçìá åßíáé üôé ïñéóìÝíåò öïñÝò åìöáíßæïíôáé ðñïâëÞìáôá ðïõ Ý÷ïõí ó÷Ýóç ìå ü÷é êáé ôüóï åìöáíåßò åîáñôÞóåéò, êáé ìðïñåß íá ïäçãÞóïõí óå ìõóôçñéþäç áðïôõ÷ßá ôçò ìåôáãëþôôéóçò. ÔÝôïéá ðñïâëÞìáôá óõ÷íÜ äçìéïõñãïýí èüñõâï óôéò ëßóôåò ôïõ &os;, üôáí êÜðïéïò ÷ñÞóôçò ðáñáðïíéÝôáé üôé ç ìåôáãëþôôéóç ôïõ áðïôõã÷Üíåé, ÷ùñßò íá áíôéëáìâÜíåôáé üôé áõôü ïöåßëåôáé óôçí ðñïóðÜèåéá ôïõ íá óõíôïìåýóåé ôçí äéáäéêáóßá. Ìðïñþ íá óõíå÷ßóù ìéá ìåôáãëþôôéóç ðïõ äéÝêïøá; Áõôü åîáñôÜôáé áðü ôï ðüóï Ý÷åôå ðñï÷ùñÞóåé óôç äéáäéêáóßá ìÝ÷ñé ôç óôéãìÞ ðïõ âñÞêáôå ôï ðñüâëçìá. Óå ãåíéêÝò ãñáììÝò (êáé áõôüò äåí åßíáé êáíüíáò ðïõ éó÷ýåé ðÜíôá), ç äéåñãáóßá ôïõ make buildworld ìåôáãëùôôßæåé íÝá áíôßãñáöá âáóéêþí åñãáëåßùí (üðùò ôá &man.gcc.1;, êáé &man.make.1;) êáèþò êáé ôùí âéâëéïèçêþí óõóôÞìáôïò. ¸ðåéôá åãêáèéóôþíôáé áõôÜ ôá åñãáëåßá êáé ïé âéâëéïèÞêåò. Ôá íÝá åñãáëåßá êáé âéâëéïèÞêåò ÷ñçóéìïðïéïýíôáé Ýðåéôá ãéá íá åðáíáìåôáãëùôôßóïõí ôïõò åáõôïýò ôïõò, êáé åãêáèßóôáíôáé îáíÜ. Ïëüêëçñï ôï óýóôçìá (ôï ïðïßï ôþñá ðåñéëáìâÜíåé êáé ôá óõíçèéóìÝíá ðñïãñÜììáôá ÷ñÞóôç üðùò ôï &man.ls.1; Þ ôï &man.grep.1;) åðáíáìåôáãëùôôßæåôáé ÷ñçóéìïðïéþíôáò ôá íÝá áñ÷åßá ôïõ óõóôÞìáôïò. Áí âñßóêåóôå óôï ôåëåõôáßï óôÜäéï, ôï ïðïßï èá ôï ãíùñßæåôå êïéôÜæïíôáò ôçí Ýîïäï ðïõ Ý÷åôå áðïèçêåýóåé, åßíáé ó÷åôéêÜ áóöáëÝò íá êÜíåôå: … fix the problem … &prompt.root; cd /usr/src &prompt.root; make -DNO_CLEAN all Ìå ôïí ôñüðï áõôü äåí èá áíáéñÝóåôå ôçí åñãáóßá ðïõ Ý÷åé ãßíåé áðü ôï ðñïçãïýìåíï make buildworld. Áí äåßôå ôï ìÞíõìá: -------------------------------------------------------------- Building everything.. -------------------------------------------------------------- óôçí Ýîïäï ôçò åíôïëÞò make buildworld, ôüôå åßíáé ìÜëëïí áóöáëÝò íá ðñï÷ùñÞóåôå ìå áõôü ôïí ôñüðï. Áí äåí äåßôå áõôü ôï ìÞíõìá, Þ áí äåí åßóôå óßãïõñïò, ôüôå åßíáé êáëýôåñá íá êÜíåôå ðëÞñç ìåôáãëþôôéóç ðáñÜ íá ìåôáíéþíåôå áñãüôåñá. Ðùò ìðïñþ íá åðéôá÷ýíù ôç ìåôáãëþôôéóç ôïõ âáóéêïý óõóôÞìáôïò; ÅêôåëÝóôå ôçí óå êáôÜóôáóç åíüò ÷ñÞóôç. ÂÜëôå ôïõò êáôáëüãïõò /usr/src êáé /usr/obj óå äéáöïñåôéêÜ óõóôÞìáôá áñ÷åßùí ôá ïðïßá âñßóêïíôáé êáé óå äéáöïñåôéêïýò öõóéêïýò äßóêïõò. Áí åßíáé äõíáôüí, âÜëôå áõôïýò ôïõò äßóêïõò óå ÷ùñéóôïýò åëåãêôÝò. Áêüìá êáëýôåñá, ìïéñÜóôå áõôÜ ôá óõóôÞìáôá áñ÷åßùí óå ðïëëáðëïýò äßóêïõò, ÷ñçóéìïðïéþíôáò ôï ðñüãñáììá ïäÞãçóçò &man.ccd.4; (concatenated disk driver, ïäÞãçóçò óõíåíùìÝíùí äßóêùí). ÁðåíåñãïðïéÞóôå ôï profiling (èÝóôå ôçí ìåôáâëçôÞ NO_PROFILE=true óôï /etc/make.conf). Åßíáé ó÷åäüí óßãïõñï üôé äåí ôï ÷ñåéÜæåóôå. Óôï áñ÷åßï /etc/make.conf, èÝóôå ôï CFLAGS óå êÜôé üðùò . Ç âåëôéóôïðïßçóç ÷ñåéÜæåôáé áñêåôÜ ðåñéóóüôåñï ÷ñüíï, êáé ç äéáöïñÜ áðüäïóçò ìåôáîý êáé åßíáé óõíÞèùò áìåëçôÝá. Ôï åðéôñÝðåé óôïí ìåôáãëùôôéóôÞ íá ÷ñçóéìïðïéÞóåé pipes ãéá åðéêïéíùíßá áíôß ãéá ðñïóùñéíÜ áñ÷åßá. Áõôü êáôáíáëþíåé ðåñéóóüôåñç ìíÞìç, áëëÜ ÷ñçóéìïðïéåß ëéãüôåñï ôï óêëçñü äßóêï. ×ñçóéìïðïéÞóôå ôçí åðéëïãÞ óôï &man.make.1; þóôå íá åêôåëïýíôáé ðáñÜëëçëá ðïëëáðëÝò äéåñãáóßåò ìåôáãëþôôéóçò. Áõôü óõíÞèùò âïçèÜåé áêüìá êáé óå ðåñßðôùóç ðïõ Ý÷åôå ìç÷Üíçìá ìå Ýíá åðåîåñãáóôÞ. Ìðïñåßôå íá ðñïóáñôÞóåôå (Þ íá åðáíáðñïóáñôÞóåôå) ôï óýóôçìá áñ÷åßùí óôï ïðïßï åßíáé áðïèçêåõìÝíï ôï /usr/src ìå ôçí åðéëïãÞ . Áõôü áðïôñÝðåé ôçí êáôáãñáöÞ çìåñïìçíßáò / þñáò ðñüóâáóçò óôï óýóôçìá áñ÷åßùí. ÊáôÜ ðÜóá ðéèáíüôçôá, äåí ÷ñåéÜæåóôå áõôÞ ôçí ðëçñïöïñßá Ýôóé êáé áëëéþò. &prompt.root; mount -u -o noatime /usr/src Ôï ðáñÜäåéãìá ðñïûðïèÝôåé üôé Ý÷åôå ôï /usr/src óôï äéêü ôïõ óýóôçìá áñ÷åßùí. Áí áõôü äåí óõìâáßíåé (áí åßíáé ìÝñïò ôïõ /usr ãéá ðáñÜäåéãìá) èá ÷ñåéáóôåß íá ÷ñçóéìïðïéÞóåôå áõôü ôï óçìåßï ðñïóÜñôçóçò, êáé ü÷é ôï /usr/src. Ìðïñåßôå íá ðñïóáñôÞóåôå (Þ íá åðáíáðñïóáñôÞóåôå) ôï óýóôçìá áñ÷åßùí ðïõ ðåñéÝ÷åé ôï /usr/obj ìå ôçí åðéëïãÞ . Ìå ôïí ôñüðï áõôü, ïé åããñáöÝò óôï äßóêï èá ãßíïíôáé áóýã÷ñïíá. Ìå Üëëá ëüãéá, ïé åããñáöÝò öáßíåôáé üôé ïëïêëçñþíïíôáé Üìåóá, åíþ ç ðñáãìáôéêÞ åããñáöÞ óôï äßóêï ãßíåôáé ëßãá äåõôåñüëåðôá áñãüôåñá. Áõôü åðéôñÝðåé ôçí ïìáäïðïßçóç ôùí åããñáöþí, ôï ïðïßï ìðïñåß íá ðñïóöÝñåé äñáìáôéêÞ âåëôßùóç áðüäïóçò. Íá Ý÷åôå õðüøéí óáò üôé áõôÞ ç åðéëïãÞ ìðïñåß íá êÜíåé ôï óýóôçìá áñ÷åßùí óáò ðïëý ðéï åõáßóèçôï. Ìå ôçí åðéëïãÞ áõôÞ, õðÜñ÷åé áõîçìÝíç ðéèáíüôçôá ôï óýóôçìá áñ÷åßùí íá âñåèåß óå ìç åðéóêåõÜóéìç êáôÜóôáóç áí õðÜñîåé äéáêïðÞ ñåýìáôïò. Áí ôï óýóôçìá áñ÷åßùí ðåñéÝ÷åé ìüíï ôï /usr/obj, ôï ðáñáðÜíù äåí åßíáé ðñüâëçìá. Áí ùóôüóï Ý÷åôå êáé Üëëá ðïëýôéìá äåäïìÝíá óôï ßäéï óýóôçìá áñ÷åßùí, óéãïõñåõôåßôå üôé Ý÷åôå åíçìåñùìÝíá áíôßãñáöá áóöáëåßáò ðñéí åíåñãïðïéÞóåôå áõôÞ ôçí åðéëïãÞ. &prompt.root; mount -u -o async /usr/obj ¼ðùò êáé ðñïçãïõìÝíùò, áí ôï /usr/obj äåí åßíáé óýóôçìá áñ÷åßùí áðü ìüíï ôïõ, áíôéêáôáóôÞóôå ôï óôï ðáñÜäåéãìá ìå ôï üíïìá ôïõ ðñáãìáôéêïý óçìåßïõ ðñïóÜñôçóçò. Ôé íá êÜíù áí êÜôé ðÜåé óôñáâÜ; Óéãïõñåõôåßôå üôé ôï ðåñéâÜëëïí óáò äåí Ý÷åé õðïëåßììáôá áðü ðñïçãïýìåíåò ìåôáãëùôôßóåéò. Áõôü åßíáé áñêåôÜ áðëü. &prompt.root; chflags -R noschg /usr/obj/usr &prompt.root; rm -rf /usr/obj/usr &prompt.root; cd /usr/src &prompt.root; make cleandir &prompt.root; make cleandir Íáé, èá ðñÝðåé íá åêôåëÝóåôå ôï make cleandir äýï öïñÝò. ÅðáíåêêéíÞóôå Ýðåéôá üëç ôç äéáäéêáóßá, îåêéíþíôáò ìå ôï make buildworld. Áí Ý÷åôå áêüìá ðñïâëÞìáôá, óôåßëôå ôï ìÞíõìá ëÜèïõò êáé ôçí Ýîïäï ôïõ uname -a óôçí &a.questions;. Íá åßóôå ðñïåôïéìáóìÝíïé íá áðáíôÞóåôå åðéðëÝïí åñùôÞóåéò ó÷åôéêÜ ìå ôçí åãêáôÜóôáóç óáò! Anton Shterenlikht ÂáóéóìÝíï óå óçìåéþóåéò ðïõ ðáñåß÷å ï ÄéáãñáöÞ Ðáñù÷çìÝíùí Áñ÷åßùí, Êáôáëüãùí êáé Âéâëéïèçêþí Delete obsolete files, directories and libraries ÊáôÜ ôçí óõíå÷Þ áíÜðôõîç ôïõ &os; åßíáé öõóéïëïãéêü êÜðïéá áñ÷åßá êáôÜ êáéñïýò íá ÷áñáêôçñßæïíôáé ùò ðáñù÷çìÝíá. Áõôü ìðïñåß íá óõìâåß áí ïé ëåéôïõñãßåò ðïõ ðáñåß÷áí õëïðïéïýíôáé ðëÝïí äéáöïñåôéêÜ, áí ï ï áñéèìüò Ýêäïóçò ôçò âéâëéïèÞêçò Ý÷åé áëëÜîåé Þ áêüìá êáé áí Ý÷åé äéáãñáöåß ïñéóôéêÜ áðü ôï óýóôçìá. Óôá áñ÷åßá áõôÜ ðåñéëáìâÜíïíôáé åðßóçò âéâëéïèÞêåò êáôÜëïãïé ðïõ ðñÝðåé íá äéáãñáöïýí üôáí ãßíåôáé áíáâÜèìéóç ôïõ óõóôÞìáôïò. Ôï üöåëïò ãéá ôï ÷ñÞóôç åßíáé üôé ôï óýóôçìá ôïõ äåí ãåìßæåé áðü ðáëéÜ áñ÷åßá ôá ïðïßá êáôáëáìâÜíïõí Ü÷ñçóôï ÷þñï óôï ìÝóï áðïèÞêåõóçò êáé óôï backup. Åðéðñüóèåôá, áí êÜðïéá ðáëéÜ âéâëéïèÞêç åß÷å ðñïâëÞìáôá óôáèåñüôçôáò Þ áóöÜëåéáò èá ðñÝðåé íá ôçí áíáâáèìßóåôå ãéá íá êñáôÞóåôå ôï óýóôçìá óáò óôáèôåñü êáé áóöáëÝò. Ôá áñ÷åßá, ïé êáôÜëïãïé êáé ïé âéâëéïèÞêåò ðïõ èåùñïýíôáé ðáñù÷çìÝíåò öáßíïíôáé óôï /usr/src/ObsoleteFiles.inc. Ïé ðáñáêÜôù ïäçãßåò èá óáò âïçèÞóïõí íá äéáãñÜøåôå áõôÜ ôá áñ÷åßá êáôÜ ôç äéáäéêáóßá áíáâÜèìéóçò ôïõ óõóôÞìáôïò. ÕðïèÝôïõìå üôé ÷ñçóéìïðïéåßôå ôá âÞìáôá ðïõ ðåñéãñÜöïíôáé óôï . ÌåôÜ ôçí åðéôõ÷Þ åêôÝëóç ôçò åíôïëÞò make installworld êáé ôïõ mergemaster ðïõ áêïëïõèåß, èá ðñÝðåé íá åëÝãîåôå ãéá ðáñù÷çìÝíá áñ÷åßá êáé âéâëéïèÞêåò üðùò öáßíåôáé ðáñáêÜôù: &prompt.root; cd /usr/src &prompt.root; make check-old Áí âñåèïýí ðáñù÷çìÝíá áñ÷åßá, ìðïñåßôå íá ôá äéáãñÜøåôå ìå ôéò ðáñáêÜôù åíôïëÝò: &prompt.root; make delete-old Äåßôå ôï /usr/src/Makefile ãéá ðåñéóóüôåñåò åíäéáöÝñïõóåò åðéëïãÝò ôçò make. Ãéá êÜèå áñ÷åßï ðïõ èá äéáãñáöåß, èá óáò æçôçèåß íá åðéâåâáéþóåôå ôçí åíÝñãåéá. Ìðïñåßôå íá ðáñáëåßøåôå ôçí åñþôçóç êáé íá áöÞóåôå ôï óýóôçìá íá äéáãñÜøåé áõôÜ ôá áñ÷åßá áõôüìáôá ÷ñçóéìïðïéþíôáò ôçí ìåôáâëçôÞ ôïõ make BATCH_DELETE_OLD_FILES ìå ôïí ôñüðï ðïõ öáßíåôáé ðáñáêÜôù: &prompt.root; make -DBATCH_DELETE_OLD_FILES delete-old Ðñïåéäïðïßçóç Ç äéáãñáöÞ ðáñù÷çìÝíùí áñ÷åßùí, èá ðñïêáëÝóåé äõóëåéôïõñãßá ôùí åöáñìïãþí ðïõ åîáêïëïõèïýí íá âáóßæïíôáé óå áõôÜ. Áõôü óõìâáßíåé éäéáßôåñá óå ðáëéÝò âéâëéïèÞêåò. Óôéò ðåñéóóüôåñåò ðåñéðôþóåéò, èá ðñÝðåé íá åðáíáìåôáãëùôôßóåôå ôá ðñïãñÜììáôá, ports Þ âéâëéïèÞêåò ðïõ ÷ñçóéìïðïéïýóáí ôçí ðáëéÜ âéâëéïèÞêç ðñéí åêôåëÝóåôå ôçí åíôïëÞ make delete-old-libs. Ìðïñåßôå íá âñåßôå ðñïãñÜììáôá ðïõ åëÝã÷ïõí ôéò åîáñôÞóåéò ôùí êïéíü÷ñçóôùí âéâëéïèçêþí óôç ÓõëëïãÞ ôùí Ports, óôï sysutils/libchk Þ sysuilts/bsdadminscripts. Ïé ðáñù÷çìÝíåò êïéíü÷ñçóôåò âéâëéïèÞêåò ìðïñïýí íá äçìéïõñãÞóïõí ðñïâëÞìáôá ëüãù óõãêñïýóåùí ìå íåþôåñåò åêäüóåéò. Óå áõôÝò ôéò ðåñéðôþóåéò, èá äåßôåé ìçíýìáôá üðùò ôá ðáñáêÜôù: /usr/bin/ld: warning libz.so.4, needed by /usr/local/lib/libtiff.so, may conflict with libz.so.5 /usr/bin/ld: warning: librpcsvc.so.4, needed by /usr/local/lib/libXext.so may conflict with librpcsvc.so.5 Ãéá íá åðéëýóåôå ôÝôïéïõ åßäïõò ðñïâëÞìáôá, âñåßôå ðïéï port åãêáôÝóôçóå ôçí âéâëéïèÞêç: &prompt.root; pkg_info -W /usr/local/lib/libtiff.so /usr/local/lib/libtiff.so was installed by package tiff-3.9.4 &prompt.root; pkg_info -W /usr/local/lib/libXext.so /usr/local/lib/libXext.so was installed by package libXext-1.1.1,1 ¸ðåéôá, áðåãêáôáóôÞóôå, åðáíáìåôáãëùôôßóôå êáé åðáíåãêáôáóÞóôå ôï port. Ãéá íá áõôïìáôïðïéÞóåôå áõôÞ ôç äéáäéêáóßá ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôá âïçèçôéêÜ ðñïãñÜììáôá ports-mgmt/portmaster êáé ports-mgmt/portupgrade. Áöïý âåâáéùèåßôå üôé ïé ðáëéÝò âéâëéïèÞêåò äåí ÷ñçóéìïðïéïýíôáé ðëÝïí áðü êáíÝíá ðñüãñáììá, ìðïñåßôå íá ôéò äéáãñÜøåôå ìå ôçí ðáñáêÜôù åíôïëÞ: &prompt.root; make delete-old-libs Mike Meyer ÓõíåéóöïñÜ ôïõ Äéáäéêáóßá ãéá ÐïëëáðëÜ Ìç÷áíÞìáôá NFS installing multiple machines Áí Ý÷åôå ðïëëáðëÜ ìç÷áíÞìáôá óôá ïðïßá ðñüêåéôáé íá ÷ñçóéìïðïéÞóåôå ôï ßäéï äÝíôñï ðçãáßïõ êþäéêá, åßíáé óðáôÜëç ðüñùí (äßóêïõ, äéêôýïõ êáé åðåîåñãáóôÞ) íá åðáíáëáìâÜíåôå óå üëá ôç äéáäéêáóßá áíÜêôçóçò êáé ìåôáãëþôôéóçò. Ç ëýóç åßíáé íá ïñßóåôå Ýíá ìç÷Üíçìá íá åêôåëåß ôï ìåãáëýôåñï ìÝñïò ôçò åñãáóßáò, åíþ ôá õðüëïéðá èá ìðïñïýí íá ôçí áíáêôïýí ìÝóù NFS. Óôçí åíüôçôá áõôÞ èá ðáñïõóéÜóïõìå Ýíá ôñüðï ìå ôïí ïðïßï ìðïñåß íá ãßíåé áõôü. ÐñïêáôáñêôéêÜ Ðñþôá áðü üëá, áíáãíùñßóôå ôï óåô ôùí ìç÷áíçìÜôùí óôá ïðïßá óêïðåýåôå íá ÷ñçóéìïðïéÞóåôå ôá ßäéá åêôåëÝóéìá. Èá ïíïìÜóïõìå áõôÞ ôçí ïìÜäá óåô ìåôáãëþôôéóçò. ÊÜèå ìç÷Üíçìá ìðïñåß íá Ý÷åé äéêü ôïõ ðñïóáñìïóìÝíï ðõñÞíá, áëëÜ èá Ý÷ïõí üëá ôá ßäéá åêôåëÝóéìá userland. Áðü ôï óåô áõôü, åðéëÝîôå Ýíá ìç÷Üíçìá ôï ïðïßï èá ãßíåé ôï ìç÷Üíçìá ìåôáãëþôôéóçò. Èá åßíáé ôï ìç÷Üíçìá óôï ïðïßï èá ìåôáãëùôôßæåôáé ôï âáóéêü óýóôçìá êáé ï ðõñÞíáò. Ôï éäáíéêü åßíáé íá åðéëÝîåôå Ýíá ãñÞãïñï ìç÷Üíçìá, óôï ïðïßï íá õðÜñ÷åé áñêåôüò åëåýèåñïò ÷ñüíïò óôïí åðåîåñãáóôÞ ãéá íá åêôåëåß ôá make buildworld êáé make buildkernel. Èá ðñÝðåé åðßóçò íá åðéëÝîåôå Ýíá ìç÷Üíçìá äïêéìþí óôï ïðïßï èá äïêéìÜæåôå ôéò åíçìåñþóåéò ëïãéóìéêïý ðñéí ôéò ìåôáöÝñåôå óôçí ðáñáãùãÞ. Ìðïñåß íá åßíáé êáé ôï ßäéï ôï ìç÷Üíçìá ìåôáãëþôôéóçò, áëëÜ áõôü äåí åßíáé áðáñáßôçôï. ¼ëá ôá ìç÷áíÞìáôá óôï óåô ìåôáãëþôôéóçò ÷ñåéÜæåôáé íá ðñïóáñôÞóïõí ôï /usr/obj êáé ôï /usr/src áðü ôï ßäéï ìç÷Üíçìá, êáé óôï ßäéï óçìåßï ðñïóÜñôçóçò. Ôï éäáíéêü åßíáé áõôÜ ôá äýï óõóôÞìáôá áñ÷åßùí íá âñßóêïíôáé óå äéáöïñåôéêü öõóéêü äßóêï óôï ìç÷Üíçìá ìåôáãëþôôéóçò, áëëÜ ìðïñåßôå íá ôá ðñïóáñôÞóåôå ìÝóù NFS áêüìá êáé óå áõôü ôï ìç÷Üíçìá. Áí Ý÷åôå ðïëëáðëÜ óåô ìåôáãëþôôéóçò, ôï /usr/src èá ðñÝðåé íá âñßóêåôáé óå Ýíá áðü ôá ìç÷áíÞìáôá ìåôáãëþôôéóçò, êáé íá ðñïóáñôÜôáé óôá õðüëïéðá ìÝóù NFS. ÔÝëïò, âåâáéùèåßôå üôé ôá áñ÷åßá /etc/make.conf êáé /etc/src.conf óå üëá ôá ìç÷áíÞìáôá ôïõ óåô ìåôáãëþôôéóçò, åßíáé ßäéá ìå ôá áíôßóôïé÷á óôï ìç÷Üíçìá ìåôáãëþôôéóçò. Áõôü óçìáßíåé üôé ôï ìç÷Üíçìá ìåôáãëþôôéóçò èá ðñÝðåé íá ìåôáãëùôôßæåé üëá ôá ôìÞìáôá ôïõ âáóéêïý óõóôÞìáôïò ôá ïðïßá èá åãêáôáóôáèïýí óå êÜèå ìç÷Üíçìá ôïõ óåô. Åðßóçò, óå êÜèå ìç÷Üíçìá óôï óåô ìåôáãëþôôéóçò èá ðñÝðåé íá ïñéóôåß ôï üíïìá ôïõ äéêïý ôïõ ðñïóáñìïóìÝíïõ ðõñÞíá ìÝóù ôçò ìåôáâëçôÞò KERNCONF óôï /etc/make.conf, åíþ êáé ôï ìç÷Üíçìá ìåôáãëþôôéóçò èá ðñÝðåé íá Ý÷åé ìéá ëßóôá üëùí ôùí Üëëùí óôï KERNCONF, îåêéíþíôáò áðü ôï äéêü ôïõ. Ôï ìç÷Üíçìá ìåôáãëþôôéóçò, èá ðñÝðåé íá Ý÷åé ôá áñ÷åßá ñýèìéóçò ôïõ ðõñÞíá üëùí ôùí Üëëùí ìç÷áíçìÜôùí óôïí êáôÜëïãï /usr/src/sys/arch/conf áí ðñüêåéôáé íá ìåôáãëùôôßæåé ôïõò ðõñÞíåò ôïõò. Ôï Âáóéêü Óýóôçìá ¸÷ïíôáò ðñáãìáôïðïéÞóåé üëá ôá ðáñáðÜíù, åßóôå Ýôïéìïò íá ìåôáãëùôôßóåôå ôá ðÜíôá. Ìåôáãëùôôßóôå ôïí ðõñÞíá êáé ôï âáóéêü óýóôçìá üðùò ðåñéãñÜøáìå óôï ÷ñçóéìïðïéþíôáò ôï ìç÷Üíçìá ìåôáãëþôôéóçò, áëëÜ ìçí åãêáôáóôÞóåôå ôßðïôá. ÌåôÜ ôï ôÝëïò ôçò ìåôáãëþôôéóçò, ÷ñçóéìïðïéÞóôå ôï ìç÷Üíçìá äïêéìþí êáé åãêáôáóôÞóôå ôïí ðõñÞíá ðïõ ìüëéò äçìéïõñãÞóáôå. Áí ôï ìç÷Üíçìá áõôü ðñïóáñôÜ ôï /usr/src êáé ôï /usr/obj ìÝóù NFS, üôáí ôï åðáíåêêéíÞóåôå óå êáôÜóôáóç åíüò ÷ñÞóôç, èá ÷ñåéáóôåß íá åíåñãïðïéÞóåôå ôï äßêôõï êáé íá ôá ðñïóáñôÞóåôå. Ï åõêïëüôåñïò ôñüðïò ãéá áõôü, åßíáé íá åêêéíÞóåôå óå êáôÜóôáóç ðïëëáðëþí ÷ñçóôþí êáé Ýðåéôá íá åêôåëÝóåôå shutdown now ãéá íá ìåôáâåßôå óå êáôÜóôáóç åíüò ÷ñÞóôç. Ìüëéò ãßíåé áõôü, ìðïñåßôå íá åãêáôáóôÞóåôå ôïí íÝï ðõñÞíá êáé ôï âáóéêü óýóôçìá, êáé íá åêôåëÝóåôå ôï mergemaster üðùò èá êÜíáôå óõíÞèùò. ¼ôáí ôåëåéþóåôå, åðáíåêêéíÞóôå áõôü ôï ìç÷Üíçìá óôçí êáíïíéêÞ ëåéôïõñãßá ðïëëáðëþí ÷ñçóôþí. ¼ôáí âåâáéùèåßôå üôé üëá ëåéôïõñãïýí óùóôÜ óôï ìç÷Üíçìá äïêéìþí, ÷ñçóéìïðïéÞóôå ôçí ßäéá äéáäéêáóßá ãéá íá åãêáôáóôÞóåôå ôï íÝï ëïãéóìéêü óå êÜèå Ýíá áðü ôá õðüëïéðá ìç÷áíÞìáôá ôïõ óåô ìåôáãëþôôéóçò. Ports Ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôéò ßäéåò éäÝåò êáé ãéá ôï äÝíôñï ôùí ports. Ôï ðñþôï êñßóéìï âÞìá åßíáé íá ðñïóáñôÞóåôå ôï /usr/ports áðü ôï ßäéï ìç÷Üíçìá, óå üëá ôá ìç÷áíÞìáôá ôïõ óåô ìåôáãëþôôéóçò. Ìðïñåßôå Ýðåéôá íá ñõèìßóåôå ôï /etc/make.conf þóôå íá äéáìïéñÜæïíôáé ôá distfiles. Èá ðñÝðåé íá èÝóåôå ôï DISTDIR óå Ýíá êïéíü÷ñçóôï êáôÜëïãï, óôïí ïðïßï èá äþóåôå äéêáéþìáôá åããñáöÞò óå ïðïéïäÞðïôå ÷ñÞóôç Ý÷åôå äçëþóåé ùò root óôï NFS. Óå êÜèå ìç÷Üíçìá èá ðñÝðåé åðßóçò íá ïñéóôåß ç ìåôáâëçôÞ WRKDIRPREFIX þóôå íá äåß÷íåé óå Ýíá ôïðéêü êáôÜëïãï. ÔÝëïò, áí óêïðåýåôå íá ìåôáãëùôôßæåôå êáé íá äéáíÝìåôå Ýôïéìá ðáêÝôá, èá ðñÝðåé íá èÝóåôå ôçí ìåôáâëçôÞ PACKAGES óå Ýíá êáôÜëïãï, üðùò êÜíáôå êáé ìå ôçí DISTDIR. diff --git a/el_GR.ISO8859-7/books/handbook/l10n/chapter.xml b/el_GR.ISO8859-7/books/handbook/l10n/chapter.xml index 3a0c9e58b9..b38fb4360c 100644 --- a/el_GR.ISO8859-7/books/handbook/l10n/chapter.xml +++ b/el_GR.ISO8859-7/books/handbook/l10n/chapter.xml @@ -1,1028 +1,1025 @@ Andrey Chernov ÓõíåéóöïñÜ ôïõ Michael C. Wu ÃñÜöçêå îáíÜ áðü ôïí ÔïðéêÝò Ñõèìßóåéò - ×ñÞóç êáé ñýèìéóç I18N/L10N Óýíïøç Ôï &os; åßíáé Ýíá éäéáßôåñá áðïêåíôñùìÝíï Ýñãï ìå ÷ñÞóôåò êáé åèåëïíôÝò óå ïëüêëçñï ôïí êüóìï. Óôï êåöÜëáéï áõôü óõæçôïýíôáé ïé äõíáôüôçôåò ôïðéêþí êáé äéåèíþí ñõèìßóåùí ôïõ &os;, ïé ïðïßåò åðéôñÝðïõí óå ÷ñÞóôåò ãëùóóþí åêôüò ôçò ÁããëéêÞò íá åêôåëÝóïõí ðñáãìáôéêÞ åñãáóßá. ÕðÜñ÷ïõí ðïëëïß ðáñÜãïíôåò óôçí õëïðïßçóç ôïõ ðëáéóßïõ i18n, ôüóï óå åðßðåäï óõóôÞìáôïò, üóï êáé åöáñìïãþí, êáé ãéá ôï ëüãï áõôü, üðïõ ÷ñåéÜæåôáé, ðáñáðÝìðïõìå ôïí áíáãíþóôç óå ðéï óõãêåêñéìÝíåò ðçãÝò ôåêìçñßùóçò. Áöïý äéáâÜóåôå áõôü ôï êåöÜëáéï, èá îÝñåôå: Ðùò êùäéêïðïéïýíôáé ïé ãëþóóåò êáé ïé ôïðéêÝò ñõèìßóåéò óôá óýã÷ñïíá ëåéôïõñãéêÜ óõóôÞìáôá. Ðùò íá âÜëåôå ôïðéêÝò ñõèìßóåéò óôï êÝëõöïò óáò (login shell). Ðùò íá ñõèìßóåôå ôçí êïíóüëá ãéá ãëþóóåò åêôüò ôçò ÁããëéêÞò. Ðùò íá ÷ñçóéìïðïéÞóåôå áðïôåëåóìáôéêÜ ôï óýóôçìá X Windows ìå äéáöïñåôéêÝò ãëþóóåò. Ðïõ íá âñåßôå ðåñéóóüôåñåò ðëçñïöïñßåò ãéá ôç óõããñáöÞ åöáñìïãþí óõìâáôþí ìå ôï ðñüôõðï i18n. Ðñéí äéáâÜóåôå áõôü ôï êåöÜëáéï, èá ðñÝðåé: Íá ãíùñßæåôå ðùò íá åãêáôáóôÞóåôå ðñüóèåôï ëïãéóìéêü ôñßôïõ êáôáóêåõáóôÞ (). ÂáóéêÝò Ãíþóåéò Ôé Åßíáé ôï I18N/L10N; internationalization localization localization Ïé ïìÜäåò áíÜðôõîçò ëïãéóìéêïý äçìéïýñãçóáí ôïí üñï I18N, ùò óõíôüìåõóç ôçò ëÝîçò internationalization (äéåèíïðïßçóç), ìåôñþíôáò áðëþò ôá ãñÜììáôá ôçò ëÝîçò áíÜìåóá óôï ðñþôï êáé ôï ôåëåõôáßï. Ï üñïò L10N Ý÷åé ðñïêýøåé ìå ôïí ßäéï ôñüðï, áõôÞ ôç öïñÜ áðü ôç ëÝîç localization (ôïðéêïðïßçóç, Þ áðëþò ôïðéêÝò ñõèìßóåéò). ÓõíäõÜæïíôáò ìåôáîý ôïõò ôéò ìåèüäïõò, ôá ðñùôüêïëëá, êáé ôéò åöáñìïãÝò ðïõ óõìâáäßæïõí ìå ôá I18N/L10N, ïé ÷ñÞóôåò ìðïñïýí íá ÷ñçóéìïðïéÞóïõí ôéò ãëþóóåò ôçò åðéëïãÞò ôïõò. Ïé åöáñìïãÝò I18N ðñïãñáììáôßæïíôáé ìå ôç âïÞèåéá åñãáëåßùí (kits) êáé âéâëéïèçêþí. ÅðéôñÝðåôáé Ýôóé óôïõò ðñïãñáììáôéóôÝò íá ãñÜøïõí Ýíá áðëü áñ÷åßï êáé íá ìåôáöñÜóïõí ôá ìåíïý êáé ôá êåßìåíá ðïõ áðåéêïíßæåé ç åöáñìïãÞ, óå êÜèå ãëþóóá ðïõ áðáéôåßôáé. Óõíéóôïýìå Ýíèåñìá óôïõò ðñïãñáììáôéóôÝò íá áêïëïõèïýí ôçí ðáñáðÜíù óýìâáóç. Ãéáôß ÐñÝðåé íá ×ñçóéìïðïéÞóù ôá I18N/L10N; Ôá I18N/L10N ÷ñçóéìïðïéïýíôáé êÜèå öïñÜ ðïõ åðéèõìåßôå íá äåßôå, íá åéóÜãåôå, Þ íá åðåîåñãáóôåßôå äåäïìÝíá óå ãëþóóåò åêôüò ôçò ÁããëéêÞò. Ðïéåò Ãëþóóåò Õðïóôçñßæïíôáé óôï I18N; Ôï I18N êáé ôï L10N äåí åßíáé åéäéêÜ öôéáãìÝíá ãéá ôï &os;. Ôçí äåäïìÝíç óôéãìÞ, õðïóôçñßæïíôáé ïé ðåñéóóüôåñåò ãíùóôÝò ãëþóóåò, óõìðåñéëáìâáíïìÝíùí ôùí: Êéíåæéêþí, Ãåñìáíéêþí, ÃéáðùíÝæéêùí, Êïñåáôéêþí, Ãáëëéêþí, Ñùóéêþí, ÂéåôíáìÝæéêùí, ê.á. ×ñÞóç ôùí Ôïðéêþí Ñõèìßóåùí Ôï I18N åßíáé óôçí ðñáãìáôéêüôçôá ìéá óýìâáóç, êáé äåí Ý÷åé äçìéïõñãçèåß áðïêëåéóôéêÜ ãéá ôï &os;. Åðéèõìïýìå ôç âïÞèåéá óáò þóôå ôï &os; íá áêïëïõèåß áõôÞ ôç óýìâáóç. locale Ïé ôïðéêÝò ñõèìßóåéò âáóßæïíôáé óå ôñåéò âáóéêïýò üñïõò: Êùäéêü Ãëþóóáò, Êùäéêü ×þñáò êáé Êùäéêïðïßçóç. Ôá ïíüìáôá ôùí ôïðéêþí ñõèìßóåùí ðñïêýðôïõí áðü ôïõò ðáñáðÜíù üñïõò, ìå ôïí ôñüðï ðïõ ðåñéãñÜöåôáé ðáñáêÜôù: ÊùäéêüòÃëþóóáò_Êùäéêüò×þñáò.Êùäéêïðïßçóç Êùäéêïß Ãëùóóþí êáé ×ùñþí language codes country codes Ãéá íá ÷ñçóéìïðïéçèïýí ïé ôïðéêÝò ñõèìßóåéò ãéá ìéá óõãêåêñéìÝíç ãëþóóá óå Ýíá óýóôçìá &os; (Þ óå Üëëï óýóôçìá ôýðïõ &unix; ðïõ õðïóôçñßæåé ôï ðñüôõðï I18N), ï ÷ñÞóôçò èá ðñÝðåé íá âñåé ôïõò êùäéêïýò ôçò óõãêåêñéìÝíçò ÷þñáò êáé ãëþóóáò (ïé êùäéêïß ÷ùñþí êáèïäçãïýí ôéò åöáñìïãÝò ó÷åôéêÜ ìå ôç äéÜëåêôï ôçò ãëþóóáò ðïõ ðñÝðåé íá ÷ñçóéìïðïéçèåß). ÐñïãñÜììáôá üðùò öõëëïìåôñçôÝò, åîõðçñåôçôÝò éóôïóåëßäùí, åîõðçñåôçôÝò SMTP/POP êëð. ðáßñíïõí åðßóçò êÜðïéåò áðïöÜóåéò ðïõ åîáñôþíôáé áðü ôïõò êùäéêïýò áõôïýò. ÐáñáêÜôù öáßíïíôáé ìåñéêÜ ðáñáäåßãìáôá ãëùóóþí/÷ùñþí: Êùäéêüò Ãëþóóáò/×þñáò ÐåñéãñáöÞ en_US ÁããëéêÜ - ÇíùìÝíåò Ðïëéôåßåò ru_RU Ñþóéêá - Ñùóßá zh_TW ÐáñáäïóéáêÜ ÊéíÝæéêá - ÔáúâÜí ÊùäéêïðïéÞóåéò encodings ASCII ÊÜðïéåò ãëþóóåò ÷ñçóéìïðïéïýí êùäéêïðïéÞóåéò ðïõ äåí åßíáé ASCII, áëëÜ ðåñéÝ÷ïõí ÷áñáêôÞñåò 8-bit, wide, Þ multibyte (äåßôå ôç óåëßäá manual &man.multibyte.3; ãéá ðåñéóóüôåñåò ðëçñïöïñßåò). Ïé ðéï êáéíïýñéåò åöáñìïãÝò óõíÞèùò áíáãíùñßæïõí ôïõò ÷áñáêôÞñåò 8-bit. ÁíÜëïãá ìå ôçí õëïðïßçóç, ïé ÷ñÞóôåò ìðïñåß íá ÷ñåéÜæåôáé íá ìåôáãëùôôßóïõí ìéá åöáñìïãÞ ìå õðïóôÞñéîç ÷áñáêôÞñùí wide Þ multibyte, Þ íá ðñïóáñìüóïõí ôéò ñõèìßóåéò ôïõ ðñïãñÜììáôïò. Ãéá íá Ý÷åôå ôçí éêáíüôçôá íá åéóÜãåôå êáé íá åðåîåñãÜæåóôå ÷áñáêôÞñåò multibyte, ç ÓõëëïãÞ ôùí Ports ôïõ &os; äéáèÝôåé ðñïãñÜììáôá ãéá êÜèå ãëþóóá. Äåßôå ôçí ôåêìçñßùóç ãéá ôï I18N óôï áíôßóôïé÷ï Port ôïõ &os;. Åéäéêüôåñá, ï ÷ñÞóôçò ÷ñåéÜæåôáé íá äéáâÜóåé ôçí ôåêìçñßùóç ôçò åöáñìïãÞò, ãéá íá áðïöáóßóåé ðùò ðñÝðåé íá ôç ñõèìßóåé óùóôÜ Þ ðùò íá ðåñÜóåé ôéò óùóôÝò ôéìÝò óôï configure, ôï Makefile Þ ôïí ìåôáãëùôôéóôÞ. Èá ðñÝðåé íá Ý÷åôå êáôÜ íïõ êÜðïéá ðñÜãìáôá: Óåô ÷áñáêôÞñùí ðïõ åîáñôþíôáé áðü ôç ãëþóóá (single C chars character set, äåßôå ôçí &man.multibyte.3;), ð.÷. ISO8859-1, ISO8859-15, KOI8-R, CP437. ÊùäéêïðïéÞóåéò Wide Þ multibyte, ð.÷. EUC, Big5. Ìðïñåßôå íá äåßôå ôçí åíåñãÞ ëßóôá ôùí óåô ÷áñáêôÞñùí óôï Ìçôñþï IANA. Ôï &os; ÷ñçóéìïðïéåß ãéá ôéò ôïðéêÝò ñõèìßóåéò êùäéêïðïéÞóåéò óõìâáôÝò ìå ôï X11. ÅöáñìïãÝò I18N Óôï óýóôçìá ðáêÝôùí êáé ports ôïõ &os;, ïé åöáñìïãÝò ðïõ ó÷åôßæïíôáé ìå ôï I18N Ý÷ïõí óôï üíïìá ôïõò ôç ëÝîç I18N þóôå íá áíáãíùñßæïíôáé åýêïëá. Ùóôüóï, ìðïñåß íá ìçí õðïóôçñßæïõí ðÜíôïôå ôç ãëþóóá ðïõ ÷ñåéÜæåóôå. ÔïðéêÝò Ñõèìßóåéò Åßíáé óõíÞèùò áñêåôü íá ãßíåé export ç ôéìÞ ìå ôçí ïíïìáóßá ôçò åðéèõìçôÞò ôïðéêÞò ñýèìéóçò, ìÝóù ôçò ìåôáâëçôÞò ðåñéâÜëëïíôïò LANG óôï êÝëõöïò åéóüäïõ. Áõôü ìðïñåß íá ãßíåé óôï áñ÷åßï ~/.login_conf ôïõ ÷ñÞóôç, Þ óôï áñ÷åßï åêêßíçóçò ôïõ êåëýöïõò ôïõ ÷ñÞóôç (~/.profile, ~/.bashrc, ~/.cshrc). Äåí åßíáé áíÜãêç íá èÝóåôå êáé ôéò õðüëïéðåò ìåôáâëçôÝò ôùí ôïðéêþí ñõèìßóåùí, üðùò ïé LC_CTYPE, LC_CTIME. Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò, äéáâÜóôå ôçí ôåêìçñßùóç ôïõ &os; ðïõ ó÷åôßæåôáé ìå ôçí õðïóôÞñéîç ôçò åðéèõìçôÞò ãëþóóáò. Èá ðñÝðåé íá èÝóåôå ôéò äýï ðáñáêÜôù ìåôáâëçôÝò ðåñéâÜëëïíôïò, óôá áñ÷åßá ñõèìßóåùí: - POSIX Ôçí LANG ãéá ëåéôïõñãßåò ðïõ áíÞêïõí óôçí - ïéêïãÝíåéá &posix; &man.setlocale.3; + ïéêïãÝíåéá &posix;POSIX &man.setlocale.3; - MIME - - Ôçí MM_CHARSET ãéá ôï óýíïëï ÷áñáêôÞñùí MIME + Ôçí MM_CHARSET ãéá ôï óýíïëï ÷áñáêôÞñùí MIMEMIME ôùí åöáñìïãþí. Ôï ðáñáðÜíù ðåñéëáìâÜíåé ôçí ñýèìéóç ôïõ êåëýöïõò ÷ñÞóôç, ôçí ñýèìéóç ãéá ìéá óõãêåêñéìÝíç åöáñìïãÞ, êáé ôç ñýèìéóç ãéá ôá X11. ÌÝèïäïé ÁëëáãÞò Ôïðéêþí Ñõèìßóåùí locale login class ÕðÜñ÷ïõí äýï ìÝèïäïé ãéá ôçí áëëáãÞ ôùí ôïðéêþí ñõèìßóåùí, ôéò ïðïßåò êáé ðåñéãñÜöïõìå ðáñáêÜôù. Ç ðñþôç (ôçí ïðïßá êáé óõíéóôïýìå) õëïðïéåßôáé èÝôïíôáò ôéìÝò óôéò ìåôáâëçôÝò ðåñéâÜëëïíôïò óôï login class, êáé ç äåýôåñç áëëÜæïíôáò ôéò ôéìÝò ôùí ìåôáâëçôþí ðåñéâÜëëïíôïò óôï áñ÷åßï åêêßíçóçò ôïõ êåëýöïõò ôïõ ÷ñÞóôç. ÌÝèïäïò ÊëÜóåùí Åéóüäïõ (Login Class) Ç ìÝèïäïò áõôÞ åðéôñÝðåé íá ãßíåé ç ñýèìéóç ôùí ìåôáâëçôþí ðåñéâÜëëïíôïò ìéá öïñÜ ãéá êÜèå êÝëõöïò, áíôß íá ÷ñåéÜæåôáé íá ôåèïýí óõãêåêñéìÝíåò ôéìÝò óôï áñ÷åßï åêêßíçóçò ôïõ êáèåíüò ÷ùñéóôÜ. Ïé Ñõèìßóåéò óå Åðßðåäï ×ñÞóôç ìðïñïýí íá ãßíïõí áðü ôïí ßäéï ôï ÷ñÞóôç, åíþ ïé Ñõèìßóåéò óå Åðßðåäï Äéá÷åéñéóôÞ áðáéôïýí ðñïíüìéá õðåñ÷ñÞóôç. Ñõèìßóåéò óå Åðßðåäï ×ñÞóôç Ôï ðáñáêÜôù áðëü ðáñÜäåéãìá, äåß÷íåé Ýíá áñ÷åßï .login_conf óôïí êáôÜëïãï êÜðïéïõ ÷ñÞóôç óôï ïðïßï êáé ïé äýï ìåôáâëçôÝò Ý÷ïõí ôåèåß ãéá êùäéêïðïßçóç Latin-1: me:\ :charset=ISO-8859-1:\ :lang=de_DE.ISO8859-1: Traditional ChineseBIG-5 encoding ÐáñáêÜôù âëÝðåôå Ýíá .login_conf óôï ïðïßï ïé ìåôáâëçôÝò Ý÷ïõí ôåèåß ãéá ÐáñáäïóéáêÜ ÊéíÝæéêá óå êùäéêïðïßçóç BIG-5. ÐáñáôçñÞóôå üôé Ý÷ïõìå èÝóåé ðïëý ðåñéóóüôåñåò ìåôáâëçôÝò, êáèþò êÜðïéåò åöáñìïãÝò äåí óÝâïíôáé óùóôÜ ôéò ìåôáâëçôÝò ãéá ÊéíÝæéêá, ÃéáðùíÝæéêá êáé ÊïñåÜôéêá. #Users who do not wish to use monetary units or time formats #of Taiwan can manually change each variable me:\ :lang=zh_TW.Big5:\ :setenv=LC_ALL=zh_TW.Big5:\ :setenv=LC_COLLATE=zh_TW.Big5:\ :setenv=LC_CTYPE=zh_TW.Big5:\ :setenv=LC_MESSAGES=zh_TW.Big5:\ :setenv=LC_MONETARY=zh_TW.Big5:\ :setenv=LC_NUMERIC=zh_TW.Big5:\ :setenv=LC_TIME=zh_TW.Big5:\ :charset=big5:\ :xmodifiers="@im=gcin": #Set gcin as the XIM Input Server Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò, äåßôå ôéò Ñõèìßóåéò óå Åðßðåäï Äéá÷åéñéóôÞ êáé ôçí &man.login.conf.5;. Ñõèìßóåéò óå Åðßðåäï Äéá÷åéñéóôÞ Âåâáéùèåßôå üôé Ý÷åé ïñéóôåß ç óùóôÞ ãëþóóá óôçí êëÜóç ôïõ ÷ñÞóôç, óôï áñ÷åßï /etc/login.conf. Óôï áñ÷åßï áõôü èá ðñÝðåé íá õðÜñ÷ïõí ïé ðáñáêÜôù ñõèìßóåéò: language_name|Account Type Description:\ :charset=MIME_charset:\ :lang=locale_name:\ :tc=default: Ìå âÜóç ôï ðñïçãïýìåíï ðáñÜäåéãìá ìáò ðïõ ÷ñçóéìïðïéÞóáìå Latin-1, ôï áñ÷åßï èá ìïéÜæåé ìå ôï ðáñáêÜôù: german|German Users Accounts:\ :charset=ISO-8859-1:\ :lang=de_DE.ISO8859-1:\ :tc=default: Ðñéí êÜíåôå áëëáãÝò óôéò ÊëÜóåéò Åéóüäïõ (Login Classes) ôùí ÷ñçóôþí, åêôåëÝóôå ôçí ðáñáêÜôù åíôïëÞ: &prompt.root; cap_mkdb /etc/login.conf þóôå íá åíåñãïðïéçèïýí óôï óýóôçìá ïé áëëáãÝò ðïõ êÜíáôå óôï /etc/login.conf. ÁëëáãÞ ÊëÜóåùí Åéóüäïõ ìÝóù ôçò &man.vipw.8; vipw ×ñçóéìïðïéÞóôå ôçí vipw ãéá íá ðñïóèÝóåôå íÝïõò ÷ñÞóôåò, êáé êÜíôå ôçí êáôá÷þñéóç íá ìïéÜæåé ìå ôçí ðáñáêÜôù: user:password:1111:11:language:0:0:User Name:/home/user:/bin/sh ÁëëáãÞ ÊëÜóåùí Åéóüäïõ ìÝóù ôçò &man.adduser.8; adduser login class ×ñçóéìïðïéÞóôå ôçí adduser ãéá íá ðñïóèÝóåôå íÝïõò ÷ñÞóôåò, êáé Ýðåéôá áêïëïõèÞóôå ôéò ðáñáêÜôù ïäçãßåò: ÈÝóôå ôï defaultclass = language óôï /etc/adduser.conf. Íá Ý÷åôå õðüøç óáò üôé óå áõôÞ ôçí ðåñßðôùóç, èá ðñÝðåé íá ïñßóåôå ìéá êëÜóç default ãéá üëïõò ôïõò ÷ñÞóôåò Üëëùí ãëùóóþí. Ìéá åíáëëáêôéêÞ ëýóç, åßíáé íá áðáíôÜôå êÜèå öïñÜ óôçí åñþôçóç Enter login class: default []: ðïõ åìöáíßæåôáé áðü ôçí &man.adduser.8;. Áêüìá ìéá åíáëëáêôéêÞ ëýóç, åßíáé íá ÷ñçóéìïðïéÞóåôå ôï ðáñáêÜôù óå êÜèå ÷ñÞóôç ðïõ èÝëåôå íá ðñïóèÝóåôå êáé ï ïðïßïò ÷ñçóéìïðïéåß äéáöïñåôéêÞ ãëþóóá: &prompt.root; adduser -class language ÁëëáãÞ ÊëÜóåùí Åéóüäïõ ìÝóù ôçò &man.pw.8; pw Áí ÷ñçóéìïðïéåßôå ôçí &man.pw.8; ãéá íá ðñïóèÝóåôå íÝïõò ÷ñÞóôåò, êáëÝóôå ôçí ìå ôïí ðáñáêÜôù ôñüðï: &prompt.root; pw useradd user_name -L language ÌÝèïäïò Áñ÷åßùí Åêêßíçóçò Êåëýöïõò Ç ìÝèïäïò áõôÞ äåí óõíßóôáôáé, êáèþò áðáéôåß äéáöïñåôéêÝò ñõèìßóåéò ãéá êÜèå äéáöïñåôéêü ðñüãñáììá êåëýöïõò ðïõ ÷ñçóéìïðïéåßôáé. ÐñïôéìÞóôå êáëýôåñá ôçí ìÝèïäï ôùí ÊëÜóåùí Åéóüäïõ. MIME locale Ãéá íá ðñïóèÝóåôå ôéò ôïðéêÝò ñõèìßóåéò êáé ôï óåô ÷áñáêôÞñùí MIME, ñõèìßóôå áðëþò ôéò äýï ìåôáâëçôÝò ðåñéâÜëëïíôïò ðïõ öáßíïíôáé ðáñáêÜôù óôï áñ÷åßï /etc/profile Þ/êáé óôï /etc/csh.login. Èá ÷ñçóéìïðïéÞóïõìå ôá ÃåñìáíéêÜ ùò ãëþóóá ãéá ôï ðáñáêÜôù ðáñÜäåéãìá: Óôï /etc/profile: LANG=de_DE.ISO8859-1; export LANG MM_CHARSET=ISO-8859-1; export MM_CHARSET ¹ óôï /etc/csh.login: setenv LANG de_DE.ISO8859-1 setenv MM_CHARSET ISO-8859-1 ÅíáëëáêôéêÜ, ìðïñåßôå íá ðñïóèÝóåôå ôéò ðáñáðÜíù ïäçãßåò óôï /usr/share/skel/dot.profile (áíôßóôïé÷á ìå ôéò ïäçãßåò ãéá ôï /etc/profile ðïõ åßäáìå ðáñáðÜíù), Þ óôï /usr/share/skel/dot.login (áíôßóôïé÷á ìå ôéò ïäçãßåò ãéá ôï /etc/csh.login ðïõ åßäáìå åðßóçò ðáñáðÜíù). Ãéá ôï X11: Óôï $HOME/.xinitrc: LANG=de_DE.ISO8859-1; export LANG ¹: setenv LANG de_DE.ISO8859-1 ÁíÜëïãá ìå ôï êÝëõöïò ðïõ ÷ñçóéìïðïéåßôå (äåßôå ðáñáðÜíù). Ñõèìßóåéò ãéá ôçí Êïíóüëá Ãéá üëá ôá single C óåô ÷áñáêôÞñùí, ìðïñåßôå íá èÝóåôå ôéò ãñáììáôïóåéñÝò ôçò êïíóüëáò óôï /etc/rc.conf ãéá ôçí åðéèõìçôÞ ãëþóóá, ãñÜöïíôáò: font8x16=font_name font8x14=font_name font8x8=font_name Ôï font_name åäþ ðñïêýðôåé áðü ôï áíôßóôïé÷ï áñ÷åßï ôïõ êáôáëüãïõ /usr/share/syscons/fonts, áöáéñþíôáò ôçí êáôÜëçîç .fnt. sysinstall keymap screenmap Áí ÷ñåéÜæåôáé, ÷ñçóéìïðïéÞóôå ôçí êáôÜëëçëç áíôéóôïß÷çóç ðëçêôñïëïãßïõ (keymap) êáé ïèüíçò ãéá ôï óåô ÷áñáêôÞñùí single C ðïõ ÷ñçóéìïðïéåßôå, ìÝóù ôïõ sysinstall. Ìüëéò åêôåëÝóåôå ôï sysinstall, åðéëÝîôå ôï Configure, êáé Ýðåéôá ôï Console. ÅíáëëáêôéêÜ, ìðïñåßôå íá ðñïóèÝóåôå ôï ðáñáêÜôù óôï /etc/rc.conf: scrnmap=screenmap_name keymap=keymap_name keychange="fkey_number sequence" Óôçí ðåñßðôùóç áõôÞ, ôï screenmap_name ðñïÝñ÷åôáé áðü Ýíá áñ÷åßï ôïõ êáôáëüãïõ /usr/share/syscons/scrnmaps, ÷ùñßò ôçí êáôÜëçîç .scm. Ç áíôéóôïß÷çóç ïèüíçò ìáæß ìå ôçí áíôßóôïé÷ç ãñáììáôïóåéñÜ, ÷ñçóéìïðïéåßôáé óõíÞèùò ãéá ôçí åðÝêôáóç ôïõ 8ïõ bit óôï 9o, ãéá êÜñôåò VGA ðïõ ÷ñçóéìïðïéïýí ìÞôñá ÷áñáêôÞñùí ìå 8 óôÞëåò. Áí Ý÷åôå åíåñãïðïéçìÝíï ôïí äáßìïíá moused óôï áñ÷åßï /etc/rc.conf: moused_enable="YES" êáëü èá åßíáé íá åîåôÜóåôå ôéò ðëçñïöïñßåò ó÷åôéêÜ ìå ôïí äñïìÝá ôïõ ðïíôéêéïý ðïõ åìöáíßæïíôáé óôçí ðáñáêÜôù ðáñÜãñáöï. moused Ï ðñïåðéëåãìÝíïò äñïìÝáò ôïõ ðïíôéêéïý ðïõ ÷ñçóéìïðïéåßôáé áðü ôï ðñüãñáììá ïäÞãçóçò &man.syscons.4;, êáôáëáìâÜíåé ôéò èÝóåéò 0xd0-0xd3 ôïõ óõíüëïõ ÷áñáêôÞñùí. Áí áõôÞ ç ðåñéï÷Þ ÷áñáêôÞñùí äåí åßíáé äéáèÝóéìç óôç ãëþóóá ðïõ ÷ñçóéìïðïéåßôå, èá ðñÝðåé íá ìåôáêéíÞóåôå ôçí ðåñéï÷Þ ôïõ äñïìÝá Ýîù áðü áõôÞí. Ãéá íá ãßíåé áõôü óôï &os;, ðñïóèÝóôå ôçí áêüëïõèç ãñáììÞ óôï /etc/rc.conf: mousechar_start=3 Ôï keymap_name ðñïÝñ÷åôáé áðü Ýíá áñ÷åßï ôïõ êáôáëüãïõ /usr/share/syscons/keymaps, ÷ùñßò ôçí êáôÜëçîç .kbd. Áí äåí åßóôå óßãïõñïò ãéá ôçí áíôéóôïß÷çóç ðëçêôñïëïãßïõ ðïõ ÷ñåéÜæåôáé íá ÷ñçóéìïðïéÞóåôå, ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôï &man.kbdmap.1; ãéá íá êÜíåôå äïêéìÝò óå äéÜöïñåò áíôéóôïé÷ßóåéò, ÷ùñßò íá ÷ñåéÜæåôáé íá êÜíåôå åðáíåêêßíçóç. Ç ëåéôïõñãßá keychange ÷ñçóéìïðïéåßôáé óõíÞèùò ãéá ôïí ðñïãñáììáôéóìü ôùí ðëÞêôñùí ëåéôïõñãéþí (function keys), þóôå íá ôáéñéÜæïõí ìå ôïí åðéëåãìÝíï ôýðï ôåñìáôéêïý, êáèþò ïé áêïëïõèßåò ôùí ðëÞêôñùí ëåéôïõñãéþí äåí ìðïñïýí íá êáèïñéóôïýí óôéò áíôéóôïé÷ßóåéò ðëçêôñïëïãßïõ. Âåâáéùèåßôå åðßóçò üôé Ý÷åôå ñõèìßóåé ôï óùóôü ôýðïõ ôåñìáôéêïý óôï /etc/ttys ãéá üëåò ôéò êáôá÷ùñßóåéò ttyv*. Ôç äåäïìÝíç óôéãìÞ, ïé ðñïêáèïñéóìÝíåò áíôéóôïé÷ßåò åßíáé: Óåô ×áñáêôÞñùí Ôýðïò Ôåñìáôéêïý ISO8859-1 Þ ISO8859-15 cons25l1 ISO8859-2 cons25l2 ISO8859-7 cons25l7 KOI8-R cons25r KOI8-U cons25u CP437 (ðñïåðéëåãìÝíï VGA) cons25 US-ASCII cons25w Ãéá ãëþóóåò ìå ÷áñáêôÞñåò wide Þ multibyte, ÷ñçóéìïðïéÞóôå ôï óùóôü &os; port óôïí êáôÜëïãï /usr/ports/language. ÌåñéêÝò èýñåò åìöáíßæïíôáé ùò êïíóüëá, åíþ ôï óýóôçìá ôéò âëÝðåé ùò óåéñéáêÜ vtty, êáé Ýôóé ðñÝðåé íá ðáñáêñáôÞóåôå áñêåôÜ vtty, ôüóï ãéá ôï X11 üóï êáé ãéá ôçí øåõôü-óåéñéáêÞ êïíóüëá. ÐáñáêÜôù èá âñåßôå ìéá ìåñéêþò åíçìåñùìÝíç ëßóôá ãéá ÷ñÞóç Üëëùí ãëùóóþí óôçí êïíóüëá: Ãëþóóá Ôïðïèåóßá ÐáñáäïóéáêÜ ÊéíÝæéêá (BIG-5) chinese/big5con ÃéáðùíÝæéêá japanese/kon2-16dot Þ japanese/mule-freewnn ÊïñåÜôéêá korean/han Ñýèìéóç ôïõ X11 Áí êáé ôï X11 äåí åßíáé ìÝñïò ôïõ &os; Project, èá äþóïõìå åäþ êÜðïéåò ÷ñÞóéìåò ðëçñïöïñßåò ãéá üóïõò ôï ÷ñçóéìïðïéïýí óôï &os;. Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò, äåßôå ôçí äéêôõáêÞ ôïðïèåóßá ôïõ &xorg;, Þ ôïõ åîõðçñåôçôÞ X11 ðïõ ðñüêåéôáé íá ÷ñçóéìïðïéÞóåôå. Óôï áñ÷åßï ~/.Xresources, ìðïñåßôå åðéðñüóèåôá íá áëëÜîåôå êáé Üëëåò ñõèìßóåéò ðïõ ó÷åôßæïíôáé ìå ôï I18N (ð.÷. ãñáììáôïóåéñÝò, ìåíïý, ê.ë.ð.). Áðåéêüíéóç Ãñáììáôïóåéñþí X11 True Type font server ÅãêáôáóôÞóôå ôïí åîõðçñåôçôÞ &xorg; (x11-servers/xorg-server) êáé Ýðåéôá åãêáôáóôÞóôå ôéò ãñáììáôïóåéñÝò &truetype; ãéá ôçí åðéèõìçôÞ ãëþóóá. Ìå ôéò óùóôÝò ôïðéêÝò ñõèìßóåéò, èá ìðïñåßôå íá äåßôå ôçí åðéëåãìÝíç ãëþóóá óôá ìåíïý êáé ôá ìçíýìáôá ôïõ ãñáöéêïý ðåñéâÜëëïíôïò. ÅéóáãùãÞ ìç-Áããëéêþí ×áñáêôÞñùí X11 Input Method (XIM) Ç ìÝèïäïò åéóüäïõ X11 (XIM, X11 Input Method), åßíáé Ýíá íÝï ðñüôõðï ãéá üëïõò ôïõò ðåëÜôåò X11. ¼ëåò ïé åöáñìïãÝò ôïõ X11 èá ðñÝðåé íá ãñÜöïíôáé ùò ðåëÜôåò ôïõ XIM, êáé íá ëáìâÜíïõí åßóïäï áðü åîõðçñåôçôÝò åéóüäïõ XIM. ÕðÜñ÷ïõí äéáèÝóéìïé äéÜöïñïé åîõðçñåôçôÝò XIM, ãéá äéáöïñåôéêÝò ãëþóóåò. Ñýèìéóç ÅêôõðùôÞ ÊÜðïéá óåô ÷áñáêôÞñùí single C åßíáé óõíÞèùò åíóùìáôùìÝíá óôï ßäéï ôï õëéêü ôùí åêôõðùôþí. Ôá óåô ÷áñáêôÞñùí ôýðïõ wide Þ multibyte áðáéôïýí åéäéêÝò ñõèìßóåéò, êáé óõíéóôïýìå íá ÷ñçóéìïðïéÞóåôå ôï apsfilter. Ìðïñåßôå åðßóçò íá ìåôáôñÝøåôå ôï Ýããñáöï óáò óå &postscript; Þ PDF, ÷ñçóéìïðïéþíôáò åñãáëåßá åéäéêÜ öôéáãìÝíá ãéá ôç óõãêåêñéìÝíç ãëþóóá. ÐõñÞíáò êáé ÓõóôÞìáôá Áñ÷åßùí Ôï óýóôçìá áñ÷åßùí FFS (fast filesystem) ôïõ &os; ìðïñåß íá äéá÷åéñéóôåß ïíüìáôá áñ÷åßùí ðïõ áíÞêïõí óå óåô single C (åßíáé 8-bit clean, äåßôå êáé ôï &man.multibyte.3;), áëëÜ äåí áðïèçêåýåé ôï óåô ÷áñáêôÞñùí ðïõ ÷ñçóéìïðïéåßôáé. Ìå Üëëá ëüãéá, åßíáé 8-bit áëëÜ äåí ãíùñßæåé ôßðïôá ãéá ôçí êùäéêïðïßçóç ôùí ÷áñáêôÞñùí. Åðßóçìá, ôï FFS äåí õðïóôçñßæåé áêüìá óåô ÷áñáêôÞñùí wide Þ multibyte. ÕðÜñ÷ïõí ùóôüóï êÜðïéá áíåîÜñôçôá patches ãéá ôï FFS ðïõ õðïóôçñßæïõí áõôÝò ôéò äõíáôüôçôåò. Ðñüêåéôáé ìüíï ãéá ðñïóùñéíÝò êáé ìç ìåôáöÝñóéìåò ëýóåéò Þ hacks, êáé Ý÷ïõìå áðïöáóßóåé íá ìçí ôá ðåñéëÜâïõìå óôï êåíôñéêü äÝíôñï ðçãáßïõ êþäéêá. Äåßôå ôéò éóôïóåëßäåò ôùí áíôßóôïé÷ùí ãëùóóþí ãéá ðåñéóóüôåñåò ðëçñïöïñßåò êáé ãéá íá áíáêôÞóåôå ôá áðáñáßôçôá áñ÷åßá. DOS Unicode Ôï óýóôçìá áñ÷åßùí &ms-dos; óôï &os; Ý÷åé ôçí äõíáôüôçôá íá ñõèìéóôåß þóôå íá ìåôáôñÝðåé ìåôáîý ôùí óåô ÷áñáêôÞñùí Unicode, ôïõ &ms-dos;, êáé ôïõ óåô ÷áñáêôÞñùí ðïõ Ý÷åé åðéëåãåß ãéá ôï óýóôçìá áñ÷åßùí ôïõ &os;. Ãéá ðåñéóóüôåñåò ëåðôïìÝñåéåò, äåßôå ôç óåëßäá manual &man.mount.msdosfs.8;. Ìåôáãëþôôéóç ÐñïãñáììÜôùí I18N ÐïëëÜ ports ôïõ &os; äéáèÝôïõí õðïóôÞñéîç I18N. Óå ìåñéêÜ áðü áõôÜ, ôï -I18N åßíáé ìÝñïò ôïõ ïíüìáôïò ôïõò. Ôá ðñïãñÜììáôá áõôÜ, êáé ðïëëÜ ðåñéóóüôåñá, Ý÷ïõí åíóùìáôùìÝíç õðïóôÞñéîç ãéá I18N êáé äåí ÷ñåéÜæïíôáé Üëëåò åéäéêÝò ñõèìßóåéò. MySQL Ùóôüóï, óå êÜðïéåò åöáñìïãÝò üðùò ç MySQL, èá ðñÝðåé íá ñõèìéóôåß ôï Makefile ìå ôï åðéèõìçôü óåô ÷áñáêôÞñùí. Áõôü óõíÞèùò ãßíåôáé ðåñíþíôáò ìéá ôéìÞ óôï configure óôïí ðçãáßï êþäéêá, Þ áëëÜæïíôáò ôï ßäéï ôï Makefile. ÔïðéêÝò Ñõèìßóåéò ãéá ÓõãêåêñéìÝíåò Ãëþóóåò Andrey Chernov Áñ÷éêÞ óõíåéóöïñÜ ôïõ Ñþóéêç Ãëþóóá (Êùäéêïðïßçóç KOI8-R) localization Russian Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôçí êùäéêïðïßçóç KOI8-R, äåßôå ôéò ÁíáöïñÝò Ó÷åôéêÜ ìå ôï Óåô ×áñáêôÞñùí KOIR-8 (Ñùóéêü Óýíïëï ×áñáêôÞñùí). ÔïðéêÝò Ñõèìßóåéò ÔïðïèåôÞóôå ôéò áêüëïõèåò ãñáììÝò óôï áñ÷åßï óáò ~/.login_conf: me:My Account:\ :charset=KOI8-R:\ :lang=ru_RU.KOI8-R: Ãéá ðáñáäåßãìáôá ðïõ ó÷åôßæïíôáé ìå ôéò ÔïðéêÝò Ñõèìßóåéò, äåßôå ðñïçãïýìåíåò åíüôçôåò óå áõôü ôï êåöÜëáéï. Ñýèìéóç Êïíóüëáò ÐñïóèÝóôå ôçí áêüëïõèç ãñáììÞ óôï áñ÷åßï /etc/rc.conf: mousechar_start=3 ×ñçóéìïðïéÞóôå åðßóçò ôéò ðáñáêÜôù ñõèìßóåéò óôï /etc/rc.conf: keymap="ru.koi8-r" scrnmap="koi8-r2cp866" font8x16="cp866b-8x16" font8x14="cp866-8x14" font8x8="cp866-8x8" Ãéá êÜèå êáôá÷þñéóç ttyv* óôï áñ÷åßï /etc/ttys, ÷ñçóéìïðïéÞóôå ôï cons25r ùò ôýðï ôåñìáôéêïý. Ãéá ðáñáäåßãìáôá ðïõ ó÷åôßæïíôáé ìå ôçí ñýèìéóç ôçò êïíóüëáò, äåßôå ðñïçãïýìåíåò åíüôçôåò áõôïý ôïõ êåöáëáßïõ. Ñýèìéóç ÅêôõðùôÞ printers Êáèþò ïé ðåñéóóüôåñïé åêôõðùôÝò ðïõ äéáèÝôïõí Ñùóéêïýò ÷áñáêôÞñåò Ý÷ïõí åíóùìáôùìÝíç ôçí êùäéêïóåëßäá CP866, èá ÷ñåéáóôåßôå åéäéêü ößëôñï åîüäïõ ãéá íá ìåôáôñÝøåôå áðü ôï KOI8-R óôï CP866. Ôï ößëôñï áõôü åãêáèßóôáôáé áðü ðñïåðéëïãÞ óôï /usr/libexec/lpr/ru/koi2alt. Ç êáôá÷þñéóç ãéá Ýíá Ñþóéêï åêôõðùôÞ óôï /etc/printcap èá ìïéÜæåé ìå ôçí ðáñáêÜôù: lp|Russian local line printer:\ :sh:of=/usr/libexec/lpr/ru/koi2alt:\ :lp=/dev/lpt0:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs: Äåßôå ôï &man.printcap.5; ãéá ðéï ëåðôïìåñÞ ðåñéãñáöÞ. Óýóôçìá Áñ÷åßùí &ms-dos; êáé Ñþóéêá Ïíüìáôá Áñ÷åßùí Ôï ðáñáêÜôù õðüäåéãìá êáôá÷þñéóçò óôï &man.fstab.5; åíåñãïðïéåß ôçí õðïóôÞñéîç ãéá Ñþóéêá ïíüìáôá áñ÷åßùí óå ðñïóáñôçìÝíá óõóôÞìáôá áñ÷åßùí ôýðïõ &ms-dos;: /dev/ad0s2 /dos/c msdos rw,-Wkoi2dos,-Lru_RU.KOI8-R 0 0 Ç åðéëïãÞ åðéëÝãåé ôéò ôïðéêÝò ñõèìßóåéò ðïõ èá ÷ñçóéìïðïéçèïýí, êáé ç ïñßæåé ôïí ðßíáêá ìåôáôñïðÞò ÷áñáêôÞñùí. Ãéá íá ÷ñçóéìïðïéÞóåôå ôçí åðéëïãÞ âåâáéùèåßôå üôé Ý÷åôå ðñïóáñôÞóåé ôçí êáôÜôìçóç /usr ðñéí ôçí êáôÜôìçóç &ms-dos;, êáèþò ïé ðßíáêåò ìåôáôñïðÞò âñßóêïíôáé óôï /usr/libdata/msdosfs. Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò, äåßôå ôç óåëßäá manual ôïõ &man.mount.msdosfs.8;. Ñýèìéóç X11 ÅêôåëÝóôå ðñþôá ôéò ãåíéêÝò ôïðéêÝò ñõèìßóåéò ðïõ Ý÷ïõìå Þäç ðåñéãñÜøåé. Áí ÷ñçóéìïðïéåßôå ôïí åîõðçñåôçôÞ &xorg;, åãêáôáóôÞóôå ôï ðáêÝôï x11-fonts/xorg-fonts-cyrillic. ÅëÝãîôå ôçí åíüôçôá "Files" óôï áñ÷åßï /etc/X11/xorg.conf. Èá ðñÝðåé íá ðñïóèÝóåôå ôçí ðáñáêÜôù ãñáììÞ ðñéí áðü ïðïéáäÞðïôå Üëëç êáôá÷þñéóç FontPath: FontPath "/usr/local/lib/X11/fonts/cyrillic" Äåßôå óôçí ÓõëëïãÞ ôùí Ports ãéá ðåñéóóüôåñåò êõñéëëéêÝò ãñáììáôïóåéñÝò. Ãéá ôçí åíåñãïðïßçóç ôïõ Ñùóéêïý ðëçêôñïëïãßïõ, ðñïóèÝóôå ôéò ðáñáêÜôù ãñáììÝò óôçí åíüôçôá "Keyboard" ôïõ áñ÷åßïõ xorg.conf: Option "XkbLayout" "us,ru" Option "XkbOptions" "grp:toggle" Âåâáéùèåßôå åðßóçò üôé ç ãñáììÞ XkbDisable åßíáé áíåíåñãÞ (ìáñêáñéóìÝíç ùò ó÷üëéï). Áí ÷ñçóéìïðïéÞóåôå ôï grp:toggle ç åíáëëáãÞ RUS/LAT èá ãßíåôáé ìå ôï Äåîéü Alt, åíþ áí èÝóåôå grp:ctrl_shift_toggle, ç åíáëëáãÞ èá ãßíåôáé ìå ôï CtrlShift. Ãéá grp:caps_toggle, ç åíáëëáãÞ RUS/LAT èá ãßíåôáé ìå ôï CapsLock. Ç êáíïíéêÞ ëåéôïõñãßá ôïõ CapsLock åîáêïëïõèåß íá åßíáé äéáèÝóéìç ìÝóù ôïõ óõíäõáóìïý ðëÞêôñùí ShiftCapsLock (ìüíï óå êáôÜóôáóç LAT). Ôï grp:caps_toggle ãéá êÜðïéï Üãíùóôï ëüãï, äåí ëåéôïõñãåß óôï &xorg;. Áí ôï ðëçêôñïëüãéï óáò äéáèÝôåé ðëÞêôñá &windows;, êáé Ý÷åôå ðáñáôçñÞóåé üôé êÜðïéá áðü ôá ìç-áëöáñéèìçôéêÜ ðëÞêôñá Ý÷ïõí ëÜèïò áíôéóôïß÷çóç üôáí åßóôå óå êáôÜóôáóç RUS, ðñïóèÝóôå ôçí ðáñáêÜôù ãñáììÞ óôï áñ÷åßï xorg.conf: Option "XkbVariant" ",winkeys" Ôï Ñþóéêï XKB ðëçêôñïëüãéï ßóùò äåí ëåéôïõñãåß ìå åöáñìïãÝò ðïõ äåí Ý÷ïõí öôéá÷ôåß ãéá ôéò áíôßóôïé÷åò ôïðéêÝò ñõèìßóåéò. Ïé åöáñìïãÝò ðïõ ôçñïýí ôéò åëÜ÷éóôåò ðñïäéáãñáöÝò ôïðéêþí ñõèìßóåùí, èá ðñÝðåé íá êáëïýí áðü íùñßò ôç óõíÜñôçóç XtSetLanguageProc (NULL, NULL, NULL); ìÝóá óôïí êþäéêá ôïõò. Äåßôå ôï KOI8-R ãéá ôï óýóôçìá X Window ãéá ðåñéóóüôåñåò ïäçãßåò ó÷åôéêÜ ìå ôçí äçìéïõñãßá åöáñìïãþí X11 ðïõ íá ÷ñçóéìïðïéïýí ôïðéêÝò ñõèìßóåéò. ÔïðéêÝò Ñõèìßóåéò ãéá ÐáñáäïóéáêÜ ÊéíÝæéêá ÔáúâÜí localization Traditional Chinese Ôï &os;-Taiwan Project Ý÷åé äçìéïõñãÞóåé Ýíá HOWTO ãéá ôá ÊéíÝæéêá óôï &os;, ôï ïðïßï ìðïñåßôå íá âñåßôå óôç äéåýèõíóç , ÷ñçóéìïðïéþíôáò ðïëëÜ ÊéíÝæéêá ports. Ï ôñÝ÷ùí óõíôÜêôçò ôïõ ÊéíÝæéêïõ &os; Howto åßíáé ï Shen Chuan-Hsing statue@freebsd.sinica.edu.tw. Ï Chuan-Hsing Shen statue@freebsd.sinica.edu.tw Ý÷åé äçìéïõñãÞóåé ôçí ÊéíÝæéêç ÓõëëïãÞ &os; (CFC) ÷ñçóéìïðïéþíôáò ôçí êùäéêïðïßçóç zh-L10N-tut ôïõ &os;-ÔáÀâÜí. Ôá ðáêÝôá êáé ôá scripts äéáôßèåíôáé óôç äéåýèõíóç . ÔïðéêÝò Ñõèìßóåéò ãéá ôçí ÃåñìáíéêÞ Ãëþóóá (ãéá ¼ëåò ôéò Ãëþóóåò ðïõ Âáóßæïíôáé óôï ISO 8859-1) localization German Ï Slaven Rezic eserte@cs.tu-berlin.de Ý÷åé ãñÜøåé Ýíá ïäçãü ãéá ôçí ÷ñÞóç ôùí umlauts óå Ýíá ìç÷Üíçìá &os;. Ï ïäçãüò åßíáé ãñáììÝíïò óôá ÃåñìáíéêÜ êáé äéáôßèåôáé óôçí ôïðïèåóßá . ÔïðéêÝò Ñõèìßóåéò ãéá ôçí ÅëëçíéêÞ Ãëþóóá localization Greek Ï &a.el.kokkalis; Ý÷åé ãñÜøåé Ýíá ðëÞñåò Üñèñï ãéá ôçí õðïóôÞñéîç ôçò ÅëëçíéêÞò ãëþóóáò óôï &os;. Ôï Üñèñï áõôü äéáôßèåôáé ùò ìÝñïò ôçò åðßóçìçò ÅëëçíéêÞò ôåêìçñßùóçò ôïõ &os;, óôçí ôïðïèåóßá http://www.freebsd.org/doc/el_GR.ISO8859-7/artilces/greek-language-support/index.html. ÔïðéêÝò Ñõèìßóåéò Ãéá ÃéáðùíÝæéêá êáé ÊïñåÜôéêá localization Japanese localization Korean Ãéá ÃéáðùíÝæéêá, äåßôå óôçí ôïðïèåóßá , åíþ ãéá ÊïñåÜôéêá, äåßôå óôçí ôïðïèåóßá . Ôåêìçñßùóç ôïõ &os; óå Ãëþóóåò Åêôüò ôçò ÁããëéêÞò ÊÜðïéïé åèåëïíôÝò ôïõ &os; Ý÷ïõí ìåôáöñÜóåé ôìÞìáôá ôçò ôåêìçñßùóçò ôïõ óå Üëëåò ãëþóóåò. Ïé ìåôáöñÜóåéò áõôÝò äéáôßèåíôáé ìÝóù óõíäÝóìùí óôçí êýñéá äéêôõáêÞ ôïðïèåóßá ôïõ &os; Þ óôïí êáôÜëïãï /usr/share/doc. diff --git a/el_GR.ISO8859-7/books/handbook/mail/chapter.xml b/el_GR.ISO8859-7/books/handbook/mail/chapter.xml index a453561fa8..ee9f55c4b5 100644 --- a/el_GR.ISO8859-7/books/handbook/mail/chapter.xml +++ b/el_GR.ISO8859-7/books/handbook/mail/chapter.xml @@ -1,2394 +1,2393 @@ Bill Lloyd Áñ÷éêÞ óõíåéóöïñÜ áðü ôïí Jim Mock ÃñÜöôçêå îáíÜ áðü ôïí Çëåêôñïíéêü Ôá÷õäñïìåßï Óýíïøç email Ôï çëåêôñïíéêü ôá÷õäñïìåßï, åõñýôåñá ãíùóôü ùò email, åßíáé óôéò ìÝñåò ìáò ìéá áðü ôéò ðëÝïí äéáäåäïìÝíåò ìïñöÝò åðéêïéíùíßáò. Ôï êåöÜëáéï áõôü ðáñÝ÷åé ìéá âáóéêÞ åéóáãùãÞ óôç ëåéôïõñãßá åíüò äéáêïìéóôÞ email óôï &os;, êáèþò êáé ìéá åéóáãùãÞ óôç äéáäéêáóßá áðïóôïëÞò êáé ëÞøçò email óôï &os;. Ùóôüóï ç áíáöïñÜ áõôÞ äåí ðñÝðåé íá èåùñçèåß ðëÞñçò, êáèþò õðÜñ÷ïõí áêüìá áñêåôïß ðáñÜãïíôåò ðïõ ðñÝðåé íá ëçöèïýí õðüøéí êáé Ý÷ïõí åäþ ðáñáëåéöèåß. Ãéá ðéï ðëÞñç áíÜëõóç ôïõ èÝìáôïò, ï áíáãíþóôçò ðáñáðÝìðåôáé óôá ðïëëÜ åîáéñåôéêÜ âéâëßá ðïõ áíáöÝñïíôáé óôï . Áöïý äéáâÜóåôå áõôü ôï êåöÜëáéï, èá îÝñåôå: Ôï ëïãéóìéêü ðïõ ÷ñçóéìïðïéåßôáé óôçí áðïóôïëÞ êáé ëÞøç çëåêôñïíéêïý ôá÷õäñïìåßïõ. Ðïõ âñßóêïíôáé ôá âáóéêÜ áñ÷åßá ñõèìßóåùí ôïõ sendmail óôï &os;. Ôç äéáöïñÜ ìåôáîý áðïìáêñõóìÝíùí êáé ôïðéêþí èõñßäùí ôá÷õäñïìåßïõ (mailboxes). Ðùò íá åìðïäßóåôå áíåðéèýìçôïõò spammers áðü ôï íá ÷ñçóéìïðïéÞóïõí ôïí äéêü óáò åîõðçñåôçôÞ email ùò áíáìåôáäüôç. Ðùò íá åãêáôáóôÞóåôå êáé íá ñõèìßóåôå Ýíá åíáëëáêôéêü Áíôéðñüóùðï ÌåôáöïñÜò Ôá÷õäñïìåßïõ (Mail Transfer Agent) óôï óýóôçìá óáò, áíôéêáèéóôþíôáò Ýôóé ôï sendmail. Ðùò íá áíôéìåôùðßóåôå óõíçèéóìÝíá ðñïâëÞìáôá óôïí äéáêïìéóôÞ ôá÷õäñïìåßïõ. Ðùò íá ÷ñçóéìïðïéÞóåôå ôï SMTP ìå ôï UUCP. Ðùò íá ñõèìßóåôå ôï óýóôçìá óáò ìüíï ãéá áðïóôïëÞ email. Ðùò íá ÷ñçóéìïðïéÞóåôå ôï email ìÝóù åðéëïãéêÞò (dialup) óýíäåóçò. Ðùò íá ñõèìßóåôå ðéóôïðïßçóç áõèåíôéêüôçôáò óôï SMTP ãéá ðñüóèåôç áóöÜëåéá. Ðùò íá åãêáôáóôÞóåôå êáé íá ÷ñçóéìïðïéÞóåôå ìéá åöáñìïãÞ áðïóôïëÞò êáé ëÞøçò email ãéá ÷ñÞóôåò, üðùò ôï mutt. Ðùò íá êáôåâÜóåôå ôï email óáò áðü Ýíá áðïìáêñõóìÝíï äéáêïìéóôÞ POP Þ IMAP. Ðùò íá åöáñìüóåôå ößëôñá êáé êáíüíåò óôçí åéóåñ÷üìåíç áëëçëïãñáößá óáò, ìå áõôüìáôï ôñüðï. Ðñéí äéáâÜóåôå áõôü ôï êåöÜëáéï, èá ðñÝðåé: Íá ñõèìßóåôå óùóôÜ ôç óýíäåóç ôïõ äéêôýïõ óáò (). Íá ñõèìßóåôå óùóôÜ ôéò ðëçñïöïñßåò DNS ãéá ôïí äéáêïìéóôÞ áëëçëïãñáößáò óáò (). Íá ãíùñßæåôå ðùò íá åãêáôáóôÞóåôå ðñüóèåôï ëïãéóìéêü ôñßôïõ êáôáóêåõáóôÞ (). ×ñçóéìïðïéþíôáò ôï Çëåêôñïíéêü Ôá÷õäñïìåßï POP IMAP DNS Óå êÜèå áíôáëëáãÞ çëåêôñïíéêïý ôá÷õäñïìåßïõ, óõíåñãÜæïíôáé ðÝíôå âáóéêÜ ôìÞìáôá: Ôï ðñüãñáììá ÷ñÞóôç, ï äáßìïíáò ôïõ åîõðçñåôçôÞ, ôï DNS, ìéá áðïìáêñõóìÝíç Þ ôïðéêÞ èõñßäá ôá÷õäñïìåßïõ (mailbox) êáé öõóéêÜ ï õðïëïãéóôÞò ðïõ äéá÷åéñßæåôáé ôï email (mailhost). Ôï Ðñüãñáììá ×ñÞóôç Ç êáôçãïñßá áõôÞ ðåñéëáìâÜíåé ðñïãñÜììáôá üðùò ôá mutt, alpine, elm, êáé mail, êáèþò êáé ðñïãñÜììáôá ðïõ äéáèÝôïõí GUI üðùò åßíáé ôá balsa, xfmail (ãéá íá äþóïõìå ìåñéêÜ ðáñáäåßãìáôá) êáé êÜðïéá ðéï åîåëéãìÝíá üðùò åßíáé ïé öõëëïìåôñçôÝò ãéá ôï WWW. Ôá ðñïãñÜììáôá áõôÜ, áðëþò ìåôáâéâÜæïõí ôéò óõíáëëáãÝò ôá÷õäñïìåßïõ óôïí ôïðéêü mailhost, åßôå êáëþíôáò êÜðïéïí áðü ôïõò äáßìïíåò ôïõ åîõðçñåôçôÞ ðïõ åßíáé äéáèÝóéìïé, Þ ðáñáäßäïíôáò ôéò áðåõèåßáò ìÝóù TCP. Äáßìïíáò ÅîõðçñåôçôÞ Mailhost mail server daemons sendmail mail server daemons postfix mail server daemons qmail mail server daemons exim Ôï &os; Ýñ÷åôáé ìå ôï sendmail åãêáôåóôçìÝíï áðü ðñïåðéëïãÞ, áëëÜ õðïóôçñßæåé åðßóçò êáé ìåãÜëï áñéèìü áðü Üëëïõò äáßìïíåò ôá÷õäñïìåßïõ, ðåñéëáìâáíïìÝíùí êáé ôùí: exim postfix qmail Ï äáßìïíáò Ý÷åé óõíÞèùò äýï ëåéôïõñãßåò—åßíáé õðåýèõíïò ãéá ôç ëÞøç åéóåñ÷üìåíïõ mail, üðùò åðßóçò êáé ôçí ðáñÜäïóç ôïõ åîåñ÷üìåíïõ mail. ¼ìùò, äåí åßíáé õðåýèõíïò ãéá ôç óõëëïãÞ ôïõ mail ìå ôç ÷ñÞóç ðñùôïêüëëùí üðùò ôá POP Þ IMAP ãéá ôçí áíÜãíùóç ôïõ ôá÷õäñïìåßïõ óáò, ïýôå åðéôñÝðåé ôç óýíäåóç óôéò ôïðéêÝò èõñßäåò ôýðïõ mbox Þ Maildir. Ðéèáíüí íá ÷ñåéáóôåßôå êÜðïéï åðéðñüóèåôï äáßìïíá ãéá áõôü ôï óêïðü. Ðáëéüôåñåò åêäüóåéò ôïõ sendmail Ý÷ïõí êÜðïéá óïâáñÜ ðñïâëÞìáôá áóöáëåßáò, ìÝóù ôùí ïðïßùí ìðïñåß êÜðïéïò åéóâïëÝáò íá áðïêôÞóåé ôïðéêÞ Þ áðïìáêñõóìÝíç ðñüóâáóç óôï ìç÷Üíçìá óáò. Ãéá íá áðïöýãåôå ðñïâëÞìáôá ôÝôïéïõ åßäïõò, âåâáéùèåßôå üôé ÷ñçóéìïðïéåßôå êÜðïéá ðñüóöáôç Ýêäïóç. ÅíáëëáêôéêÜ, ìðïñåßôå íá åãêáôáóôÞóåôå êÜðïéï Üëëï MTA áðü ôçí ÓõëëïãÞ ôùí Ports ôïõ &os;. Email êáé DNS Ôï Óýóôçìá Ïíïìáóßáò Ðåñéï÷þí (DNS) êáé ï äáßìïíáò ôïõ, ï named, Ý÷ïõí óçìáíôéêü ñüëï óôçí ðáñÜäïóç ôïõ email. Ãéá ôçí ðáñÜäïóç ôïõ email áðü ôï Ýíá site óå Ýíá Üëëï, ï äáßìïíáò ôïõ åîõðçñåôçôÞ èá øÜîåé ãéá ôï áðïìáêñõóìÝíï site óôï DNS, ãéá íá êáèïñßóåé ðïéïò õðïëïãéóôÞò ëáìâÜíåé ôï email ãéá ôï óõãêåêñéìÝíï ðñïïñéóìü. Ç äéáäéêáóßá áõôÞ óõìâáßíåé åðßóçò üôáí ï äéêüò óáò åîõðçñåôçôÞò ëáìâÜíåé email áðü êÜðïéï áðïìáêñõóìÝíï õðïëïãéóôÞ. MX record Ôï DNS åßíáé õðåýèõíï ãéá ôçí áíôéóôïß÷çóç ïíïìÜôùí õðïëïãéóôþí óå äéåõèýíóåéò IP, üðùò êáé ãéá ôçí áðïèÞêåõóç ðëçñïöïñéþí ðïõ ó÷åôßæïíôáé ìå ôçí ðáñÜäïóç çëåêôñïíéêïý ôá÷õäñïìåßïõ, üðùò ïé åããñáöÝò MX. Ç åããñáöÞ MX (Mail Exchanger) áíáãíùñßæåé ðïéïò õðïëïãéóôÞò (Þ õðïëïãéóôÝò) èá åßíáé õðåýèõíïò ãéá ôç ëÞøç ôá÷õäñïìåßïõ åíüò óõãêåêñéìÝíïõ ôïìÝá (domain). Áí äåí Ý÷åôå åããñáöÞ MX ãéá ôïí õðïëïãéóôÞ Þ ôïí ôïìÝá óáò, ôï email èá ðáñáäßäåôáé áðåõèåßáò óôïí õðïëïãéóôÞ óáò, ìå ôçí ðñïûðüèåóÞ üôé Ý÷åôå åããñáöÞ ôýðïõ A ðïõ íá äåß÷íåé óôïí õðïëïãéóôÞ óáò Þ óôçí IP äéåýèõíóç ôïõ. Ìðïñåßôå íá äåßôå ôéò åããñáöÝò MX ãéá ïðïéïäÞðïôå ôïìÝá, ÷ñçóéìïðïéþíôáò ôçí åíôïëÞ &man.host.1;, üðùò öáßíåôáé óôï ðáñáêÜôù ðáñÜäåéãìá: &prompt.user; host -t mx FreeBSD.org FreeBSD.org mail is handled (pri=10) by mx1.FreeBSD.org ËáìâÜíïíôáò Mail email receiving Ï mailhost åßíáé õðåýèõíïò ãéá ôçí ëÞøç mail ðïõ ðñïïñßæåôáé ãéá ôïí ôïìÝá óáò. Èá óõëëÝîåé üëï ôï mail ðïõ Ýñ÷åôáé ðñïò ôïí ôïìÝá, êáé èá ôï áðïèçêåýóåé åßôå óôï mbox (ôçí ðñïåðéëåãìÝíç ìÝèïäï ãéá áðïèÞêåõóç mail) Þ óå ìïñöÞ Maildir, áíÜëïãá ìå ôéò ñõèìßóåéò ðïõ Ý÷åôå êÜíåé. Áðü ôç óôéãìÞ ðïõ ôï mail Ý÷åé áðïèçêåõèåß, ìðïñåßôå åßôå íá ôï äéáâÜóåôå ôïðéêÜ, ÷ñçóéìïðïéþíôáò åöáñìïãÝò üðùò ôï &man.mail.1; Þ ôï mutt, Þ íá ôï äåßôå ìÝóù áðïìáêñõóìÝíçò óýíäåóçò, ÷ñçóéìïðïéþíôáò êÜðïéï ðñùôüêïëëï üðùò ôï POP Þ ôï IMAP. Áõôü óçìáßíåé üôé áí åðéèõìåßôå íá äéáâÜæåôå ôï mail óáò ìüíï ôïðéêÜ, äåí ÷ñåéÜæåôáé íá åãêáôáóôÞóåôå åîõðçñåôçôÞ POP Þ IMAP. Ðñüóâáóç óå ÁðïìáêñõóìÝíåò Èõñßäåò ìÝóù <acronym>POP</acronym> êáé <acronym>IMAP</acronym> POP IMAP Ãéá íá Ý÷åôå áðïìáêñõóìÝíç ðñüóâáóç óôéò èõñßäåò ôá÷õäñïìåßïõ, åßíáé áðáñáßôçôï íá Ý÷åôå ðñüóâáóç óå Ýíá åîõðçñåôçôÞ POP Þ IMAP. Ôá ðñùôüêïëëá áõôÜ, åðéôñÝðïõí óôïõò ÷ñÞóôåò íá óõíäÝïíôáé óôéò èõñßäåò ôïõò áðü áðüóôáóç, ìå ìåãÜëç åõêïëßá. Êáé ôá äýï ðñùôüêïëëá (POP êáé IMAP) åðéôñÝðïõí óôïõò ÷ñÞóôåò áðïìáêñõóìÝíç ðñüóâáóç óôéò èõñßäåò ôïõò, áëëÜ ôï IMAP ðñïóöÝñåé áñêåôÜ ðëåïíåêôÞìáôá, ïñéóìÝíá áðü ôá ïðïßá öáßíïíôáé ðáñáêÜôù: Ôï IMAP ìðïñåß íá áðïèçêåýóåé ìçíýìáôá óå Ýíá áðïìáêñõóìÝíï åîõðçñåôçôÞ, üðùò åðßóçò êáé íá ôá áíáêôÞóåé. Ôï IMAP õðïóôçñßæåé ôáõôü÷ñïíåò åíçìåñþóåéò. Ôï IMAP ìðïñåß íá öáíåß åîáéñåôéêÜ ÷ñÞóéìï óå óõíäÝóåéò ÷áìçëÞò ôá÷ýôçôáò, êáèþò åðéôñÝðåé óôïõò ÷ñÞóôåò íá êáôåâÜóïõí ôç äïìÞ ôùí ìçíõìÜôùí, ÷ùñßò íá êáôåâÜóïõí ôï ðåñéå÷üìåíï ôïõò. Ìðïñåß åðßóçò íá åêôåëÝóåé åñãáóßåò üðùò åýñåóç ìçíõìÜôùí áðåõèåßáò óôïí åîõðçñåôçôÞ, åëá÷éóôïðïéþíôáò ìå áõôü ôïí ôñüðï ôç ìåôáöïñÜ äåäïìÝíùí ìåôáîý ôùí ðåëáôþí êáé ôùí åîõðçñåôçôþí. Ãéá íá åãêáôáóôÞóåôå Ýíá åîõðçñåôçôÞ POP Þ IMAP èá ðñÝðåé íá áêïëïõèÞóåôå ôá åðüìåíá âÞìáôá: ÅðéëÝîôå Ýíá åîõðçñåôçôÞ IMAP Þ POP ðïõ íá åîõðçñåôåß ôéò áíÜãêåò óáò. Ïé ðáñáêÜôù åîõðçñåôçôÝò POP êáé IMAP åßíáé áñêåôÜ äéáäåäïìÝíïé êáé áðïôåëïýí êáëÜ ðáñáäåßãìáôá: qpopper teapop imap-uw courier-imap dovecot ÅãêáôáóôÞóôå ôï äáßìïíá POP Þ IMAP ôçò åðéëïãÞò óáò, áðü ôçí ÓõëëïãÞ ôùí Ports. Áí ÷ñåéÜæåôáé, ôñïðïðïéÞóôå ôï áñ÷åßï /etc/inetd.conf ãéá íá öïñôþóåôå ôïí åîõðçñåôçôÞ POP Þ IMAP. Èá ðñÝðåé íá óçìåéþóïõìå üôé ôüóï ôï POP üóï êáé ôï IMAP ìåôáäßäïõí ðëçñïöïñßåò üðùò ôï üíïìá ÷ñÞóôç êáé ôïí êùäéêü óå ìïñöÞ áðëïý êåéìÝíïõ. Áõôü óçìáßíåé üôé áí èÝëåôå íá áóöáëßóåôå ôç ìåôÜäïóç ðëçñïöïñéþí ìÝóù áõôþí ôùí ðñùôïêüëëùí, èá ðñÝðåé íá ðåñÜóåôå áõôÝò ôéò óõíäÝóåéò ìÝóù ôïõ &man.ssh.1; (tunneling) Þ íá ÷ñçóéìïðïéÞóåôå SSL. Ç äéáäéêáóßá tunneling ðåñéãñÜöåôáé ìå ëåðôïìÝñåéá óôï êáé ôï SSL óôï . Ðñüóâáóç óå ÔïðéêÝò Èõñßäåò Ôá÷õäñïìåßïõ Ìðïñåßôå íá Ý÷åôå ôïðéêÞ ðñüóâáóç óôéò èõñßäåò ôá÷õäñïìåßïõ ÷ñçóéìïðïéþíôáò áðåõèåßáò êÜðïéï ðñüãñáììá áðïóôïëÞò/ëÞøçò (MUA) óôïí åîõðçñåôçôÞ ðïõ åßíáé áðïèçêåõìÝíåò. ÊáôÜëëçëåò åöáñìïãÝò ãéá áõôü ôï óêïðü åßíáé ð.÷. ôï mutt Þ ôï &man.mail.1;. Ï ÅîõðçñåôçôÞò Mail mail host ÅîõðçñåôçôÞò mail èåùñåßôáé ï õðïëïãéóôÞò ï ïðïßïò åßíáé õðåýèõíïò ãéá ôçí ðáñÜäïóç êáé ëÞøç mail ãéá ôïí õðïëïãéóôÞ óáò, êáé åíäå÷ïìÝíùò ãéá ôï äßêôõï óáò. Christopher Shumway ÓõíåéóöïñÜ ôïõ Ñýèìéóç ôïõ <application>sendmail</application> sendmail Ôï &man.sendmail.8; åßíáé ï ðñïåðéëåãìÝíïò Áíôéðñüóùðïò ÌåôáöïñÜò Ôá÷õäñïìåßïõ (Mail Transfer Agent, MTA) óôï &os;. ÄïõëåéÜ ôïõ åßíáé íá äÝ÷åôáé ôï email áðü ôïõò Áíôéðñïóþðïõò Email ×ñÞóôç (Mail User Agents, MUA) êáé íá ôï ðáñáäßäåé óôï êáôÜëëçëï mailer ðïõ ïñßæåôáé óôï áñ÷åßï ñõèìßóåùí ôïõ. Ôï sendmail ìðïñåß åðßóçò íá äå÷èåß óõíäÝóåéò äéêôýïõ êáé íá ðáñáäþóåé ôï mail óå ôïðéêÝò èõñßäåò Þ êáé óå êÜðïéï Üëëï ðñüãñáììá. Ôï sendmail ÷ñçóéìïðïéåß ôá áêüëïõèá áñ÷åßá ñõèìßóåùí: /etc/mail/access /etc/mail/aliases /etc/mail/local-host-names /etc/mail/mailer.conf /etc/mail/mailertable /etc/mail/sendmail.cf /etc/mail/virtusertable ¼íïìá Áñ÷åßïõ Ëåéôïõñãßá /etc/mail/access Ç âÜóç äåäïìÝíùí ðñüóâáóçò ôïõ sendmail. /etc/mail/aliases Ðáñùíýìéá (aliases) ãéá ôéò èõñßäåò (Mailboxes) /etc/mail/local-host-names Ëßóôá ôùí õðïëïãéóôþí ãéá ôïõò ïðïßïõò ôï sendmail äÝ÷åôáé mail /etc/mail/mailer.conf Ñõèìßóåéò ôïõ ðñïãñÜììáôïò mailer /etc/mail/mailertable Ðßíáêáò ðáñáäüóåùí ôïõ mailer /etc/mail/sendmail.cf Ôï êåíôñéêü áñ÷åßï ñõèìßóåùí ôïõ sendmail /etc/mail/virtusertable Ðßíáêáò åéêïíéêþí ÷ñçóôþí êáé ðåñéï÷þí (domains) <filename>/etc/mail/access</filename> Ç âÜóç äåäïìÝíùí ðñüóâáóçò êáèïñßæåé ðïéïé õðïëïãéóôÝò Þ äéåõèýíóåéò IP Ý÷ïõí ðñüóâáóç óôïí ôïðéêü åîõðçñåôçôÞ mail êáé ôé åßäïõò ðñüóâáóç Ý÷ïõí. Ç êáôá÷þñçóç åíüò õðïëïãéóôÞ ìðïñåß íá Ý÷åé ôéò åðéëïãÝò , , Þ áðëÜ íá ìåôáâéâÜæåé ôïí Ýëåã÷ï óôç ñïõôßíá äéá÷åßñéóçò ëáèþí ôïõ sendmail ìå êÜðïéï óõãêåêñéìÝíï óöÜëìá. Ïé õðïëïãéóôÝò ðïõ åßíáé êáôá÷ùñçìÝíïé ìå ôçí åðéëïãÞ , ç ïðïßá åßíáé êáé ç ðñïåðéëåãìÝíç, åðéôñÝðåôáé íá óôåßëïõí email óå áõôü ôïí õðïëïãéóôÞ, åöüóïí ï ôåëéêüò ðñïïñéóìüò ôïõ ìçíýìáôïò åßíáé ôï ôïðéêü ìç÷Üíçìá. Ïé õðïëïãéóôÝò ðïõ åßíáé êáôá÷ùñçìÝíïé ìå ôçí åðéëïãÞ áðïññßðôïíôáé ãéá ïðïéáäÞðïôå åðéêïéíùíßá Ý÷åé íá êÜíåé ìå ìåôÜäïóç mail. Ïé õðïëïãéóôÝò ðïõ åßíáé êáôá÷ùñçìÝíïé ìå ôçí åðéëïãÞ , Ý÷ïõí ôç äõíáôüôçôá íá óôåßëïõí mail ðñïò ïðïéáäÞðïôå êáôåýèõíóç ìÝóù ôïõ óõãêåêñéìÝíïõ åîõðçñåôçôÞ. Ñýèìéóç ôçò ÂÜóçò ÄåäïìÝíùí Ðñüóâáóçò ôïõ <application>sendmail</application> cyberspammer.com 550 We do not accept mail from spammers FREE.STEALTH.MAILER@ 550 We do not accept mail from spammers another.source.of.spam REJECT okay.cyberspammer.com OK 128.32 RELAY Óå áõôü ôï ðáñÜäåéãìá Ý÷ïõìå ðÝíôå êáôá÷ùñÞóåéò. Ïé äéåõèýíóåéò ðïõ öáßíïíôáé óôçí áñéóôåñÞ ðëåõñÜ ôïõ ðßíáêá, åðçñåÜæïíôáé áðü ôç åíÝñãåéá ðïõ öáßíåôáé óôç äåîéÜ ðëåõñÜ. Ôá ðñþôá äýï ðáñáäåßãìáôá, åðéóôñÝöïõí Ýíá êùäéêü óöÜëìáôïò óôç ñïõôßíá äéá÷åßñéóçò ëáèþí ôïõ sendmail. Ôï ìÞíõìá åêôõðþíåôáé óôïí áðïìáêñõóìÝíï õðïëïãéóôÞ, üôáí ôï mail ðïõ ëáìâÜíåôáé áíÞêåé óå êÜðïéá áðü ôéò êáôçãïñßåò ôçò áñéóôåñÞò ðëåõñÜò ôïõ ðßíáêá. Ç åðüìåíç êáôá÷þñçóç áðïññßðôåé ôçí ðáñáëáâÞ mail áðü Ýíá óõãêåêñéìÝíï õðïëïãéóôÞ óôï Internet, ôïí another.source.of.spam. Ç åðüìåíç êáôá÷þñçóç êÜíåé äåêôÝò ôéò óõíäÝóåéò mail áðü ôïí õðïëïãéóôÞ okay.cyberspammer.com, ôï üíïìá ôïõ ïðïßïõ ðñïóäéïñßæåôáé áêñéâÝóôåñá óå ó÷Ýóç ìå ôç ãñáììÞ cyberspammer.com ðïõ åßäáìå ðáñáðÜíù. ÃñáììÝò ðïõ êáèïñßæïõí ïíüìáôá ìå ìåãáëýôåñç áêñßâåéá, Ý÷ïõí ðñïôåñáéüôçôá óå ó÷Ýóç ìå ðéï áíáêñéâåßò. Ç ôåëåõôáßá êáôá÷þñçóç åðéôñÝðåé ôçí áíáìåôÜäïóç (relaying) çëåêôñïíéêïý ôá÷õäñïìåßïõ áðü õðïëïãéóôÝò ìå äéåõèýíóåéò IP ðïõ îåêéíÜíå ìå 128.32. Ïé õðïëïãéóôÝò áõôïß, ìðïñïýí íá óôåßëïõí mail ìÝóù ôïõ óõãêåêñéìÝíïõ åîõðçñåôçôÞ, ôï ïðïßï íá êáôåõèýíåôáé óå Üëëïõò åîõðçñåôçôÝò ôá÷õäñïìåßïõ. Óå ðåñßðôùóç áíáíÝùóçò áõôïý ôïõ áñ÷åßïõ, èá ðñÝðåé íá åêôåëÝóåôå ôçí åíôïëÞ make óôïí êáôÜëïãï /etc/mail/ ãéá íá áíáíåþóåôå ôç âÜóç äåäïìÝíùí. <filename>/etc/mail/aliases</filename> Ç âÜóç äåäïìÝíùí ôùí ðáñùíõìßùí (aliases), ðåñéÝ÷åé ìéá ëßóôá áðü åéêïíéêÝò èõñßäåò ôá÷õäñïìåßïõ ðïõ åðåêôåßíïíôáé óå Üëëïõò ÷ñÞóôåò, áñ÷åßá Þ êáé Üëëá ðáñùíýìéá. ÌåñéêÜ ðáñáäåßãìáôá ÷ñÞóçò ôïõ /etc/mail/aliases öáßíïíôáé ðáñáêÜôù: Ðáñùíýìéá Mail root: localuser ftp-bugs: joe,eric,paul bit.bucket: /dev/null procmail: "|/usr/local/bin/procmail" Ç ìïñöÞ ôïõ áñ÷åßïõ åßíáé áðëÞ. Ôï üíïìá ôçò èõñßäáò âñßóêåôáé óôçí áñéóôåñÞ ðëåõñÜ ôçò Üíù-êÜôù ôåëåßáò, êáé åðåêôåßíåôáé óôïí ðñïïñéóìü ðïõ âñßóêåôáé óôç äåîéÜ ðëåõñÜ. Ôï ðñþôï ðáñÜäåéãìá, ïñßæåé üôé ç èõñßäá ôïõ ÷ñÞóôç root èá åßíáé óôçí ðñáãìáôéêüôçôá ç èõñßäá localuser. Ãéá ôçí èõñßäá áõôÞ, ãßíåôáé îáíÜ áíáæÞôçóç óôç âÜóç äåäïìÝíùí ôùí ðáñùíõìéþí. Áí äåí âñåèåß Üëëï üíïìá ðïõ íá ôáéñéÜæåé, ôï ìÞíõìá èá ðáñáäïèåß óôïí ôïðéêü ÷ñÞóôç localuser. Ôï åðüìåíï ðáñÜäåéãìá äåß÷íåé ìéá ëßóôá ôá÷õäñïìåßïõ. Ôá ìçíýìáôá ðïõ áðåõèýíïíôáé óôç èõñßäá ftp-bugs, êáôåõèýíïíôáé óå ôñåéò ôïðéêÝò èõñßäåò, ôéò joe, eric êáé paul. Óçìåéþóôå üôé åßíáé äõíáôüí íá êáèïñéóôåß ìéá áðïìáêñõóìÝíç èõñßäá ÷ñçóéìïðïéþíôáò ôç ìïñöÞ user@example.com. Ôï åðüìåíï ðáñÜäåéãìá, äåß÷íåé ðùò ìðïñåß íá ãßíåé åããñáöÞ ôïõ mail óå Ýíá áñ÷åßï, óôç óõãêåêñéìÝíç ðåñßðôùóç ôï /dev/null. Ôï ôåëåõôáßï ðáñÜäåéãìá, äåß÷íåé ðùò ãßíåôáé ç áðïóôïëÞ mail ðñïò Ýíá ðñüãñáììá. Óôï ðáñÜäåéãìá áõôü, ôï ìÞíõìá ãñÜöåôáé óôçí ôõðïðïéçìÝíç åßóïäï (standard input) ôïõ ðñïãñÜììáôïò /usr/local/bin/procmail ÷ñçóéìïðïéþíôáò Ýíá &unix; pipe. ÊÜèå öïñÜ ðïõ ãßíåôáé åíçìÝñùóç áõôïý ôïõ áñ÷åßïõ, èá ðñÝðåé íá åêôåëåßôå ôçí åíôïëÞ make óôïí êáôÜëïãï /etc/mail/, þóôå íá åíçìåñùèåß ç âÜóç äåäïìÝíùí. <filename>/etc/mail/local-host-names</filename> Ðñüêåéôáé ãéá ìéá ëßóôá áðü ïíüìáôá õðïëïãéóôþí, ôçí ïðïßá ôï &man.sendmail.8; èá äÝ÷åôáé ùò ïíüìáôá ãéá ôï ôïðéêü ìç÷Üíçìá. ÔïðïèåôÞóôå óå áõôÞí ôá ïíüìáôá ôùí õðïëïãéóôþí Þ ôùí ôïìÝùí ãéá ôïõò ïðïßïõò èÝëåôå ôï sendmail íá ëáìâÜíåé mail. Ãéá ðáñÜäåéãìá, áí ï óõãêåêñéìÝíïò åîõðçñåôçôÞò mail ðñüêåéôáé íá ëáìâÜíåé mail ãéá ôïí ôïìÝá example.com êáé ãéá ôïí õðïëïãéóôÞ mail.example.com, ôï áñ÷åßï local-host-names èá ìïéÜæåé ìå ôï ðáñáêÜôù: example.com mail.example.com ÊÜèå öïñÜ ðïõ åíçìåñþíåôáé áõôü ôï áñ÷åßï, èá ðñÝðåé íá ãßíåôáé åðáíåêêßíçóç ôïõ &man.sendmail.8; ãéá íá äéáâÜóåé ôéò áëëáãÝò. <filename>/etc/mail/sendmail.cf</filename> Ôï sendmail.cf åßíáé ôï êåíôñéêü áñ÷åßï ñõèìßóåùí ôïõ sendmail. Ôï áñ÷åßï áõôü ñõèìßæåé ôç óõíïëéêÞ óõìðåñéöïñÜ ôïõ sendmail, ðïõ ðåñéëáìâÜíåé ìåôáîý Üëëùí ôçí åðáíåããñáöÞ äéåõèýíóåùí êáé ôçí áðïóôïëÞ ìçíõìÜôùí áðüññéøçò ðñïò áðïìáêñõóìÝíïõò åîõðçñåôçôÝò mail. Êáèþò ôï áñ÷åßï áõôü ðåñéÝ÷åé ôüóï äéáöïñåôéêÝò ñõèìßóåéò, åßíáé öõóéêü íá åßíáé áñêåôÜ ðïëýðëïêï êáé ïé ëåðôïìÝñåéåò ôïõ åßíáé Ýîù áðü ôï óêïðü áõôÞò ôçò åíüôçôáò. Åõôõ÷þò, áõôü ôï áñ÷åßï óðÜíéá ÷ñåéÜæåôáé íá áëëá÷èåß óå ôõðéêïýò åîõðçñåôçôÝò mail. Ôï âáóéêü áñ÷åßï ñõèìßóåùí ôïõ sendmail ìðïñåß íá ðáñá÷èåß ìå ôç âïÞèåéá ìáêñïåíôïëþí ôýðïõ &man.m4.1; ðïõ êáèïñßæïõí ôç óõìðåñéöïñÜ êáé ôá ÷áñáêôçñéóôéêÜ ôïõ sendmail. Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò, ðáñáêáëïýìå äéáâÜóôå ôï /usr/src/contrib/sendmail/cf/README. Ãéá íá éó÷ýóïõí ïé áëëáãÝò ðïõ êÜíåôå óå áõôü ôï áñ÷åßï, èá ðñÝðåé íá åðáíåêêéíÞóåôå ôï sendmail. <filename>/etc/mail/virtusertable</filename> Ôï áñ÷åßï virtusertable áíôéóôïé÷åß äéåõèýíóåéò mail åéêïíéêþí ôïìÝùí óå ðñáãìáôéêÝò èõñßäåò ôá÷õäñïìåßïõ. Ïé èõñßäåò áõôÝò ìðïñåß íá åßíáé ôïðéêÝò, áðïìáêñõóìÝíåò, ðáñùíýìéá ðïõ Ý÷ïõí ïñéóôåß óôï /etc/mail/aliases, Þ áñ÷åßá. ÐáñÜäåéãìá Áíôéóôïß÷çóçò Mail Åéêïíéêïý ÔïìÝá root@example.com root postmaster@example.com postmaster@noc.example.net @example.com joe Óôï ðáñáðÜíù ðáñÜäåéãìá, Ý÷ïõìå ìéá áíôéóôïß÷çóç ãéá ôïí ôïìÝá example.com. Ç åðåîåñãáóßá áõôïý ôïõ áñ÷åßïõ ãßíåôáé áðü ðÜíù ðñïò ôá êÜôù, êáé óôáìáôÜåé óôçí åýñåóç ôïõ ðñþôïõ ïíüìáôïò ðïõ ôáéñéÜæåé. Ç ðñþôç ãñáììÞ ôïõ ðáñáäåßãìáôïò, áíôéóôïé÷åß ôï root@example.com óôçí ôïðéêÞ èõñßäá root. Ç åðüìåíç êáôá÷þñçóç áíôéóôïé÷åß ôï postmaster@example.com óôç èõñßäá postmaster óôïí õðïëïãéóôÞ noc.example.net. ÔÝëïò, áí äåí âñåèåß êáìéÜ áíôéóôïß÷çóç ãéá ôïí ôïìÝá example.com, èá åöáñìïóôåß ç ôåëåõôáßá áíôéóôïß÷çóç, ç ïðïßá ôáéñéÜæåé ìå ïðïéïäÞðïôå mail óôáëèåß ðñïò ôïí ôïìÝá example.com. Óôçí ðåñßðôùóç áõôÞ, ôï ìÞíõìá èá ðáñáäïèåß óôçí ôïðéêÞ èõñßäá joe. Andrew Boothman ÃñÜöçêå áðü ôïí Gregory Neil Shapiro Ïé ðëçñïöïñßåò ðïõ ðñïÝñ÷ïíôáé áðü e-mails Ý÷ïõí ãñáöåß áðü ôïí ÁëëÜæïíôáò ôïí Áíôéðñüóùðï ÌåôáöïñÜò Ôá÷õäñïìåßïõ (MTA) email change mta ¼ðùò Ý÷ïõìå Þäç áíáöÝñåé, ôï &os; Ýñ÷åôáé ìå ôï sendmail ðñïåãêáôåóôçìÝíï ùò Áíôéðñüóùðï ÌåôáöïñÜò Ôá÷õäñïìåßïõ (Mail Transfer Agent, MTA). Ôï ðñüãñáììá áõôü åßíáé áðü ðñïåðéëïãÞ õðåýèõíï ãéá ôçí åéóåñ÷üìåíç êáé åîåñ÷üìåíç áëëçëïãñáößá. ÕðÜñ÷åé ùóôüóï ðëçèþñá ëüãùí ãéá ôïõò ïðïßïõò êÜðïéïé äéá÷åéñéóôÝò åðéëÝãïõí íá áëëÜîïõí ôï MTA ôïõ óõóôÞìáôïò ôïõò. Ïé ëüãïé áõôïß êõìáßíïíôáé áðü ôï üôé áðëÜ èÝëïõí íá äïêéìÜóïõí êÜðïéï Üëëï MTA, ùò êáé ôï üôé ÷ñåéÜæïíôáé êÜðïéï éäéáßôåñï ÷áñáêôçñéóôéêü Þ äõíáôüôçôá ðïõ õðÜñ÷åé óå êÜðïéï Üëëï mailer. Åõôõ÷þò, ôï &os; êÜíåé åýêïëç ôçí áëëáãÞ ôïõ áíôéðñïóþðïõ. ÅãêáôáóôÞóôå ÍÝï MTA ÕðÜñ÷ïõí áñêåôïß MTA ãéá íá åðéëÝîåôå. ¸íá êáëü óçìåßï åêêßíçóçò åßíáé ç ÓõëëïãÞ ôùí Ports ôïõ &os; üðïõ êáé èá ìðïñÝóåôå íá âñåßôå áñêåôïýò. ÖõóéêÜ åßóôå åëåýèåñïò íá åðéëÝîåôå üðïéï MTA èÝëåôå áðü ïðïõäÞðïôå, üóï ôïõëÜ÷éóôïí ìðïñåßôå íá ôï êÜíåôå íá åêôåëåßôå óôï &os;. ÎåêéíÞóôå åãêáèéóôþíôáò ôï íÝï óáò MTA. ÌåôÜ ôçí åãêáôÜóôáóç, èá Ý÷åôå ôçí åõêáéñßá íá áðïöáóßóåôå áí ðñáãìáôéêÜ êáëýðôåé ôéò áíÜãêåò óáò, êáèþò êáé íá ïëïêëçñþóåôå ôéò ñõèìßóåéò ôïõ ðñéí ìåôáöÝñåôå ôç äéá÷åßñéóç mail ôïõ óõóôÞìáôïò áðü ôï sendmail óôï íÝï óáò ðñüãñáììá. ÊáôÜ ôçí åãêáôÜóôáóç, âåâáéùèåßôå üôé ôï íÝï óáò ëïãéóìéêü äåí èá ðñïóðáèÞóåé íá åãêáôáóôáèåß ðÜíù óôá õðÜñ÷ïíôá åêôåëÝóéìá ôïõ óõóôÞìáôïò, üðùò ôï /usr/bin/sendmail. ÄéáöïñåôéêÜ, èá Ý÷åôå ïõóéáóôéêÜ âÜëåé ôï íÝï óáò ëïãéóìéêü mail óå ÷ñÞóç, ðñéí ðñïëÜâåôå êáëÜ-êáëÜ íá ôï ñõèìßóåôå. Ðáñáêáëïýìå íá äéáâÜóåôå ôçí ôåêìçñßùóç ôïõ MTA ðïõ åðéëÝîáôå, ãéá ðëçñïöïñßåò ó÷åôéêÜ ìå ôç ñýèìéóç ôïõ. ÁðåíåñãïðïéÞóôå ôï <application>sendmail</application> Áí áðåíåñãïðïéÞóåôå ôç äõíáôüôçôá áðïóôïëÞò (åîåñ÷üìåíá) ôïõ sendmail, åßíáé óçìáíôéêü íá ôçí áíôéêáôáóôÞóåôå ìå Ýíá åíáëëáêôéêü óýóôçìá ðáñÜäïóçò mail. Áí åðéëÝîåôå íá ìçí êÜíåôå ôï ðáñáðÜíù, ôá ìçíýìáôá ôïõ óõóôÞìáôïò, üðùò áõôÜ ðïõ ðáñÜãïíôáé áðü ôï &man.periodic.8;, äåí èá ìðïñïýí íá ðáñáäïèïýí ìÝóù email, üðùò åßíáé ôï áíáìåíüìåíï. ÐïëëÜ ôìÞìáôá ôïõ óõóôÞìáôïò óáò áíáìÝíïõí üôé õðÜñ÷åé óå ëåéôïõñãßá Ýíá óýóôçìá óõìâáôü ìå ôï sendmail. Áí ïé åöáñìïãÝò óõíå÷ßæïõí íá ÷ñçóéìïðïéïýí ôá åêôåëÝóéìá ôïõ sendmail ðñïóðáèþíôáò íá óôåßëïõí email ìåôÜ ôçí áðåíåñãïðïßçóç ôïõ, ôï mail ðéèáíþò èá âñåèåß óå ìéá áíåíåñãÞ ïõñÜ ôïõ sendmail êáé äåí èá ðáñáäïèåß ðïôÝ. Ãéá íá áðåíåñãïðïéÞóåôå åíôåëþò ôï sendmail, óõìðåñéëáìâáíïìÝíçò êáé ôçò õðçñåóßáò åîåñ÷üìåíùí ìçíõìÜôùí, ÷ñçóéìïðïéÞóôå: sendmail_enable="NO" sendmail_submit_enable="NO" sendmail_outbound_enable="NO" sendmail_msp_queue_enable="NO" óôï /etc/rc.conf. Áí èÝëåôå íá áðåíåñãïðïéÞóåôå ìüíï ôçí õðçñåóßá åéóåñ÷ïìÝíùí ôïõ sendmail èá ðñÝðåé íá èÝóåôå: sendmail_enable="NO" óôï /etc/rc.conf. Ðåñéóóüôåñåò ðëçñïöïñßåò ãéá ôéò åðéëïãÝò åêêßíçóçò ôïõ sendmail, äéáôßèåíôáé áðü ôçí áíôßóôïé÷ç óåëßäá manual, &man.rc.sendmail.8;. Åêêßíçóç ôïõ ÍÝïõ óáò MTA êáôÜ ôçí Åêêßíçóç Ôï íÝï óáò MTA èá îåêéíÜåé êáôÜ ôçí åêêßíçóç, áí ðñïóèÝóåôå ìéá êáôÜëëçëç ãñáììÞ óôï áñ÷åßï /etc/rc.conf. Äåßôå ôï ðáñáêÜôù ðáñÜäåéãìá ãéá ôï postfix: &prompt.root; echo 'postfix_enable="YES"' >> /etc/rc.conf Ôï MTA èá îåêéíÜåé ðëÝïí êáôÜ ôçí åêêßíçóç. Áíôéêáèéóôþíôáò ôï <application>sendmail</application> áðü ÐñïåðéëåãìÝíï Mailer ÓõóôÞìáôïò Ôï sendmail åßíáé ôüóï ãíùóôü ùò óôÜíôáñ ëïãéóìéêü óôá óõóôÞìáôá &unix;, þóôå ðïëëÜ Üëëá ðñïãñÜììáôá èåùñïýí üôé åßíáé Þäç åãêáôåóôçìÝíï êáé ñõèìéóìÝíï. Ãéá ôï ëüãï áõôü, ðïëëÜ åíáëëáêôéêÜ MTA ðáñÝ÷ïõí äéêÝò ôïõò óõìâáôÝò õëïðïéÞóåéò ôïõ sendmail. Ïé õëïðïéÞóåéò áõôÝò ðáñÝ÷ïõí ðáñüìïéï óýíïëï åíôïëþí, êáé ìðïñïýí Ýôóé íá ÷ñçóéìïðïéçèïýí þóôå íá áíôéêáôáóôÞóïõí áðåõèåßáò ôï sendmail. Ãéá ôï ëüãï áõôü, áí ÷ñçóéìïðïéåßôå êÜðïéï åíáëëáêôéêü mailer, èá èÝëåôå íá åîáóöáëßóåôå üôé Üëëá ðñïãñÜììáôá ðïõ ðñïóðáèïýí íá åêôåëÝóïõí ôá ôõðéêÜ åêôåëÝóéìá ôïõ sendmail üðùò ôï /usr/bin/sendmail, èá åêôåëÝóïõí óôçí ðñáãìáôéêüôçôá ôïí åðéëåãìÝíï óáò mailer. Åõôõ÷þò, ôï &os; ðáñÝ÷åé Ýíá óýóôçìá ðïõ êáëåßôå &man.mailwrapper.8; êáé ôï ïðïßï áíáëáìâÜíåé áõôÞ ôç äïõëåéÜ ãéá óáò. ¼ôáí ôï sendmail ëåéôïõñãåß üðùò Ý÷åé åãêáôáóôáèåß áñ÷éêÜ, èá âñåßôå êÜôé üðùò ôï ðáñáêÜôù óôï /etc/mail/mailer.conf: sendmail /usr/libexec/sendmail/sendmail send-mail /usr/libexec/sendmail/sendmail mailq /usr/libexec/sendmail/sendmail newaliases /usr/libexec/sendmail/sendmail hoststat /usr/libexec/sendmail/sendmail purgestat /usr/libexec/sendmail/sendmail Áõôü óçìáßíåé üôé üôáí åêôåëåßôáé êÜðïéá áðü áõôÝò ôéò óõíçèéóìÝíåò åíôïëÝò (üðùò ôï ßäéï ôï sendmail), ôï óýóôçìá óôçí ðñáãìáôéêüôçôá åêôåëåß Ýíá áíôßãñáöï ôïõ mailwrapper ðïõ ïíïìÜæåôáé sendmail, êáé ôï ïðïßï åëÝã÷åé ôï mailer.conf êáé åêôåëåß ôï /usr/libexec/sendmail/sendmail áíôß áõôïý. Ôï óýóôçìá áõôü äéåõêïëýíåé éäéáßôåñá ôçí áëëáãÞ ôùí åêôåëÝóéìùí ðïõ åêôåëïýíôáé óôçí ðñáãìáôéêüôçôá üôáí ãßíåôáé êëÞóç ôùí ðñïåðéëåãìÝíùí ëåéôïõñãéþí ôïõ sendmail. ¸ôóé, áí èÝëåôå íá åêôåëåßôáé ôï /usr/local/supermailer/bin/sendmail-compat áíôß ãéá ôï sendmail, èá ìðïñïýóáôå íá áëëÜîåôå ôï /etc/mail/mailer.conf þóôå íá ãñÜöåé: sendmail /usr/local/supermailer/bin/sendmail-compat send-mail /usr/local/supermailer/bin/sendmail-compat mailq /usr/local/supermailer/bin/mailq-compat newaliases /usr/local/supermailer/bin/newaliases-compat hoststat /usr/local/supermailer/bin/hoststat-compat purgestat /usr/local/supermailer/bin/purgestat-compat Ïëïêëçñþíïíôáò Ìüëéò Ý÷åôå ñõèìßóåé ôá ðÜíôá üðùò åðéèõìåßôå, ìðïñåßôå åßôå íá êÜíåôå kill ôéò äéåñãáóßåò ôïõ sendmail ðïõ äåí ÷ñåéÜæåóôå ðëÝïí êáé íá åêêéíÞóåôå ôéò áíôßóôïé÷åò ôïõ íÝïõ óáò ëïãéóìéêïý, Þ áðëþò íá êÜíåôå åðáíåêêßíçóç. Ç åðáíåêêßíçóç èá óáò äþóåé åðßóçò ôçí åõêáéñßá íá âåâáéùèåßôå üôé ôï óýóôçìá óáò Ý÷åé ñõèìéóôåß óùóôÜ, þóôå ôï íÝï óáò MTA íá îåêéíÜåé áõôüìáôá óå êÜèå åêêßíçóç. Áíôéìåôþðéóç ÐñïâëçìÜôùí email troubleshooting Ãéáôß ðñÝðåé íá ÷ñçóéìïðïéþ ôï ðëÞñåò üíïìá (FQDN) ãéá õðïëïãéóôÝò ðïõ âñßóêïíôáé óôïí ôïìÝá ìïõ; Ôï ðéï ðéèáíü åßíáé íá äéáðéóôþóåôå üôé ï õðïëïãéóôÞò âñßóêåôáé óôçí ðñáãìáôéêüôçôá óå äéáöïñåôéêü ôïìÝá. Ãéá ðáñÜäåéãìá, áí âñßóêåóôå óôï foo.bar.edu êáé èÝëåôå íá åðéêïéíùíÞóåôå ìå Ýíá õðïëïãéóôÞ ìå ôï üíïìá mumble óôïí ôïìÝá bar.edu, èá ðñÝðåé íá áíáöåñèåßôå óå áõôüí ìå ôï ðëÞñåò ôïõ üíïìá, mumble.bar.edu, áíôß ãéá áðëþò mumble. ÐáñáäïóéáêÜ, áõôü åðéôñåðüôáí áðü ôïõò DNS resolvers ôïõ BINDBIND. Ùóôüóï, ç ôñÝ÷ïõóá Ýêäïóç ôïõ BIND ðïõ ðåñéëáìâÜíåôáé óôï &os;, äåí ðáñÝ÷åé ðëÝïí óõíôïìåýóåéò ãéá ìç-ðëÞñç ïíüìáôá ôïìÝùí, åêôüò ãéá ôïí ôïìÝá óôïí ïðïßï âñßóêåóôå. ¸ôóé, Ýíáò õðïëïãéóôÞò ìå ìç-ðëÞñåò üíïìá mumble èá ðñÝðåé íá âñåèåß ùò mumble.foo.bar.edu, Þ èá ãßíåé áíáæÞôçóç ãéá áõôüí óôï ñéæéêü ôïìÝá. Ç óõìðåñéöïñÜ áõôÞ åßíáé äéáöïñåôéêÞ áðü ôçí ðñïçãïýìåíç, üðïõ ç áíáæÞôçóç óõíå÷éæüôáí êáé óôï mumble.bar.edu, êáé ôï mumble.edu. Ñßîôå ìéá ìáôéÜ óôï RFC 1535 ãéá ôï ëüãï ðïõ ôï ðáñáðÜíù èåùñåßôå êáêÞ ðñáêôéêÞ, Þ áêüìá êáé êåíü áóöáëåßáò. ¸íáò ôñüðïò ãéá íá ðáñáêÜìøåôå ôï ðñüâëçìá åßíáé íá ðñïóèÝóåôå ôç ãñáììÞ: search foo.bar.edu bar.edu áíôß ãéá ôçí ðñïçãïýìåíç: domain foo.bar.edu óôï áñ÷åßï /etc/resolv.conf. Âåâáéùèåßôå ùóôüóï üôé ç óåéñÜ áíáæÞôçóçò äåí ðçãáßíåé ðÝñá áðü ôï üñéï ìåôáîý ôïðéêÞò êáé äçìüóéáò äéá÷åßñéóçò, üðùò ôï áðïêáëåß ôï RFC 1535. Ôï sendmail äßíåé ôï ìÞíõìá mail loops back to myself (ôï mail åðéóôñÝöåé óôïí åáõôü ìïõ) Ç áðÜíôçóç óå áõôü, õðÜñ÷åé óôï FAQ ôïõ sendmail üðùò öáßíåôáé ðáñáêÜôù: ËáìâÜíù áõôÜ ôá ìçíýìáôá ëÜèïõò: 553 MX list for domain.net points back to relay.domain.net 554 <user@domain.net>... Local configuration error Ðùò ìðïñþ íá ëýóù ôï ðñüâëçìá; ¸÷åôå æçôÞóåé ôï mail ðñïò Ýíá ôïìÝá (ð.÷. ôï domain.net) íá ðñïùèåßôáé ðñïò Ýíá óõãêåêñéìÝíï õðïëïãéóôÞ (óôçí ðåñßðôùóç áõôÞ ôï relay.domain.net) ÷ñçóéìïðïéþíôáò ìéá åããñáöÞ MXMX record, áëëÜ ôï ìç÷Üíçìá áíáìåôÜäïóçò (relay) äåí áíáãíùñßæåé ôïí åáõôü ôïõ ùò domain.net. ÐñïóèÝóôå ôï domain.net óôï /etc/mail/local-host-names [åßíáé ãíùóôü ùò /etc/sendmail.cw ðñéí ôçí Ýêäïóç 8.10] (áí ÷ñçóéìïðïéåßôå ôï FEATURE(use_cw_file)), äéáöïñåôéêÜ ðñïóèÝóôå ôï Cw domain.net óôï /etc/mail/sendmail.cf. Ìðïñåßôå íá âñåßôå ôï FAQ ôïõ sendmail óôç äéåýèõíóç , êáé óõíßóôáôáé íá ôï äéáâÜóåôå áí èÝëåôå íá ðåéñÜîåôå ôéò ñõèìßóåéò ôïõ mail óáò. Ðùò ìðïñþ íá åêôåëÝóù åîõðçñåôçôÞ mail óå õðïëïãéóôÞ ðïõ óõíäÝåôáé ìÝóù åðéëïãéêÞò óýíäåóçò PPPPPP; ÈÝëåôå íá óõíäÝóåôå Ýíá &os; ìç÷Üíçìá óå Ýíá ôïðéêü äßêôõï (LAN) óôï Internet. Ôï &os; ìç÷Üíçìá èá ãßíåé ðýëç ôá÷õäñïìåßïõ ãéá ôï LAN. Ç óýíäåóç PPP äåí åßíáé áðïêëåéóôéêÞ. ÕðÜñ÷ïõí ôïõëÜ÷éóôïí äýï ôñüðïé ãéá íá ôï êÜíåôå áõôü. Ï Ýíáò åßíáé ìå ôç ÷ñÞóç UUCPUUCP . ¸íáò Üëëïò ôñüðïò åßíáé íá âÜëåôå Ýíá åîõðçñåôçôÞ Internet ï ïðïßïò Ý÷åé óõíå÷Þ óýíäåóç, íá óáò ðáñÝ÷åé õðçñåóßá äåõôåñåýïíôïò MX ãéá ôïí ôïìÝá óáò. Ãéá ðáñÜäåéãìá, áí ï ôïìÝáò ôçò åôáéñßáò óáò åßíáé example.com êáé ï ðáñï÷Ýáò óáò Internet Ý÷åé ïñßóåé ôï example.net íá ðáñÝ÷åé õðçñåóßåò äåõôåñåýïíôïò MXMX record ãéá ôïí ôïìÝá óáò: example.com. MX 10 example.com. MX 20 example.net. Ìüíï Ýíáò õðïëïãéóôÞò ìðïñåß íá êáèïñéóôåß ùò ôåëéêüò ðáñáëÞðôçò (ðñïóèÝóôå ôï Cw example.com óôï áñ÷åßï /etc/mail/sendmail.cf óôï example.com). ¼ôáí ôï ìç÷Üíçìá ðïõ óôÝëíåé ìÝóù ôïõ sendmail ðñïóðáèåß íá ðáñáäþóåé ôï mail èá ðñïóðáèÞóåé íá óõíäåèåß óôï äéêü óáò (example.com) ìÝóù ôçò óýíäåóçò modem. Ôï ðéï ðéèáíü åßíáé üôé äåí èá ôá êáôáöÝñåé, ãéáôß äåí èá åßóôå óõíäåìÝíïò åêåßíç ôç óôéãìÞ. Ôï sendmail èá ôï ðáñáäþóåé áõôüìáôá óôçí õðçñåóßá äåõôåñåýïíôïò MX, ð.÷. ôïí ðáñï÷Ýá óáò Internet (example.net). Ôï äåõôåñåýïí MX èá ðñïóðáèåß ðåñéïäéêÜ íá óõíäåèåß óôï ìç÷Üíçìá óáò êáé íá ðáñáäþóåé ôï mail óôïí êýñéï åîõðçñåôçôÞ MX (example.com). Ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå êÜôé üðùò ôï ðáñáêÜôù ùò script åéóüäïõ: #!/bin/sh # Put me in /usr/local/bin/pppmyisp ( sleep 60 ; /usr/sbin/sendmail -q ) & /usr/sbin/ppp -direct pppmyisp Áí ðñüêåéôáé íá ÷ñçóéìïðïéÞóåôå ÷ùñéóôü script ãéá ôçí åßóïäï êÜðïéïõ ÷ñÞóôç, ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå áíôß ãéá ôï ðáñáðÜíù ôï sendmail -qRexample.com óôï script. Áõôü èá åîáíáãêÜóåé ôçí Üìåóç åðåîåñãáóßá üëïõ ôïõ mail óôçí ïõñÜ ãéá ôï example.com. Ðéï ëåðôïìåñÞò ðåñéãñáöÞ ôçò êáôÜóôáóçò öáßíåôáé ðáñáêÜôù: ÌÞíõìá áðü ôçí &a.isp;. > ðáñÝ÷ïõìå äåõôåñåýïí MX ãéá Ýíá ðåëÜôç. Ï ðåëÜôçò óõíäÝåôáé óôéò > õðçñåóßåò ìáò áñêåôÝò öïñÝò ôç ìÝñá áõôüìáôá, ãéá íá ëáìâÜíåé ôá email ôïõ > óôï ðñùôåýïí ôïõ MX (Äåí êáëïýìå ôçí ôïðïèåóßá ôïõ üôáí ëáìâÜíïõìå email > ãéá ôïí ôïìÝá ôïõ). Ôï sendmail ìáò óôÝëíåé ôï mailqueue êÜèå 30 ëåðôÜ. > Ôç äåäïìÝíç óôéãìÞ èá ðñÝðåé íá ìåßíåé óõíäåìÝíïò ãéá 30 ëåðôÜ, > ãéá íá åßíáé âÝâáéïò üôé üëï ôï email ôïõ èá Ý÷åé > ðáñáäïèåß óôïí ðñùôåýïíôá MX. > > ÕðÜñ÷åé êÜðïéá åíôïëÞ ðïõ íá åîáíáãêÜóåé ôï sendmail íá óôåßëåé > üëá ôá mails Üìåóá; Ï ÷ñÞóôçò öõóéêÜ äåí Ý÷åé äéêáéþìáôá > root óôï ìç÷Üíçìá ìáò. Óôçí åíüôçôá privacy flags ôïõ sendmail.cf, õðÜñ÷åé Ýíáò ïñéóìüò Opgoaway,restrictqrun ÁöáéñÝóôå ôï restrictqrun ãéá íá åðéôñÝøåôå óå ìç-root ÷ñÞóôåò íá îåêéíÞóïõí ôçí åðåîåñãáóßá ôçò ïõñÜò. Ìðïñåß åðßóçò íá èÝëåôå íá áíáäéáôÜîåôå ôá MX. Åßìáóôå ôï 1ï MX ãéá áõôïý ôïõ åßäïõò ôïõò ðåëÜôåò, êáé Ý÷ïõìå ïñßóåé: # If we are the best MX for a host, try directly instead of generating # local config error. OwTrue Ìå ôïí ôñüðï áõôü, Ýíá áðïìáêñõóìÝíï site èá ðáñáäßäåé áðåõèåßáò óå óáò, ÷ùñßò íá ðñïóðáèåß ôç óýíäåóç ìå ôï ÷ñÞóôç. ¸ðåéôá ôá óôÝëíåôå óôïí ðåëÜôç óáò. Áõôü ëåéôïõñãåß ìüíï ãéá ìç÷áíÞìáôá, êáé Ýôóé ÷ñåéÜæåôáé íá âÜëåôå ôïí ðåëÜôç óáò íá ïíïìÜóåé ôï ìç÷Üíçìá ôïõ mail customer.com êáé åðßóçò hostname.customer.com óôï DNS. Áðëþò ðñïóèÝóôå ìéá åããñáöÞ ôýðïõ A óôï DNS ãéá ôï customer.com. Ãéáôß ëáìâÜíù óõíÝ÷åéá ìçíýìáôá ëÜèïõò Relaying Denied üôáí óôÝëíù mail áðü Üëëïõò õðïëïãéóôÝò; Óôéò ðñïåðéëåãìÝíåò åãêáôáóôÜóåéò ôïõ &os;, ôï sendmail åßíáé ñõèìéóìÝíï íá óôÝëíåé mail ìüíï áðü ôïí õðïëïãéóôÞ óôïí ïðïßï åêôåëåßôáé. Ãéá ðáñÜäåéãìá, áí õðÜñ÷åé äéáèÝóéìïò äéáêïìéóôÞò POP, ïé ÷ñÞóôåò èá ìðïñïýí íá åëÝã÷ïõí ôï mail ôïõò áðü ôï ó÷ïëåßï, ôï ãñáöåßï, Þ Üëëç áðïìáêñõóìÝíç ôïðïèåóßá, áëëÜ èá åîáêïëïõèïýí íá ìçí ìðïñïýí íá óôåßëïõí ðñïò åîùôåñéêÝò äéåõèýíóåéò. ÔõðéêÜ, ëßãï ìåôÜ áðü ìéá áðüðåéñá áðïóôïëÞò, èá óôáëåß Ýíá email áðü ôïí MAILER-DAEMON ìå ôï ìÞíõìá ëÜèïõò 5.7 Relaying Denied. ÕðÜñ÷ïõí äéÜöïñïé ôñüðïé ãéá íá îåðåñÜóåôå ôï ðñüâëçìá. Ï ðëÝïí áðëüò åßíáé íá âÜëåôå ôç äéåýèõíóç ôïõ ISP óáò óå Ýíá áñ÷åßï relay-domains, /etc/mail/relay-domains. ¸íáò ãñÞãïñïò ôñüðïò ãéá íá ôï êÜíåôå áõôü åßíáé: &prompt.root; echo "your.isp.example.com" > /etc/mail/relay-domains Áöïý äçìéïõñãÞóåôå Þ åðåîåñãáóôåßôå áõôü ôï áñ÷åßï, èá ðñÝðåé íá åðáíåêêéíÞóåôå ôï sendmail. Áõôü äïõëåýåé ìéá ÷áñÜ áí åßóôå äéá÷åéñéóôÞò åîõðçñåôçôÞ êáé äåí åðéèõìåßôå íá óôÝëíåôå mail ôïðéêÜ, Þ áí èÝëåôå íá ÷ñçóéìïðïéÞóåôå Ýíá óýóôçìá ôýðïõ point êáé click óå Ýíá Üëëï ìç÷Üíçìá Þ áêüìá êáé óå Üëëï ISP. Åßíáé åðßóçò ðïëý ÷ñÞóéìï áí Ý÷åôå ñõèìßóåé ìüíï Ýíá Þ äýï ëïãáñéáóìïýò mail. Áí èÝëåôå íá ðñïóèÝóåôå ìåãáëýôåñï áñéèìü äéåõèýíóåùí, ìðïñåßôå íá áíïßîåôå áõôü ôï áñ÷åßï ìå ôïí åðéèõìçôü óõíôÜêôç êåéìÝíïõ, êáé íá ðñïóèÝóåôå üëïõò ôïõò ôïìåßò, Ýíá óå êÜèå ãñáììÞ: your.isp.example.com other.isp.example.net users-isp.example.org www.example.org Ôþñá, ïðïéáäÞðïôå áðïóôïëÞ mail áðü ôï óýóôçìá óáò áðü ïðïéïäÞðïôå õðïëïãéóôÞ áõôÞò ôçò ëßóôáò (ìå ôçí ðñïûðüèåóÞ ï ÷ñÞóôçò íá Ý÷åé ëïãáñéáóìü óôï óýóôçìá óáò), èá åßíáé åðéôõ÷Þò. Ðñüêåéôáé ãéá Ýíá ðïëý êáëü ôñüðï íá åðéôñÝøåôå óôïõò ÷ñÞóôåò íá óôÝëíïõí mail áðü ôï óýóôçìá óáò ìÝóù áðïìáêñõóìÝíçò óýíäåóçò, ÷ùñßò íá åðéôñÝðåôå óå Üëëïõò íá óôÝëíïõí SPAM ìÝóù ôïõ óõóôÞìáôïò óáò. Ðñï÷ùñçìÝíá ÈÝìáôá Ç áêüëïõèç åíüôçôá êáëýðôåé ðéï ðñï÷ùñçìÝíá èÝìáôá, üðùò ôç ñýèìéóç ôïõ mail êáé ñõèìßóåéò ãéá Ýíá ïëüêëçñï ôïìÝá. ÂáóéêÝò Ñõèìßóåéò email configuration ×ùñßò íá ÷ñåéáóôåß íá êÜíåôå êáìéÜ ñýèìéóç, èá ìðïñåßôå íá óôåßëåôå mail ðñïò åîùôåñéêïýò õðïëïãéóôÝò, áñêåß íá Ý÷åôå ñõèìßóåé ôï /etc/resolv.conf Þ íá åêôåëåßôå ôï äéêü óáò åîõðçñåôçôÞ DNS. Áí èÝëåôå íá ðáñáëáìâÜíåôå mail ãéá ôïí õðïëïãéóôÞ óáò óôï äéêü óáò sendmail MTA, õðÜñ÷ïõí äýï ìÝèïäïé: Ìðïñåßôå íá Ý÷åôå äéêü óáò ôïìÝá êáé äéêü óáò åîõðçñåôçôÞ DNS ãéá ôïí ôïìÝá óáò. Ãéá ðáñÜäåéãìá, FreeBSD.org Íá ðáñáëáìâÜíåôå mail áðåõèåßáò óôï ìç÷Üíçìá óáò. Áõôü ãßíåôáé áí ôï mail ðáñáäßäåôáé áðåõèåßáò óôïí õðïëïãéóôÞ óáò, ÷ñçóéìïðïéþíôáò ôïí üíïìá ôïõ (ðñÝðåé íá âñßóêåôáé óôï DNS). Ãéá ðáñÜäåéãìá, example.FreeBSD.org. SMTP ¼ðïéá åðéëïãÞ áðü ôéò ðáñáðÜíù êáé íá êÜíáôå, ãéá íá åßíáé äõíáôÞ ç ðáñáëáâÞ mail áðåõèåßáò óôïí õðïëïãéóôÞ óáò, èá ðñÝðåé íá Ý÷åôå ìüíéìç óôáôéêÞ äéåýèõíóç IP (ü÷é äõíáìéêÞ, üðùò åßíáé ïé ðåñéóóüôåñåò åðéëïãéêÝò óõíäÝóåéò PPP). Áí âñßóêåóôå ðßóù áðü êÜðïéï firewall, èá ðñÝðåé íá åðéôñÝðåé ôç äéáêßíçóç SMTP ðñïò åóÜò. Áí èÝëåôå íá ëáìâÜíåôå mail áðåõèåßáò óôïí õðïëïãéóôÞ óáò, èá ðñÝðåé íá åîáóöáëßóåôå Ýíá áðü ôá ðáñáêÜôù: - MX record - Íá âåâáéùèåßôå üôé ç åããñáöÞ MX (ìå ôï ÷áìçëüôåñï áñéèìü) + Íá âåâáéùèåßôå üôé ç åããñáöÞ MXMX record (ìå ôï ÷áìçëüôåñï áñéèìü) óôï DNS óáò, äåß÷íåé ðñïò ôç äéåýèõíóç IP ôïõ ìç÷áíÞìáôïò óáò. Íá âåâáéùèåßôå üôé äåí õðÜñ÷åé êáìéÜ åããñáöÞ MX óôï DNS ãéá ôïí õðïëïãéóôÞ óáò. ¼ðïéï áðü ôá ðáñáðÜíù êáé áí êÜíåôå, èá ìðïñåßôå íá ëáìâÜíåôå mail áðåõèåßáò óôïí õðïëïãéóôÞ óáò. ÄïêéìÜóôå áõôü: &prompt.root; hostname example.FreeBSD.org &prompt.root; host example.FreeBSD.org example.FreeBSD.org has address 204.216.27.XX Áí âëÝðåôå ôï ðáñáðÜíù, ôï mail ðïõ êáôåõèýíåôáé áðåõèåßáò óôï yourlogin@example.FreeBSD.org èá ðñÝðåé íá ëáìâÜíåôáé ÷ùñßò ðñïâëÞìáôá (èåùñþíôáò üôé ôï sendmail åêôåëåßôå óùóôÜ óôïí õðïëïãéóôÞ example.FreeBSD.org). Áí áíôß ãéá áõôü äåßôå êÜôé óáí ôï ðáñáêÜôù: &prompt.root; host example.FreeBSD.org example.FreeBSD.org has address 204.216.27.XX example.FreeBSD.org mail is handled (pri=10) by hub.FreeBSD.org ¼ëï ôï mail ðïõ êáôåõèýíåôáé ðñïò ôïí õðïëïãéóôÞ óáò (example.FreeBSD.org) èá êáôáëÞîåé íá óõëëÝãåôáé óôï hub ìå ôï ßäéï üíïìá ÷ñÞóôç, áíôß íá óôáëåß áðåõèåßáò óôï ìç÷Üíçìá óáò. Ôéò ðáñáðÜíù ðëçñïöïñßåò, ôéò ÷åéñßæåôáé ï äéêüò óáò åîõðçñåôçôÞò DNS. Ç åããñáöÞ DNS ðïõ ðåñéÝ÷åé ôéò ðëçñïöïñßåò äñïìïëüãçóçò ãéá ôï mail, åßíáé ç Mail eXchange. Áí äåí õðÜñ÷åé åããñáöÞ MX, ôï mail èá ðáñáäßäåôáé áðåõèåßáò óôïí õðïëïãéóôÞ ìÝóù ôçò IP äéåýèõíóçò ôïõ. Ç êáôá÷þñéóç MX ãéá ôïí freefall.FreeBSD.org Ýìïéáæå êÜðïéá óôéãìÞ ìå ôçí ðáñáêÜôù: freefall MX 30 mail.crl.net freefall MX 40 agora.rdrop.com freefall MX 10 freefall.FreeBSD.org freefall MX 20 who.cdrom.com ¼ðùò ìðïñåßôå íá äåßôå, ï freefall åß÷å ðïëëÝò êáôá÷ùñÞóåéò MX. Ç êáôá÷þñçóç ìå ôïí ìéêñüôåñï áñéèìü, åßíáé ï õðïëïãéóôÞò ðïõ ëáìâÜíåé ôï mail áðåõèåßáò, áí åßíáé äéáèÝóéìïò. Áí ãéá êÜðïéï ëüãï äåí åßíáé ðñïóâÜóéìïò, ïé Üëëïé (ðïõ ïñéóìÝíåò öïñÝò êáëïýíôáé backup MXes) äÝ÷ïíôáé ôá ìçíýìáôá ðñïóùñéíÜ êáé ôá ìåôáâéâÜæïõí óå êÜðïéï õðïëïãéóôÞ ìå ÷áìçëüôåñç áñßèìçóç, ìüëéò ãßíåé äéáèÝóéìïò. ÔåëéêÜ ôá ìçíýìáôá êáôáëÞãïõí óôïí õðïëïãéóôÞ ìå ôï ìéêñüôåñï áñéèìü. Ïé åíáëëáêôéêÝò ôïðïèåóßåò MX, èá ðñÝðåé íá ÷ñçóéìïðïéïýí äéáöïñåôéêÝò ãñáììÝò ãéá ôç óýíäåóç ôïõò ìå ôï Internet. ÁõôÞ åßíáé ç êáëýôåñç ëýóç. Ï ðáñï÷Ýáò óáò Þ êÜðïéï Üëëï öéëéêü site, äåí èá Ý÷ïõí êáíÝíá ðñüâëçìá íá óáò ðáñÝ÷ïõí áõôÞ ôçí õðçñåóßá. Mail ãéá ôïí ÔïìÝá Óáò Ãéá íá äçìéïõñãÞóåôå Ýíá mailhost (äçë. Ýíá åîõðçñåôçôÞ mail) èá ðñÝðåé ïðïéïäÞðïôå mail óôÝëíåôáé ðñïò êÜðïéï óôáèìü åñãáóßáò, íá ëáìâÜíåôáé óå áõôüí. ÂáóéêÜ èá èÝëåôå íá äéåêäéêåßôå ïðïéïäÞðïôå mail ðïõ êáôåõèýíåôáé ðñïò ïðïéïäÞðïôå üíïìá ìç÷áíÞìáôïò ôïõ ôïìÝá óáò (óôçí ðåñßðôùóç ìáò ôï *.FreeBSD.org) êáé íá ôï áíáêáôåõèýíåôå ðñïò ôïí åîõðçñåôçôÞ mail, þóôå ïé ÷ñÞóôåò óáò íá ìðïñïýí íá ëÜâïõí ôï mail ôïõò áðü ôïí êåíôñéêü åîõðçñåôçôÞ. DNS Ãéá åõêïëßá, èá ðñÝðåé íá Ý÷åôå Ýíá ëïãáñéáóìü ÷ñÞóôç ìå ôï ßäéï üíïìá ÷ñÞóôç êáé óôá äýï ìç÷áíÞìáôá. ×ñçóéìïðïéÞóôå ãéá ôï óêïðü áõôü ôçí åíôïëÞ &man.adduser.8;. Ï mailhost ðïõ èá ÷ñçóéìïðïéÞóåôå, ðñÝðåé íá åßíáé ôï êáèïñéóìÝíï ìç÷Üíçìá ãéá ôçí áíôáëëáãÞ ìçíõìÜôùí ãéá êÜèå óôáèìü åñãáóßáò ôïõ äéêôýïõ. Áõôü ãßíåôáé óôéò ñõèìßóåéò DNS ìå ôïí áêüëïõèï ôñüðï: example.FreeBSD.org A 204.216.27.XX ; Workstation MX 10 hub.FreeBSD.org ; Mailhost Ìå ôïí ôñüðï áõôü, ôï mail ðïõ êáôåõèýíåôáé ðñïò êÜðïéï óôáèìü åñãáóßáò èá áíáêáôåõèõíèåß ðñïò ôï mailhost, Üó÷åôá ìå ôï ðïõ äåß÷íåé ç åããñáöÞ ôýðïõ Á. Ôï mail óôÝëíåôáé ðñïò ôïí õðïëïãéóôÞ MX. Äåí ìðïñåßôå íá êÜíåôå ôï ðáñáðÜíù, áí äåí åêôåëåßôå ôï äéêü óáò åîõðçñåôçôÞ DNS. Áí áõôü äåí óõìâáßíåé, êáé äåí ìðïñåßôå íá ôï áëëÜîåôå, óõíåííïçèåßôå ìå ôïí ðáñï÷Ýá óáò (ISP) Þ ìå üðïéïí óáò ðáñÝ÷åé õðçñåóßåò DNS. Áí ðáñÝ÷åôå õðçñåóßåò åéêïíéêïý ôá÷õäñïìåßïõ, ïé ðáñáêÜôù ðëçñïöïñßåò èá óáò öáíïýí ÷ñÞóéìåò. Ãéá ôï ðáñÜäåéãìá ìáò, èá õðïèÝóïõìå üôé Ý÷åôå Ýíá ðåëÜôç ìå ôï äéêü ôïõ ôïìÝá, óôçí ðåñßðôùóç ìáò ôï customer1.org, êáé èÝëåôå üëï ôï mail ãéá ôï customer1.org íá óôÝëíåôáé óôï äéêü óáò mailhost, mail.myhost.com. Ç êáôá÷þñéóç óáò óôï DNS èá ìïéÜæåé ìå ôçí ðáñáêÜôù: customer1.org MX 10 mail.myhost.com Óçìåéþóôå üôé äåí ÷ñåéÜæåóôå åããñáöÞ ôýðïõ Á ãéá ôï customer1.org áí èÝëåôå áðëþò íá ÷åéñßæåóôå email ãéá áõôü ôïí ôïìÝá. Íá Ý÷åôå õðüøç óáò üôé äåí èá ìðïñåßôå íá êÜíåôå ping ôï customer1.org áí äåí õðÜñ÷åé ãéá áõôü åããñáöÞ ôýðïõ Á. Ôï ôåëåõôáßï ðñÜãìá ðïõ ðñÝðåé íá êÜíåôå, åßíáé íá ïñßóåôå óôï sendmail ðïõ åêôåëåßôáé óôï äéêü óáò mailhost, ãéá ðïéïõò ôïìåßò Þ / êáé ìç÷áíÞìáôá èá äÝ÷åôáé mail. ÕðÜñ÷ïõí ìåñéêïß äéáöïñåôéêïß ôñüðïé ãéá íá ãßíåé áõôü. Ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå Ýíáí áðü ôïõò ðáñáêÜôù: ÐñïóèÝóôå ôá ìç÷áíÞìáôá óôï áñ÷åßï /etc/mail/local-host-names áí ÷ñçóéìïðïéåßôå ôç äõíáôüôçôá FEATURE(use_cw_file). Áí ÷ñçóéìïðïéåßôå êÜðïéá Ýêäïóç ôïõ sendmail ðñéí ôçí 8.10, ôï áñ÷åßï åßíáé ôï /etc/sendmail.cw. ÐñïóèÝóôå ìéá ãñáììÞ Cwyour.host.com óôï áñ÷åßï óáò /etc/sendmail.cf Þ óôï áñ÷åßï /etc/mail/sendmail.cf áí ÷ñçóéìïðïéåßôå ôçí Ýêäïóç 8.10 ôïõ sendmail Þ êÜðïéá ìåôáãåíÝóôåñç. SMTP ìå UUCP Ç ðñïåðéëåãìÝíç ñýèìéóç ôïõ sendmail ðïõ Ýñ÷åôáé ìå ôï &os;, ðñïïñßæåôáé ãéá äéêôõáêÝò ôïðïèåóßåò ðïõ åßíáé áðåõèåßáò óõíäåäåìÝíåò óôï Internet. Óå ðåñéðôþóåéò ðïõ åßíáé åðéèõìçôÞ ç áíôáëëáãÞ email ìÝóù UUCP, èá ðñÝðåé íá ÷ñçóéìïðïéçèåß äéáöïñåôéêü áñ÷åßï ñõèìßóåùí ãéá ôï sendmail. Ç ÷åéñïêßíçôç ñýèìéóç ôïõ áñ÷åßïõ /etc/mail/sendmail.cf áíÞêåé óôá ðñï÷ùñçìÝíá èÝìáôá. Ç Ýêäïóç 8 ôïõ sendmail ðáñÜãåé áñ÷åßá ñõèìßóåùí ìÝóù ôïõ ðñïåðåîåñãáóôÞ &man.m4.1;, üðïõ ïé ñõèìßóåéò ãßíïíôáé óå Ýíá áíþôåñï åðßðåäï áöáßñåóçò. Ìðïñåßôå íá âñåßôå ôá áñ÷åßá ñýèìéóçò ôïõ&man.m4.1; óôïí êáôÜëïãï /usr/share/sendmail/cf. ÄéáâÜóôå ôï README óôïí êáôÜëïãï cf ãéá ìéá âáóéêÞ åéóáãùãÞ óôéò ñõèìßóåéò ôïõ &man.m4.1;. Ï êáëýôåñïò ôñüðïò ãéá ôçí ðáñÜäïóç mail ìÝóù ôïõ UUCP, åßíáé ìå ôçí ÷ñÞóç ôçò äõíáôüôçôáò mailertable. ÐáñÜãåôáé ìå áõôü ôïí ôñüðï ìéá âÜóç äåäïìÝíùí ðïõ ìðïñåß íá ÷ñçóéìïðïéÞóåé ôï sendmail ãéá íá ðÜñåé áðïöÜóåéò ó÷åôéêÜ ìå ôçí äñïìïëüãçóç. Èá ðñÝðåé áñ÷éêÜ íá äçìéïõñãÞóåôå ôï áñ÷åßï .mc. Èá âñåßôå ìåñéêÜ ðáñáäåßãìáôá óôïí êáôÜëïãï /usr/share/sendmail/cf/cf. ÕðïèÝôïíôáò üôé Ý÷åôå ïíïìÜóåé ôï áñ÷åßï óáò foo.mc, ôï ìüíï ðïõ ÷ñåéÜæåôáé íá êÜíåôå ãéá íá ôï ìåôáôñÝøåôå óå Ýíá Ýãêõñï áñ÷åßï sendmail.cf åßíáé: &prompt.root; cd /etc/mail &prompt.root; make foo.cf &prompt.root; cp foo.cf /etc/mail/sendmail.cf ¸íá ôõðéêü áñ÷åßï .mc èá äåß÷íåé üðùò ôï ðáñáêÜôù: VERSIONID(`Your version number') OSTYPE(bsd4.4) FEATURE(accept_unresolvable_domains) FEATURE(nocanonify) FEATURE(mailertable, `hash -o /etc/mail/mailertable') define(`UUCP_RELAY', your.uucp.relay) define(`UUCP_MAX_SIZE', 200000) define(`confDONT_PROBE_INTERFACES') MAILER(local) MAILER(smtp) MAILER(uucp) Cw your.alias.host.name Cw youruucpnodename.UUCP Ïé ãñáììÝò ðïõ ðåñéÝ÷ïõí ôéò äõíáôüôçôåò accept_unresolvable_domains, nocanonify, and confDONT_PROBE_INTERFACES èá áðïôñÝøïõí ôç ÷ñÞóç ôïõ DNS êáôÜ ôçí ðáñÜäïóç ôïõ mail. Ç ïäçãßá UUCP_RELAY áðáéôåßôáé ãéá ôçí õðïóôÞñéîç ðáñÜäïóçò ìÝóù ôïõ UUCP. Áðëþò ôïðïèåôÞóôå åêåß Ýíá üíïìá ìç÷áíÞìáôïò óôï Internet ðïõ íá ìðïñåß íá ÷åéñéóôåß äéåõèýíóåéò øåõäï-ôïìÝùí .UUCP. Ôï ðéï ðéèáíü åßíáé íá âÜëåôå åêåß ôïí áíáìåôáäüôç (relay) ãéá mail ðïõ ðáñÝ÷åé ï ISP óáò. ¸÷ïíôáò êÜíåé ôï ðáñáðÜíù, èá ÷ñåéáóôåßôå Ýíá áñ÷åßï /etc/mail/mailertable. Áí Ý÷åôå ìüíï ìéá óýíäåóç ìå ôïí Ýîù êüóìï ðïõ ÷ñçóéìïðïéåßôáé ãéá üëá óáò ôá mail, ôï ðáñáêÜôù áñ÷åßï åßíáé åðáñêÝò: # # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable . uucp-dom:your.uucp.relay ¸íá ðéï ðïëýðëïêï ðáñÜäåéãìá èá ìïéÜæåé ìå ôï ðáñáêÜôù: # # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable # horus.interface-business.de uucp-dom:horus .interface-business.de uucp-dom:if-bus interface-business.de uucp-dom:if-bus .heep.sax.de smtp8:%1 horus.UUCP uucp-dom:horus if-bus.UUCP uucp-dom:if-bus . uucp-dom: Ïé ôñåéò ðñþôåò ãñáììÝò ÷åéñßæïíôáé åéäéêÝò ðåñéðôþóåéò, üðïõ ôï mail ðïõ áðåõèýíåôáé óå êÜðïéï ôïìÝá äåí èá ðñÝðåé íá óôáëèåß óôçí ðñïåðéëåãìÝíç äéáäñïìÞ, áëëÜ áíôßèåôá óå êÜðïéï ãåéôïíéêü UUCP ðñïêåéìÝíïõ íá óõíôïìåõèåß ôï ìïíïðÜôé ðáñÜäïóçò. Ç åðüìåíç ãñáììÞ ÷åéñßæåôáé ôï mail ðñïò ôïí ôïðéêü ôïìÝá Ethernet, üðïõ åßíáé äõíáôÞ ç ðáñÜäïóç ìÝóù SMTP. ÔÝëïò, ïé ãåéôïíéêïß UUCP áíáöÝñïíôáé ìå ãñáöÞ øåõäï-ôïìÝùí UUCP þóôå íá åðéôñÝðåôáé óå êÜðïéïí uucp-neighbor !recipient íá ðáñáêÜìøåé ôïõò ðñïåðéëåãìÝíïõò êáíüíåò. Ç ôåëåõôáßá ãñáììÞ åßíáé ðÜíôá ìéá ìïíáäéêÞ ôåëåßá, ç ïðïßá ôáéñéÜæåé ìå ïôéäÞðïôå Üëëï, ìå ðáñÜäïóç UUCP óå Ýíá ãåéôïíéêü UUCP ï ïðïßïò åíåñãåß ùò ãåíéêÞ ðýëç mail ðñïò ôïí õðüëïéðï êüóìï. ¼ëá ôá ïíüìáôá õðïëïãéóôþí ðïõ âñßóêïíôáé ìåôÜ ôï uucp-dom: èá ðñÝðåé íá åßíáé Ýãêõñïé UUCP ãåßôïíåò, üðùò ìðïñåßôå íá âåâáéþóåôå ÷ñçóéìïðïéþíôáò ôï uuname. Óáò õðåíèõìßæïõìå üôé áõôü ôï áñ÷åßï ðñÝðåé íá ìåôáôñáðåß óå ìéá âÜóç äåäïìÝíùí DBM ðñéí ÷ñçóéìïðïéçèåß. Ìðïñåßôå íá âÜëåôå ôç ãñáììÞ åíôïëþí ðïõ áðáéôåßôáé ãéá íá åðéôåõ÷èåß áõôü ùò ó÷üëéï óôçí áñ÷Þ ôïõ áñ÷åßïõ mailertable. ÐñÝðåé ðÜíôïôå íá åêôåëåßôå áõôÞ ôçí åíôïëÞ êÜèå öïñÜ ðïõ áëëÜæåôå ôï áñ÷åßï mailertable. Ìéá ôåëåõôáßá õðüäåéîç: áí äåí åßóôå âÝâáéïé ãéá ôï áí èá ëåéôïõñãÞóåé êÜðïéá óõãêåêñéìÝíç äñïìïëüãçóç mail, èõìçèåßôå ôçí åðéëïãÞ ôïõ sendmail. ÁõôÞ îåêéíÜåé ôï sendmail óå êáôÜóôáóç äïêéìÞò äéåõèýíóåùí. ÃñÜøôå 3,0, áêïëïõèïýìåíï áðü ôç äéåýèõíóç ðïõ èÝëåôå íá åëÝãîåôå ãéá äñïìïëüãçóç mail. Ç ôåëåõôáßá ãñáììÞ èá óáò ðåé ôïí åóùôåñéêü áíôéðñüóùðï mail ðïõ ÷ñçóéìïðïéÞèçêå, ôç äéåýèõíóç ðñïïñéóìïý ìå ôçí ïðïßá êëÞèçêå, êáèþò êáé ôçí (ðéèáíþò ìåôáöñáóìÝíç) äéåýèõíóç. Ìðïñåßôå íá âãåßôå áðü áõôÞ ôçí êáôÜóôáóç, ðëçêôñïëïãþíôáò CtrlD. &prompt.user; sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 3,0 foo@example.com canonify input: foo @ example . com ... parse returns: $# uucp-dom $@ your.uucp.relay $: foo < @ example . com . > > ^D Bill Moran ÓõíåéóöïñÜ áðü ôïí Ñýèìéóç ÅîõðçñåôçôÞ Ìüíï ãéá ÁðïóôïëÞ ÕðÜñ÷ïõí ðïëëÝò ðåñéðôþóåéò, ðïõ ìðïñåß íá èÝëåôå ìüíï íá óôÝëíåôå mail ìÝóù êÜðïéïõ áíáìåôáäüôç. ÌåñéêÜ ðáñáäåßãìáôá: Ï õðïëïãéóôÞò óáò ÷ñçóéìïðïéåßôáé ùò desktop, áëëÜ èÝëåôå íá ÷ñçóéìïðïéÞóåôå ðñïãñÜììáôá üðùò ôï &man.send-pr.1;. Ãéá íá ãßíåé áõôü èá ðñÝðåé íá ÷ñçóéìïðïéÞóåôå ôïí áíáìåôáäüôç mail ðïõ ðáñÝ÷åé ï ISP óáò. Ï õðïëïãéóôÞò óáò åßíáé Ýíáò åîõðçñåôçôÞò ðïõ äåí ÷åéñßæåôáé ôï mail ôïðéêÜ, áëëÜ ÷ñåéÜæåôáé íá ôï äþóåé åî' ïëïêëÞñïõ óå êÜðïéï áíáìåôáäüôç ãéá åðåîåñãáóßá. ÏðïéïäÞðïôå ó÷åäüí MTA åßíáé éêáíü íá êáëýøåé ôïí ðáñáðÜíù ñüëï. Äõóôõ÷þò, ìðïñåß íá åßíáé ðïëý äýóêïëï íá ñõèìßóåôå óùóôÜ Ýíá ðëÞñåò MTA þóôå áðëþò íá óôÝëíåé ôï mail ðñïò áíáìåôÜäïóç. ÐñïãñÜììáôá üðùò ôï sendmail êáé ôï postfix åßíáé õðåñâïëéêÜ ìåãÜëá ãéá áõôÞ ôç äïõëåéÜ. Åðéðñüóèåôá, áí ÷ñçóéìïðïéåßôå êÜðïéá óõíçèéóìÝíç õðçñåóßá ðñüóâáóçò óôï Internet, ç óõìöùíßá ìå ôçí åôáéñßá ðáñï÷Þò ìðïñåß íá óáò áðáãïñåýåé íá åêôåëåßôå ôï äéêü óáò åîõðçñåôçôÞ mail. Ï åõêïëüôåñïò ôñüðïò ãéá íá åêðëçñþóåôå áõôÝò ôéò áíÜãêåò åßíáé íá åãêáôáóôÞóåôå ôï port mail/ssmtp ÅêôåëÝóôå ôéò áêüëïõèåò åíôïëÝò ùò root: &prompt.root; cd /usr/ports/mail/ssmtp &prompt.root; make install replace clean ÌåôÜ ôçí åãêáôÜóôáóç, ôï mail/ssmtp ìðïñåß íá ñõèìéóôåß ìå Ýíá áñ÷åßï ôåóóÜñùí ìüëéò ãñáììþí, ôï ïðïßï âñßóêåôáé óôï /usr/local/etc/ssmtp/ssmtp.conf: root=yourrealemail@example.com mailhub=mail.example.com rewriteDomain=example.com hostname=_HOSTNAME_ Âåâáéùèåßôå üôé ÷ñçóéìïðïéåßôå ôçí ðñáãìáôéêÞ äéåýèõíóç email ãéá ôïí root. ÂÜëôå ôïí áíáìåôáäüôç mail ôïõ ISP óáò óôç èÝóç mail.example.com (ìåñéêïß ISP ôïí ïíïìÜæïõí åîõðçñåôçôÞ åîåñ÷üìåíïõ ôá÷õäñïìåßïõ Þ åîõðçñåôçôÞ SMTP). Âåâáéùèåßôå üôé Ý÷åôå áðåíåñãïðïéÞóåé ðëÞñùò ôï sendmail, áêüìá êáé ôçí õðçñåóßá åîåñ÷üìåíùí ìçíõìÜôùí. Äåßôå ôï ãéá ëåðôïìÝñåéåò. ÕðÜñ÷ïõí êÜðïéåò áêüìá äéáèÝóéìåò åðéëïãÝò óôï mail/ssmtp. Äåßôå ôï ðáñÜäåéãìá ôïõ áñ÷åßïõ ñõèìßóåùí óôï /usr/local/etc/ssmtp Þ ôç óåëßäá manual ôïõ ssmtp ãéá ðåñéóóüôåñá ðáñáäåßãìáôá êáé ðëçñïöïñßåò. Ñõèìßæïíôáò ôï ssmtp ìå áõôü ôïí ôñüðï, èá åßíáé äõíáôÞ ç óùóôÞ ëåéôïõñãßá ïðïéïõäÞðïôå ëïãéóìéêïý óôïí õðïëïãéóôÞ óáò ðïõ ÷ñåéÜæåôáé íá óôåßëåé mail. Åðßóçò äåí ðáñáâéÜæåôáé ìå áõôü ôïí ôñüðï ç Üäåéá ÷ñÞóçò ôïõ ISP óáò êáé äåí ìðïñåß ï õðïëïãéóôÞò óáò íá ðáñáâéáóôåß êáé íá ÷ñçóéìïðïéçèåß ãéá ôçí áðïóôïëÞ áíåðéèýìçôùí ìçíõìÜôùí (spam). ×ñçóéìïðïéþíôáò ôï Mail ÌÝóù ÅðéëïãéêÞò (Dialup) Óýíäåóçò Áí Ý÷åôå óôáôéêÞ äéåýèõíóç IP, äåí èá ÷ñåéáóôåß íá áëëÜîåôå êáìéÜ áðü ôéò ðñïåðéëïãÝò. Ñõèìßóôå ôï üíïìá ôïõ õðïëïãéóôÞ óáò þóôå íá ôáéñéÜæåé ìå áõôü ðïõ óáò Ý÷åé ïñéóôåß ãéá ôï Internet, êáé ôï sendmail èá êÜíåé ôá õðüëïéðá. Áí ëáìâÜíåôå äõíáìéêÞ IP êáé ÷ñçóéìïðïéåßôå åðéëïãéêÞ PPP óýíäåóç ìå ôï Internet, ðéèáíüí äéáèÝôåôå ìéá èõñßäá ôá÷õäñïìåßïõ (mailbox) óôïí åîõðçñåôçôÞ mail ôïõ ðáñï÷Ýá óáò. Áò õðïèÝóïõìå üôé ï ôïìÝáò ôïõ ISP óáò åßíáé example.net, êáé üôé ôï üíïìá ÷ñÞóôç óáò åßíáé user, ôï ìç÷Üíçìá óáò ëÝãåôáé bsd.home, êáé ï ISP óáò, óáò Ý÷åé ðåé üôé ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôï relay.example.net ùò áíáìåôáäüôç ãéá ôï mail. Ãéá íá ìðïñÝóåôå íá ëÜâåôå mail áðü ôç èõñßäá óáò, èá ÷ñåéáóôåßôå êÜðïéï áíôéðñüóùðï áíÜëçøçò (retrieval agent). Ôï âïçèçôéêü ðñüãñáììá fetchmail åßíáé ìéá êáëÞ åðéëïãÞ, êáèþò õðïóôçñßæåé ðïëëÜ äéáöïñåôéêÜ ðñùôüêïëëá. Ôï ðñüãñáììá áõôü åßíáé äéáèÝóéìï ùò ðáêÝôï Þ áðü ôçí ÓõëëïãÞ ôùí Ports (mail/fetchmail). ÓõíÞèùò, ï ISP óáò èá ðáñÝ÷åé ôçí õðçñåóßá POP. Áí ÷ñçóéìïðïéåßôå PPP ÷ñÞóôç, ìðïñåßôå íá êáôåâÜóåôå áõôüìáôá ôï mail óáò ìåôÜ ôçí áðïêáôÜóôáóç ôçò óýíäåóçò óáò, ÷ñçóéìïðïéþíôáò ôçí áêüëïõèç êáôá÷þñéóç óôï /etc/ppp/ppp.linkup: MYADDR: !bg su user -c fetchmail Áí ÷ñçóéìïðïéåßôå ôï sendmail (üðùò öáßíåôáé ðáñáêÜôù) ãéá íá ðáñáäþóåôå mail óå ìç-ôïðéêïýò ëïãáñéáóìïýò, ðéèáíüí íá èÝëåôå ôï sendmail íá åðåîåñãÜæåôáé ôçí ïõñÜ ôïõ mail áìÝóùò ìåôÜ ôçí áðïêáôÜóôáóç ôçò óýíäåóçò. Ãéá íá ôï êÜíåôå áõôü, âÜëôå ôçí ðáñáêÜôù åíôïëÞ áìÝóùò ìåôÜ ôçí åíôïëÞ fetchmail óôï áñ÷åßï /etc/ppp/ppp.linkup: !bg su user -c "sendmail -q" Áò õðïèÝóïõìå üôé õðÜñ÷åé Ýíáò ëïãáñéáóìüò ãéá ôïí user óôïí bsd.home. Óôïí ðñïóùðéêü êáôÜëïãï ôïõ user óôï bsd.home, äçìéïõñãÞóôå Ýíá áñ÷åßï .fetchmailrc: poll example.net protocol pop3 fetchall pass MySecret Ôï áñ÷åßï áõôü äåí èá ðñÝðåé íá åßíáé áíáãíþóéìï áðü êáíÝíá, åêôüò áðü ôïí user, êáèþò ðåñéÝ÷åé ôïí êùäéêü MySecret. Ãéá íá ìðïñåßôå íá óôåßëåôå mail ìå ôç óùóôÞ åðéêåöáëßäá from:, èá ðñÝðåé íá ñõèìßóåôå ôï sendmail íá ÷ñçóéìïðïéåß ôï user@example.net áíôß ãéá ôï user@bsd.home. ºóùò åðßóçò íá èÝëåôå íá ñõèìßóåôå ôï sendmail íá óôÝëíåé üëï ôï mail ìÝóù ôïõ relay.example.net, þóôå ç ìåôÜäïóç ôïõ mail íá åßíáé ôá÷ýôåñç. Ôï áêüëïõèï áñ÷åßï .mc èá ðñÝðåé íá åßíáé åðáñêÝò: VERSIONID(`bsd.home.mc version 1.0') OSTYPE(bsd4.4)dnl FEATURE(nouucp)dnl MAILER(local)dnl MAILER(smtp)dnl Cwlocalhost Cwbsd.home MASQUERADE_AS(`example.net')dnl FEATURE(allmasquerade)dnl FEATURE(masquerade_envelope)dnl FEATURE(nocanonify)dnl FEATURE(nodns)dnl define(`SMART_HOST', `relay.example.net') Dmbsd.home define(`confDOMAIN_NAME',`bsd.home')dnl define(`confDELIVERY_MODE',`deferred')dnl ÄéáâÜóôå ôçí ðñïçãïýìåíç åíüôçôá ãéá ëåðôïìÝñåéåò ó÷åôéêÜ ìå ôçí ìåôáôñïðÞ áõôïý ôïõ áñ÷åßïõ .mc óå Ýíá áñ÷åßï sendmail.cf. Åðßóçò, ìç îå÷Üóåôå íá åðáíåêêéíÞóåôå ôï sendmail ìåôÜ ôçí åíçìÝñùóç ôïõ sendmail.cf. James Gorham ÃñÜöôçêå áðü ôïí Ðéóôïðïßçóç Áõèåíôéêüôçôáò óôï SMTP Ç ÷ñÞóç SMTP ìå ðéóôïðïßçóç áõèåíôéêüôçôáò óôïí åîõðçñåôçôÞ ôá÷õäñïìåßïõ óáò, ìðïñåß íá óáò ðñïóöÝñåé ìéá óåéñÜ áðü ïöÝëç. Ìðïñåß íá ðñïóèÝóåé Ýíá áêüìá åðßðåäï áóöÜëåéáò óôï sendmail, åíþ Ý÷åé êáé ôï ðëåïíÝêôçìá üôé äßíåé ôç äõíáôüôçôá óôïõò ÷ñÞóôåò öïñçôþí õðïëïãéóôþí (ðïõ óõ÷íÜ óõíäÝïíôáé ìÝóù äéáöïñåôéêþí äéêôýùí) íá ÷ñçóéìïðïéïýí ôïí ßäéï åîõðçñåôçôÞ ôá÷õäñïìåßïõ ÷ùñßò ôçí áíÜãêç åðáíáñýèìéóçò êÜèå öïñÜ ôïõ ðñïãñÜììáôïò áðïóôïëÞò / ëÞøçò ôá÷õäñïìåßïõ. ÅãêáôáóôÞóôå ôï security/cyrus-sasl2 áðü ôç ÓõëëïãÞ ôùí Ports. Ôï port áõôü õðïóôçñßæåé ìéá óåéñÜ áðü åðéëïãÝò ðïõ ìðïñåßôå íá èÝóåôå êáôÜ ôçí ìåôáãëþôôéóç. Ãéá íá ìðïñÝóåôå íá ÷ñçóéìïðïéÞóåôå ôçí ìÝèïäï áõèåíôéêïðïßçóçò óôï SMTP ðïõ óõæçôÜìå åäþ, âåâáéùèåßôå üôé åßíáé åíåñãïðïéçìÝíç ç åðéëïãÞ . ÌåôÜ ôçí åãêáôÜóôáóç ôïõ security/cyrus-sasl2, ôñïðïðïéÞóôå ôï áñ÷åßï /usr/local/lib/sasl2/Sendmail.conf (Þ äçìéïõñãÞóôå ôï áí äåí õðÜñ÷åé) êáé ðñïóèÝóôå ôçí ðáñáêÜôù ãñáììÞ: pwcheck_method: saslauthd ÅãêáôáóôÞóôå Ýðåéôá ôï security/cyrus-sasl2-saslauthd, êáé ðñïóèÝóôå óôï /etc/rc.conf ôçí áêüëïõèç ãñáììÞ: saslauthd_enable="YES" ÔÝëïò, îåêéíÞóôå ôï äáßìïíá saslauthd: &prompt.root; /usr/local/etc/rc.d/saslauthd start Ï äáßìïíáò áõôüò äñá ùò åíäéÜìåóïò ãéá ôï sendmail þóôå íá ãßíåôáé ðéóôïðïßçóç áõèåíôéêüôçôáò ìÝóù ôçò âÜóçò äåäïìÝíùí êùäéêþí passwd ôïõ &os; óõóôÞìáôïò óáò. Ìå áõôü ôïí ôñüðï áðáëëÜóóåóôå áðü ôçí áíÜãêç äçìéïõñãßáò íÝïõ óåô áðü ïíüìáôá ÷ñçóôþí êáé êùäéêïýò ãéá êÜèå ÷ñÞóôç ðïõ ÷ñåéÜæåôáé íá ÷ñçóéìïðïéÞóåé ðéóôïðïßçóç óôï SMTP. ×ñçóéìïðïéåßôáé ôï ßäéï üíïìá êáé êùäéêüò, ôüóï ãéá åßóïäï óôï óýóôçìá, üóï êáé ãéá ôï mail. Åðåîåñãáóôåßôå ôþñá ôï /etc/make.conf êáé ðñïóèÝóôå ôéò áêüëïõèåò ãñáììÝò: SENDMAIL_CFLAGS=-I/usr/local/include/sasl -DSASL SENDMAIL_LDFLAGS=-L/usr/local/lib SENDMAIL_LDADD=-lsasl2 Ïé ãñáììÝò áõôÝò, ðáñÝ÷ïõí óôï sendmail ôéò êáôÜëëçëåò ñõèìßóåéò þóôå íá óõíäåèåß óùóôÜ ìå ôï cyrus-sasl2 êáôÜ ôç äéÜñêåéá ôçò ìåôáãëþôôéóçò. Âåâáéùèåßôå üôé åßíáé åãêáôåóôçìÝíï ôï ðáêÝôï cyrus-sasl2 ðñéí îåêéíÞóåôå ôçí åðáíáìåôáãëþôôéóç ôïõ sendmail. Åðáíáìåôáãëùôôßóôå ôï sendmail åêôåëþíôáò ôéò ðáñáêÜôù åíôïëÝò: &prompt.root; cd /usr/src/lib/libsmutil &prompt.root; make cleandir && make obj && make &prompt.root; cd /usr/src/lib/libsm &prompt.root; make cleandir && make obj && make &prompt.root; cd /usr/src/usr.sbin/sendmail &prompt.root; make cleandir && make obj && make && make install Ç ìåôáãëþôôéóç ôïõ sendmail äåí ðñÝðåé íá ðáñïõóéÜóåé ðñïâëÞìáôá, áí ôï /usr/src äåí Ý÷åé áëëÜîåé óå ìåãÜëï âáèìü êáé åöüóïí õðÜñ÷ïõí ïé êïéíü÷ñçóôåò âéâëéïèÞêåò ðïõ áðáéôïýíôáé. ÌåôÜ ôçí ìåôáãëþôôéóç êáé åðáíåãêáôÜóôáóç ôïõ sendmail, åðåîåñãáóôåßôå ôï áñ÷åßï /etc/mail/freebsd.mc (Þ üðïéï áñ÷åßï ÷ñçóéìïðïéåßôå ùò .mc. Ðïëëïß äéá÷åéñéóôÝò åðéëÝãïõí íá ÷ñçóéìïðïéÞóïõí ôçí Ýîïäï ôçò åíôïëÞò &man.hostname.1; ùò üíïìá ãéá ôï áñ÷åßï .mc ãéá íá åîáóöáëßóïõí üôé åßíáé ìïíáäéêü). ÐñïóèÝóôå óå áõôü ôéò áêüëïõèåò ãñáììÝò: dnl set SASL options TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl Ïé åðéëïãÝò áõôÝò ñõèìßæïõí ôéò äéáöïñåôéêÝò ìåèüäïõò ðïõ Ý÷åé óôç äéÜèåóç ôïõ ôï sendmail, ðñïêåéìÝíïõ íá ðéóôïðïéÞóåé ôïõò ÷ñÞóôåò. Áí èÝëåôå íá ÷ñçóéìïðïéÞóåôå êÜðïéá ìÝèïäï äéáöïñåôéêÞ áðü ôï pwcheck, äåßôå ôçí ôåêìçñßùóç ðïõ ðåñéëáìâÜíåôáé. ÔÝëïò, åêôåëÝóôå &man.make.1; åíþ âñßóêåóôå óôïí êáôÜëïãï /etc/mail. Ìå ôïí ôñüðï áõôü, èá ÷ñçóéìïðïéçèåß ôï íÝï óáò .mc áñ÷åßï êáé èá äçìéïõñãçèåß Ýíá áñ÷åßï .cf ìå üíïìá freebsd.cf (Þ ïôéäÞðïôå üíïìá åß÷áôå äþóåé óôï áñ÷åßï .mc). ×ñçóéìïðïéÞóôå Ýðåéôá ôçí åíôïëÞ make install restart, ç ïðïßá èá áíôéãñÜøåé ôï áñ÷åßï óôï sendmail.cf, êáé èá åðáíåêêéíÞóåé óùóôÜ ôï sendmail. Ãéá ðåñéóóüôåñåò ëåðôïìÝñåéåò ó÷åôéêÜ ìå áõôÞ ôç äéáäéêáóßá, èá ðñÝðåé íá äéáâÜóåôå ôï áñ÷åßï /etc/mail/Makefile. Áí üëá ðÞãáí êáëÜ, èá ðñÝðåé íá ìðïñåßôå íá äþóåôå ôá óôïé÷åßá åéóüäïõ óáò óôï ðñüãñáììá ðïõ ÷ñçóéìïðïéåßôå ãéá áðïóôïëÞ êáé ëÞøç mail, êáé íá óôåßëåôå Ýíá äïêéìáóôéêü ìÞíõìá. Ãéá íá äéåñåõíÞóåôå ðåñéóóüôåñï ôç ëåéôïõñãßá, èÝóôå ôçí åðéëïãÞ ôïõ sendmail óôï 13 êáé ðáñáêïëïõèÞóôå ôï /var/log/maillog ãéá ôõ÷üí ëÜèç. Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò, ðáñáêáëïýìå íá äåßôå ôç óåëßäá ôïõ sendmail ðïõ áöïñÜ ôçí ðéóôïðïßçóç áõèåíôéêüôçôáò óôï SMTP. Marc Silver ÓõíåéóöïñÜ ôïõ ÐñïãñÜììáôá Ôá÷õäñïìåßïõ ãéá ôïí ×ñÞóôç Mail User Agents ¸íá ðñüãñáììá Áíôéðñïóþðïõ Ôá÷õäñïìåßïõ ×ñÞóôç (Mail User Agent, MUA), åßíáé ìéá åöáñìïãÞ ðïõ ÷ñçóéìïðïéåßôáé ãéá ôçí áðïóôïëÞ êáé ëÞøç email. ÅðéðëÝïí, êáèþò ôï email åîåëßóóåôáé êáé ãßíåôáé ðéï ðïëýðëïêï, ôá MUA ãßíïíôáé üëï êáé éó÷õñüôåñá üóï áöïñÜ ôïí ôñüðï ðïõ áëëçëåðéäñïýí ìå ôï email. Áõôü äßíåé óôïõò ÷ñÞóôåò ðåñéóóüôåñåò ëåéôïõñãßåò êáé åõåëéîßá. To &os; ðåñéÝ÷åé õðïóôÞñéîç ãéá ìåãÜëï áñéèìü áðü ðñïãñÜììáôá ôá÷õäñïìåßïõ, êáé üëá ìðïñïýí íá åãêáôáóôáèïýí ðïëý åýêïëá ìÝóù ôçò ÓõëëïãÞò ôùí Ports ôïõ &os;. Ïé ÷ñÞóôåò ìðïñïýí íá åðéëÝîïõí ìåôáîý ãñáöéêþí ðñïãñáììÜôùí, üðùò ôï evolution Þ ôï balsa, êáé ðñïãñÜììáôá êïíóüëáò üðùò ôá mutt, alpine Þ mail, Þ áêüìá êáé ôéò äéåðáöÝò web ðïõ ðñïóöÝñïíôáé áðü ìåñéêïýò ìåãÜëïõò ïñãáíéóìïýò. mail Ôï &man.mail.1; åßíáé ôï ðñïåðéëåãìÝíï ðñüãñáììá ôá÷õäñïìåßïõ (MUA) in &os;. Ðñüêåéôáé ãéá Ýíá MUA êïíóüëáò, ôï ïðïßï ðñïóöÝñåé üëåò ôéò âáóéêÝò ëåéôïõñãßåò ðïõ áðáéôïýíôáé ãéá ôçí áðïóôïëÞ êáé ëÞøç email óå ìïñöÞ êåéìÝíïõ, áí êáé Ý÷åé ðåñéïñéóìÝíåò äõíáôüôçôåò üóï áöïñÜ óõíçììÝíá áñ÷åßá êáé õðïóôçñßæåé ìüíï ôïðéêÝò èõñßäåò. Áí êáé ôï mail äåí õðïóôçñßæåé åããåíþò ôç ëÞøç email ìÝóù äéáêïìéóôþí POP Þ IMAP, åßíáé ùóôüóï äõíáôüí íá êáôåâÜóåôå ôá email óå ìéá ôïðéêÞ èõñßäá (mbox) ÷ñçóéìïðïéþíôáò êÜðïéá åöáñìïãÞ üðùò ôï fetchmail, ôï ïðïßï èá óõæçôÞóïõìå áñãüôåñá óå áõôü ôï êåöÜëáéï (). Ãéá ôçí áðïóôïëÞ êáé ëÞøç email, åêôåëÝóôå ôçí åíôïëÞ mail: &prompt.user; mail Ôá ðåñéå÷üìåíá ôçò èõñßäáò ôïõ ÷ñÞóôç óôïí êáôÜëïãï /var/mail èá äéáâáóôïýí áõôüìáôá áðü ôï ðñüãñáììá mail. Áí ç èõñßäá ôá÷õäñïìåßïõ åßíáé Üäåéá, ôï ðñüãñáììá ôåñìáôßæåôáé ìå ôï ìÞíõìá üôé äåí âñÝèçêå áëëçëïãñáößá. ÌåôÜ ôçí áíÜãíùóç ôçò èõñßäáò, îåêéíÜ ç äéåðáöÞ ôçò åöáñìïãÞò êáé åìöáíßæåôáé ìéá ëßóôá ìå ìçíýìáôá. Ôá ìçíýìáôá áñéèìïýíôáé áõôüìáôá, üðùò öáßíåôáé óôï ðáñáêÜôù ðáñÜäåéãìá: Mail version 8.1 6/6/93. Type ? for help. "/var/mail/marcs": 3 messages 3 new >N 1 root@localhost Mon Mar 8 14:05 14/510 "test" N 2 root@localhost Mon Mar 8 14:05 14/509 "user account" N 3 root@localhost Mon Mar 8 14:05 14/509 "sample" Ôá ìçíýìáôá ìðïñïýí ðëÝïí íá äéáâáóôïýí ìå ôçí åíôïëÞ t ôçò åíôïëÞò mail, áêïëïõèïýìåíç ìå ôïí áñéèìü ôïõ mail ðïõ èÝëåôå íá åìöáíéóôåß. Óôï ðáñÜäåéãìá áõôü èá äéáâÜóïõìå ôï ðñþôï ìÞíõìá: & t 1 Message 1: From root@localhost Mon Mar 8 14:05:52 2004 X-Original-To: marcs@localhost Delivered-To: marcs@localhost To: marcs@localhost Subject: test Date: Mon, 8 Mar 2004 14:05:52 +0200 (SAST) From: root@localhost (Charlie Root) This is a test message, please reply if you receive it. ¼ðùò öáßíåôáé óôï ðáñáðÜíù ðáñÜäåéãìá, ç ÷ñÞóç ôïõ ðëÞêôñïõ t èá ðñïêáëÝóåé ôçí åìöÜíéóç ôïõ ìçíýìáôïò ìå ðëÞñåéò åðéêåöáëßäåò. Ãéá íá äåßôå îáíÜ ôç ëßóôá ìå ôá ìçíýìáôá, ÷ñçóéìïðïéÞóôå ôï ðëÞêôñï h. Áí ôï mail áðáéôåß áðÜíôçóç, ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôçí åíôïëÞ mail ÷ñçóéìïðïéþíôáò ôéò åíóùìáôùìÝíåò åíôïëÝò R Þ r. Ôï ðëÞêôñï R ïäçãåß ôï mail íá áðáíôÞóåé ìüíï óôïí áðïóôïëÝá ôïõ ìçíýìáôïò, åíþ ôï r áðáíôÜåé ü÷é ìüíï óôïí áðïóôïëÝá, áëëÜ óå üëïõò ôïõò ðáñáëÞðôåò ôïõ ìçíýìáôïò. Ìðïñåßôå åðßóçò íá ðñïóèÝóåôå ìåôÜ áðü ôéò åíôïëÝò áõôÝò, ôïí áñéèìü ôïõ ìçíýìáôïò óôï ïðïßï èÝëåôå íá áðáíôÞóåôå. Áöïý ôï êÜíåôå áõôü, èá ðñÝðåé íá ãñÜøåôå ôçí áðÜíôçóç óáò êáé íá óçìåéþóåôå ôï ôÝëïò ôçò ãñÜöïíôáò ìéá ìüíï . óå ìéá íÝá ãñáììÞ. Ìðïñåßôå íá äåßôå Ýíá ðáñÜäåéãìá ðáñáêÜôù: & R 1 To: root@localhost Subject: Re: test Thank you, I did get your email. . EOT Ãéá íá óôåßëåôå íÝï mail, èá ðñÝðåé íá ÷ñçóéìïðïéÞóåôå ôï ðëÞêôñï m, áêïëïõèïýìåíï áðü ôçí äéåýèõíóç ôïõ ðáñáëÞðôç. Ìðïñåßôå íá äþóåôå ðïëëáðëïýò ðáñáëÞðôåò, ÷ùñßæïíôáò ìåôáîý ôïõò ôéò äéåõèýíóåéò ìå ,. Ìðïñåßôå Ýðåéôá íá âÜëåôå ôï èÝìá ôïõ ìçíýìáôïò êáé íá óõíå÷ßóåôå ìå ôï ðåñéå÷üìåíï. Ôï ôÝëïò ôïõ ìçíýìáôïò êáèïñßæåôáé ãñÜöïíôáò ìéá ìïíáäéêÞ . óå ìéá íÝá ãñáììÞ. & mail root@localhost Subject: I mastered mail Now I can send and receive email using mail ... :) . EOT ¼óï âñßóêåóôå ìÝóá óôçí åíôïëÞ mail, ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôï ðëÞêôñï ? ãéá ôçí åìöÜíéóç âïÞèåéáò ïðïéáäÞðïôå óôéãìÞ. Ìðïñåßôå åðßóçò íá óõìâïõëåõôåßôå ôçí óåëßäá manual ôïõ &man.mail.1; ãéá ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôçí åíôïëÞ mail. ¼ðùò áíáöÝñáìå ðñïçãïõìÝíùò, ç åíôïëÞ &man.mail.1; äåí ó÷åäéÜóôçêå áñ÷éêÜ ãéá íá ÷åéñßæåôáé óõíçììÝíá, êáé ãéá ôï ëüãï áõôü ïé äõíáôüôçôåò ôéò óôï óõãêåêñéìÝíï èÝìá åßíáé ìéêñÝò. Íåþôåñá MUA, üðùò ôï mutt, ÷åéñßæïíôáé ôá óõíçììÝíá ìå ðïëý ðéï Ýîõðíï ôñüðï. ÁëëÜ áí ðáñ' üëá áõôÜ åðéèõìåßôå íá ÷ñçóéìïðïéÞóåôå ôçí åíôïëÞ mail, ìÜëëïí èá óáò öáíåß ÷ñÞóéìï ôï port converters/mpack. mutt Ôï mutt åßíáé Ýíá ìéêñü, áëëÜ ðïëý éó÷õñü ðñüãñáììá áðïóôïëÞò êáé ëÞøçò mail, ìå åîáéñåôéêÜ ÷áñáêôçñéóôéêÜ ôá ïðïßá ðåñéëáìâÜíïõí: Ôçí éêáíüôçôá íá äåß÷íåé ìçíýìáôá ìå ôçí ìïñöÞ óõæçôÞóåùí ÕðïóôÞñéîç PGP ãéá øçöéáêÞ õðïãñáöÞ êáé êñõðôïãñÜöçóç email ÕðïóôÞñéîç MIME ÕðïóôÞñéîç Maildir ÅîáéñåôéêÝò äõíáôüôçôåò ðáñáìåôñïðïßçóçò ¼ëåò áõôÝò ïé äõíáôüôçôåò, êÜíïõí ôï mutt Ýíá áðü ôá ðéï åîåëéãìÝíá äéáèÝóéìá ðñïãñÜììáôá ôá÷õäñïìåßïõ. Äåßôå ôçí ôïðïèåóßá ãéá ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôï mutt. Ìðïñåßôå íá åãêáôáóôÞóåôå ôç óôáèåñÞ Ýêäïóç ôïõ mutt ìÝóù ôïõ port mail/mutt, åíþ êáé ç ôñÝ÷ïõóá õðü åîÝëéîç Ýêäïóç åßíáé äéáèÝóéìç ìÝóù ôïõ port mail/mutt-devel. ÌåôÜ ôçí åãêáôÜóôáóç ôïõ port, ìðïñåßôå íá åêôåëÝóåôå ôï mutt, ìå ôçí áêüëïõèç åíôïëÞ: &prompt.user; mutt Ôï mutt èá äéáâÜóåé áõôüìáôá ôá ðåñéå÷üìåíá ôçò èõñßäáò ôá÷õäñïìåßïõ ÷ñÞóôç óôïí êáôÜëïãï /var/mail, êáé èá äåßîåé ôá ðåñéå÷üìåíá ôïõ áí áõôü åßíáé åöéêôü. Áí äåí õðÜñ÷ïõí mails óôç èõñßäá ôïõ ÷ñÞóôç, ôï mutt èá åéóÝëèåé óå êáôÜóôáóç áíáìïíÞò åíôïëþí. Ôï ðáñáêÜôù ðáñÜäåéãìá, äåß÷íåé ôï mutt íá áðåéêïíßæåé ìéá ëßóôá ìçíõìÜôùí: Ãéá íá äéáâÜóåôå Ýíá email, åðéëÝîôå ôï ÷ñçóéìïðïéþíôáò ôá âåëÜêéá, êáé ðéÝóôå Enter. Ìðïñåßôå íá äåßôå Ýíá ðáñÜäåéãìá áðåéêüíéóçò mail áðü ôï mutt ðáñáêÜôù: ¼ðùò êáé ôï &man.mail.1;, ôï mutt, óáò åðéôñÝðåé íá áðáíôÞóåôå ôüóï óôïí áðïóôïëÝá ôïõ ìçíýìáôïò, üóï êáé óå üëïõò ôïõò ðáñáëÞðôåò. Ãéá íá áðáíôÞóåôå ìüíï óôïí áðïóôïëÝá ôïõ email, ÷ñçóéìïðïéÞóôå ôï ðëÞêôñï r. Ãéá íá áðáíôÞóåôå óôçí ïìÜäá ÷ñçóôþí ç ïðïßá ðåñéëáìâÜíåé ôüóï ôïí áñ÷éêü áðïóôïëÝá, üóï êáé ôïõò õðüëïéðïõò ðáñáëÞðôåò ôïõ ìçíýìáôïò, ÷ñçóéìïðïéÞóôå ôï ðëÞêôñï g. Ôï mutt ÷ñçóéìïðïéåß ôï &man.vi.1; ùò óõíôÜêôç êåéìÝíïõ ãéá äçìéïõñãßá êáé áðÜíôçóç óå email. Ç ñýèìéóç áõôÞ ìðïñåß íá áëëá÷èåß áðü ôï ÷ñÞóôç äçìéïõñãþíôáò Þ ôñïðïðïéþíôáò ôï áñ÷åßï .muttrc óôïí ðñïóùðéêü ôïõ êáôÜëïãï, êáé èÝôïíôáò ôç ìåôáâëçôÞ editor, Þ áëëÜæïíôáò ôçí ìåôáâëçôÞ ðåñéâÜëëïíôïò EDITOR. Äåßôå ôçí ôïðïèåóßá ãéá ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôç ñýèìéóç ôïõ mutt. Ãéá íá óõíôÜîåôå Ýíá íÝï ìÞíõìá, ðéÝóôå ôï ðëÞêôñï m. Áöïý ãñÜøåôå ôï êáôÜëëçëï èÝìá, ôï mutt èá îåêéíÞóåé ôï &man.vi.1; åðéôñÝðïíôáò óáò íá ãñÜøåôå ôï mail. Ìüëéò ïëïêëçñþóåôå, áðïèçêåýóôå êáé ôåñìáôßóôå ôï vi êáé ôï mutt èá óõíå÷ßóåé, äåß÷íïíôáò óáò ìéá ïèüíç ðåñßëçøçò ôïõ mail ôï ïðïßï ðñüêåéôáé íá óôáëåß. Ãéá íá óôåßëåôå ôï mail, ðéÝóôå ôï ðëÞêôñï y. Ìðïñåßôå íá äåßôå ðáñáêÜôù Ýíá ðáñÜäåéãìá ôçò ïèüíçò ðåñßëçøçò: Ôï mutt ðåñéÝ÷åé åðßóçò åêôåôáìÝíç âïÞèåéá, óôçí ïðïßá ìðïñåßôå íá Ý÷åôå ðñüóâáóç ó÷åäüí áðü êÜèå óçìåßï ôïõ ìåíïý, ðéÝæïíôáò ôï ðëÞêôñï ?. Ç ãñáììÞ óôçí êïñõöÞ ôçò ïèüíçò äåß÷íåé åðßóçò ôéò óõíôïìåýóåéò ðëçêôñïëïãßïõ, üðïõ õðÜñ÷ïõí. alpine Ôï alpine áðåõèýíåôáé êõñßùò óôïí áñ÷Üñéï ÷ñÞóôç, áëëÜ ðåñéëáìâÜíåé åðßóçò êÜðïéá ðñï÷ùñçìÝíá ÷áñáêôçñéóôéêÜ. Ôï alpine Ý÷åé éóôïñéêü ðñïâëçìÜôùí áóöáëåßáò. Óôï ðáñåëèüí, áíáêáëýöèçêáí ðñïâëÞìáôá ðïõ åðÝôñåðáí óå áðïìáêñõóìÝíïõò åéóâïëåßò íá åêôåëÝóïõí ôï äéêü ôïõò êþäéêá óôï ôïðéêü óýóôçìá, óôÝëíïíôáò áðëþò Ýíá åéäéêÜ äéáìïñöùìÝíï email. ¼ëá áõôÜ ôá ãíùóôÜ ðñïâëÞìáôá Ý÷ïõí ðëÝïí äéïñèùèåß, áëëÜ ï êþäéêáò ôïõ alpine åßíáé ãñáììÝíïò ìå éäéáßôåñá áíáóöáëÞ ôñüðï, êáé ï Õðåýèõíïò ÁóöÜëåéáò ôïõ &os;, ðéóôåýåé üôé åßíáé áñêåôÜ ðéèáíüí íá õðÜñ÷ïõí êáé Üëëá êåíÜ áóöáëåßáò ðïõ äåí Ý÷ïõí áíáêáëõöèåß áêüìá. ÅãêáôáóôÞóôå ôï alpine ìå äéêÞ óáò åõèýíç. Ç ôñÝ÷ïõóá Ýêäïóç ôïõ alpine ìðïñåß íá åãêáôáóôáèåß ÷ñçóéìïðïéþíôáò ôï port mail/alpine. ÌåôÜ ôçí åãêáôÜóôáóç ôïõ port ôï alpine ìðïñåß íá îåêéíÞóåé ÷ñçóéìïðïéþíôáò ôçí ðáñáêÜôù åíôïëÞ: &prompt.user; alpine Ôçí ðñþôç öïñÜ ðïõ èá åêôåëÝóåôå ôï alpine èá óáò äåßîåé ìéá áñ÷éêÞ óåëßäá ÷áéñåôéóìïý, ìå ìéá óýíôïìç åéóáãùãÞ, êáèþò êáé ìéá áßôçóç áðü ôçí ïìÜäá áíÜðôõîçò ôïõ alpine íá ôïõò óôåßëåôå Ýíá áíþíõìï mail ôï ïðïßï èá ôïõò âïçèÞóåé íá Ý÷ïõí ìéá éäÝá ãéá ôï ðüóïé ÷ñÞóôåò ÷ñçóéìïðïéïýí ôï ëïãéóìéêü. Ãéá íá óôåßëåôå áõôü ôï áíþíõìï ìÞíõìá, ðéÝóôå Enter, Þ åíáëëáêôéêÜ ðéÝóôå E ãéá íá êëåßóåôå ôçí ïèüíç ÷áéñåôéóìïý ÷ùñßò íá óôåßëåôå ôï áíþíõìï ìÞíõìá. ¸íá ðáñÜäåéãìá ôçò óåëßäáò ÷áéñåôéóìïý öáßíåôáé ðáñáêÜôù: Èá åìöáíéóôåß êáôüðéí ôï êýñéï ìåíïý, óôï ïðïßï ìðïñåßôå íá ìåôáêéíçèåßôå åýêïëá ÷ñçóéìïðïéþíôáò ôá âåëÜêéá. Áõôü ôï êýñéï ìåíïý ðáñÝ÷åé ðëÞêôñá óõíôüìåõóçò ãéá äçìéïõñãßá íÝùí mail, ãéá áíß÷íåõóç óôïõò êáôáëüãïõò mail, êáé áêüìá ãéá äéá÷åßñéóç êáôá÷ùñÞóåùí óôï âéâëßï äéåõèýíóåùí. ÊÜôù áðü ôï êýñéï ìåíïý, åìöáíßæïíôáé óõíôïìåýóåéò ðëçêôñïëïãßïõ ó÷åôéêÝò ìå ôçí åñãáóßá ðïõ ãßíåôáé ôç óõãêåêñéìÝíç óôéãìÞ. Ï ðñïåðéëåãìÝíïò êáôÜëïãïò ðïõ áíïßãåé ôï alpine åßíáé ôï inbox. Ãéá íá äåßôå ôï åõñåôÞñéï ôùí ìçíõìÜôùí, ðéÝóôå ôï I, Þ åðéëÝîôå ôï MESSAGE INDEX üðùò öáßíåôáé ðáñáêÜôù: Ôï åõñåôÞñéï ìçíõìÜôùí äåß÷íåé ìçíýìáôá áðü ôïí ôñÝ÷ïíôá êáôÜëïãï, êáé ìðïñåßôå íá ìåôáêéíçèåßôå óå áõôü ìå ôá âåëÜêéá. Ìðïñåßôå íá äéáâÜóåôå ôï åðéëåãìÝíï ìÞíõìá, ðéÝæïíôáò ôï ðëÞêôñï Enter. Óôçí åéêüíá ðïõ öáßíåôáé ðáñáêÜôù, ôï alpine áðåéêïíßæåé Ýíá õðüäåéãìá ìçíýìáôïò. Óôï êÜôù ìÝñïò ôçò ïèüíçò öáßíïíôáé ó÷åôéêÝò óõíôïìåýóåéò ðëçêôñïëïãßïõ. ¸íá ðáñÜäåéãìá ôÝôïéáò óõíôüìåõóçò, åßíáé ôï ðëÞêôñï r ôï ïðïßï ëÝåé óôï MUA íá äçìéïõñãÞóåé áðÜíôçóç ðñïò ôï ôñÝ÷ïí ìÞíõìá ðïõ áðåéêïíßæåôáé. Ç áðÜíôçóç óå Ýíá mail ìÝóù ôïõ alpine ãßíåôáé ìå ôç ÷ñÞóç ôïõ óõíôÜêôç êåéìÝíïõ pico, ï ïðïßïò åãêáèßóôáôáé áðü ðñïåðéëïãÞ ìáæß ìå ôï alpine. Ôï pico äéåõêïëýíåé ôç ìåôáêßíçóç ìÝóá óôï ìÞíõìá, êáé åßíáé êÜðùò ðéï åýêïëï ãéá ôïõò áñ÷Üñéïõò ÷ñÞóôåò óå ó÷Ýóç ìå ôï &man.vi.1; Þ ôï &man.mail.1;. Ìüëéò ïëïêëçñþóåôå ôçí áðÜíôçóç, ìðïñåßôå íá óôåßëåôå ôï ìÞíõìá ðéÝæïíôáò ôá ðëÞêôñá CtrlX . Ôï alpine èá óáò æçôÞóåé íá ôï åðéâåâáéþóåôå. Ìðïñåßôå íá ðñïóáñìüóåôå ôï alpine ìå ôç ÷ñÞóç ôçò åðéëïãÞò SETUP áðü ôï êýñéï ìåíïý. Óõìâïõëåõèåßôå ôçí ôïðïèåóßá ãéá ðåñéóóüôåñåò ðëçñïöïñßåò. Marc Silver ÓõíåéóöïñÜ áðü ôïí ×ñçóéìïðïéþíôáò ôï fetchmail fetchmail Ôï fetchmail åßíáé Ýíáò ðëÞñçò ðåëÜôçò ãéá IMAP êáé POP, ï ïðïßïò åðéôñÝðåé óôïõò ÷ñÞóôåò íá êáôåâÜæïõí áõôüìáôá mail áðü áðïìáêñõóìÝíïõò åîõðçñåôçôÝò IMAP êáé POP êáé íá ôï áðïèçêåýïõí óå ôïðéêÝò èõñßäåò, áðü üðïõ ìðïñåß Ýðåéôá íá õðÜñ÷åé ðéï åýêïëç ðñüóâáóç. Ôï fetchmail ìðïñåß íá åãêáôáóôáèåß ÷ñçóéìïðïéþíôáò ôï port mail/fetchmail êáé ðáñÝ÷åé äéÜöïñá ÷áñáêôçñéóôéêÜ, ìåñéêÜ áðü ôá ïðïßá ðåñéëáìâÜíïõí: ÕðïóôÞñéîç ôùí ðñùôïêüëëùí POP3, APOP, KPOP, IMAP, ETRN êáé ODMR. Äõíáôüôçôá ðñïþèçóçò email ìÝóù SMTP, ôï ïðïßï åðéôñÝðåé ôç öõóéïëïãéêÞ ëåéôïõñãßá ôïõ öéëôñáñßóìáôïò, ôçò ðñïþèçóçò, êáé ôùí ðáñùíõìßùí (aliases). Ìðïñåß íá ëåéôïõñãÞóåé óå êáôÜóôáóç äáßìïíá, þóôå íá åëÝã÷åé ðåñéïäéêÜ ãéá íÝá ìçíýìáôá. Ìðïñåß íá áíáêôÜ ðïëëáðëÝò èõñßäåò êáé íá ôéò ðñïùèåß, áíÜëïãá ìå ôéò ñõèìßóåéò ôïõ, óå äéáöïñåôéêïýò ôïðéêïýò ÷ñÞóôåò. Áí êáé åßíáé Ýîù áðü ôïõò óêïðïýò áõôïý ôïõ êåéìÝíïõ íá åîçãÞóåé üëåò ôéò äõíáôüôçôåò ôïõ fetchmail, èá áíáöåñèïýìå óå êÜðïéåò âáóéêÝò ëåéôïõñãßåò. Ôï fetchmail ÷ñçóéìïðïéåß Ýíá áñ÷åßï ñõèìßóåùí ãíùóôü ùò .fetchmailrc, ãéá íá ëåéôïõñãÞóåé óùóôÜ. Ôï áñ÷åßï áõôü ðåñéÝ÷åé ôéò ðëçñïöïñßåò ôïõ åîõðçñåôçôÞ áëëÜ êáé ôá óôïé÷åßá åéóüäïõ ôïõ ÷ñÞóôç. Ëüãù ôùí åõáßóèçôùí ðëçñïöïñéþí ôïõ áñ÷åßïõ áõôïý, óáò óõìâïõëåýïõìå íá ÷ñçóéìïðïéÞóåôå ôçí ðáñáêÜôù åíôïëÞ þóôå ç áíÜãíùóç ôïõ íá åðéôñÝðåôáé ìüíï áðü ôïí éäéïêôÞôç ôïõ: &prompt.user; chmod 600 .fetchmailrc Ôï .fetchmailrc ðïõ öáßíåôáé ðáñáêÜôù åßíáé Ýíá ðáñÜäåéãìá ìå ôï ïðïßï ìðïñåßôå íá êáôåâÜóåôå ôç èõñßäá åíüò ÷ñÞóôç ìÝóù ôïõ ðñùôïêüëëïõ POP. Êáôåõèýíåé ôï fetchmail íá óõíäåèåß óôï example.com ÷ñçóéìïðïéþíôáò üíïìá ÷ñÞóôç joesoap êáé êùäéêü XXX. Ôï ðáñÜäåéãìá õðïèÝôåé üôé ï ÷ñÞóôçò joesoap åßíáé åðßóçò êáé ÷ñÞóôçò ôïõ ôïðéêïý óõóôÞìáôïò. poll example.com protocol pop3 username "joesoap" password "XXX" Ôï åðüìåíï ðáñÜäåéãìá, äåß÷íåé óýíäåóç óå ðïëëáðëïýò POP êáé IMAP åîõðçñåôçôÝò, êáé áíáêáôåõèýíåé óå äéáöïñåôéêïýò ôïðéêïýò ÷ñÞóôåò üðïõ åßíáé áðáñáßôçôï: poll example.com proto pop3: user "joesoap", with password "XXX", is "jsoap" here; user "andrea", with password "XXXX"; poll example2.net proto imap: user "john", with password "XXXXX", is "myth" here; Ôï âïçèçôéêü ðñüãñáììá fetchmail ìðïñåß íá ëåéôïõñãÞóåé óå êáôÜóôáóç äáßìïíá, áí ôï åêôåëÝóåôå ìå ôçí åðéëïãÞ , áêïëïõèïýìåíç áðü Ýíá äéÜóôçìá (óå äåõôåñüëåðôá) ôï ïðïßï èá ÷ñçóéìïðïéçèåß ãéá íá åñùôþíôáé ïé åîõðçñåôçôÝò ðïõ åßíáé êáôá÷ùñçìÝíïé óôï áñ÷åßï .fetchmailrc. Ôï ðáñáêÜôù ðáñÜäåéãìá ïäçãåß ôï fetchmail íá áíé÷íåýåé ãéá íÝï mail êÜèå 600 äåõôåñüëåðôá: &prompt.user; fetchmail -d 600 Ìðïñåßôå íá âñåßôå ðåñéóóüôåñåò ðëçñïöïñßåò ãéá ôï fetchmail óôçí ôïðïèåóßá . Marc Silver ÓõíåéóöïñÜ áðü ôïí ×ñçóéìïðïéþíôáò ôï procmail procmail Ôï âïçèçôéêü ðñüãñáììá procmail åßíáé ìéá áðßóôåõôá éó÷õñÞ åöáñìïãÞ ðïõ ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá ôï öéëôñÜñéóìá ôïõ åéóåñ÷üìåíïõ mail. ÅðéôñÝðåé óôïõò ÷ñÞóôåò íá ïñßæïõí êáíüíåò ïé ïðïßïé ìðïñåß íá ôáéñéÜæïõí óå åéóåñ÷üìåíá mail êáé íá åêôåëïýí äéÜöïñåò ëåéôïõñãßåò, Þ íá áíáêáôåõèýíïõí ôï mail óå åíáëëáêôéêÝò èõñßäåò Þ / êáé äéåõèýíóåéò ôá÷õäñïìåßïõ. Ôï procmail ìðïñåß íá åãêáôáóôáèåß ÷ñçóéìïðïéþíôáò ôï port mail/procmail. ÌåôÜ ôçí åãêáôÜóôáóç ôïõ, ìðïñåß íá åíóùìáôùèåß ó÷åäüí óå ïðïéïäÞðïôå MTA. Óõìâïõëåõèåßôå ôçí ôåêìçñßùóç ôïõ MTA ðïõ ÷ñçóéìïðïéåßôå ãéá ðåñéóóüôåñåò ðëçñïöïñßåò. ÅíáëëáêôéêÜ, ìðïñåßôå íá åíóùìáôþóåôå ôï procmail ðñïóèÝôïíôáò ôçí áêüëïõèç ãñáììÞ óå Ýíá áñ÷åßï .forward óôïí êáôÜëïãï ôïõ ÷ñÞóôç, ÷ñçóéìïðïéþíôáò ôéò äõíáôüôçôåò ôïõ procmail: "|exec /usr/local/bin/procmail || exit 75" Óôçí ðáñáêÜôù åíüôçôá, èá äåßîïõìå ìåñéêïýò áðü ôïõò âáóéêïýò êáíüíåò ôïõ procmail, êáèþò êáé óýíôïìåò ðåñéãñáöÝò ôçò ëåéôïõñãßáò ôïõò. ÐñÝðåé íá ôïðïèåôÞóåôå áõôïýò (êáé Üëëïõò) êáíüíåò óå Ýíá áñ÷åßï .procmailrc, ôï ïðïßï èá ðñÝðåé íá âñßóêåôáé ìÝóá óôïí êáôÜëïãï ôïõ ÷ñÞóôç: Ìðïñåßôå íá âñåßôå ôïõò ðåñéóóüôåñïõò áðü áõôïýò ôïõò êáíüíåò, óôç óåëßäá manual ôïõ &man.procmailex.5;. Ðñïþèçóç üëïõ ôïõ email ôçò äéåýèõíóçò user@example.com ðñïò ôçí åîùôåñéêÞ äéåýèõíóç goodmail@example2.com: :0 * ^From.*user@example.com ! goodmail@example2.com Ðñïþèçóç üëùí ôùí email ðïõ åßíáé ìéêñüôåñá áðü 1000 bytes ðñïò ìéá åîùôåñéêÞ äéåýèõíóç email goodmail@example2.com: :0 * < 1000 ! goodmail@example2.com ÁðïóôïëÞ üëïõ ôïõ mail ðïõ óôÜëèçêå ðñïò ôï alternate@example.com óå ìéá èõñßäá ðïõ êáëåßôáé alternate: :0 * ^TOalternate@example.com alternate ÁðïóôïëÞ üëïõ ôïõ mail ìå èÝìá Spam ðñïò ôï /dev/null: :0 ^Subject:.*Spam /dev/null Ìéá ÷ñÞóéìç ëýóç ðïõ îå÷ùñßæåé ôá email áðü ôéò ëßóôåò ôá÷õäñïìåßïõ &os;.org êáé ôïðïèåôåß ôï êÜèå ìÞíõìá óå äéáöïñåôéêÞ èõñßäá: :0 * ^Sender:.owner-freebsd-\/[^@]+@FreeBSD.ORG { LISTNAME=${MATCH} :0 * LISTNAME??^\/[^@]+ FreeBSD-${MATCH} } diff --git a/el_GR.ISO8859-7/books/handbook/network-servers/chapter.xml b/el_GR.ISO8859-7/books/handbook/network-servers/chapter.xml index ec5b7daf26..88db7d10da 100644 --- a/el_GR.ISO8859-7/books/handbook/network-servers/chapter.xml +++ b/el_GR.ISO8859-7/books/handbook/network-servers/chapter.xml @@ -1,4888 +1,4874 @@ Murray Stokely Áíáäéïñãáíþèçêå áðü ôïí ÅîõðçñåôçôÝò Äéêôýïõ Óýíïøç Ôï êåöÜëáéï áõôü êáëýðôåé ïñéóìÝíåò áðü ôéò ðéï óõ÷íÜ ÷ñçóéìïðïéïýìåíåò äéêôõáêÝò õðçñåóßåò ôùí óõóôçìÜôùí &unix;. Èá ðáñïõóéÜóïõìå ôçí åãêáôÜóôáóç, ñýèìéóç, Ýëåã÷ï êáé óõíôÞñçóç ðïëëþí äéáöïñåôéêþí ôýðùí äéêôõáêþí õðçñåóéþí. Óå üëï ôï êåöÜëáéï, ãéá ôç äéêÞ óáò äéåõêüëõíóç, õðÜñ÷ïõí ðáñáäåßãìáôá äéáöüñùí áñ÷åßùí ñõèìßóåùí. Áöïý äéáâÜóåôå áõôü ôï êåöÜëáéï, èá îÝñåôå: Ðùò íá äéá÷åéñßæåóôå ôçí õðçñåóßá inetd. Ðùò íá ñõèìßóåôå Ýíá äéêôõáêü óýóôçìá áñ÷åßùí. Ðùò íá ñõèìßóåôå Ýíá åîõðçñåôçôÞ äéêôõáêþí ðëçñïöïñéþí ãéá ôï äéáìïéñáóìü ëïãáñéáóìþí ÷ñçóôþí. Ðùò íá ÷ñçóéìïðïéÞóåôå ôï DHCP ãéá ôçí áõôüìáôç ñýèìéóç ôùí ðáñáìÝôñùí ôïõ äéêôýïõ. Ðùò íá ñõèìßóåôå Ýíá åîõðçñåôçôÞ ïíïìáóßáò ðåñéï÷þí (DNS). Ðùò íá ñõèìßóåôå ôïí åîõðçñåôçôÞ éóôïóåëßäùí Apache. Ðùò íá ñõèìßóåôå Ýíá åîõðçñåôçôÞ ìåôáöïñÜò áñ÷åßùí (FTP). Ðùò íá ñõèìßóåôå Ýíá åîõðçñåôçôÞ áñ÷åßùí êáé åêôõðùôþí ãéá ðåëÜôåò &windows; ìå ÷ñÞóç ôçò åöáñìïãÞò Samba. Ðùò íá óõã÷ñïíßóåôå ôçí çìåñïìçíßá êáé ôçí þñá, êáé íá ñõèìßóåôå Ýíá åîõðçñåôçôÞ þñáò ìå ôç âïÞèåéá ôïõ NTP ðñùôïêüëëïõ. Ðñéí äéáâÜóåôå áõôü êåöÜëáéï, èá ðñÝðåé: Íá êáôáíïåßôå ôéò âáóéêÝò Ýííïéåò ôùí áñ÷åßùí script /etc/rc. Íá åßóôå åîïéêåéùìÝíïé ìå ôç âáóéêÞ ïñïëïãßá ôùí äéêôýùí. Íá ãíùñßæåôå ðùò íá åãêáôáóôÞóåôå ðñüóèåôï ëïãéóìéêü ôñßôïõ êáôáóêåõáóôÞ (). Chern Lee Contributed by Updated for &os; 6.1-RELEASE by The &os; Documentation Project The <application>inetd</application> <quote>Super-Server</quote> Overview &man.inetd.8; is sometimes referred to as the Internet Super-Server because it manages connections for several services. When a connection is received by inetd, it determines which program the connection is destined for, spawns the particular process and delegates the socket to it (the program is invoked with the service socket as its standard input, output and error descriptors). Running inetd for servers that are not heavily used can reduce the overall system load, when compared to running each daemon individually in stand-alone mode. Primarily, inetd is used to spawn other daemons, but several trivial protocols are handled directly, such as chargen, auth, and daytime. This section will cover the basics in configuring inetd through its command-line options and its configuration file, /etc/inetd.conf. Settings inetd is initialized through the &man.rc.8; system. The inetd_enable option is set to NO by default, but may be turned on by sysinstall during installation, depending on the configuration chosen by the user. Placing: inetd_enable="YES" or inetd_enable="NO" into /etc/rc.conf will enable or disable inetd starting at boot time. The command: /etc/rc.d/inetd rcvar can be run to display the current effective setting. Additionally, different command-line options can be passed to inetd via the inetd_flags option. Command-Line Options Like most server daemons, inetd has a number of options that it can be passed in order to modify its behaviour. The full list of options reads: inetd Options can be passed to inetd using the inetd_flags option in /etc/rc.conf. By default, inetd_flags is set to -wW -C 60, which turns on TCP wrapping for inetd's services, and prevents any single IP address from requesting any service more than 60 times in any given minute. Novice users may be pleased to note that these parameters usually do not need to be modified, although we mention the rate-limiting options below as they be useful should you find that you are receiving an excessive amount of connections. A full list of options can be found in the &man.inetd.8; manual. -c maximum Specify the default maximum number of simultaneous invocations of each service; the default is unlimited. May be overridden on a per-service basis with the parameter. -C rate Specify the default maximum number of times a service can be invoked from a single IP address in one minute; the default is unlimited. May be overridden on a per-service basis with the parameter. -R rate Specify the maximum number of times a service can be invoked in one minute; the default is 256. A rate of 0 allows an unlimited number of invocations. -s maximum Specify the maximum number of times a service can be invoked from a single IP address at any one time; the default is unlimited. May be overridden on a per-service basis with the parameter. <filename>inetd.conf</filename> Configuration of inetd is done via the file /etc/inetd.conf. When a modification is made to /etc/inetd.conf, inetd can be forced to re-read its configuration file by running the command: Reloading the <application>inetd</application> configuration file &prompt.root; /etc/rc.d/inetd reload Each line of the configuration file specifies an individual daemon. Comments in the file are preceded by a #. The format of each entry in /etc/inetd.conf is as follows: service-name socket-type protocol {wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]] user[:group][/login-class] server-program server-program-arguments An example entry for the &man.ftpd.8; daemon using IPv4 might read: ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l service-name This is the service name of the particular daemon. It must correspond to a service listed in /etc/services. This determines which port inetd must listen to. If a new service is being created, it must be placed in /etc/services first. socket-type Either stream, dgram, raw, or seqpacket. stream must be used for connection-based, TCP daemons, while dgram is used for daemons utilizing the UDP transport protocol. protocol One of the following: Protocol Explanation tcp, tcp4 TCP IPv4 udp, udp4 UDP IPv4 tcp6 TCP IPv6 udp6 UDP IPv6 tcp46 Both TCP IPv4 and v6 udp46 Both UDP IPv4 and v6 {wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]] indicates whether the daemon invoked from inetd is able to handle its own socket or not. socket types must use the option, while stream socket daemons, which are usually multi-threaded, should use . usually hands off multiple sockets to a single daemon, while spawns a child daemon for each new socket. The maximum number of child daemons inetd may spawn can be set using the option. If a limit of ten instances of a particular daemon is needed, a /10 would be placed after . Specifying /0 allows an unlimited number of children In addition to , two other options which limit the maximum connections from a single place to a particular daemon can be enabled. limits the number of connections from any particular IP address per minutes, e.g. a value of ten would limit any particular IP address connecting to a particular service to ten attempts per minute. limits the number of children that can be started on behalf on any single IP address at any moment. These options are useful to prevent intentional or unintentional excessive resource consumption and Denial of Service (DoS) attacks to a machine. In this field, either of or is mandatory. , and are optional. A stream-type multi-threaded daemon without any , or limits would simply be: nowait. The same daemon with a maximum limit of ten daemons would read: nowait/10. The same setup with a limit of twenty connections per IP address per minute and a maximum total limit of ten child daemons would read: nowait/10/20. These options are utilized by the default settings of the &man.fingerd.8; daemon, as seen here: finger stream tcp nowait/3/10 nobody /usr/libexec/fingerd fingerd -s Finally, an example of this field with a maximum of 100 children in total, with a maximum of 5 for any one IP address would read: nowait/100/0/5. user This is the username that the particular daemon should run as. Most commonly, daemons run as the root user. For security purposes, it is common to find some servers running as the daemon user, or the least privileged nobody user. server-program The full path of the daemon to be executed when a connection is received. If the daemon is a service provided by inetd internally, then should be used. server-program-arguments This works in conjunction with by specifying the arguments, starting with argv[0], passed to the daemon on invocation. If mydaemon -d is the command line, mydaemon -d would be the value of . Again, if the daemon is an internal service, use here. Security Depending on the choices made at install time, many of inetd's services may be enabled by default. If there is no apparent need for a particular daemon, consider disabling it. Place a # in front of the daemon in question in /etc/inetd.conf, and then reload the inetd configuration. Some daemons, such as fingerd, may not be desired at all because they provide information that may be useful to an attacker. Some daemons are not security-conscious and have long, or non-existent, timeouts for connection attempts. This allows an attacker to slowly send connections to a particular daemon, thus saturating available resources. It may be a good idea to place , or limitations on certain daemons if you find that you have too many connections. By default, TCP wrapping is turned on. Consult the &man.hosts.access.5; manual page for more information on placing TCP restrictions on various inetd invoked daemons. Miscellaneous daytime, time, echo, discard, chargen, and auth are all internally provided services of inetd. The auth service provides identity network services, and is configurable to a certain degree, whilst the others are simply on or off. Consult the &man.inetd.8; manual page for more in-depth information. Tom Rhodes Reorganized and enhanced by Bill Swingle Written by Network File System (NFS) NFS Among the many different file systems that FreeBSD supports is the Network File System, also known as NFS. NFS allows a system to share directories and files with others over a network. By using NFS, users and programs can access files on remote systems almost as if they were local files. Some of the most notable benefits that NFS can provide are: Local workstations use less disk space because commonly used data can be stored on a single machine and still remain accessible to others over the network. There is no need for users to have separate home directories on every network machine. Home directories could be set up on the NFS server and made available throughout the network. Storage devices such as floppy disks, CDROM drives, and &iomegazip; drives can be used by other machines on the network. This may reduce the number of removable media drives throughout the network. How <acronym>NFS</acronym> Works NFS consists of at least two main parts: a server and one or more clients. The client remotely accesses the data that is stored on the server machine. In order for this to function properly a few processes have to be configured and running. The server has to be running the following daemons: NFS server file server UNIX clients rpcbind mountd nfsd Daemon Description nfsd The NFS daemon which services requests from the NFS clients. mountd The NFS mount daemon which carries out the requests that &man.nfsd.8; passes on to it. rpcbind This daemon allows NFS clients to discover which port the NFS server is using. The client can also run a daemon, known as nfsiod. The nfsiod daemon services the requests from the NFS server. This is optional, and improves performance, but is not required for normal and correct operation. See the &man.nfsiod.8; manual page for more information. Configuring <acronym>NFS</acronym> NFS configuration NFS configuration is a relatively straightforward process. The processes that need to be running can all start at boot time with a few modifications to your /etc/rc.conf file. On the NFS server, make sure that the following options are configured in the /etc/rc.conf file: rpcbind_enable="YES" nfs_server_enable="YES" mountd_flags="-r" mountd runs automatically whenever the NFS server is enabled. On the client, make sure this option is present in /etc/rc.conf: nfs_client_enable="YES" The /etc/exports file specifies which file systems NFS should export (sometimes referred to as share). Each line in /etc/exports specifies a file system to be exported and which machines have access to that file system. Along with what machines have access to that file system, access options may also be specified. There are many such options that can be used in this file but only a few will be mentioned here. You can easily discover other options by reading over the &man.exports.5; manual page. Here are a few example /etc/exports entries: NFS export examples The following examples give an idea of how to export file systems, although the settings may be different depending on your environment and network configuration. For instance, to export the /cdrom directory to three example machines that have the same domain name as the server (hence the lack of a domain name for each) or have entries in your /etc/hosts file. The flag makes the exported file system read-only. With this flag, the remote system will not be able to write any changes to the exported file system. /cdrom -ro host1 host2 host3 The following line exports /home to three hosts by IP address. This is a useful setup if you have a private network without a DNS server configured. Optionally the /etc/hosts file could be configured for internal hostnames; please review &man.hosts.5; for more information. The flag allows the subdirectories to be mount points. In other words, it will not mount the subdirectories but permit the client to mount only the directories that are required or needed. /home -alldirs 10.0.0.2 10.0.0.3 10.0.0.4 The following line exports /a so that two clients from different domains may access the file system. The flag allows the root user on the remote system to write data on the exported file system as root. If the -maproot=root flag is not specified, then even if a user has root access on the remote system, he will not be able to modify files on the exported file system. /a -maproot=root host.example.com box.example.org In order for a client to access an exported file system, the client must have permission to do so. Make sure the client is listed in your /etc/exports file. In /etc/exports, each line represents the export information for one file system to one host. A remote host can only be specified once per file system, and may only have one default entry. For example, assume that /usr is a single file system. The following /etc/exports would be invalid: # Invalid when /usr is one file system /usr/src client /usr/ports client One file system, /usr, has two lines specifying exports to the same host, client. The correct format for this situation is: /usr/src /usr/ports client The properties of one file system exported to a given host must all occur on one line. Lines without a client specified are treated as a single host. This limits how you can export file systems, but for most people this is not an issue. The following is an example of a valid export list, where /usr and /exports are local file systems: # Export src and ports to client01 and client02, but only # client01 has root privileges on it /usr/src /usr/ports -maproot=root client01 /usr/src /usr/ports client02 # The client machines have root and can mount anywhere # on /exports. Anyone in the world can mount /exports/obj read-only /exports -alldirs -maproot=root client01 client02 /exports/obj -ro The mountd daemon must be forced to recheck the /etc/exports file whenever it has been modified, so the changes can take effect. This can be accomplished either by sending a HUP signal to the running daemon: &prompt.root; kill -HUP `cat /var/run/mountd.pid` or by invoking the mountd &man.rc.8; script with the appropriate parameter: &prompt.root; /etc/rc.d/mountd onereload Please refer to for more information about using rc scripts. Alternatively, a reboot will make FreeBSD set everything up properly. A reboot is not necessary though. Executing the following commands as root should start everything up. On the NFS server: &prompt.root; rpcbind &prompt.root; nfsd -u -t -n 4 &prompt.root; mountd -r On the NFS client: &prompt.root; nfsiod -n 4 Now everything should be ready to actually mount a remote file system. In these examples the server's name will be server and the client's name will be client. If you only want to temporarily mount a remote file system or would rather test the configuration, just execute a command like this as root on the client: NFS mounting &prompt.root; mount server:/home /mnt This will mount the /home directory on the server at /mnt on the client. If everything is set up correctly you should be able to enter /mnt on the client and see all the files that are on the server. If you want to automatically mount a remote file system each time the computer boots, add the file system to the /etc/fstab file. Here is an example: server:/home /mnt nfs rw 0 0 The &man.fstab.5; manual page lists all the available options. Locking Some applications (e.g. mutt) require file locking to operate correctly. In the case of NFS, rpc.lockd can be used for file locking. To enable it, add the following to the /etc/rc.conf file on both client and server (it is assumed that the NFS client and server are configured already): rpc_lockd_enable="YES" rpc_statd_enable="YES" Start the application by using: &prompt.root; /etc/rc.d/nfslocking start If real locking between the NFS clients and NFS server is not required, it is possible to let the NFS client do locking locally by passing to &man.mount.nfs.8;. Refer to the &man.mount.nfs.8; manual page for further details. Practical Uses NFS has many practical uses. Some of the more common ones are listed below: NFS uses Set several machines to share a CDROM or other media among them. This is cheaper and often a more convenient method to install software on multiple machines. On large networks, it might be more convenient to configure a central NFS server in which to store all the user home directories. These home directories can then be exported to the network so that users would always have the same home directory, regardless of which workstation they log in to. Several machines could have a common /usr/ports/distfiles directory. That way, when you need to install a port on several machines, you can quickly access the source without downloading it on each machine. Wylie Stilwell Contributed by Chern Lee Rewritten by Automatic Mounts with <application>amd</application> amd automatic mounter daemon &man.amd.8; (the automatic mounter daemon) automatically mounts a remote file system whenever a file or directory within that file system is accessed. Filesystems that are inactive for a period of time will also be automatically unmounted by amd. Using amd provides a simple alternative to permanent mounts, as permanent mounts are usually listed in /etc/fstab. amd operates by attaching itself as an NFS server to the /host and /net directories. When a file is accessed within one of these directories, amd looks up the corresponding remote mount and automatically mounts it. /net is used to mount an exported file system from an IP address, while /host is used to mount an export from a remote hostname. An access to a file within /host/foobar/usr would tell amd to attempt to mount the /usr export on the host foobar. Mounting an Export with <application>amd</application> You can view the available mounts of a remote host with the showmount command. For example, to view the mounts of a host named foobar, you can use: &prompt.user; showmount -e foobar Exports list on foobar: /usr 10.10.10.0 /a 10.10.10.0 &prompt.user; cd /host/foobar/usr As seen in the example, the showmount shows /usr as an export. When changing directories to /host/foobar/usr, amd attempts to resolve the hostname foobar and automatically mount the desired export. amd can be started by the startup scripts by placing the following lines in /etc/rc.conf: amd_enable="YES" Additionally, custom flags can be passed to amd from the amd_flags option. By default, amd_flags is set to: amd_flags="-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map" The /etc/amd.map file defines the default options that exports are mounted with. The /etc/amd.conf file defines some of the more advanced features of amd. Consult the &man.amd.8; and &man.amd.conf.5; manual pages for more information. John Lind Contributed by Problems Integrating with Other Systems Certain Ethernet adapters for ISA PC systems have limitations which can lead to serious network problems, particularly with NFS. This difficulty is not specific to FreeBSD, but FreeBSD systems are affected by it. The problem nearly always occurs when (FreeBSD) PC systems are networked with high-performance workstations, such as those made by Silicon Graphics, Inc., and Sun Microsystems, Inc. The NFS mount will work fine, and some operations may succeed, but suddenly the server will seem to become unresponsive to the client, even though requests to and from other systems continue to be processed. This happens to the client system, whether the client is the FreeBSD system or the workstation. On many systems, there is no way to shut down the client gracefully once this problem has manifested itself. The only solution is often to reset the client, because the NFS situation cannot be resolved. Though the correct solution is to get a higher performance and capacity Ethernet adapter for the FreeBSD system, there is a simple workaround that will allow satisfactory operation. If the FreeBSD system is the server, include the option on the mount from the client. If the FreeBSD system is the client, then mount the NFS file system with the option . These options may be specified using the fourth field of the fstab entry on the client for automatic mounts, or by using the parameter of the &man.mount.8; command for manual mounts. It should be noted that there is a different problem, sometimes mistaken for this one, when the NFS servers and clients are on different networks. If that is the case, make certain that your routers are routing the necessary UDP information, or you will not get anywhere, no matter what else you are doing. In the following examples, fastws is the host (interface) name of a high-performance workstation, and freebox is the host (interface) name of a FreeBSD system with a lower-performance Ethernet adapter. Also, /sharedfs will be the exported NFS file system (see &man.exports.5;), and /project will be the mount point on the client for the exported file system. In all cases, note that additional options, such as or and may be desirable in your application. Examples for the FreeBSD system (freebox) as the client in /etc/fstab on freebox: fastws:/sharedfs /project nfs rw,-r=1024 0 0 As a manual mount command on freebox: &prompt.root; mount -t nfs -o -r=1024 fastws:/sharedfs /project Examples for the FreeBSD system as the server in /etc/fstab on fastws: freebox:/sharedfs /project nfs rw,-w=1024 0 0 As a manual mount command on fastws: &prompt.root; mount -t nfs -o -w=1024 freebox:/sharedfs /project Nearly any 16-bit Ethernet adapter will allow operation without the above restrictions on the read or write size. For anyone who cares, here is what happens when the failure occurs, which also explains why it is unrecoverable. NFS typically works with a block size of 8 K (though it may do fragments of smaller sizes). Since the maximum Ethernet packet is around 1500 bytes, the NFS block gets split into multiple Ethernet packets, even though it is still a single unit to the upper-level code, and must be received, assembled, and acknowledged as a unit. The high-performance workstations can pump out the packets which comprise the NFS unit one right after the other, just as close together as the standard allows. On the smaller, lower capacity cards, the later packets overrun the earlier packets of the same unit before they can be transferred to the host and the unit as a whole cannot be reconstructed or acknowledged. As a result, the workstation will time out and try again, but it will try again with the entire 8 K unit, and the process will be repeated, ad infinitum. By keeping the unit size below the Ethernet packet size limitation, we ensure that any complete Ethernet packet received can be acknowledged individually, avoiding the deadlock situation. Overruns may still occur when a high-performance workstations is slamming data out to a PC system, but with the better cards, such overruns are not guaranteed on NFS units. When an overrun occurs, the units affected will be retransmitted, and there will be a fair chance that they will be received, assembled, and acknowledged. Bill Swingle Written by Eric Ogren Enhanced by Udo Erdelhoff Network Information System (NIS/YP) What Is It? NIS Solaris HP-UX AIX Linux NetBSD OpenBSD NIS, which stands for Network Information Services, was developed by Sun Microsystems to centralize administration of &unix; (originally &sunos;) systems. It has now essentially become an industry standard; all major &unix; like systems (&solaris;, HP-UX, &aix;, Linux, NetBSD, OpenBSD, FreeBSD, etc) support NIS. yellow pagesNIS NIS was formerly known as Yellow Pages, but because of trademark issues, Sun changed the name. The old term (and yp) is still often seen and used. NIS domains It is a RPC-based client/server system that allows a group of machines within an NIS domain to share a common set of configuration files. This permits a system administrator to set up NIS client systems with only minimal configuration data and add, remove or modify configuration data from a single location. Windows NT It is similar to the &windowsnt; domain system; although the internal implementation of the two are not at all similar, the basic functionality can be compared. Terms/Processes You Should Know There are several terms and several important user processes that you will come across when attempting to implement NIS on FreeBSD, whether you are trying to create an NIS server or act as an NIS client: rpcbind portmap Term Description NIS domainname An NIS master server and all of its clients (including its slave servers) have a NIS domainname. Similar to an &windowsnt; domain name, the NIS domainname does not have anything to do with DNS. rpcbind Must be running in order to enable RPC (Remote Procedure Call, a network protocol used by NIS). If rpcbind is not running, it will be impossible to run an NIS server, or to act as an NIS client. ypbind Binds an NIS client to its NIS server. It will take the NIS domainname from the system, and using RPC, connect to the server. ypbind is the core of client-server communication in an NIS environment; if ypbind dies on a client machine, it will not be able to access the NIS server. ypserv Should only be running on NIS servers; this is the NIS server process itself. If &man.ypserv.8; dies, then the server will no longer be able to respond to NIS requests (hopefully, there is a slave server to take over for it). There are some implementations of NIS (but not the FreeBSD one), that do not try to reconnect to another server if the server it used before dies. Often, the only thing that helps in this case is to restart the server process (or even the whole server) or the ypbind process on the client. rpc.yppasswdd Another process that should only be running on NIS master servers; this is a daemon that will allow NIS clients to change their NIS passwords. If this daemon is not running, users will have to login to the NIS master server and change their passwords there. How Does It Work? There are three types of hosts in an NIS environment: master servers, slave servers, and clients. Servers act as a central repository for host configuration information. Master servers hold the authoritative copy of this information, while slave servers mirror this information for redundancy. Clients rely on the servers to provide this information to them. Information in many files can be shared in this manner. The master.passwd, group, and hosts files are commonly shared via NIS. Whenever a process on a client needs information that would normally be found in these files locally, it makes a query to the NIS server that it is bound to instead. Machine Types - - NIS - master server - - A NIS master server. This + A NIS master serverNISmaster server. This server, analogous to a &windowsnt; primary domain controller, maintains the files used by all of the NIS clients. The passwd, group, and other various files used by the NIS clients live on the master server. It is possible for one machine to be an NIS master server for more than one NIS domain. However, this will not be covered in this introduction, which assumes a relatively small-scale NIS environment. - - NIS - slave server - - - NIS slave servers. Similar to + NIS slave serversNISslave server. Similar to the &windowsnt; backup domain controllers, NIS slave servers maintain copies of the NIS master's data files. NIS slave servers provide the redundancy, which is needed in important environments. They also help to balance the load of the master server: NIS Clients always attach to the NIS server whose response they get first, and this includes slave-server-replies. - - NIS - client - - - NIS clients. NIS clients, like + NIS clientsNISclient. NIS clients, like most &windowsnt; workstations, authenticate against the NIS server (or the &windowsnt; domain controller in the &windowsnt; workstations case) to log on. Using NIS/YP This section will deal with setting up a sample NIS environment. Planning Let us assume that you are the administrator of a small university lab. This lab, which consists of 15 FreeBSD machines, currently has no centralized point of administration; each machine has its own /etc/passwd and /etc/master.passwd. These files are kept in sync with each other only through manual intervention; currently, when you add a user to the lab, you must run adduser on all 15 machines. Clearly, this has to change, so you have decided to convert the lab to use NIS, using two of the machines as servers. Therefore, the configuration of the lab now looks something like: Machine name IP address Machine role ellington 10.0.0.2 NIS master coltrane 10.0.0.3 NIS slave basie 10.0.0.4 Faculty workstation bird 10.0.0.5 Client machine cli[1-11] 10.0.0.[6-17] Other client machines If you are setting up a NIS scheme for the first time, it is a good idea to think through how you want to go about it. No matter what the size of your network, there are a few decisions that need to be made. Choosing a NIS Domain Name NIS domainname This might not be the domainname that you are used to. It is more accurately called the NIS domainname. When a client broadcasts its requests for info, it includes the name of the NIS domain that it is part of. This is how multiple servers on one network can tell which server should answer which request. Think of the NIS domainname as the name for a group of hosts that are related in some way. Some organizations choose to use their Internet domainname for their NIS domainname. This is not recommended as it can cause confusion when trying to debug network problems. The NIS domainname should be unique within your network and it is helpful if it describes the group of machines it represents. For example, the Art department at Acme Inc. might be in the acme-art NIS domain. For this example, assume you have chosen the name test-domain. SunOS However, some operating systems (notably &sunos;) use their NIS domain name as their Internet domain name. If one or more machines on your network have this restriction, you must use the Internet domain name as your NIS domain name. Physical Server Requirements There are several things to keep in mind when choosing a machine to use as a NIS server. One of the unfortunate things about NIS is the level of dependency the clients have on the server. If a client cannot contact the server for its NIS domain, very often the machine becomes unusable. The lack of user and group information causes most systems to temporarily freeze up. With this in mind you should make sure to choose a machine that will not be prone to being rebooted regularly, or one that might be used for development. The NIS server should ideally be a stand alone machine whose sole purpose in life is to be an NIS server. If you have a network that is not very heavily used, it is acceptable to put the NIS server on a machine running other services, just keep in mind that if the NIS server becomes unavailable, it will affect all of your NIS clients adversely. NIS Servers The canonical copies of all NIS information are stored on a single machine called the NIS master server. The databases used to store the information are called NIS maps. In FreeBSD, these maps are stored in /var/yp/[domainname] where [domainname] is the name of the NIS domain being served. A single NIS server can support several domains at once, therefore it is possible to have several such directories, one for each supported domain. Each domain will have its own independent set of maps. NIS master and slave servers handle all NIS requests with the ypserv daemon. ypserv is responsible for receiving incoming requests from NIS clients, translating the requested domain and map name to a path to the corresponding database file and transmitting data from the database back to the client. Setting Up a NIS Master Server NIS server configuration Setting up a master NIS server can be relatively straight forward, depending on your needs. FreeBSD comes with support for NIS out-of-the-box. All you need is to add the following lines to /etc/rc.conf, and FreeBSD will do the rest for you. nisdomainname="test-domain" This line will set the NIS domainname to test-domain upon network setup (e.g. after reboot). nis_server_enable="YES" This will tell FreeBSD to start up the NIS server processes when the networking is next brought up. nis_yppasswdd_enable="YES" This will enable the rpc.yppasswdd daemon which, as mentioned above, will allow users to change their NIS password from a client machine. Depending on your NIS setup, you may need to add further entries. See the section about NIS servers that are also NIS clients, below, for details. Now, all you have to do is to run the command /etc/netstart as superuser. It will set up everything for you, using the values you defined in /etc/rc.conf. Initializing the NIS Maps NIS maps The NIS maps are database files, that are kept in the /var/yp directory. They are generated from configuration files in the /etc directory of the NIS master, with one exception: the /etc/master.passwd file. This is for a good reason, you do not want to propagate passwords to your root and other administrative accounts to all the servers in the NIS domain. Therefore, before we initialize the NIS maps, you should: &prompt.root; cp /etc/master.passwd /var/yp/master.passwd &prompt.root; cd /var/yp &prompt.root; vi master.passwd You should remove all entries regarding system accounts (bin, tty, kmem, games, etc), as well as any accounts that you do not want to be propagated to the NIS clients (for example root and any other UID 0 (superuser) accounts). Make sure the /var/yp/master.passwd is neither group nor world readable (mode 600)! Use the chmod command, if appropriate. Tru64 UNIX When you have finished, it is time to initialize the NIS maps! FreeBSD includes a script named ypinit to do this for you (see its manual page for more information). Note that this script is available on most &unix; Operating Systems, but not on all. On Digital UNIX/Compaq Tru64 UNIX it is called ypsetup. Because we are generating maps for an NIS master, we are going to pass the option to ypinit. To generate the NIS maps, assuming you already performed the steps above, run: ellington&prompt.root; ypinit -m test-domain Server Type: MASTER Domain: test-domain Creating an YP server will require that you answer a few questions. Questions will all be asked at the beginning of the procedure. Do you want this procedure to quit on non-fatal errors? [y/n: n] n Ok, please remember to go back and redo manually whatever fails. If you don't, something might not work. At this point, we have to construct a list of this domains YP servers. rod.darktech.org is already known as master server. Please continue to add any slave servers, one per line. When you are done with the list, type a <control D>. master server : ellington next host to add: coltrane next host to add: ^D The current list of NIS servers looks like this: ellington coltrane Is this correct? [y/n: y] y [..output from map generation..] NIS Map update completed. ellington has been setup as an YP master server without any errors. ypinit should have created /var/yp/Makefile from /var/yp/Makefile.dist. When created, this file assumes that you are operating in a single server NIS environment with only FreeBSD machines. Since test-domain has a slave server as well, you must edit /var/yp/Makefile: ellington&prompt.root; vi /var/yp/Makefile You should comment out the line that says NOPUSH = "True" (if it is not commented out already). Setting up a NIS Slave Server NIS slave server Setting up an NIS slave server is even more simple than setting up the master. Log on to the slave server and edit the file /etc/rc.conf as you did before. The only difference is that we now must use the option when running ypinit. The option requires the name of the NIS master be passed to it as well, so our command line looks like: coltrane&prompt.root; ypinit -s ellington test-domain Server Type: SLAVE Domain: test-domain Master: ellington Creating an YP server will require that you answer a few questions. Questions will all be asked at the beginning of the procedure. Do you want this procedure to quit on non-fatal errors? [y/n: n] n Ok, please remember to go back and redo manually whatever fails. If you don't, something might not work. There will be no further questions. The remainder of the procedure should take a few minutes, to copy the databases from ellington. Transferring netgroup... ypxfr: Exiting: Map successfully transferred Transferring netgroup.byuser... ypxfr: Exiting: Map successfully transferred Transferring netgroup.byhost... ypxfr: Exiting: Map successfully transferred Transferring master.passwd.byuid... ypxfr: Exiting: Map successfully transferred Transferring passwd.byuid... ypxfr: Exiting: Map successfully transferred Transferring passwd.byname... ypxfr: Exiting: Map successfully transferred Transferring group.bygid... ypxfr: Exiting: Map successfully transferred Transferring group.byname... ypxfr: Exiting: Map successfully transferred Transferring services.byname... ypxfr: Exiting: Map successfully transferred Transferring rpc.bynumber... ypxfr: Exiting: Map successfully transferred Transferring rpc.byname... ypxfr: Exiting: Map successfully transferred Transferring protocols.byname... ypxfr: Exiting: Map successfully transferred Transferring master.passwd.byname... ypxfr: Exiting: Map successfully transferred Transferring networks.byname... ypxfr: Exiting: Map successfully transferred Transferring networks.byaddr... ypxfr: Exiting: Map successfully transferred Transferring netid.byname... ypxfr: Exiting: Map successfully transferred Transferring hosts.byaddr... ypxfr: Exiting: Map successfully transferred Transferring protocols.bynumber... ypxfr: Exiting: Map successfully transferred Transferring ypservers... ypxfr: Exiting: Map successfully transferred Transferring hosts.byname... ypxfr: Exiting: Map successfully transferred coltrane has been setup as an YP slave server without any errors. Don't forget to update map ypservers on ellington. You should now have a directory called /var/yp/test-domain. Copies of the NIS master server's maps should be in this directory. You will need to make sure that these stay updated. The following /etc/crontab entries on your slave servers should do the job: 20 * * * * root /usr/libexec/ypxfr passwd.byname 21 * * * * root /usr/libexec/ypxfr passwd.byuid These two lines force the slave to sync its maps with the maps on the master server. Although these entries are not mandatory, since the master server attempts to ensure any changes to its NIS maps are communicated to its slaves and because password information is vital to systems depending on the server, it is a good idea to force the updates. This is more important on busy networks where map updates might not always complete. Now, run the command /etc/netstart on the slave server as well, which again starts the NIS server. NIS Clients An NIS client establishes what is called a binding to a particular NIS server using the ypbind daemon. ypbind checks the system's default domain (as set by the domainname command), and begins broadcasting RPC requests on the local network. These requests specify the name of the domain for which ypbind is attempting to establish a binding. If a server that has been configured to serve the requested domain receives one of the broadcasts, it will respond to ypbind, which will record the server's address. If there are several servers available (a master and several slaves, for example), ypbind will use the address of the first one to respond. From that point on, the client system will direct all of its NIS requests to that server. ypbind will occasionally ping the server to make sure it is still up and running. If it fails to receive a reply to one of its pings within a reasonable amount of time, ypbind will mark the domain as unbound and begin broadcasting again in the hopes of locating another server. Setting Up a NIS Client NIS client configuration Setting up a FreeBSD machine to be a NIS client is fairly straightforward. Edit the file /etc/rc.conf and add the following lines in order to set the NIS domainname and start ypbind upon network startup: nisdomainname="test-domain" nis_client_enable="YES" To import all possible password entries from the NIS server, remove all user accounts from your /etc/master.passwd file and use vipw to add the following line to the end of the file: +::::::::: This line will afford anyone with a valid account in the NIS server's password maps an account. There are many ways to configure your NIS client by changing this line. See the netgroups section below for more information. For more detailed reading see O'Reilly's book on Managing NFS and NIS. You should keep at least one local account (i.e. not imported via NIS) in your /etc/master.passwd and this account should also be a member of the group wheel. If there is something wrong with NIS, this account can be used to log in remotely, become root, and fix things. To import all possible group entries from the NIS server, add this line to your /etc/group file: +:*:: After completing these steps, you should be able to run ypcat passwd and see the NIS server's passwd map. NIS Security In general, any remote user can issue an RPC to &man.ypserv.8; and retrieve the contents of your NIS maps, provided the remote user knows your domainname. To prevent such unauthorized transactions, &man.ypserv.8; supports a feature called securenets which can be used to restrict access to a given set of hosts. At startup, &man.ypserv.8; will attempt to load the securenets information from a file called /var/yp/securenets. This path varies depending on the path specified with the option. This file contains entries that consist of a network specification and a network mask separated by white space. Lines starting with # are considered to be comments. A sample securenets file might look like this: # allow connections from local host -- mandatory 127.0.0.1 255.255.255.255 # allow connections from any host # on the 192.168.128.0 network 192.168.128.0 255.255.255.0 # allow connections from any host # between 10.0.0.0 to 10.0.15.255 # this includes the machines in the testlab 10.0.0.0 255.255.240.0 If &man.ypserv.8; receives a request from an address that matches one of these rules, it will process the request normally. If the address fails to match a rule, the request will be ignored and a warning message will be logged. If the /var/yp/securenets file does not exist, ypserv will allow connections from any host. The ypserv program also has support for Wietse Venema's TCP Wrapper package. This allows the administrator to use the TCP Wrapper configuration files for access control instead of /var/yp/securenets. While both of these access control mechanisms provide some security, they, like the privileged port test, are vulnerable to IP spoofing attacks. All NIS-related traffic should be blocked at your firewall. Servers using /var/yp/securenets may fail to serve legitimate NIS clients with archaic TCP/IP implementations. Some of these implementations set all host bits to zero when doing broadcasts and/or fail to observe the subnet mask when calculating the broadcast address. While some of these problems can be fixed by changing the client configuration, other problems may force the retirement of the client systems in question or the abandonment of /var/yp/securenets. Using /var/yp/securenets on a server with such an archaic implementation of TCP/IP is a really bad idea and will lead to loss of NIS functionality for large parts of your network. TCP Wrappers The use of the TCP Wrapper package increases the latency of your NIS server. The additional delay may be long enough to cause timeouts in client programs, especially in busy networks or with slow NIS servers. If one or more of your client systems suffers from these symptoms, you should convert the client systems in question into NIS slave servers and force them to bind to themselves. Barring Some Users from Logging On In our lab, there is a machine basie that is supposed to be a faculty only workstation. We do not want to take this machine out of the NIS domain, yet the passwd file on the master NIS server contains accounts for both faculty and students. What can we do? There is a way to bar specific users from logging on to a machine, even if they are present in the NIS database. To do this, all you must do is add -username to the end of the /etc/master.passwd file on the client machine, where username is the username of the user you wish to bar from logging in. This should preferably be done using vipw, since vipw will sanity check your changes to /etc/master.passwd, as well as automatically rebuild the password database when you finish editing. For example, if we wanted to bar user bill from logging on to basie we would: basie&prompt.root; vipw [add -bill to the end, exit] vipw: rebuilding the database... vipw: done basie&prompt.root; cat /etc/master.passwd root:[password]:0:0::0:0:The super-user:/root:/bin/csh toor:[password]:0:0::0:0:The other super-user:/root:/bin/sh daemon:*:1:1::0:0:Owner of many system processes:/root:/sbin/nologin operator:*:2:5::0:0:System &:/:/sbin/nologin bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/sbin/nologin tty:*:4:65533::0:0:Tty Sandbox:/:/sbin/nologin kmem:*:5:65533::0:0:KMem Sandbox:/:/sbin/nologin games:*:7:13::0:0:Games pseudo-user:/usr/games:/sbin/nologin news:*:8:8::0:0:News Subsystem:/:/sbin/nologin man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/sbin/nologin bind:*:53:53::0:0:Bind Sandbox:/:/sbin/nologin uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/sbin/nologin pop:*:68:6::0:0:Post Office Owner:/nonexistent:/sbin/nologin nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin +::::::::: -bill basie&prompt.root; Udo Erdelhoff Contributed by Using Netgroups netgroups The method shown in the previous section works reasonably well if you need special rules for a very small number of users and/or machines. On larger networks, you will forget to bar some users from logging onto sensitive machines, or you may even have to modify each machine separately, thus losing the main benefit of NIS: centralized administration. The NIS developers' solution for this problem is called netgroups. Their purpose and semantics can be compared to the normal groups used by &unix; file systems. The main differences are the lack of a numeric ID and the ability to define a netgroup by including both user accounts and other netgroups. Netgroups were developed to handle large, complex networks with hundreds of users and machines. On one hand, this is a Good Thing if you are forced to deal with such a situation. On the other hand, this complexity makes it almost impossible to explain netgroups with really simple examples. The example used in the remainder of this section demonstrates this problem. Let us assume that your successful introduction of NIS in your laboratory caught your superiors' interest. Your next job is to extend your NIS domain to cover some of the other machines on campus. The two tables contain the names of the new users and new machines as well as brief descriptions of them. User Name(s) Description alpha, beta Normal employees of the IT department charlie, delta The new apprentices of the IT department echo, foxtrott, golf, ... Ordinary employees able, baker, ... The current interns Machine Name(s) Description war, death, famine, pollution Your most important servers. Only the IT employees are allowed to log onto these machines. pride, greed, envy, wrath, lust, sloth Less important servers. All members of the IT department are allowed to login onto these machines. one, two, three, four, ... Ordinary workstations. Only the real employees are allowed to use these machines. trashcan A very old machine without any critical data. Even the intern is allowed to use this box. If you tried to implement these restrictions by separately blocking each user, you would have to add one -user line to each system's passwd for each user who is not allowed to login onto that system. If you forget just one entry, you could be in trouble. It may be feasible to do this correctly during the initial setup, however you will eventually forget to add the lines for new users during day-to-day operations. After all, Murphy was an optimist. Handling this situation with netgroups offers several advantages. Each user need not be handled separately; you assign a user to one or more netgroups and allow or forbid logins for all members of the netgroup. If you add a new machine, you will only have to define login restrictions for netgroups. If a new user is added, you will only have to add the user to one or more netgroups. Those changes are independent of each other: no more for each combination of user and machine do... If your NIS setup is planned carefully, you will only have to modify exactly one central configuration file to grant or deny access to machines. The first step is the initialization of the NIS map netgroup. FreeBSD's &man.ypinit.8; does not create this map by default, but its NIS implementation will support it once it has been created. To create an empty map, simply type ellington&prompt.root; vi /var/yp/netgroup and start adding content. For our example, we need at least four netgroups: IT employees, IT apprentices, normal employees and interns. IT_EMP (,alpha,test-domain) (,beta,test-domain) IT_APP (,charlie,test-domain) (,delta,test-domain) USERS (,echo,test-domain) (,foxtrott,test-domain) \ (,golf,test-domain) INTERNS (,able,test-domain) (,baker,test-domain) IT_EMP, IT_APP etc. are the names of the netgroups. Each bracketed group adds one or more user accounts to it. The three fields inside a group are: The name of the host(s) where the following items are valid. If you do not specify a hostname, the entry is valid on all hosts. If you do specify a hostname, you will enter a realm of darkness, horror and utter confusion. The name of the account that belongs to this netgroup. The NIS domain for the account. You can import accounts from other NIS domains into your netgroup if you are one of the unlucky fellows with more than one NIS domain. Each of these fields can contain wildcards. See &man.netgroup.5; for details. netgroups Netgroup names longer than 8 characters should not be used, especially if you have machines running other operating systems within your NIS domain. The names are case sensitive; using capital letters for your netgroup names is an easy way to distinguish between user, machine and netgroup names. Some NIS clients (other than FreeBSD) cannot handle netgroups with a large number of entries. For example, some older versions of &sunos; start to cause trouble if a netgroup contains more than 15 entries. You can circumvent this limit by creating several sub-netgroups with 15 users or less and a real netgroup that consists of the sub-netgroups: BIGGRP1 (,joe1,domain) (,joe2,domain) (,joe3,domain) [...] BIGGRP2 (,joe16,domain) (,joe17,domain) [...] BIGGRP3 (,joe31,domain) (,joe32,domain) BIGGROUP BIGGRP1 BIGGRP2 BIGGRP3 You can repeat this process if you need more than 225 users within a single netgroup. Activating and distributing your new NIS map is easy: ellington&prompt.root; cd /var/yp ellington&prompt.root; make This will generate the three NIS maps netgroup, netgroup.byhost and netgroup.byuser. Use &man.ypcat.1; to check if your new NIS maps are available: ellington&prompt.user; ypcat -k netgroup ellington&prompt.user; ypcat -k netgroup.byhost ellington&prompt.user; ypcat -k netgroup.byuser The output of the first command should resemble the contents of /var/yp/netgroup. The second command will not produce output if you have not specified host-specific netgroups. The third command can be used to get the list of netgroups for a user. The client setup is quite simple. To configure the server war, you only have to start &man.vipw.8; and replace the line +::::::::: with +@IT_EMP::::::::: Now, only the data for the users defined in the netgroup IT_EMP is imported into war's password database and only these users are allowed to login. Unfortunately, this limitation also applies to the ~ function of the shell and all routines converting between user names and numerical user IDs. In other words, cd ~user will not work, ls -l will show the numerical ID instead of the username and find . -user joe -print will fail with No such user. To fix this, you will have to import all user entries without allowing them to login onto your servers. This can be achieved by adding another line to /etc/master.passwd. This line should contain: +:::::::::/sbin/nologin, meaning Import all entries but replace the shell with /sbin/nologin in the imported entries. You can replace any field in the passwd entry by placing a default value in your /etc/master.passwd. Make sure that the line +:::::::::/sbin/nologin is placed after +@IT_EMP:::::::::. Otherwise, all user accounts imported from NIS will have /sbin/nologin as their login shell. After this change, you will only have to change one NIS map if a new employee joins the IT department. You could use a similar approach for the less important servers by replacing the old +::::::::: in their local version of /etc/master.passwd with something like this: +@IT_EMP::::::::: +@IT_APP::::::::: +:::::::::/sbin/nologin The corresponding lines for the normal workstations could be: +@IT_EMP::::::::: +@USERS::::::::: +:::::::::/sbin/nologin And everything would be fine until there is a policy change a few weeks later: The IT department starts hiring interns. The IT interns are allowed to use the normal workstations and the less important servers; and the IT apprentices are allowed to login onto the main servers. You add a new netgroup IT_INTERN, add the new IT interns to this netgroup and start to change the configuration on each and every machine... As the old saying goes: Errors in centralized planning lead to global mess. NIS' ability to create netgroups from other netgroups can be used to prevent situations like these. One possibility is the creation of role-based netgroups. For example, you could create a netgroup called BIGSRV to define the login restrictions for the important servers, another netgroup called SMALLSRV for the less important servers and a third netgroup called USERBOX for the normal workstations. Each of these netgroups contains the netgroups that are allowed to login onto these machines. The new entries for your NIS map netgroup should look like this: BIGSRV IT_EMP IT_APP SMALLSRV IT_EMP IT_APP ITINTERN USERBOX IT_EMP ITINTERN USERS This method of defining login restrictions works reasonably well if you can define groups of machines with identical restrictions. Unfortunately, this is the exception and not the rule. Most of the time, you will need the ability to define login restrictions on a per-machine basis. Machine-specific netgroup definitions are the other possibility to deal with the policy change outlined above. In this scenario, the /etc/master.passwd of each box contains two lines starting with +. The first of them adds a netgroup with the accounts allowed to login onto this machine, the second one adds all other accounts with /sbin/nologin as shell. It is a good idea to use the ALL-CAPS version of the machine name as the name of the netgroup. In other words, the lines should look like this: +@BOXNAME::::::::: +:::::::::/sbin/nologin Once you have completed this task for all your machines, you will not have to modify the local versions of /etc/master.passwd ever again. All further changes can be handled by modifying the NIS map. Here is an example of a possible netgroup map for this scenario with some additional goodies: # Define groups of users first IT_EMP (,alpha,test-domain) (,beta,test-domain) IT_APP (,charlie,test-domain) (,delta,test-domain) DEPT1 (,echo,test-domain) (,foxtrott,test-domain) DEPT2 (,golf,test-domain) (,hotel,test-domain) DEPT3 (,india,test-domain) (,juliet,test-domain) ITINTERN (,kilo,test-domain) (,lima,test-domain) D_INTERNS (,able,test-domain) (,baker,test-domain) # # Now, define some groups based on roles USERS DEPT1 DEPT2 DEPT3 BIGSRV IT_EMP IT_APP SMALLSRV IT_EMP IT_APP ITINTERN USERBOX IT_EMP ITINTERN USERS # # And a groups for a special tasks # Allow echo and golf to access our anti-virus-machine SECURITY IT_EMP (,echo,test-domain) (,golf,test-domain) # # machine-based netgroups # Our main servers WAR BIGSRV FAMINE BIGSRV # User india needs access to this server POLLUTION BIGSRV (,india,test-domain) # # This one is really important and needs more access restrictions DEATH IT_EMP # # The anti-virus-machine mentioned above ONE SECURITY # # Restrict a machine to a single user TWO (,hotel,test-domain) # [...more groups to follow] If you are using some kind of database to manage your user accounts, you should be able to create the first part of the map with your database's report tools. This way, new users will automatically have access to the boxes. One last word of caution: It may not always be advisable to use machine-based netgroups. If you are deploying a couple of dozen or even hundreds of identical machines for student labs, you should use role-based netgroups instead of machine-based netgroups to keep the size of the NIS map within reasonable limits. Important Things to Remember There are still a couple of things that you will need to do differently now that you are in an NIS environment. Every time you wish to add a user to the lab, you must add it to the master NIS server only, and you must remember to rebuild the NIS maps. If you forget to do this, the new user will not be able to login anywhere except on the NIS master. For example, if we needed to add a new user jsmith to the lab, we would: &prompt.root; pw useradd jsmith &prompt.root; cd /var/yp &prompt.root; make test-domain You could also run adduser jsmith instead of pw useradd jsmith. Keep the administration accounts out of the NIS maps. You do not want to be propagating administrative accounts and passwords to machines that will have users that should not have access to those accounts. Keep the NIS master and slave secure, and minimize their downtime. If somebody either hacks or simply turns off these machines, they have effectively rendered many people without the ability to login to the lab. This is the chief weakness of any centralized administration system. If you do not protect your NIS servers, you will have a lot of angry users! NIS v1 Compatibility FreeBSD's ypserv has some support for serving NIS v1 clients. FreeBSD's NIS implementation only uses the NIS v2 protocol, however other implementations include support for the v1 protocol for backwards compatibility with older systems. The ypbind daemons supplied with these systems will try to establish a binding to an NIS v1 server even though they may never actually need it (and they may persist in broadcasting in search of one even after they receive a response from a v2 server). Note that while support for normal client calls is provided, this version of ypserv does not handle v1 map transfer requests; consequently, it cannot be used as a master or slave in conjunction with older NIS servers that only support the v1 protocol. Fortunately, there probably are not any such servers still in use today. NIS Servers That Are Also NIS Clients Care must be taken when running ypserv in a multi-server domain where the server machines are also NIS clients. It is generally a good idea to force the servers to bind to themselves rather than allowing them to broadcast bind requests and possibly become bound to each other. Strange failure modes can result if one server goes down and others are dependent upon it. Eventually all the clients will time out and attempt to bind to other servers, but the delay involved can be considerable and the failure mode is still present since the servers might bind to each other all over again. You can force a host to bind to a particular server by running ypbind with the flag. If you do not want to do this manually each time you reboot your NIS server, you can add the following lines to your /etc/rc.conf: nis_client_enable="YES" # run client stuff as well nis_client_flags="-S NIS domain,server" See &man.ypbind.8; for further information. Password Formats NIS password formats One of the most common issues that people run into when trying to implement NIS is password format compatibility. If your NIS server is using DES encrypted passwords, it will only support clients that are also using DES. For example, if you have &solaris; NIS clients in your network, then you will almost certainly need to use DES encrypted passwords. To check which format your servers and clients are using, look at /etc/login.conf. If the host is configured to use DES encrypted passwords, then the default class will contain an entry like this: default:\ :passwd_format=des:\ :copyright=/etc/COPYRIGHT:\ [Further entries elided] Other possible values for the passwd_format capability include blf and md5 (for Blowfish and MD5 encrypted passwords, respectively). If you have made changes to /etc/login.conf, you will also need to rebuild the login capability database, which is achieved by running the following command as root: &prompt.root; cap_mkdb /etc/login.conf The format of passwords already in /etc/master.passwd will not be updated until a user changes his password for the first time after the login capability database is rebuilt. Next, in order to ensure that passwords are encrypted with the format that you have chosen, you should also check that the crypt_default in /etc/auth.conf gives precedence to your chosen password format. To do this, place the format that you have chosen first in the list. For example, when using DES encrypted passwords, the entry would be: crypt_default = des blf md5 Having followed the above steps on each of the &os; based NIS servers and clients, you can be sure that they all agree on which password format is used within your network. If you have trouble authenticating on an NIS client, this is a pretty good place to start looking for possible problems. Remember: if you want to deploy an NIS server for a heterogenous network, you will probably have to use DES on all systems because it is the lowest common standard. Greg Sutter Written by Automatic Network Configuration (DHCP) What Is DHCP? Dynamic Host Configuration Protocol DHCP Internet Software Consortium (ISC) DHCP, the Dynamic Host Configuration Protocol, describes the means by which a system can connect to a network and obtain the necessary information for communication upon that network. FreeBSD versions prior to 6.0 use the ISC (Internet Software Consortium) DHCP client (&man.dhclient.8;) implementation. Later versions use the OpenBSD dhclient taken from OpenBSD 3.7. All information here regarding dhclient is for use with either of the ISC or OpenBSD DHCP clients. The DHCP server is the one included in the ISC distribution. What This Section Covers This section describes both the client-side components of the ISC and OpenBSD DHCP client and server-side components of the ISC DHCP system. The client-side program, dhclient, comes integrated within FreeBSD, and the server-side portion is available from the net/isc-dhcp3-server port. The &man.dhclient.8;, &man.dhcp-options.5;, and &man.dhclient.conf.5; manual pages, in addition to the references below, are useful resources. How It Works UDP When dhclient, the DHCP client, is executed on the client machine, it begins broadcasting requests for configuration information. By default, these requests are on UDP port 68. The server replies on UDP 67, giving the client an IP address and other relevant network information such as netmask, router, and DNS servers. All of this information comes in the form of a DHCP lease and is only valid for a certain time (configured by the DHCP server maintainer). In this manner, stale IP addresses for clients no longer connected to the network can be automatically reclaimed. DHCP clients can obtain a great deal of information from the server. An exhaustive list may be found in &man.dhcp-options.5;. FreeBSD Integration &os; fully integrates the ISC or OpenBSD DHCP client, dhclient (according to the &os; version you run). DHCP client support is provided within both the installer and the base system, obviating the need for detailed knowledge of network configurations on any network that runs a DHCP server. dhclient has been included in all FreeBSD distributions since 3.2. sysinstall DHCP is supported by sysinstall. When configuring a network interface within sysinstall, the second question asked is: Do you want to try DHCP configuration of the interface?. Answering affirmatively will execute dhclient, and if successful, will fill in the network configuration information automatically. There are two things you must do to have your system use DHCP upon startup: DHCP requirements Make sure that the bpf device is compiled into your kernel. To do this, add device bpf to your kernel configuration file, and rebuild the kernel. For more information about building kernels, see . The bpf device is already part of the GENERIC kernel that is supplied with FreeBSD, so if you do not have a custom kernel, you should not need to create one in order to get DHCP working. For those who are particularly security conscious, you should be warned that bpf is also the device that allows packet sniffers to work correctly (although they still have to be run as root). bpf is required to use DHCP, but if you are very sensitive about security, you probably should not add bpf to your kernel in the expectation that at some point in the future you will be using DHCP. Edit your /etc/rc.conf to include the following: ifconfig_fxp0="DHCP" Be sure to replace fxp0 with the designation for the interface that you wish to dynamically configure, as described in . If you are using a different location for dhclient, or if you wish to pass additional flags to dhclient, also include the following (editing as necessary): dhcp_program="/sbin/dhclient" dhcp_flags="" DHCP server The DHCP server, dhcpd, is included as part of the net/isc-dhcp3-server port in the ports collection. This port contains the ISC DHCP server and documentation. Files DHCP configuration files /etc/dhclient.conf dhclient requires a configuration file, /etc/dhclient.conf. Typically the file contains only comments, the defaults being reasonably sane. This configuration file is described by the &man.dhclient.conf.5; manual page. /sbin/dhclient dhclient is statically linked and resides in /sbin. The &man.dhclient.8; manual page gives more information about dhclient. /sbin/dhclient-script dhclient-script is the FreeBSD-specific DHCP client configuration script. It is described in &man.dhclient-script.8;, but should not need any user modification to function properly. /var/db/dhclient.leases The DHCP client keeps a database of valid leases in this file, which is written as a log. &man.dhclient.leases.5; gives a slightly longer description. Further Reading The DHCP protocol is fully described in RFC 2131. An informational resource has also been set up at . Installing and Configuring a DHCP Server What This Section Covers This section provides information on how to configure a FreeBSD system to act as a DHCP server using the ISC (Internet Software Consortium) implementation of the DHCP server. The server is not provided as part of FreeBSD, and so you will need to install the net/isc-dhcp3-server port to provide this service. See for more information on using the Ports Collection. DHCP Server Installation DHCP installation In order to configure your FreeBSD system as a DHCP server, you will need to ensure that the &man.bpf.4; device is compiled into your kernel. To do this, add device bpf to your kernel configuration file, and rebuild the kernel. For more information about building kernels, see . The bpf device is already part of the GENERIC kernel that is supplied with FreeBSD, so you do not need to create a custom kernel in order to get DHCP working. Those who are particularly security conscious should note that bpf is also the device that allows packet sniffers to work correctly (although such programs still need privileged access). bpf is required to use DHCP, but if you are very sensitive about security, you probably should not include bpf in your kernel purely because you expect to use DHCP at some point in the future. The next thing that you will need to do is edit the sample dhcpd.conf which was installed by the net/isc-dhcp3-server port. By default, this will be /usr/local/etc/dhcpd.conf.sample, and you should copy this to /usr/local/etc/dhcpd.conf before proceeding to make changes. Configuring the DHCP Server DHCP dhcpd.conf dhcpd.conf is comprised of declarations regarding subnets and hosts, and is perhaps most easily explained using an example : option domain-name "example.com"; option domain-name-servers 192.168.4.100; option subnet-mask 255.255.255.0; default-lease-time 3600; max-lease-time 86400; ddns-update-style none; subnet 192.168.4.0 netmask 255.255.255.0 { range 192.168.4.129 192.168.4.254; option routers 192.168.4.1; } host mailhost { hardware ethernet 02:03:04:05:06:07; fixed-address mailhost.example.com; } This option specifies the domain that will be provided to clients as the default search domain. See &man.resolv.conf.5; for more information on what this means. This option specifies a comma separated list of DNS servers that the client should use. The netmask that will be provided to clients. A client may request a specific length of time that a lease will be valid. Otherwise the server will assign a lease with this expiry value (in seconds). This is the maximum length of time that the server will lease for. Should a client request a longer lease, a lease will be issued, although it will only be valid for max-lease-time seconds. This option specifies whether the DHCP server should attempt to update DNS when a lease is accepted or released. In the ISC implementation, this option is required. This denotes which IP addresses should be used in the pool reserved for allocating to clients. IP addresses between, and including, the ones stated are handed out to clients. Declares the default gateway that will be provided to clients. The hardware MAC address of a host (so that the DHCP server can recognize a host when it makes a request). Specifies that the host should always be given the same IP address. Note that using a hostname is correct here, since the DHCP server will resolve the hostname itself before returning the lease information. Once you have finished writing your dhcpd.conf, you should enable the DHCP server in /etc/rc.conf, i.e. by adding: dhcpd_enable="YES" dhcpd_ifaces="dc0" Replace the dc0 interface name with the interface (or interfaces, separated by whitespace) that your DHCP server should listen on for DHCP client requests. Then, you can proceed to start the server by issuing the following command: &prompt.root; /usr/local/etc/rc.d/isc-dhcpd.sh start Should you need to make changes to the configuration of your server in the future, it is important to note that sending a SIGHUP signal to dhcpd does not result in the configuration being reloaded, as it does with most daemons. You will need to send a SIGTERM signal to stop the process, and then restart it using the command above. Files DHCP configuration files /usr/local/sbin/dhcpd dhcpd is statically linked and resides in /usr/local/sbin. The &man.dhcpd.8; manual page installed with the port gives more information about dhcpd. /usr/local/etc/dhcpd.conf dhcpd requires a configuration file, /usr/local/etc/dhcpd.conf before it will start providing service to clients. This file needs to contain all the information that should be provided to clients that are being serviced, along with information regarding the operation of the server. This configuration file is described by the &man.dhcpd.conf.5; manual page installed by the port. /var/db/dhcpd.leases The DHCP server keeps a database of leases it has issued in this file, which is written as a log. The manual page &man.dhcpd.leases.5;, installed by the port gives a slightly longer description. /usr/local/sbin/dhcrelay dhcrelay is used in advanced environments where one DHCP server forwards a request from a client to another DHCP server on a separate network. If you require this functionality, then install the net/isc-dhcp3-relay port. The &man.dhcrelay.8; manual page provided with the port contains more detail. Chern Lee Contributed by Tom Rhodes Daniel Gerzo Domain Name System (<acronym>DNS</acronym>) Overview BIND &os; utilizes, by default, a version of BIND (Berkeley Internet Name Domain), which is the most common implementation of the DNS protocol. DNS is the protocol through which names are mapped to IP addresses, and vice versa. For example, a query for www.FreeBSD.org will receive a reply with the IP address of The &os; Project's web server, whereas, a query for ftp.FreeBSD.org will return the IP address of the corresponding FTP machine. Likewise, the opposite can happen. A query for an IP address can resolve its hostname. It is not necessary to run a name server to perform DNS lookups on a system. &os; currently comes with BIND9 DNS server software by default. Our installation provides enhanced security features, a new file system layout and automated &man.chroot.8; configuration. DNS DNS is coordinated across the Internet through a somewhat complex system of authoritative root, Top Level Domain (TLD), and other smaller-scale name servers which host and cache individual domain information. Currently, BIND is maintained by the Internet Software Consortium . Terminology To understand this document, some terms related to DNS must be understood. resolver reverse DNS root zone Term Definition Forward DNS Mapping of hostnames to IP addresses. Origin Refers to the domain covered in a particular zone file. named, BIND, name server Common names for the BIND name server package within &os;. Resolver A system process through which a machine queries a name server for zone information. Reverse DNS The opposite of forward DNS; mapping of IP addresses to hostnames. Root zone The beginning of the Internet zone hierarchy. All zones fall under the root zone, similar to how all files in a file system fall under the root directory. Zone An individual domain, subdomain, or portion of the DNS administered by the same authority. zones examples Examples of zones: . is the root zone. org. is a Top Level Domain (TLD) under the root zone. example.org. is a zone under the org. TLD. 1.168.192.in-addr.arpa is a zone referencing all IP addresses which fall under the 192.168.1.* IP space. As one can see, the more specific part of a hostname appears to its left. For example, example.org. is more specific than org., as org. is more specific than the root zone. The layout of each part of a hostname is much like a file system: the /dev directory falls within the root, and so on. Reasons to Run a Name Server Name servers usually come in two forms: an authoritative name server, and a caching name server. An authoritative name server is needed when: One wants to serve DNS information to the world, replying authoritatively to queries. A domain, such as example.org, is registered and IP addresses need to be assigned to hostnames under it. An IP address block requires reverse DNS entries (IP to hostname). A backup or second name server, called a slave, will reply to queries. A caching name server is needed when: A local DNS server may cache and respond more quickly than querying an outside name server. When one queries for www.FreeBSD.org, the resolver usually queries the uplink ISP's name server, and retrieves the reply. With a local, caching DNS server, the query only has to be made once to the outside world by the caching DNS server. Every additional query will not have to look to the outside of the local network, since the information is cached locally. How It Works In &os;, the BIND daemon is called named for obvious reasons. File Description &man.named.8; The BIND daemon. &man.rndc.8; Name server control utility. /etc/namedb Directory where BIND zone information resides. /etc/namedb/named.conf Configuration file of the daemon. Depending on how a given zone is configured on the server, the files related to that zone can be found in the master, slave, or dynamic subdirectories of the /etc/namedb directory. These files contain the DNS information that will be given out by the name server in response to queries. Starting BIND BIND starting Since BIND is installed by default, configuring it all is relatively simple. The default named configuration is that of a basic resolving name server, ran in a &man.chroot.8; environment. To start the server one time with this configuration, use the following command: &prompt.root; /etc/rc.d/named forcestart To ensure the named daemon is started at boot each time, put the following line into the /etc/rc.conf: named_enable="YES" There are obviously many configuration options for /etc/namedb/named.conf that are beyond the scope of this document. However, if you are interested in the startup options for named on &os;, take a look at the named_* flags in /etc/defaults/rc.conf and consult the &man.rc.conf.5; manual page. The section is also a good read. Configuration Files BIND configuration files Configuration files for named currently reside in /etc/namedb directory and will need modification before use, unless all that is needed is a simple resolver. This is where most of the configuration will be performed. Using <command>make-localhost</command> To configure a master zone for the localhost visit the /etc/namedb directory and run the following command: &prompt.root; sh make-localhost If all went well, a new file should exist in the master subdirectory. The filenames should be localhost.rev for the local domain name and localhost-v6.rev for IPv6 configurations. As the default configuration file, required information will be present in the named.conf file. <filename>/etc/namedb/named.conf</filename> // $FreeBSD$ // // Refer to the named.conf(5) and named(8) man pages, and the documentation // in /usr/share/doc/bind9 for more details. // // If you are going to set up an authoritative server, make sure you // understand the hairy details of how DNS works. Even with // simple mistakes, you can break connectivity for affected parties, // or cause huge amounts of useless Internet traffic. options { directory "/etc/namedb"; pid-file "/var/run/named/pid"; dump-file "/var/dump/named_dump.db"; statistics-file "/var/stats/named.stats"; // If named is being used only as a local resolver, this is a safe default. // For named to be accessible to the network, comment this option, specify // the proper IP address, or delete this option. listen-on { 127.0.0.1; }; // If you have IPv6 enabled on this system, uncomment this option for // use as a local resolver. To give access to the network, specify // an IPv6 address, or the keyword "any". // listen-on-v6 { ::1; }; // In addition to the "forwarders" clause, you can force your name // server to never initiate queries of its own, but always ask its // forwarders only, by enabling the following line: // // forward only; // If you've got a DNS server around at your upstream provider, enter // its IP address here, and enable the line below. This will make you // benefit from its cache, thus reduce overall DNS traffic in the Internet. /* forwarders { 127.0.0.1; }; */ Just as the comment says, to benefit from an uplink's cache, forwarders can be enabled here. Under normal circumstances, a name server will recursively query the Internet looking at certain name servers until it finds the answer it is looking for. Having this enabled will have it query the uplink's name server (or name server provided) first, taking advantage of its cache. If the uplink name server in question is a heavily trafficked, fast name server, enabling this may be worthwhile. 127.0.0.1 will not work here. Change this IP address to a name server at your uplink. /* * If there is a firewall between you and nameservers you want * to talk to, you might need to uncomment the query-source * directive below. Previous versions of BIND always asked * questions using port 53, but BIND versions 8 and later * use a pseudo-random unprivileged UDP port by default. */ // query-source address * port 53; }; // If you enable a local name server, don't forget to enter 127.0.0.1 // first in your /etc/resolv.conf so this server will be queried. // Also, make sure to enable it in /etc/rc.conf. zone "." { type hint; file "named.root"; }; zone "0.0.127.IN-ADDR.ARPA" { type master; file "master/localhost.rev"; }; // RFC 3152 zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA" { type master; file "master/localhost-v6.rev"; }; // NB: Do not use the IP addresses below, they are faked, and only // serve demonstration/documentation purposes! // // Example slave zone config entries. It can be convenient to become // a slave at least for the zone your own domain is in. Ask // your network administrator for the IP address of the responsible // primary. // // Never forget to include the reverse lookup (IN-ADDR.ARPA) zone! // (This is named after the first bytes of the IP address, in reverse // order, with ".IN-ADDR.ARPA" appended.) // // Before starting to set up a primary zone, make sure you fully // understand how DNS and BIND works. There are sometimes // non-obvious pitfalls. Setting up a slave zone is simpler. // // NB: Don't blindly enable the examples below. :-) Use actual names // and addresses instead. /* An example master zone zone "example.net" { type master; file "master/example.net"; }; */ /* An example dynamic zone key "exampleorgkey" { algorithm hmac-md5; secret "sf87HJqjkqh8ac87a02lla=="; }; zone "example.org" { type master; allow-update { key "exampleorgkey"; }; file "dynamic/example.org"; }; */ /* Examples of forward and reverse slave zones zone "example.com" { type slave; file "slave/example.com"; masters { 192.168.1.1; }; }; zone "1.168.192.in-addr.arpa" { type slave; file "slave/1.168.192.in-addr.arpa"; masters { 192.168.1.1; }; }; */ In named.conf, these are examples of slave entries for a forward and reverse zone. For each new zone served, a new zone entry must be added to named.conf. For example, the simplest zone entry for example.org can look like: zone "example.org" { type master; file "master/example.org"; }; The zone is a master, as indicated by the statement, holding its zone information in /etc/namedb/master/example.org indicated by the statement. zone "example.org" { type slave; file "slave/example.org"; }; In the slave case, the zone information is transferred from the master name server for the particular zone, and saved in the file specified. If and when the master server dies or is unreachable, the slave name server will have the transferred zone information and will be able to serve it. Zone Files BIND zone files An example master zone file for example.org (existing within /etc/namedb/master/example.org) is as follows: $TTL 3600 ; 1 hour example.org. IN SOA ns1.example.org. admin.example.org. ( 2006051501 ; Serial 10800 ; Refresh 3600 ; Retry 604800 ; Expire 86400 ; Minimum TTL ) ; DNS Servers IN NS ns1.example.org. IN NS ns2.example.org. ; MX Records IN MX 10 mx.example.org. IN MX 20 mail.example.org. IN A 192.168.1.1 ; Machine Names localhost IN A 127.0.0.1 ns1 IN A 192.168.1.2 ns2 IN A 192.168.1.3 mx IN A 192.168.1.4 mail IN A 192.168.1.5 ; Aliases www IN CNAME @ Note that every hostname ending in a . is an exact hostname, whereas everything without a trailing . is referenced to the origin. For example, www is translated into www.origin. In our fictitious zone file, our origin is example.org., so www would translate to www.example.org. The format of a zone file follows: recordname IN recordtype value DNS records The most commonly used DNS records: SOA start of zone authority NS an authoritative name server A a host address CNAME the canonical name for an alias MX mail exchanger PTR a domain name pointer (used in reverse DNS) example.org. IN SOA ns1.example.org. admin.example.org. ( 2006051501 ; Serial 10800 ; Refresh after 3 hours 3600 ; Retry after 1 hour 604800 ; Expire after 1 week 86400 ) ; Minimum TTL of 1 day example.org. the domain name, also the origin for this zone file. ns1.example.org. the primary/authoritative name server for this zone. admin.example.org. the responsible person for this zone, email address with @ replaced. (admin@example.org becomes admin.example.org) 2006051501 the serial number of the file. This must be incremented each time the zone file is modified. Nowadays, many admins prefer a yyyymmddrr format for the serial number. 2006051501 would mean last modified 05/15/2006, the latter 01 being the first time the zone file has been modified this day. The serial number is important as it alerts slave name servers for a zone when it is updated. IN NS ns1.example.org. This is an NS entry. Every name server that is going to reply authoritatively for the zone must have one of these entries. localhost IN A 127.0.0.1 ns1 IN A 192.168.1.2 ns2 IN A 192.168.1.3 mx IN A 192.168.1.4 mail IN A 192.168.1.5 The A record indicates machine names. As seen above, ns1.example.org would resolve to 192.168.1.2. IN A 192.168.1.1 This line assigns IP address 192.168.1.1 to the current origin, in this case example.org. www IN CNAME @ The canonical name record is usually used for giving aliases to a machine. In the example, www is aliased to the master machine which name equals to domain name example.org (192.168.1.1). CNAMEs can be used to provide alias hostnames, or round robin one hostname among multiple machines. MX record IN MX 10 mail.example.org. The MX record indicates which mail servers are responsible for handling incoming mail for the zone. mail.example.org is the hostname of the mail server, and 10 being the priority of that mail server. One can have several mail servers, with priorities of 10, 20 and so on. A mail server attempting to deliver to example.org would first try the highest priority MX (the record with the lowest priority number), then the second highest, etc, until the mail can be properly delivered. For in-addr.arpa zone files (reverse DNS), the same format is used, except with PTR entries instead of A or CNAME. $TTL 3600 1.168.192.in-addr.arpa. IN SOA ns1.example.org. admin.example.org. ( 2006051501 ; Serial 10800 ; Refresh 3600 ; Retry 604800 ; Expire 3600 ) ; Minimum IN NS ns1.example.org. IN NS ns2.example.org. 1 IN PTR example.org. 2 IN PTR ns1.example.org. 3 IN PTR ns2.example.org. 4 IN PTR mx.example.org. 5 IN PTR mail.example.org. This file gives the proper IP address to hostname mappings of our above fictitious domain. Caching Name Server BIND caching name server A caching name server is a name server that is not authoritative for any zones. It simply asks queries of its own, and remembers them for later use. To set one up, just configure the name server as usual, omitting any inclusions of zones. Security Although BIND is the most common implementation of DNS, there is always the issue of security. Possible and exploitable security holes are sometimes found. While &os; automatically drops named into a &man.chroot.8; environment; there are several other security mechanisms in place which could help to lure off possible DNS service attacks. It is always good idea to read CERT's security advisories and to subscribe to the &a.security-notifications; to stay up to date with the current Internet and &os; security issues. If a problem arises, keeping sources up to date and having a fresh build of named would not hurt. Further Reading BIND/named manual pages: &man.rndc.8; &man.named.8; &man.named.conf.5; Official ISC BIND Page Official ISC BIND Forum BIND FAQ O'Reilly DNS and BIND 5th Edition RFC1034 - Domain Names - Concepts and Facilities RFC1035 - Domain Names - Implementation and Specification Murray Stokely ÓõíåéóöïñÜ ôïõ ÂáããÝëçò ÔõðÜëäïò ÌåôÜöñáóç Ï åîõðçñåôçôÞò HTTP Apache åîõðçñåôçôÝò web åãêáôÜóôáóç Apache Óýíïøç Ôï &os; ÷ñçóéìïðïéåßôáé ãéá íá öéëïîåíåß ðáãêïóìßùò éóôïóåëßäåò ìåãÜëçò åðéóêåøéìüôçôáò. Ïé ðåñéóóüôåñïé äéáêïìéóôÝò web óôï äéáäßêôõï ÷ñçóéìïðïéïýí ôïí åîõðçñåôçôÞ HTTP Apache. Ôá ðáêÝôá ëïãéóìéêïý ôïõ Apache èá ðñÝðåé íá ðåñéÝ÷ïíôáé óôï ìÝóï åãêáôáôÜóôáóçò ôïõ &os; ðïõ ÷ñçóéìïðïéåßôå. Áí äåí åãêáôáóôÞóáôå ôïí Apache êáôÜ ôçí äéÜñêåéá ôçò åãêáôÜóôáóçò ôïõ &os;, ôüôå ìðïñåßôå íá ôïí åãêáôáóôÞóåôå áðü ôï ðáêÝôï www/apache13 Þ áðü ôï ðáêÝôï www/apache20. Áöïý ïëïêëçñþóåôå åðéôõ÷þò ôçí åãêáôÜóôáóç ôïõ Apache, èá ðñÝðåé íá êÜíåôå ôéò áðáñáßôçôåò ñõèìßóåéò. ÁõôÞ ç åíüôçôá êáëýðôåé ôçí Ýêäïóç åîõðçñåôçôþí Apache HTTP 1.3.X, ìéáò ðïõ áõôÞ ç Ýêäïóç åßíáé ç ðéï äéáäåäïìÝíç ãéá ôï &os;. Ï Apache 2.X ðáñïõóéÜæåé ðïëëÝò íÝåò ôå÷íïëïãßåò áëëÜ áõôÝò äåí ðåñéãñÜöïíôáé óå áõôÞ ôçí åíüôçôá. Ðåñéóóüôåñåò ðëçñïöïñßåò ãéá ôïí Apache 2.X, ìðïñåßôå íá äåßôå óôçí óåëßäá . Ñõèìßóåéò Apache áñ÷åßï ñõèìßóåùí Óôï &os; ôï óçìáíôéêüôåñï áñ÷åßï ñõèìßóåùí ôïõ ÅîõðçñåôçôÞ HTTP Apache åßíáé ôï /usr/local/etc/apache/httpd.conf. Åßíáé Ýíá ôõðéêü &unix; ñõèìéóôéêü áñ÷åßï êåéìÝíïõ, ìå ãñáììÝò ó÷ïëßùí ðïõ îåêéíïýí ìå ôïí ÷áñáêôÞñá #. Óêïðüò ìáò åäþ äåí åßíáé ìéá ïëïêëçñùìÝíç ðåñéãñáöÞ üëùí ôùí ðéèáíþí åðéëïãþí, åðïìÝíùò èá ðåñéãñÜøïõìå ìüíï ôéò ðéï äçìïöéëåßò åðéëïãÝò ñõèìßóåéò (configuration directives). ServerRoot "/usr/local" Åäþ ðåñéãñÜöåôáé ï ðñïåðéëåãìÝíïò éåñáñ÷éêÜ êáôÜëïãïò åãêáôÜóôáóçò ãéá ôïí Apache. Ôá åêôåëÝóéìá áñ÷åßá åßíáé áðïèçêåõìÝíá óôïõò õðïêáôáëüãïõò bin êáé sbin ôïõ êáôáëüãïõ ServerRoot êáé ôá áñ÷åßá ñõèìßóåùí áðïèçêåýïíôáé óôïí êáôÜëïãï etc/apache. ServerAdmin you@your.address Ç çëåêôñïíéêÞ äéåýèõíóç óôçí ïðïßá èá ðñÝðåé íá áðïóôÝëëïíôáé áíáöïñÝò ðñïâëçìÜôùí ó÷åôéêÜ ìå ôïí åîõðçñåôçôÞ. ÁõôÞ ç äéåýèõíóç åìöáíßæåôáé óå êÜðïéåò óåëßäåò ðïõ äçìéïõñãïýíôáé áðü ôïí åîõðçñåôçôÞ, üðùò ïé óåëßäåò óöáëìÜôùí. ServerName www.example.com Ôï ServerName óáò åðéôñÝðåé íá èÝóåôå Ýíá üíïìá êüìâïõ (hostname) ãéá ôïí åîõðçñåôçôÞ óáò, ôï ïðïßï áðïóôÝëëåôáé ðßóù óôïõò clients áí åßíáé äéáöïñåôéêü áðü åêåßíï ðïõ Ý÷åôå Þäç ñõèìßóåé óôïí êüìâï óáò (åäþ ìðïñåßôå, ãéá ðáñÜäåéãìá, íá ÷ñçóéìïðïéÞóåôå www áíôß ôïõ ðñáãìáôéêïý ïíüìáôïò ôïõ êüìâïõ). DocumentRoot "/usr/local/www/data" DocumentRoot: Åßíáé ï êáôÜëïãïò áðü ôïí ïðïßï èá ðñïóöÝñïíôáé ôá Ýããñáöá óáò. ÐñïåðéëåãìÝíá, üëá ôá áéôÞìáôá èá åîõðçñåôïýíôáé áðü áõôü ôïí êáôÜëïãï, áëëÜ ìðïñïýí åðßóçò íá ÷ñçóéìïðïéçèïýí óõìâïëéêïß äåóìïß (symbolic link) Þ ðáñùíýìéá (aliases) ðïõ èá óôï÷åýïõí óå Üëëåò ôïðïèåóßåò. Ðñéí êÜíåôå ïðïéáäÞðïôå áëëáãÞ, åßíáé êáëü íá äçìéïõñãåßôå áíôßãñáöá áóöáëåßáò (backup) ôïõ áñ÷åßïõ ñõèìßóåùí ôïõ Apache. Ìüëéò êñßíåôå ðùò åßóôå éêáíïðïéçìÝíïò ìå ôéò áñ÷éêÝò ñõèìßóåéò ìðïñåßôå íá îåêéíÞóåôå ìå ôçí åêôÝëåóç ôïõ Apache. ÅêôÝëåóç ôïõ <application>Apache</application> Apache åêêßíçóç Þ óôáìÜôçìá O Apache äåí ôñÝ÷åé äéáìÝóïõ ôïõ õðåñ-äéáêïìéóôÞ inetd üðùò êÜíïõí ðïëëïß Üëëïé äéêôõáêïß åîõðçñåôçôÝò. Åßíáé ñõèìéóìÝíïò íá ôñÝ÷åé áõôüíïìá ãéá íá åîõðçñåôåß êáëýôåñá ôéò áéôÞóåéò HTTP ôùí ðåëáôþí ôïõ, äçëáäÞ ôùí ðñïãñáììÜôùí ðëïÞãçóçò (browsers). Ç åãêáôÜóôáóç ôïõ Apache áðü ôá &os; Ports ðåñéÝ÷åé Ýíá âïçèçôéêü shell script ãéá ôçí åêêßíçóç, ôï óôáìÜôçìá êáé ôçí åðáíåêêßíçóç ôïõ åîõðçñåôçôÞ. Ãéá íá îåêéíÞóåôå ôïí Apache ãéá ðñþôç öïñÜ, áðëÜ ôñÝîôå: &prompt.root; /usr/local/sbin/apachectl start Ìðïñåßôå ïðïéáäÞðïôå óôéãìÞ íá óôáìáôÞóåôå ôïí åîõðçñåôçôÞ, ðëçêôñïëïãþíôáò: &prompt.root; /usr/local/sbin/apachectl stop ÌåôÜ áðü áëëáãÝò ðïõ ðéèáíþò íá êÜíáôå ãéá ïðïéïíäÞðïôå ëüãï óôï áñ÷åßï ñõèìßóåùí, èá ÷ñåéáóôåß íá åðáíåêêéíÞóåôå ôïí åîõðçñåôçôÞ: &prompt.root; /usr/local/sbin/apachectl restart Ãéá íá åðáíåêêéíÞóåôå ôïí Apache äß÷ùò íá äéáêüøåôå ôéò ôñÝ÷ïõóåò óõíäÝóåéò, ôñÝîôå: &prompt.root; /usr/local/sbin/apachectl graceful Ðåñéóóüôåñåò ðëçñïöïñßåò èá âñåßôå óôç óåëßäá âïÞèåéáò ôïõ &man.apachectl.8;. Ãéá íá îåêéíÜåé ï Apache áõôüìáôá êáôÜ ôç äéÜñêåéá åêêßíçóçò ôïõ óõóôÞìáôïò, ðñïóèÝóôå ôçí áêüëïõèç ãñáììÞ óôï /etc/rc.conf: apache_enable="YES" Áí åðéèõìåßôå íá ðáñÝ÷ïíôáé êáôÜ ôçí åêêßíçóç ôïõ óõóôÞìáôïò ðñüóèåôåò åðéëïãÝò óôçí ãñáììÞ åíôïëþí ãéá ôï ðñüãñáììá Apache httpd ìðïñåßôå íá ôéò äçëþóåôå ìå ìéá ðñüóèåôç ãñáììÞ óôï rc.conf: apache_flags="" Ôþñá ðïõ Ý÷åé îåêéíÞóåé ï åîõðçñåôÞò web, ìðïñåßôå íá äåßôå ôçí éóôïóåëßäá óáò óôï÷åýïíôáò ôï ðñüãñáììá ðëïÞãçóçò óôï http://localhost/. Ç ðñïêáèïñéóìÝíç óåëßäá ðïõ åìöáíßæåôáé åßíáé ç /usr/local/www/data/index.html. Virtual Hosting Ï Apache õðïóôçñßæåé äýï äéáöïñåôéêïýò ôýðïõò Virtual Hosting. Ôï Ïíïìáóôéêü virtual hosting ÷ñçóéìïðïéåß ôïõò HTTP/1.1 headers ãéá íá êáèïñßóåé ôïí êüìâï. Áõôü åðéôñÝðåé ôçí êïéíÞ ÷ñÞóç ôçò ßäéáò IP ãéá ðïëëÜ êáé äéáöïñåôéêÜ domains. Ãéá íá ñõèìßóåôå ôïí Apache íá ÷ñçóéìïðïéåß ôï Ïíïìáóôéêü Virtual Hosting åéóÜãåôå ìéá êáôá÷þñéóç óôï httpd.conf óáí ôçí áêüëïõèç: NameVirtualHost * Áí ï äéáêïìéóôÞò web ïíïìÜæåôáé www.domain.tld êáé åðéèõìåßôå íá åãêáôáóôÞóåôå Ýíá virtual domain ãéá ôï www.someotherdomain.tld ôüôå èá ðñÝðåé íá ðñïóèÝóåôå ôéò áêüëïõèåò êáôá÷ùñÞóåéò óôïhttpd.conf: <VirtualHost *> ServerName www.domain.tld DocumentRoot /www/domain.tld </VirtualHost> <VirtualHost *> ServerName www.someotherdomain.tld DocumentRoot /www/someotherdomain.tld </VirtualHost> ÁíôéêáôáóôÞóôå ôéò ðáñáðÜíù äéåõèýíóåéò ìå åêåßíåò ðïõ åðéèõìåßôå íá ÷ñçóéìïðïéÞóåôå êáé ôçí êáôÜëëçëç äéáäñïìÞ ðñïò ôá ÝããñáöÜ óáò. Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôéò ñõèìßóåéò ãéá ôá virtual host, óáò ðñïôñÝðïõìå íá óõìâïõëåõôåßôå ôçí åðßóçìç ôåêìçñßùóç ôïõ Apache óôï . Apache Modules Apache modules Apache áñèñþìáôá Apache åðåêôÜóåéò ÕðÜñ÷ïõí ðïëëïß êáé äéÜöïñïé äéáèÝóéìïé ôýðïé áñèñùìÜôùí (modules) ãéá ôïí Apache, ôá ïðïßá åðåêôåßíïõí êé åìðëïõôßæïõí ôéò ëåéôïõñãßåò ôïõ âáóéêïý åîõðçñåôçôÞ. Ç ÓõëëïãÞ ôùí Ports ôïõ &os; ðáñÝ÷åé Ýíáí åýêïëï ôñüðï ãéá íá åãêáôáóôÞóåôå ôïí Apache êáé ìåñéêÜ áðü ôá ðéï äçìïöéëÞ áñèñþìáôá. mod_ssl web servers secure SSL cryptography Ôï Üñèñùìá mod_ssl ÷ñçóéìïðïéåß ôçí âéâëéïèÞêç OpenSSL ãéá íá ðáñÝ÷åé éó÷õñÞ êñõðôïãñÜöçóç äéáìÝóïõ ôùí ðñùôïêüëùí Secure Sockets Layer (SSL v2/v3) êáé Transport Layer Security (TLS v1). Ôï Üñèñùìá ðáñÝ÷åé üëá ôá áðáñáßôçôá óõóôáôéêÜ ãéá íá ìðïñåß íá áéôåßôáé õðïãåããñáììÝíá ðéóôïðïéçôéêÜ áðü Ýìðéóôïõò åîïõóéïäïôçìÝíïõò öïñåßò ðéóôïðïßçóçò Ýôóé þóôå íá ìðïñåßôå íá ôñÝ÷åôå Ýíáí áóöáëÞ åîõðçñåôçôÞ web óôï &os;. ÅÜí äåí Ý÷åôå åãêáôáóôÞóåé áêüìç ôïí Apache, ìðïñåßôå íá åãêáôáóôÞóåôå ôçí Ýêäïóç ôïõ Apache 1.3.X ðïõ ðåñéëáìâÜíåé ôï mod_ssl áðü ôçí port www/apache13-modssl . Ôï SSL åßíáé åðßóçò äéáèÝóéìï ãéá ôïí Apache 2.X óôçí port www/apache20, üðïõ ôï SSL åßíáé åíåñãïðïéçìÝíï áðü ðñïåðéëïãÞ. ÄõíáìéêÝò Éóôïóåëßäåò ìå Perl & PHP Ôçí ôåëåõôáßá äåêáåôßá, ðïëëÝò åðé÷åéñÞóåéò óôñÝøáíå ôéò äñáóôçñéüôçôåò ôïõò ðñïò ôï ºíôåñíåô ìå óêïðü íá âåëôéþóïõí ôá Ýóïäá ôïõò êáé ãéá ìåãáëýôåñç ðñïâïëÞ. Áõôü ìå ôç óåéñÜ ôïõ äçìéïýñãçóå ôçí áíÜãêç ãéá äéáäñáóôéêü äéáäéêôõáêü ðåñéå÷üìåíï. Åíþ êÜðïéåò åôáéñåßåò, üðùò ç µsoft;, ðáñïõóßáóáí ëýóåéò åíóùìáôùìÝíåò óôá éäéüêôçôá ðñïúüíôá ôïõò, ç êïéíüôçôá áíïé÷ôïý ëïãéóìéêïý Ýëáâå ôï ìÞíõìá. Óôéò óýã÷ñïíåò åðéëïãÝò ãéá äéáäéêôõáêÝò óåëßäåò äõíáìéêïý ðåñéå÷ïìÝíïõ ðåñéëáìâÜíïíôáé ôá Django, Ruby on Rails, mod_perl êáé mod_php. mod_perl & mod_php. mod_perl mod_perl Perl Ôï ãåãïíüò óõíýðáñîçò Apache/Perl öÝñíåé êïíôÜ ôç ìåãÜëç äýíáìç ôçò ãëþóóáò ðñïãñáììáôéóìïý Perl êáé ôïí åîõðçñåôçôÞ HTTP Apache. Ìå ôï Üñèñùìá mod_perl Ý÷åôå ôç äõíáôüôçôá íá ãñÜøåôå åðåêôÜóåéò ãéá ôïí Apache åî' ïëïêëÞñïõ óå Perl. ÅðéðëÝïí, ï äéáôçñÞóéìïò ìåôáãëùôôéóôÞò ðïõ åßíáé åíóùìáôùìÝíïò óôïí åîõðçñåôçôÞ óáò åðéôñÝðåé íá áðïöýãåôå ôçí ÷ñÞóç åíüò åîùôåñéêïý ìåôáãëùôôéóôÞ Perl êáé íá åðéâáñõíèåßôå áðü ôï ÷ñüíï åêêßíçóçò ôïõ. Ôï mod_perl äéáôßèåôáé ìå äéÜöïñïõò ôñüðïõò. Ãéá íá ÷ñçóéìïðïéÞóåôå ôï mod_perl íá èõìÜóôå üôé ôï mod_perl 1.0 mod_perl 1.0 äïõëåýåé ìüíï ìå ôïí Apache 1.3 êáé ôï mod_perl 2.0 äïõëåýåé ìüíï ìå ôïí Apache 2. Ôï mod_perl 1.0 åßíáé äéáèÝóéìï óôï port www/mod_perl åíþ ìéá óôáôéêÜ ìåôáãëùôôéóìÝíç Ýêäïóç åßíáé äéáèÝóéìç óôï www/apache13-modperl. Ôï mod_perl 2.0 äéáôßèåôáé óôï port www/mod_perl2. Tom Rhodes ÓõããñáöÞ áðü ôïí mod_php mod_php PHP Ôï PHP, ãíùóôü êáé ùò PHP: Hypertext Preprocessor åßíáé ìéá script ãëþóóá ðñïãñáììáôéóìïý ãåíéêÞò ÷ñÞóçò áëëÜ éäéáßôåñá êáôÜëëçëç ãéá áíÜðôõîç ëïãéóìéêïý Web. Ç óýíôáîÞ ôçò ðñïÝñ÷åôáé áðü ôéò C, &java; êáé Perl êáé Ý÷åé ôçí äõíáôüôçôá íá åíóùìáôþíåôáé óå êþäéêá HTML, ìå óêïðü íá åðéôñÝðåé óôïõò ðñïãñáììáôéóôÝò web íá ãñÜöïõí ãñÞãïñá äõíáìéêÝò éóôïóåëßäåò. Ï Apache õðïóôçñßæåé ôï PHP5. Ìðïñåßôå íá îåêéíÞóåôå åãêáèéóôþíôáò ôï ðáêÝôï lang/php5. Áí ôï ðáêÝôï lang/php5 åãêáèßóôáôáé ãéá ðñþôç öïñÜ, áõôüìáôá èá óáò åìöáíéóôïýí üëåò ïé äõíáôÝò åðéëïãÝò OPTIONS. Áí êÜðïéï ìåíïý äåí åìöáíßæåôáé, ð.÷. åðåéäÞ ôï ðáêÝôï lang/php5 åß÷å åãêáôáóôáèåß óôï ðáñåëèüí, ìðïñåßôå ðÜíôá íá ñõèìßóåôå áðü ôçí áñ÷Þ ôï ðáêÝôï, ôñÝ÷ïíôáò óôïí êáôÜëïãï ôïõ port: &prompt.root; make config Óôéò åðéëïãÝò åãêáôÜóôáóçò, äéáëÝîôå ôçí åðéëïãÞ APACHE þóôå íá óõìðåñéëçöèåß êáé ôï Üñèñùìá mod_php ãéá ôïí åîõðçñåôçôÞ Apache. ÌåñéêÝò ôïðïèåóßåò ÷ñçóéìïðïéïýí áêüìç ôï PHP4 ãéá äéÜöïñïõò ëüãïõò (ð.÷. èÝìáôá óõìâáôüôçôïò Þ åðåéäÞ Ý÷ïõí Þäç åãêáôåóôçìÝíåò åöáñìïãÝò ðïõ ôï áðáéôïýí). Áí åßíáé áíÜãêç íá ÷ñçóéìïðïéÞóåôå ôï mod_php4 áíôß ôïõ mod_php5, ôüôå ÷ñçóéìïðïéåßóôå ôï port lang/php4. Ôï port lang/php4 õðïóôçñßæåé ðïëëÝò áðü ôéò ñõèìßóåéò êáé ôéò åðéëïãÝò åãêáôÜóôáóçò ôïõ port lang/php5. Ìå áõôü ôïí ôñüðï èá åãêáôáóôáèïýí êáé èá ñõèìéóôïýí ôá áðáéôïýìåíá áñèñþìáôá þóôå íá õðïóôçñßæïõí äõíáìéêÝò åöáñìïãÝò PHP. Ãéá åðéâåâáßùóç åëÝãîôå ðùò Ý÷ïõí ðñïóôåèåß óôéò áíôßóôïé÷åò åíüôçôåò ôïõ /usr/local/etc/apache/httpd.conf ôá áêüëïõèá:: LoadModule php5_module libexec/apache/libphp5.so AddModule mod_php5.c <IfModule mod_php5.c> DirectoryIndex index.php index.html </IfModule> <IfModule mod_php5.c> AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps </IfModule> Áöïý ïëïêëçñþóåôå ôïí Ýëåã÷ï, ãéá íá öïñôùèåß ôï Üñèñùìá PHP ÷ñåéÜæåôáé ìéá áðëÞ êëÞóç ìå ôçí åíôïëÞ apachectl ãéá ìéá êáíïíéêÞ (graceful) åðáíåêêßíçóç: &prompt.root; apachectl graceful Ãéá ìåëëïíôéêÝò áíáâáèìßóåéò ôïõ PHP, äåí áðáéôåßôáé ç åíôïëÞ make config. Ïé åðéëåãìÝíåò OPTIONS áðïèçêåýïíôáé áõôüìáôá áðü ôï ìç÷áíéóìü åãêáôÜóôáóçò ôùí Ports ôïõ &os;. Ç óýíèåóç ôïõ PHP óôï &os;, åßíáé åîáéñåôéêÜ óôïé÷åéáêÞ, êáé ï âáóéêüò êïñìüò ðïõ Ý÷åé åãêáôáóôáèåß åßíáé ðïëý ðåñéïñéóìÝíïò. Åßíáé ðïëý åýêïëï üìùò íá ðñïóèÝóïõìå åðåêôÜóåéò ÷ñçóéìïðïéþíôáò ôï port lang/php5-extensions. Áõôü ôï port ðáñÝ÷åé ìåíïý åðéëïãþí ãéá ôçí åãêáôÜóôáóç ôùí åðåêôÜóéìùí óõóôáôéêþí ôïõ PHP. ÅíáëëáêôéêÜ, ìðïñåßôå íá åãêáôáóôÞóåôå êáèåìßá åðÝêôáóç îå÷ùñéóôÜ ÷ñçóéìïðïéþíôáò ôï êáôÜëëçëï port. Ãéá ðáñÜäåéãìá, ãéá íá ðñïóèÝóåôå óôï PHP5, ôç äõíáôüôçôá õðïóôÞñéîçò ãéá âÜóåéò äåäïìÝíùíMySQL áðëÜ åãêáôáóôÞóôå ôï port databases/php5-mysql. ÌåôÜ ôçí åãêáôÜóôáóç åíüò íÝïõ áñèñþìáôïò Þ êÜðïéáò Üëëçò åðÝêôáóçò, ï åîõðçñåôçôÞò Apache èá ðñÝðåé íá åðáíáöïñôùèåß ãéá íá åíåñãïðïéçèïýí ïé íÝåò ñõèìßóåéò: &prompt.root; apachectl graceful Murray Stokely ÓõíåéóöïñÜ ôïõ Ðñùôüêïëï ÌåôáöïñÜò Áñ÷åßùí (FTP) FTP servers Óýíïøç Ôï Ðñùôüêïëï ÌåôáöïñÜò Áñ÷åßùí (File Transfer Protocol - FTP) ðáñÝ÷åé óôïõò ÷ñÞóôåò Ýíáí åýêïëï ôñüðï ãéá íá ìåôáöÝñïõí ôá áñ÷åßá ôïõò áðü êáé ðñïò Ýíáí åîõðçñåôçôÞ FTP. Ôï âáóéêü óýóôçìá ôïõ &os; ðåñéëáìâÜíåé Ýíá åîõðçñåôçôÞ FTP, ôï ftpd. Áõôü êáèéóôÜ ôçí åãêáôÜóôáóç êáé ôçí äéá÷åßñéóç ôïõ åîõðçñåôçôÞ FTP ðïëý åýêïëç õðüèåóç. Ñõèìßóåéò Ôï ðéï óçìáíôéêü âÞìá óôéò ñõèìßóåéò åßíáé íá áðïöáóßóåôå óå ðïéïýò ëïãáñéáóìïýò èá åðéôñáðåß ç ðñüóâáóç óôïí åîõðçñåôçôÞ FTP. ¸íá óõíçèéóìÝíï óýóôçìá &os; äçìéïõñãåß ìåñéêïýò ëïãáñéáóìïýò óõóôÞìáôïò ãéá äéÜöïñïõò äáßìïíåò, áëëÜ äåí ðñÝðåé íá åðéôñÝðåôáé ç ðñüóâáóç óôï óýóôçìá ìå áõôïýò ôïõò ëïãáñéáóìïýò. Ôï áñ÷åßï /etc/ftpusers ðåñéÝ÷åé ìéá ëßóôá áðü ÷ñÞóôåò ãéá ôïõò ïðïßïõò áðïññßðôåôáé ç ðñüóâáóç ìÝóù FTP. ÐñïåðéëåãìÝíá, ðåñéÝ÷ïíôáé ïé ðñïáíáöåñèÝíôåò ëïãáñéáóìïß ôïõ óõóôÞìáôïò, áëëÜ ìðïñåßôå åðßóçò íá ðñïóèÝóåôå óõãêåêñéìÝíïõò ÷ñÞóôåò ðïõ äå èá ðñÝðåé íá Ý÷ïõí ðñüóâáóç ìÝóù FTP. Ìðïñåßôå áí èÝëåôå íá ðåñéïñßóåôå ôçí ðñüóâáóç óå êÜðïéïõò ÷ñÞóôåò, äß÷ùò üìùò íá ôïõò åìðïäßóåôå ðëÞñùò. Áõôü ìðïñåß íá óõìâåß ìå ôéò ñõèìßóåéò ôïõ áñ÷åßïõ /etc/ftpchroot. Áõôü ôï áñ÷åßï ðåñéÝ÷åé ëßóôåò ÷ñçóôþí êáé ïìÜäùí ðåñéïñéóìÝíçò ðñüóâáóçò FTP. Ç óåëßäá âïÞèåéáò &man.ftpchroot.5; ðåñéÝ÷åé üëåò ôéò áðáñáßôçôåò ëåðôïìÝñåéåò, åðïìÝíùò äå èá ÷ñåéáóôåß íá ìðïýìå óå ëåðôïìÝñåéåò åäþ. FTP anonymous Áí åðéèõìåßôå íá åíåñãïðïéÞóåôå áíþíõìç ðñüóâáóç FTP óôïí åîõðçñåôçôÞ óáò, èá ðñÝðåé íá äçìéïõñãÞóåôå, óôï &os; óýóôçìá óáò, Ýíá ÷ñÞóôç ìå üíïìá ftp . Ïé áíþíõìïé ÷ñÞóôåò èá ìðïñïýí íá åéóÝñ÷ïíôáé óôïí åîõðçñåôçôÞ FTP ìå ôï ãåíéêü üíïìá ÷ñÞóôç ftp Þ ìå anonymous êáé ìå ïðïéáäÞðïôå êùäéêü ðñüóâáóçò (óõíçèßæåôáé íá æçôåßôáé ç äéåýèõíóç email ôïõ ÷ñÞóôç ùò êùäéêüò ðñüóâáóçò). Ï åîõðçñåôçôÞò FTP èá êáëÝóåé ôï &man.chroot.2; ìüëéò åéóÝëèç ï áíþíõìïò ÷ñÞóôçò, ãéá íá ôïõ ðåñéïñßóåé ôçí ðñüóâáóç, åðéôñÝðïíôáò ôïõ ìüíï ôïí áñ÷éêü êáôÜëïãï (home directory) ôïõ ÷ñÞóôç ftp. ÕðÜñ÷ïõí äýï áñ÷åßá êåéìÝíïõ ãéá ôïí ïñéóìü ìçíõìÜôùí êáëùóïñßóìáôïò ðïõ èá åìöáíßæïíôáé óôïõò ðåëÜôåò FTP. Ôï ðåñéå÷üìåíï ôïõ áñ÷åßïõ /etc/ftpwelcome åìöáíßæåôáé óôïõò ÷ñÞóôåò ðñéí öôÜóïõí óôçí ðñïôñïðÞ åéóüäïõ. ÌåôÜ áðü ìéá ðåôõ÷çìÝíç åßóïäï óôï óýóôçìá, åìöáíßæåôáé ôï ðåñéå÷üìåíï ôïõ áñ÷åßïõ /etc/ftpmotd. ÐáñáôçñÞóôå ðùò ç äéáäñïìÞ óå áõôü ôï áñ÷åßï åßíáé ó÷åôéêÞ ìå ôï ðåñéâÜëëïí ðñüóâáóçò, åðïìÝíùò ãéá ôïõò áíþíõìïõò ÷ñÞóôåò èá åìöáíßæåôáé ôï ðåñéå÷üìåíï ôïõ áñ÷åßïõ ~ftp/etc/ftpmotd. Áöïý ñõèìßóåôå êáôÜëëçëá ôïí åîõðçñåôçôÞ FTP, èá ðñÝðåé íá ôïí åíåñãïðïéÞóåôå óôï áñ÷åßï /etc/inetd.conf. Ôï ìüíï ðïõ ÷ñåéÜæåôáé íá êÜíåôå åßíáé íá áöáéñÝóåôå ôï óýìâïëï ó÷ïëéáóìïý # ìðñïóôÜ áðü ôçí õðÜñ÷ïõóá ãñáììÞ ftpd : ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l ¼ðùò åîçãÞóáìå óôï , ç äéåñãáóßá inetd èá ðñÝðåé íá îáíáöïñôþíåôáé áí Ý÷ïõí ãßíåé áëëáãÝò óôï áñ÷åßï ñõèìßóåùí ôçò. Ôþñá ìðïñåßôå íá äþóåôå ôá óôïé÷åßá ôïõ ëïãáñéáóìïý óáò ãéá íá åéóÝëèåôå óôïí åîõðçñåôçôÞ FTP. &prompt.user; ftp localhost ÓõíôÞñçóç syslog log files FTP Ï äáßìïíáò ftpd ÷ñçóéìïðïéåß ôï &man.syslog.3; ãéá ôçí äçìéïõñãßá ìçíõìÜôùí áíáöïñÜò. ÐñïåðéëåãìÝíá, ï äáßìïíáò ôùí log ôïõ óõóôÞìáôïò èá åíáðïèÝôåé ôéò ó÷åôéêÝò ìå ôï FTP áíáöïñÝò óôï áñ÷åßï /var/log/xferlog. Ç ôïðïèåóßá ôïõ áñ÷åßïõ áíáöïñÜò ìðïñåß íá ôñïðïðïéçèåß áëëÜæïíôáò ôçí áêüëïõèç ãñáììÞ óôï /etc/syslog.conf: ftp.info /var/log/xferlog FTP anonymous ÐñÝðåé íá åßóôå åíÞìåñïé ãéá ôá ðñïâëÞìáôá ðïõ ìðïñïýí íá ðáñïõóéáóôïýí ó÷åôéêÜ ìå ôç ëåéôïõñãßá åíüò áíþíõìïõ åîõðçñåôçôÞ FTP. Åéäéêüôåñá, èá ðñÝðåé íá óêåöôåßôå óïâáñÜ áí üíôùò åðéèõìåßôå íá Ý÷ïõí äõíáôüôçôá íá áíåâÜæïõí áñ÷åßá ïé áíþíõìïé ÷ñÞóôåò óáò. Áí áöÞóåôå ïðïéïíäÞðïôå áíþíõìï ÷ñÞóôç íá áíåâÜæåé áñ÷åßá, ìðïñåß îáöíéêÜ íá áíáêáëýøåôå ðùò ï åîõðçñåôçôÞò óáò FTP ÷ñçóéìïðïéåßôáé ãéá äéáêßíçóç ðåéñáôéêïý åìðïñéêïý ëïãéóìéêïý Þ ãéá Üëëï, áêüìá ÷åéñüôåñï, ðáñÜíïìï õëéêü. ÅÜí üíôùò ÷ñåéÜæåôáé ïé ÷ñÞóôåò íá Ý÷ïõí Üäåéá ðñïóèÞêçò áñ÷åßùí, ôüôå èá ðñÝðåé íá ñõèìßóåôå ôéò Üäåéåò Ýôóé þóôå ôá áñ÷åßá áõôÜ íá ìçí åßíáé ïñáôÜ áðü Üëëïõò áíþíõìïõò ÷ñÞóôåò, Ýùò üôïõ íá ðÜñïõí ôçí áóöáëÞ Ýãêñéóç óáò. Murray Stokely Contributed by File and Print Services for µsoft.windows; clients (Samba) Samba server Microsoft Windows file server Windows clients print server Windows clients Overview Samba is a popular open source software package that provides file and print services for µsoft.windows; clients. Such clients can connect to and use FreeBSD filespace as if it was a local disk drive, or FreeBSD printers as if they were local printers. Samba software packages should be included on your FreeBSD installation media. If you did not install Samba when you first installed FreeBSD, then you can install it from the net/samba3 port or package. Configuration A default Samba configuration file is installed as /usr/local/etc/smb.conf.default. This file must be copied to /usr/local/etc/smb.conf and customized before Samba can be used. The smb.conf file contains runtime configuration information for Samba, such as definitions of the printers and file system shares that you would like to share with &windows; clients. The Samba package includes a web based tool called swat which provides a simple way of configuring the smb.conf file. Using the Samba Web Administration Tool (SWAT) The Samba Web Administration Tool (SWAT) runs as a daemon from inetd. Therefore, the following line in /etc/inetd.conf should be uncommented before swat can be used to configure Samba: swat stream tcp nowait/400 root /usr/local/sbin/swat As explained in , the inetd must be reloaded after this configuration file is changed. Once swat has been enabled in inetd.conf, you can use a browser to connect to . You will first have to log on with the system root account. Once you have successfully logged on to the main Samba configuration page, you can browse the system documentation, or begin by clicking on the Globals tab. The Globals section corresponds to the variables that are set in the [global] section of /usr/local/etc/smb.conf. Global Settings Whether you are using swat or editing /usr/local/etc/smb.conf directly, the first directives you are likely to encounter when configuring Samba are: workgroup NT Domain-Name or Workgroup-Name for the computers that will be accessing this server. netbios name NetBIOS This sets the NetBIOS name by which a Samba server is known. By default it is the same as the first component of the host's DNS name. server string This sets the string that will be displayed with the net view command and some other networking tools that seek to display descriptive text about the server. Security Settings Two of the most important settings in /usr/local/etc/smb.conf are the security model chosen, and the backend password format for client users. The following directives control these options: security The two most common options here are security = share and security = user. If your clients use usernames that are the same as their usernames on your &os; machine then you will want to use user level security. This is the default security policy and it requires clients to first log on before they can access shared resources. In share level security, client do not need to log onto the server with a valid username and password before attempting to connect to a shared resource. This was the default security model for older versions of Samba. passdb backend NIS+ LDAP SQL database Samba has several different backend authentication models. You can authenticate clients with LDAP, NIS+, a SQL database, or a modified password file. The default authentication method is smbpasswd, and that is all that will be covered here. Assuming that the default smbpasswd backend is used, the /usr/local/private/smbpasswd file must be created to allow Samba to authenticate clients. If you would like to give your &unix; user accounts access from &windows; clients, use the following command: &prompt.root; smbpasswd -a username Please see the Official Samba HOWTO for additional information about configuration options. With the basics outlined here, you should have everything you need to start running Samba. Starting <application>Samba</application> The net/samba3 port adds a new startup script, which can be used to control Samba. To enable this script, so that it can be used for example to start, stop or restart Samba, add the following line to the /etc/rc.conf file: samba_enable="YES" This will also configure Samba to automatically start at system boot time. It is possible then to start Samba at any time by typing: &prompt.root; /usr/local/etc/rc.d/samba start Starting SAMBA: removing stale tdbs : Starting nmbd. Starting smbd. Please refer to for more information about using rc scripts. Samba actually consists of three separate daemons. You should see that both the nmbd and smbd daemons are started by the samba.sh script. If you enabled winbind name resolution services in smb.conf, then you will also see that the winbindd daemon is started. You can stop Samba at any time by typing : &prompt.root; /usr/local/etc/rc.d/samba.sh stop Samba is a complex software suite with functionality that allows broad integration with µsoft.windows; networks. For more information about functionality beyond the basic installation described here, please see . Tom Hukins ÓõíåéóöïñÜ ôïõ Óõã÷ñïíéóìüò Ñïëïãéïý ÓõóôÞìáôïò ìå NTP NTP Óýíïøç Ìå ôï ðÝñáóìá ôïõ ÷ñüíïõ, ôï ñïëüé óõóôÞìáôïò åíüò õðïëïãéóôÞ Ý÷åé ôçí ôÜóç íá áðïóõã÷ñïíßæåôáé. Ôï Ðñùôüêïëï ×ñïíéóìïý Äéêôýùí (Network Time Protocol Þ NTP) ðáñÝ÷åé Ýíá ôñüðï ãéá íá åîáóöáëßóåôå ôçí áêñßâåéá ôïõ clock óáò. ÐïëëÝò äéáäéêôõáêÝò õðçñåóßåò âáóßæïíôáé Þ ùöåëïýíôáé óå ìåãÜëï âáèìü áðü ôçí áêñßâåéá ôïõ ñïëïãéïý óõóôÞìáôïò åíüò õðïëïãéóôÞ. Ãéá ðáñÜäåéãìá, Ýíáò åîõðçñåôçôÞò web ìðïñåß íá äå÷èåß áéôÞóåéò ãéá áðïóôïëÞ åíüò áñ÷åßïõ üôáí ôï áñ÷åßï áõôü Ý÷åé ôñïðïðïéçèåß ìÝ÷ñé êÜðïéá óõãêåêñéìÝíç þñá. Óå Ýíá ðåñéâÜëëïí ôïðéêïý äéêôýïõ, åßíáé èåìåëéþäçò áñ÷Þ ïé õðïëïãéóôÝò ðïõ èá äéáìïéñáóôïýí áñ÷åßá áðü ôïí ßäéï äéáêïìéóôÞ áñ÷åßùí íá Ý÷ïõí óõã÷ñïíéóìÝíá ñïëüãéá, Ýôóé þóôå ôá ÷ñïíéêÜ ÷áñáêôçñéóôéêÜ ôïõ áñ÷åßïõ íá óõìöùíïýí. Åðßóçò äéåñãáóßåò üðùò ç &man.cron.8; âáóßæïíôáé óå Ýíá áêñéâÝò ñïëüé þóôå íá ìðïñïýí íá ôñÝ÷ïõí åíôïëÝò óôïõò ðñïêáèïñéóìÝíïõò ÷ñüíïõò. NTP ntpd Ôï &os; äéáôßèåôáé ìå ôïí åîõðçñåôçôÞ NTP &man.ntpd.8;, ï ïðïßïò ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá íá óõã÷ñïíßæåé ôï ñïëüé óõóôÞìáôïò ôïõ õðïëïãéóôÞ óáò, åîåôÜæïíôáò Üëëïõò åîõðçñåôçôÝò NTP Þ íá ðáñÝ÷åé ï ßäéïò õðçñåóßåò óõã÷ñïíéóìïý óå Üëëá ìç÷áíÞìáôá. ÅðéëïãÞ ôùí ÊáôÜëëçëùí Åîõðçñåôçôþí NTP NTP åðéëïãÞ åîõðçñåôçôþí Ãéá íá óõã÷ñïíßóåôå ôï ñïëüé óõóôÞìáôïò ôïõ õðïëïãéóôÞ óáò èá ðñÝðåé íá âñåßôå Ýíáí Þ ðåñéóóüôåñïõò äéáèÝóéìïõò NTP åîõðçñåôçôÝò ãéá íá ÷ñçóéìïðïéÞóåôå. Ï äéá÷åéñéóôÞò äéêôýïõ Þ ï ISP óáò ìðïñåß íá Ý÷ïõí åãêáôáóôÞóåé êÜðïéïí åîõðçñåôçôÞ NTP ãéá áõôü ôï óêïðü — åëÝãîôå ôçí ôåêìçñßùóç ôïõò íá äåßôå áí õðÜñ÷åé ôÝôïéá ðåñßðôùóç. ÅðéðëÝïí, õðÜñ÷åé ìßá online ëßóôá åîõðçñåôçôþí äçìüóéáò ðñüóâáóçò, ðïõ ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ãéá íá âñåßôå Ýíáí êïíôéíü åîõðçñåôçôÞ NTP. ¼ðïéïí åîõðçñåôçôÞ êé áí åðéëÝîåôå, åíçìåñùèåßôå ãéá ôçí ðïëéôéêÞ ÷ñÞóçò ôïõ êáé æçôÞóôå Üäåéá íá ôïí ÷ñçóéìïðïéÞóåôå áí ÷ñåéÜæåôáé ôÝôïéá Üäåéá. Åßíáé êáëÞ éäÝá íá åðéëÝîåôå ðïëëïýò åîõðçñåôçôÝò NTP, ïé ïðïßïé íá ìçí óõíäÝïíôáé ìåôáîý ôïõò, óôçí ðåñßðôùóç ðïõ êÜðïéïò áðü ôïõò åîõðçñåôçôÝò ðïõ ÷ñçóéìïðïéåßôå ãßíåé áðñüóéôïò Þ ôï ñïëüé ôïõ åßíáé áíáêñéâÝò. Ï åîõðçñåôçôÞò &man.ntpd.8; ôïõ &os; ÷åéñßæåôáé Ýîõðíá ôéò áðáíôÞóåéò ðïõ ëáìâÜíåé áðü ôïõò õðüëïéðïõò åîõðçñåôçôÝò — åõíïåß ôïõò ðéï áîéüðéóôïõò êáé äåß÷íåé ìéêñüôåñç ðñïôßìçóç óôïõò ëéãüôåñï áîéüðéóôïõò åîõðçñåôçôÝò. Ñõèìßóôå Ôï Ìç÷Üíçìá Óáò NTP ñõèìßóåéò ÂáóéêÝò Ñõèìßóåéò ntpdate Áí åðéèõìåßôå íá óõã÷ñïíßæåôáé ôï clock óáò ìüíï êáôÜ ôçí åêêßíçóç ëåéôïõñãßáò ôïõ ìç÷áíÞìáôïò, ôüôå ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôï &man.ntpdate.8;. Áõôüò ï ôñüðïò óõã÷ñïíéóìïý åßíáé êáôÜëëçëïò ãéá ìç÷áíÞìáôá desktop ôá ïðïßá êÜíïõí åðáíáêêßíçóç áíÜ ôáêôÜ ÷ñïíéêÜ äéáóôÞìáôá êáé ìüíï óå åéäéêÝò ðåñéðôþóåéò Ý÷ïõí áíÜãêç óõã÷ñïíéóìïý. ÁíôéèÝôùò, ôá õðüëïéðá ìç÷áíÞìáôá èá ðñÝðåé íá ôñÝ÷ïõí ôçí äéåñãáóßá &man.ntpd.8;. Åßíáé êáëÞ ðñáêôéêÞ ôá ìç÷áíÞìáôá ðïõ ôñÝ÷ïõí &man.ntpd.8; íá ÷ñçóéìïðïéïýí êáé ôï &man.ntpdate.8; êáôÜ ôç äéÜñêåéá åêêßíçóçò ôïõò. Ôï &man.ntpd.8; ìåôáâÜëëåé ôï clock âáèìéáßá, åíþ ôï &man.ntpdate.8; ñõèìßæåé Üìåóá ôï clock áíåîÜñôçôá áðü ôï ðüóï ìåãÜëç åßíáé ç ÷ñïíéêÞ äéáöïñÜ ìåôáîý ðñáãìáôéêÞò êáé ôñÝ÷ïõóáò þñáò ôïõ clock ôïõ ìç÷áíÞìáôïò. Ãéá íá åíåñãïðïéÞóåôå ôï &man.ntpdate.8; êáôÜ ôçí åêêßíçóç, ðñïóèÝóôå ntpdate_enable="YES" óôï /etc/rc.conf. Èá ðñÝðåé íá ðñïóäéïñßóåôå óôï ntpdate_flags üëïõò ôïõò äéáêïìéóôÝò ìå ôïõò ïðïßïõò åðéèõìåßôå íá óõã÷ñïíßæåóôå êáé üëá ôá flag ðïõ èÝëåôå íá óõíïäåýïõí ôï&man.ntpdate.8;. ÃåíéêÝò Ñõèìßóåéò NTP ntp.conf Ïé ñõèìßóåéò ôïõ NTP âñßóêïíôáé óôï áñ÷åßï /etc/ntp.conf êáé åßíáé óôç ìïñöÞ ðïõ ðåñéãñÜöåôáé óôï &man.ntp.conf.5;. Áêïëïõèåß Ýíá áðëü ðáñÜäåéãìá: server ntplocal.example.com prefer server timeserver.example.org server ntp2a.example.net driftfile /var/db/ntp.drift Ç åðéëïãÞ server ðñïóäéïñßæåé ðïéïé åîõðçñåôçôÝò èá ÷ñçóéìïðïéçèïýí, ðáñáèÝôïíôáò Ýíáí óå êÜèå ãñáììÞ. Áí Ýíáò åîõðçñåôçôÞò öÝñåé ôï ðñüèåìá prefer, üðùò óõìâáßíåé ìå ôïí ntplocal.example.com, ôüôå áõôüò ï åîõðçñåôçôÞò åßíáé ï ðñïôéìþìåíïò. Èá áðïññéöèåß ç áðÜíôçóç áðü ôïí ðñïôéìþìåíï åîõðçñåôçôÞ óå ðåñßðôùóç ðïõ äéáöÝñåé óçìáíôéêÜ áðü üëïõò ôïõò Üëëïõò åîõðçñåôçôÝò, Óå ðåñßðôùóç ðïõ äåí õðÜñ÷åé ìåãÜëç áðüêëéóç èá ÷ñçóéìïðïéçèåß äß÷ùò íá ëçöèïýí õðüøéí ïé Üëëåò áðáíôÞóåéò. Ôï ðñüèåìá prefer óõíÞèùò ÷ñçóéìïðïéåßôáé ìå åîõðçñåôçôÝò NTP áêñéâåßáò, üðùò áõôïß ðïõ öÝñïõí åéäéêïýò ìç÷áíéóìïýò ðáñáêïëïýèçóçò ÷ñïíéóìïý. Ç åðéëïãÞ driftfile ðñïóäéïñßæåé ðïéü áñ÷åßï ÷ñçóéìïðïéåßôáé ãéá íá äéáôçñåß ôç óõ÷íüôçôá äéüñèùóçò ôïõ clock ôïõ óõóôÞìáôïò. Ôï ðñüãñáììá &man.ntpd.8; ÷ñçóéìïðïéåß áõôüìáôá áõôÞ ôç ôéìÞ ãéá íá áíôéóôáèìßæåé ôéò öõóéêÝò áðïêëßóåéò ôïõ clock, åðéôñÝðïíôáò ôïõ íá äéáôçñåß ìéá ëïãéêÞ ñýèìéóç, áêüìç êé áí ôïõ áðáãïñåõôåß ãéá êÜðïéï ÷ñïíéêü äéÜóôçìá ç ðñüóâáóç ðñïò üëåò ôéò åîùôåñéêÝò ðçãÝò óõã÷ñïíéóìïý. Ç åðéëïãÞ driftfile ðñïóäéïñßæåé ðïéü áñ÷åßï ÷ñçóéìïðïéåßôáé ãéá íá áðïèçêåýåé ðëçñïöïñßåò ó÷åôéêÜ ìå ôéò ðñïçãïýìåíåò áðáíôÞóåéò áðü ôïõò åîõðçñåôçôÝò NTP. Áõôü ôï áñ÷åßï ðåñéÝ÷åé åóùôåñéêÝò ðëçñïöïñßåò ôïõ NTP. Äåí èá Ýðñåðå íá ôñïðïðïéåßôå áðü êáììßá Üëëç äéåñãáóßá. ¸ëåã÷ïò Ðñüóâáóçò óôïí ÅîõðçñåôçôÞ Óáò ÐñïåðéëåãìÝíá, ï åîõðçñåôçôÞò óáò NTP èá åßíáé ðñïóâÜóéìïò áðü üëïõò ôïõò êüìâïõò óôï äéáäßêôõï. Ç åðéëïãÞ restrict óôï /etc/ntp.conf óáò åðéôñÝðåé íá åëÝã÷åôå ðïéá ìç÷áíÞìáôá èá ìðïñïýí íá Ý÷ïõí ðñüóâáóç óôïí åîõðçñåôÞ óáò. Áí åðéèõìåßôå íá áðïññßøåôå ôçí ðñüóâáóç ðñïò ôïí åîõðçñåôçôÞ óáò NTP ãéá üëá ôá ìç÷áíÞìáôá, ðñïóèÝóôå ôçí áêüëïõèç ãñáììÞ óôï /etc/ntp.conf: restrict default ignore Áí èÝëåôå ìüíï íá åðéôñÝøåôå ôïí óõã÷ñïíéóìü ôïõ åîõðçñåôçôÞ óáò ìå ìç÷áíÞìáôá åíôüò ôïõ äéêôýïõ óáò, áëëÜ äß÷ùò äõíáôüôçôá ñýèìéóçò ôïõ åîõðçñåôçôÞ Þ íá ãßíïõí ïìïéüâáèìá ìå Üäåéá óõã÷ñïíéóìïý, ôüôå áíôéèÝôùò ðñïóèÝóôå: restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap üðïõ 192.168.1.0 åßíáé ç äéåýèõíóç IP ôïõ äéêôýïõ êáé 255.255.255.0 åßíáé ç ìÜóêá ôïõ äéêôýïõ óáò. Ôï /etc/ntp.conf ìðïñåß íá ðåñéÝ÷åé ðïëëáðëÝò åðéëïãÝò restrict. Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò, äåßôå ôçí õðïåíüôçôá ÕðïóôÞñéîç ÅëÝã÷ïõ Ðñüóâáóçò (Access Control Support), õðïåíüôçôá ôïõ &man.ntp.conf.5;. ÅêôÝëåóç ôïõ NTP ÅîõðçñåôçôÞ Óáò Ãéá íá âåâáéùèåßôå ðùò ï åîõðçñåôçôÞò NTP èá îåêéíÜåé êáôÜ ôçí äéÜñêåéá åêêßíçóçò ôïõ óõóôÞìáôïò, ðñïóèÝóôå ôç ãñáììÞ ntpd_enable="YES"óôï/etc/rc.conf. Ãéá íá îåêéíÞóåôå ôïí åîõðçñåôçôÞ äß÷ùò íá åðáíåêêéíÞóåôå ôï ìç÷Üíçìá óáò, ôñÝîôå &man.ntpd.8; ðñïóäéïñßæïíôáò êÜèå åðéðñüóèåôç ðáñÜìåôñï áðü ôá ntpd_flags óôï /etc/rc.conf. Ãéá ðáñÜäåéãìá: &prompt.root; ntpd -p /var/run/ntpd.pid ×ñÞóç ôïõ ntpd ìå ÐñïóùñéíÞ Óýíäåóç óôï ºíôåñíåô Ôï ðñüãñáììá &man.ntpd.8; äåí ÷ñåéÜæåôáé ìéá ìüíéìç óýíäåóç óôï ºíôåñíåô ãéá íá äïõëÝøåé óùóôÜ. Áí Ý÷åôå ìéá ðñïóùñéíÞ óýíäåóç ðïõ åßíáé ñõèìéóìÝíç íá êÜíåé êëÞóåéò ìÝóù ôçëåöþíïõ (dial out on demand), åßíáé êáëü íá ìçí åßíáé ç êßíçóç äåäïìÝíùí ôïõ NTP ôï áßôéï ôçò êëÞóçò Þ áõôÞ ðïõ èá êñáôÜåé åíåñãÞ ôçí óýíäåóç. Áí ÷ñçóéìïðïéåßôå PPP ÷ñÞóôç, ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ößëôñá óôïõò êþäéêåò ðáñáðïìðÞò ôïõ /etc/ppp/ppp.conf, üðùò ãéá ðáñÜäåéãìá: set filter dial 0 deny udp src eq 123 # Prevent NTP traffic from initiating dial out set filter dial 1 permit 0 0 set filter alive 0 deny udp src eq 123 # Prevent incoming NTP traffic from keeping the connection open set filter alive 1 deny udp dst eq 123 # Prevent outgoing NTP traffic from keeping the connection open set filter alive 2 permit 0/0 0/0 Ãéá ðåñéóóüôåñåò ëåðôïìÝñåéåò äåßôå ôï PACKET FILTERING óôçí åíüôçôá &man.ppp.8; êáé ôá ðáñáäåßãìáôá óôï /usr/share/examples/ppp/. Óçìåßùóç: Ìåñéêïß ISP ìðëïêÜñïõí ôçí ÷ñÞóç èýñáò ìå ÷áìçëü áñéèìü, åìðïäßæïíôáò óôï NTP íá äïõëåýåé áöïý ïé áðáíôÞóåéò äåí öôÜíïõí ðïôÝ óôï ìç÷Üíçìá óáò. ÐåñáéôÝñù Ðëçñïöïñßåò Ç ôåêìçñßùóç ãéá ôïõò åîõðçñåôçôÝò NTP äéáôßèåôáé êáé óå öüñìá HTML óôï /usr/share/doc/ntp/. diff --git a/el_GR.ISO8859-7/books/handbook/ppp-and-slip/chapter.xml b/el_GR.ISO8859-7/books/handbook/ppp-and-slip/chapter.xml index 61f24b024f..5ef3d3a696 100644 --- a/el_GR.ISO8859-7/books/handbook/ppp-and-slip/chapter.xml +++ b/el_GR.ISO8859-7/books/handbook/ppp-and-slip/chapter.xml @@ -1,3409 +1,3356 @@ Jim Mock ÁíáäïìÞèçêå, áíáäéïñãáíþèçêå, êáé áíáíåþèçêå áðü ôïí PPP êáé SLIP Óýíïøç PPP SLIP Ôï &os; äéáèÝôåé ðëÞèïò ôñüðùí ãéá ôç óýíäåóç åíüò õðïëïãéóôÞ ìå Ýíá Üëëï. Ãéá íá åðéôý÷åôå óýíäåóç ìÝóù modem óôï Internet Þ óå Ýíá Üëëï äßêôõï, Þ ãéá íá åðéôñÝøåôå óå Üëëïõò íá óõíäåèïýí ìÝóù ôïõ óõóôÞìáôïò óáò, áðáéôåßôáé ç ÷ñÞóç PPP Þ SLIP. Ôï êåöÜëáéï áõôü ðåñéãñÜöåé ëåðôïìåñþò ôïí ôñüðï ñýèìéóçò ôùí ðáñáðÜíù õðçñåóéþí ãéá ÷ñÞóç ìÝóù modem. Áöïý äéáâÜóåôå áõôü ôï êåöÜëáéï, èá îÝñåôå: Ðùò íá ñõèìßóåôå ôï PPP ÷ñÞóôç (User PPP). Ðùò íá ñõèìßóåôå ôï PPP ðõñÞíá (Kernel PPP, ìüíï ãéá &os; 7.X). Ðùò íá ñõèìßóåôå ôï PPPoE (PPP ìÝóù Ethernet). Ðùò íá ñõèìßóåôå ôï PPPoA (PPP ìÝóù ATM). Ðùò íá ñõèìßóåôå Ýíá ðåëÜôç êáé åîõðçñåôçôÞ SLIP (ìüíï ãéá &os; 7.X). PPP user PPP PPP kernel PPP PPP over Ethernet Ðñéí äéáâÜóåôå áõôü ôï êåöÜëáéï, èá ðñÝðåé: Íá åßóôå åîïéêåéùìÝíïò ìå ôç âáóéêÞ ïñïëïãßá ôùí äéêôýùí. Íá êáôáíïåßôå ôéò âáóéêÝò Ýííïéåò êáé ôï óêïðü ôùí åðéëïãéêþí óõíäÝóåùí êáé ôïõ PPP êáé/Þ SLIP. Ìðïñåß íá áíáñùôéÝóôå ðïéá åßíáé ç âáóéêÞ äéáöïñÜ ìåôáîý ôïõ PPP ÷ñÞóôç êáé ôïõ PPP ðõñÞíá. Ç áðÜíôçóç åßíáé áðëÞ: ôï PPP ÷ñÞóôç åðåîåñãÜæåôáé ôá äåäïìÝíá åéóüäïõ êáé åîüäïõ ìÝóù ðñïãñáììÜôùí ÷ñÞóôç (userland) áíôß äéáìÝóïõ ôïõ ðõñÞíá ôïõ ëåéôïõñãéêïý. Áõôü ðñïêáëåß êÜðïéåò åðéâáñýíóåéò ëüãù ôçò áíôéãñáöÞò äåäïìÝíùí ìåôáîý ôïõ ðõñÞíá êáé ôçò åöáñìïãÞò ÷ñÞóôç, áëëÜ åðéôñÝðåé êáôÜ ðïëý ðéï ðëïýóéá (áðü Üðïøç äõíáôïôÞôùí) õëïðïßçóç ôïõ PPP ðñùôïêüëëïõ. Ôï PPP ÷ñÞóôç ÷ñçóéìïðïéåß ôç óõóêåõÞ tun ãéá ôçí åðéêïéíùíßá ìå ôïí Ýîù êüóìï, åíþ ôï PPP ðõñÞíá ÷ñçóéìïðïéåß ôçí óõóêåõÞ ppp. Óå üëï ôï êåöÜëáéï, ôï PPP ÷ñÞóôç èá áíáöÝñåôáé áðëÜ ùò ppp åêôüò êáé áí ÷ñåéÜæåôáé íá ãßíåé äéÜêñéóç óå ó÷Ýóç ìå Üëëï ëïãéóìéêü PPP üðùò ôï pppd (ìüíï ãéá ôï &os; 7.X). Åêôüò áí áíáöÝñåôáé äéáöïñåôéêÜ, üëåò ïé åíôïëÝò ðïõ åîçãïýíôáé óôï êåöÜëáéï áõôü èá ðñÝðåé íá åêôåëïýíôáé ùò root. Tom Rhodes Åíçìåñþèçêå êáé âåëôéþèçêå áðü ôïí Brian Somers Áñ÷éêÞ óõíåéóöïñÜ ôïõ Nik Clayton Ìå ôç âïÞèåéá ôùí Dirk Frömberg Peter Childs ×ñçóéìïðïéþíôáò ôï PPP ×ñÞóôç Áðü ôï &os; 8.0 êáé ìåôÜ, ôá ïíüìáôá óõóêåõþí ãéá ôéò óåéñéáêÝò èýñåò ìåôïíïìÜóôçêáí áðü /dev/cuadN óå /dev/cuauN êáé áðü /dev/ttydN óå /dev/ttyuN. Ïé ÷ñÞóôåò ôïõ &os; 7.X èá ÷ñåéáóôåß íá ðñïóáñìüóïõí ôéò ðáñáêÜôù ïäçãßåò óýìöùíá ìå áõôÝò ôéò áëëáãÝò. PPP ×ñÞóôç ÐñïûðïèÝóåéò Ôï êåßìåíï áõôü ðñïûðïèÝôåé üôé Ý÷åôå ôá ðáñáêÜôù: - - ISP - - - PPP - - Ëïãáñéáóìü óå êÜðïéï Ðáñï÷Ýá Õðçñåóéþí Internet (ISP) óôïí - ïðïßï óõíäÝåóôå ÷ñçóéìïðïéþíôáò PPP. + Ëïãáñéáóìü óå êÜðïéï Ðáñï÷Ýá Õðçñåóéþí Internet (ISP)ISP óôïí + ïðïßï óõíäÝåóôå ÷ñçóéìïðïéþíôáò PPPPPP. ¸íá modem Þ Üëëç óõóêåõÞ óõíäåìÝíç óôï óýóôçìá óáò, êáé ñõèìéóìÝíç óùóôÜ þóôå íá óáò åðéôñÝðåé íá óõíäåèåßôå óôïí ISP óáò. Ôïõò áñéèìïýò êëÞóçò ãéá ôïí ISP óáò. - - PAP - - - CHAP - - - UNIX - - - login name - - - password - - Ôï üíïìá ÷ñÞóôç (login) êáé ôïí êùäéêü óáò (password). - Åßôå êáíïíéêü üíïìá êáé êùäéêü (ôýðïõ &unix;) Þ Ýíá æåýãïò - ïíüìáôïò / êùäéêïý ôýðïõ PAP Þ CHAP. + Ôï üíïìá ÷ñÞóôç (login)login name êáé ôïí êùäéêü óáò (password)password. + Åßôå êáíïíéêü üíïìá êáé êùäéêü (ôýðïõ &unix;)UNIX Þ Ýíá æåýãïò + ïíüìáôïò / êùäéêïý ôýðïõ PAPPAP Þ CHAPCHAP. - - nameserver - - Ôéò IP äéåõèýíóåéò åíüò Þ ðåñéóóüôåñùí äéáêïìéóôþí - ïíïìÜôùí (DNS). ÖõóéïëïãéêÜ, ï ISP óáò èá óáò äþóåé äýï + ïíïìÜôùí (DNS)nameserver. ÖõóéïëïãéêÜ, ï ISP óáò èá óáò äþóåé äýï ôÝôïéåò äéåõèýíóåéò. Áí äåí Ý÷åôå ôïõëÜ÷éóôïí ìßá, ìðïñåßôå íá åíåñãïðïéÞóåôå ôçí åíôïëÞ enable dns óôï ppp.conf êáé ôï ppp èá ñõèìßóåé ôïõò äéáêïìéóôÝò ïíïìÜôùí ãéá óáò. Ôï ÷áñáêôçñéóôéêü áõôü åîáñôÜôáé áðü ôçí õðïóôÞñéîç ôçò äéáðñáãìÜôåõóçò DNS áðü ôïí ISP óáò. Ï ISP óáò åíäå÷ïìÝíùò íá óáò äþóåé êáé ôéò ðáñáêÜôù ðëçñïöïñßåò, áëëÜ äåí åßíáé åíôåëþò áðáñáßôçôåò: Ôç äéåýèõíóç IP ãéá ôçí ðýëç (gateway) ôïõ ISP óáò. Ç ðýëç åßíáé ôï ìç÷Üíçìá ìÝóù ôïõ ïðïßïõ óõíäÝåóôå, êáé èá áðïôåëÝóåé ôçí ðñïåðéëåãìÝíç äéáäñïìÞ (default route) ãéá ôï ìç÷Üíçìá óáò. Áí äåí Ý÷åôå áõôÞ ôçí ðëçñïöïñßá, èá ÷ñçóéìïðïéçèåß ìéá åéêïíéêÞ, êáé üôáí óõíäåèåßôå èá ëÜâåôå ôçí êáíïíéêÞ äéåýèõíóç áðü ôïí äéáêïìéóôÞ PPP ôïõ ISP óáò. ÁõôÞ ç äéåýèõíóç IP áíáöÝñåôáé ùò HISADDR áðü ôï ppp. Ôç ìÜóêá äéêôýïõ (netmask) ðïõ ðñÝðåé íá ÷ñçóéìïðïéÞóåôå. Áí ï ISP óáò äå óáò ôçí ðáñÝ÷åé, ìðïñåßôå ìå áóöÜëåéá íá ÷ñçóéìïðïéÞóåôå ôçí ôéìÞ 255.255.255.255. - - static IP address - - Áí ï ISP óáò ðáñÝ÷åé óôáôéêÞ äéåýèõíóç êáé üíïìá õðïëïãéóôÞ (hostname) ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå áõôÜ. ÄéáöïñåôéêÜ, èá áöÞóïõìå ôïí áðïìáêñõóìÝíï õðïëïãéóôÞ íá äþóåé üðïéá - äéåýèõíóç IP èåùñåß êáôÜëëçëç. + äéåýèõíóç IP èåùñåß êáôÜëëçëçstatic IP address. Áí óáò ëåßðïõí êÜðïéåò áðü ôéò áðáéôïýìåíåò ðëçñïöïñßåò, åðéêïéíùíÞóôå ìå ôïí ISP óáò. Óå ïëüêëçñç ôçí ðáñïýóá åíüôçôá, ðïëëÜ áðü ôá ðáñáäåßãìáôá ðïõ äåß÷íïõí ôá ðåñéå÷üìåíá ôùí áñ÷åßùí ñõèìßóåùí, åßíáé áñéèìçìÝíá áíÜ ãñáììÞ. Ïé áñéèìïß áõôïß åîõðçñåôïýí óôçí ðáñïõóßáóç êáé ôç óõæÞôçóç ôïõ êÜèå ðáñáäåßãìáôïò, êáé äåí ðñÝðåé íá ãñáöïýí ìÝóá óôï ðñáãìáôéêü áñ÷åßï. Åßíáé åðßóçò óçìáíôéêü íá ôçñåßôå ç óùóôÞ óôïß÷éóç óå êÜèå áñ÷åßï, ìå ôç ÷ñÞóç óôçëïèåôþí (tabs) êáé êåíþí äéáóôçìÜôùí. Áõôüìáôç Ñýèìéóç <application>PPP</application> PPP configuration Ôüóï ôï ppp üóï êáé ôï pppd (ç õëïðïßçóç ôïõ PPP óå åðßðåäï ðõñÞíá, ìüíï óôï &os; 7.X) ÷ñçóéìïðïéïýí ôá áñ÷åßá ñõèìßóåùí óôïí êáôÜëïãï /etc/ppp. Ìðïñåßôå íá âñåßôå ðáñáäåßãìáôá ãéá ôï ppp ÷ñÞóôç óôïí êáôÜëïãï /usr/share/examples/ppp/. H ñýèìéóç ôïõ ppp áðáéôåß ôçí ôñïðïðïßçóç åíüò áñéèìïý áðü áñ÷åßá, áíÜëïãá ìå ôéò áðáéôÞóåéò óáò. Ôï ôé èá âÜëåôå óå áõôÜ, åîáñôÜôáé óå Ýíá ðïóïóôü áðü ôï áí ï ISP óáò áðïäßäåé óôáôéêÝò äéåõèýíóåéò IP (äçë. óáò ðáñÝ÷åé ìéá äéåýèõíóç IP ç ïðïßá äåí áëëÜæåé) Þ äõíáìéêÝò (äçë. ç IP äéåýèõíóç óáò áëëÜæåé êÜèå öïñÜ ðïõ óõíäÝåóôå óôïí ISP óáò). PPP êáé ÓôáôéêÝò Äéåõèýíóåéò IP PPP with static IP addresses Èá ÷ñåéáóôåß íá ôñïðïðïéÞóåôå ôï áñ÷åßï ñõèìßóåùí /etc/ppp/ppp.conf. Èá ðñÝðåé íá ìïéÜæåé ìå áõôü ðïõ öáßíåôáé ðáñáêÜôù: Ïé ãñáììÝò ðïõ ôåëåéþíïõí ìå : îåêéíïýí óôçí ðñþôç óôÞëç (áñ÷Þ ôçò ãñáììÞò) — üëåò ïé Üëëåò ãñáììÝò èá ðñÝðåé íá óôïé÷éóèïýí ìå ôïí ôñüðï ðïõ öáßíåôáé, ìå ôç ÷ñÞóç êåíþí Þ óôçëïèåôþí. 1 default: 2 set log Phase Chat LCP IPCP CCP tun command 3 ident user-ppp VERSION (built COMPILATIONDATE) 4 set device /dev/cuau0 5 set speed 115200 6 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \ 7 \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT" 8 set timeout 180 9 enable dns 10 11 provider: 12 set phone "(123) 456 7890" 13 set authname foo 14 set authkey bar 15 set login "TIMEOUT 10 \"\" \"\" gin:--gin: \\U word: \\P col: ppp" 16 set timeout 300 17 set ifaddr x.x.x.x y.y.y.y 255.255.255.255 0.0.0.0 18 add default HISADDR ÃñáììÞ 1: Áíáãíùñßæåé ôçí ðñïåðéëåãìÝíç êáôá÷þñéóç. Ïé åíôïëÝò óå áõôÞ ôçí êáôá÷þñéóç åêôåëïýíôáé áõôüìáôá, üôáí åêôåëåßôáé ôï ppp. ÃñáììÞ 2: Åíåñãïðïéåß ôçí êáôáãñáöÞ (logging) ôùí ðáñáìÝôñùí. ¼ôáí ïé ñõèìßóåéò ðïõ Ý÷ïõí ãßíåé ëåéôïõñãïýí éêáíïðïéçôéêÜ, ç ãñáììÞ áõôÞ èá ðñÝðåé íá ìéêñýíåé óôçí ðáñáêÜôù: set log phase tun ãéá íá áðïöåõ÷èïýí ìåãÜëá ìåãÝèç óôá áñ÷åßá êáôáãñáöÞò. ÃñáììÞ 3: ËÝåé óôï PPP ðùò íá áíáöÝñåé ðëçñïöïñßåò ãéá ôïí åáõôü ôïõ óôçí Üëëç ìåñéÜ ôçò óýíäåóçò. Ç äéáäéêáóßá áõôÞ ãßíåôáé áí ôï PPP Ý÷åé ðñüâëçìá óôçí äéáðñáãìÜôåõóç êáé ïëïêëÞñùóç ôçò óýíäåóçò, ðáñÝ÷ïíôáò ìå áõôü ôïí ôñüðï ðëçñïöïñßåò óôïí áðïìáêñõóìÝíï äéá÷åéñéóôÞ. Ïé ðëçñïöïñßåò áõôÝò ìðïñåß íá åßíáé ÷ñÞóéìåò óôçí åðßëõóç ôïõ ðñïâëÞìáôïò. ÃñáììÞ 4: Áíáãíùñßæåé ôç óõóêåõÞ óôçí ïðïßá åßíáé óõíäåìÝíï ôï modem. Ç óõóêåõÞ COM1 åßíáé ç /dev/cuau0 êáé ç COM2 åßíáé ç /dev/cuau1. ÃñáììÞ 5: Êáèïñßæåé ôçí ôá÷ýôçôá ìå ôçí ïðïßá åðéèõìåßôå íá óõíäåèåßôå. Áí äåí ëåéôïõñãåß ç ôéìÞ 115200 (ç ïðïßá ðñÝðåé íá ëåéôïõñãåß ìå êÜèå ó÷åôéêÜ óýã÷ñïíï modem), äïêéìÜóôå ìå 38400. ÃñáììÝò 6 & 7: - - PPP - user PPP - - Ôï áëöáñéèìçôéêü ðïõ èá ÷ñçóéìïðïéçèåß ãéá ôçí êëÞóç. - Ôï PPP ÷ñÞóôç ÷ñçóéìïðïéåß óýíôáîç expect-send ðáñüìïéá ìå + Ôï PPPPPPuser PPP ÷ñÞóôç ÷ñçóéìïðïéåß óýíôáîç expect-send ðáñüìïéá ìå áõôÞ ðïõ ÷ñçóéìïðïéåß ôï ðñüãñáììá &man.chat.8;. Äåßôå ôç óåëßäá manual ãéá ðëçñïöïñßåò ó÷åôéêÜ ìå ôéò äõíáôüôçôåò áõôÞò ôçò ãëþóóáò. Óçìåéþóôå üôé áõôÞ ç åíôïëÞ óõíå÷ßæåé óôçí åðüìåíç ãñáììÞ ãéá ëüãïõò áíáãíùóéìüôçôáò. Áõôü ìðïñåß íá ãßíåé óå êÜèå åíôïëÞ ôïõ ppp.conf, åöüóïí ôï \ åßíáé ï ôåëåõôáßïò ÷áñáêôÞñáò ôçò ãñáììÞò. ÃñáììÞ 8: Êáèïñßæåé ôï ÷ñüíï ôåñìáôéóìïý ëüãù áäñÜíåéáò ôçò óýíäåóçò. Ôá 180 äåõôåñüëåðôá åßíáé ç ðñïåðéëåãìÝíç ôéìÞ, Ýôóé ç ãñáììÞ áõôÞ åßíáé åäþ êáèáñÜ äéáêïóìçôéêÞ. ÃñáììÞ 9: ËÝåé óôï PPP íá ñùôÞóåé ôçí Üëëç ðëåõñÜ ãéá íá åðéâåâáéþóåé ôéò ôïðéêÝò ñõèìßóåéò ôïõ resolver. Áí åêôåëåßôå ôïðéêü äéáêïìéóôÞ ïíïìÜôùí (DNS), èá ðñÝðåé íá ìåôáôñÝøåôå áõôÞ ôç ãñáììÞ óå ó÷üëéï Þ íá ôçí áöáéñÝóåôå. ÃñáììÞ 10: ÊåíÞ ãñáììÞ þóôå ç áíÜãíùóç ôïõ áñ÷åßïõ íá åßíáé ðéï åýêïëç. Ïé êåíÝò ãñáììÝò áãíïïýíôáé áðü ôï PPP. ÃñáììÞ 11: Áíáãíùñßæåé ôçí êáôá÷þñéóç åíüò ðáñï÷Ýá ìå ôï üíïìá provider. Ìðïñåßôå åäþ íá ÷ñçóéìïðïéÞóåôå ôï üíïìá ôïõ ISP óáò, þóôå áñãüôåñá íá îåêéíÜôå ôç óýíäåóç óáò ìå ôçí åðéëïãÞ . ÃñáììÞ 12: ÈÝôåé ôïí áñéèìü êëÞóçò ãéá áõôü ôïí ðáñï÷Ýá. Ìðïñåßôå íá êáèïñßóåôå ðïëëáðëïýò áñéèìïýò êëÞóçò ÷ñçóéìïðïéþíôáò Üíù-êÜôù ôåëåßá (:) Þ ôïí ÷áñáêôÞñá (|) ùò äéá÷ùñéóôéêü. Ç äéáöïñÜ ìåôáîý ôùí äýï äéá÷ùñéóôéêþí ðåñéãñÜöåôáé óôï &man.ppp.8;. ÐåñéëçðôéêÜ, áí èÝëåôå íá äïêéìÜæïíôáé êõêëéêÜ üëïé ïé áñéèìïß, ÷ñçóéìïðïéÞóôå ôçí Üíù-êÜôù ôåëåßá. Áí èÝëåôå íá ãßíåôáé ðÜíôïôå áðüðåéñá êëÞóçò ôïõ ðñþôïõ áñéèìïý êáé ïé õðüëïéðïé íá äïêéìÜæïíôáé ìüíï áí ï ðñþôïò áðïôý÷åé, ÷ñçóéìïðïéÞóôå ôï ÷áñáêôÞñá ðáñï÷Ýôåõóçò. Íá ãñÜöåôå ðÜíôïôå üëï ôï óýíïëï ôùí ôçëåöùíéêþí áñéèìþí ìå ôïí ôñüðï ðïõ öáßíåôáé. Áí ï áñéèìüò ôçëåöþíïõ ðåñéÝ÷åé êåíÜ, èá ðñÝðåé íá ôïí ðåñéêëåßóåôå óå åéóáãùãéêÜ ("). Ç ðáñÜëåéøç ôïõò, áí êáé åßíáé áðëü óöÜëìá, ìðïñåß íá ðñïêáëÝóåé ðñïâëÞìáôá ðïõ äåí ìðïñïýí íá åíôïðéóôïýí åýêïëá. ÃñáììÝò 13 & 14: Áíáãíùñßæåé ôï üíïìá ÷ñÞóôç êáé ôïí êùäéêü ôïõ. ¼ôáí óõíäÝåóôå ÷ñçóéìïðïéþíôáò ðñïôñïðÞ ôýðïõ &unix;, ïé ôéìÝò áõôÝò áíáöÝñïíôáé áðü ôçí åíôïëÞ set login ÷ñçóéìïðïéþíôáò ôéò ìåôáâëçôÝò \U êáé \P. ¼ôáí óõíäÝåóôå ìå ÷ñÞóç PAP Þ CHAP, ïé ôéìÝò áõôÝò ÷ñçóéìïðïéïýíôáé ôçí þñá ôçò ðéóôïðïßçóçò ôáõôüôçôáò ôïõ ÷ñÞóôç. ÃñáììÞ 15: - PAP - CHAP Áí ÷ñçóéìïðïéåßôå PPP Þ CHAP, äåí èá õðÜñ÷åé óôï óçìåßï áõôü ðñïôñïðÞ åéóüäïõ (login), êáé èá ðñÝðåé íá ìåôáôñÝøåôå ôç ãñáììÞ áõôÞ óå ó÷üëéï Þ íá ôçí áöáéñÝóåôå. Äåßôå ôçí - Ðéóôïðïßçóç PAP - êáé CHAP ãéá ðåñéóóüôåñåò ëåðôïìÝñåéåò. + Ðéóôïðïßçóç PAPPAP + êáé CHAPCHAP ãéá ðåñéóóüôåñåò ëåðôïìÝñåéåò. Ôï áëöáñéèìçôéêü åéóüäïõ ÷ñçóéìïðïéåß óýíôáîç ðáñüìïéá ìå ôï &man.chat.8;, üðùò óõìâáßíåé êáé ìå ôï áëöáñéèìçôéêü êëÞóçò. Óôï ðáñÜäåéãìá ìáò, ôï áëöáñéèìçôéêü ÷ñçóéìïðïéåßôáé ãéá ìéá õðçñåóßá óôçí ïðïßá ç óõíåäñßá åéóüäïõ ìïéÜæåé ìå ôçí ðáñáêÜôù: J. Random Provider login: foo password: bar protocol: ppp Èá ÷ñåéáóôåß íá áëëÜîåôå áõôü ôï script áíÜëïãá ìå ôéò áíÜãêåò óáò. ¼ôáí ãñÜöåôå áõôü ôï script ôçí ðñþôç öïñÜ, âåâáéùèåßôå üôé Ý÷åôå åíåñãïðïéÞóåé ôï áñ÷åßï êáôáãñáöÞò ãéá ôï chat þóôå íá ìðïñåßôå íá ðñïóäéïñßóåôå áí ç äéáäéêáóßá áíáãíþñéóçò ðñï÷ùñÜåé óùóôÜ. ÃñáììÞ 16: - timeout - - ÈÝôåé ôï ÷ñüíï áäñÜíåéáò (óå äåõôåñüëåðôá) ãéá ôç + ÈÝôåé ôï ÷ñüíïtimeout áäñÜíåéáò (óå äåõôåñüëåðôá) ãéá ôç óýíäåóç. Åäþ, ç óýíäåóç èá êëåßóåé áõôüìáôá áí äåí õðÜñ÷åé êßíçóç ãéá 300 äåõôåñüëåðôá. Áí äåí èÝëåôå íá ãßíåôáé ðïôÝ ôåñìáôéóìüò ôçò óýíäåóçò ëüãù áäñÜíåéáò, èÝóôå áõôÞ ôç ôéìÞ óå ìçäÝí, Þ ÷ñçóéìïðïéÞóôå ôçí åðéëïãÞ óôç ãñáììÞ åíôïëÞò. ÃñáììÞ 17: - ISP - ÈÝôåé ôç äéåýèõíóç ôçò äéåðáöÞò. Ôï áëöáñéèìçôéêü x.x.x.x èá ðñÝðåé íá áíôéêáôáóôáèåß ìå ôç äéåýèõíóç IP ðïõ óáò Ý÷åé áðïäïèåß áðü ôïí ðáñï÷Ýá óáò. Ôï áëöáñéèìçôéêü y.y.y.y èá ðñÝðåé íá áíôéêáôáóôáèåß ìå ôçí äéåýèõíóç IP ðïõ Ý÷åé êáèïñßóåé ï ISP óáò ùò ðýëç (gateway, ôï ìç÷Üíçìá óôï ïðïßï óõíäÝåóôå). - Áí ï ISP óáò äåí óáò Ý÷åé äþóåé äéåýèõíóç ðýëçò, + Áí ï ISPISP óáò äåí óáò Ý÷åé äþóåé äéåýèõíóç ðýëçò, ÷ñçóéìïðïéÞóôå ôçí 10.0.0.2/0. Áí ðñÝðåé íá ÷ñçóéìïðïéÞóåôå ìéá IP äéåýèõíóç ðïõ Ý÷åôå ìáíôÝøåé, âåâáéùèåßôå üôé Ý÷åôå äçìéïõñãÞóåé ìéá êáôá÷þñéóç óôï /etc/ppp/ppp.linkup óýìöùíá ìå ôéò ïäçãßåò ãéá ôï PPP êáé ÄõíáìéêÝò IP Äéåõèýíóåéò. Áí ðáñáëåßøåôå áõôÞ ôç ãñáììÞ, ôï ppp äåí èá ìðïñåß íá åêôåëåóôåß óå êáôÜóôáóç . ÃñáììÞ 18: ÐñïóèÝóôå ìéá ðñïåðéëåãìÝíç äéáäñïìÞ (default route) ðñïò ôï ìç÷Üíçìá ðýëçò (gateway) ôïõ ISP óáò. Ç åéäéêÞ ëÝîç HISADDR áíôéêáèßóôáôáé ìå ôçí äéåýèõíóç ðýëçò ðïõ êáèïñßæåôáé óôç ãñáììÞ 17. Åßíáé óçìáíôéêü ç ãñáììÞ áõôÞ íá åìöáíßæåôáé ìåôÜ ôçí ãñáììÞ 17, äéáöïñåôéêÜ ôï HISADDR äåí èá Ý÷åé áêüìá ëÜâåé áñ÷éêÞ ôéìÞ. Áí äåí åðéèõìåßôå íá åêôåëÝóåôå ôï ppp óå êáôÜóôáóç , èá ðñÝðåé íá ìåôáêéíÞóåôå áõôÞ ôç ãñáììÞ óôï áñ÷åßï ppp.linkup. Äåí åßíáé áðáñáßôçôï íá ðñïóèÝóåôå êáôá÷þñéóç óôï áñ÷åßï ppp.linkup üôáí Ý÷åôå óôáôéêÞ äéåýèõíóç IP êáé åêôåëåßôå ôï ppp óå êáôÜóôáóç . Óôçí ðåñßðôùóç áõôÞ, ïé êáôá÷ùñßóåéò óáò óôïí ðßíáêá äñïìïëüãçóçò åßíáé óùóôÝò ðñéí êáí óõíäåèåßôå. ºóùò ùóôüóï íá èÝëåôå íá äçìéïõñãÞóåôå ìéá êáôá÷þñéóç ãéá íá åêôåëÝóåôå êÜðïéá ðñïãñÜììáôá ìåôÜ ôçí áðïêáôÜóôáóç ôçò óýíäåóçò. Èá ôï åîçãÞóïõìå áõôü áñãüôåñá óå Ýíá ðáñÜäåéãìá ìå ôï sendmail. Ìðïñåßôå íá âñåßôå ðáñáäåßãìáôá áñ÷åßùí ñõèìßóåùí óôïí êáôÜëïãï usr/share/examples/ppp/. PPP êáé ÄõíáìéêÝò Äéåõèýíóåéò IP PPP with dynamic IP addresses IPCP Áí ï ðáñï÷Ýáò óáò äåí äßíåé óôáôéêÝò äéåõèýíóåéò, ôï ppp ìðïñåß íá ñõèìéóôåß íá äéáðñáãìáôåýåôáé ôçí ôïðéêÞ êáé ôçí áðïìáêñõóìÝíç äéåýèõíóç. Áõôü ãßíåôáé ìáíôåýïíôáò ìéá äéåýèõíóç IP, êáé åðéôñÝðïíôáò óôï ppp íá ôçí èÝóåé Ýðåéôá óùóôÜ, ÷ñçóéìïðïéþíôáò ôï ðñùôüêïëëï IPCP (IP Configuration Protocol) ìåôÜ ôç óýíäåóç. Ôï áñ÷åßï ñõèìßóåùí ppp.conf åßíáé ôï ßäéï üðùò êáé óôï PPP êáé ÓôáôéêÝò Äéåõèýíóåéò IP, ìå ôçí ðáñáêÜôù ìüíï áëëáãÞ: 17 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255 0.0.0.0 ¼ðùò êáé ðñïçãïõìÝíùò, äåí ðñÝðåé íá ðåñéëÜâåôå ôïí áñéèìü ãñáììÞò. Áðáéôåßôáé åóï÷Þ åíüò ôïõëÜ÷éóôïí êåíïý äéáóôÞìáôïò. ÃñáììÞ 17: Ï áñéèìüò ìåôÜ ôï ÷áñáêôÞñá / åßíáé ôï ðëÞèïò ôùí bits ôçò äéåýèõíóçò ãéá ôï ïðïßï èá åðéìåßíåé ôï ppp. ºóùò èÝëåôå íá ÷ñçóéìïðïéÞóåôå áñéèìïýò IP ðéï êáôÜëëçëïõò ãéá ôçí ðåñßóôáóç, áëëÜ ôï ðáñÜäåéãìá ðïõ äßíïõìå ðáñáðÜíù èá ëåéôïõñãÞóåé ðÜíôá. Ôï ôåëåõôáßï üñéóìá (ôï 0.0.0.0) ëÝåé óôï PPP íá áñ÷ßóåé ôéò äéáðñáãìáôåýóåéò ìå ôçí äéåýèõíóç 0.0.0.0 áíôß ãéá ôçí 10.0.0.1. Áõôü åßíáé áðáñáßôçôï óå ïñéóìÝíïõò ISP. Ìç ÷ñçóéìïðïéÞóåôå ôï 0.0.0.0 ùò ðñþôï üñéóìá óôçí set ifaddr, êáèþò èá åìðïäßóåé ôçí PPP íá ñõèìßóåé ôçí áñ÷éêÞ äéáäñïìÞ óôçí êáôÜóôáóç . Áí äåí ÷ñçóéìïðïéåßôå ôçí åðéëïãÞ , èá ÷ñåéáóôåß íá äçìéïõñãÞóåôå ìéá êáôá÷þñéóç óôï áñ÷åßï /etc/ppp/ppp.linkup. Ôï áñ÷åßï ppp.linkup ÷ñçóéìïðïéåßôáé ìåôÜ ôçí áðïêáôÜóôáóç ôçò óýíäåóçò. Óôï óçìåßï áõôü, ôï ppp èá Ý÷åé Þäç áðïäþóåé äéåýèõíóç óôçí äéåðáöÞ êáé èá åßíáé ðëÝïí äõíáôüí íá ðñïóèÝóåôå ôéò êáôá÷ùñßóåéò óôïí ðßíáêá äñïìïëüãçóçò: 1 provider: 2 add default HISADDR ÃñáììÞ 1: Ìå ôçí áðïêáôÜóôáóç ôçò óýíäåóçò, ôï ppp èá øÜîåé ãéá ìéá êáôá÷þñéóç óôï ppp.linkup óýìöùíá ìå ôïõò ðáñáêÜôù êáíüíåò: Áñ÷éêÜ èá ðñïóðáèÞóåé íá ôáéñéÜîåé ôçí ðñþôç åôéêÝôá ðïõ Ý÷åé ÷ñçóéìïðïéçèåß óôï áñ÷åßï ppp.conf. Áí áõôü áðïôý÷åé, èá øÜîåé ãéá ìéá êáôá÷þñéóç ãéá ôçí äéåýèõíóç IP ôçò ðýëçò. Ç êáôá÷þñéóç áõôÞ åßíáé ìéá åôéêÝôá ìïñöÞò IP äéåýèõíóçò, ìå ôÝóóåñéò ïêôÜäåò. Áí äåí Ý÷åé áêüìá âñåèåß ç óùóôÞ êáôá÷þñéóç, èá ãßíåé áíß÷íåõóç ãéá ôçí êáôá÷þñéóç MYADDR. ÃñáììÞ 2: Ç ãñáììÞ áõôÞ ëÝåé óôï ppp íá ðñïóèÝóåé ìéá ðñïåðéëåãìÝíç äéáäñïìÞ ç ïðïßá íá äåß÷íåé óôï HISADDR. Ôï HISADDR èá áíôéêáôáóôáèåß ìå ôç äéåýèõíóç IP ôçò ðýëçò üðùò áõôÞ áðïäüèçêå ìÝóù ôïõ ðñùôïêüëëïõ IPCP. Äåßôå ôçí êáôá÷þñéóç pmdemand óôá áñ÷åßá /usr/share/examples/ppp/ppp.conf.sample êáé /usr/share/examples/ppp/ppp.linkup.sample ãéá Ýíá ðéï ëåðôïìåñÝò ðáñÜäåéãìá. ËÞøç Åéóåñ÷üìåíùí ÊëÞóåùí PPP receiving incoming calls ¼ôáí ñõèìßæåôå ôï ppp íá ëáìâÜíåé åéóåñ÷üìåíåò êëÞóåéò óå Ýíá ìç÷Üíçìá ðïõ óõíäÝåôáé óå Ýíá ôïðéêü äßêôõï (LAN), èá ðñÝðåé íá áðïöáóßóåôå áí èÝëåôå íá ðñïùèïýíôáé ðáêÝôá ðñïò áõôü. Áí íáé, èá ðñÝðåé íá áðïäþóåôå óôï ìç÷Üíçìá ìéá äéåýèõíóç IP ç ïðïßá íá áíÞêåé óôï ßäéï õðïäßêôõï ìå ôï LAN, êáé íá ÷ñçóéìïðïéÞóåôå ôçí åíôïëÞ enable proxy óôï áñ÷åßï /etc/ppp/ppp.conf. Èá ðñÝðåé åðßóçò íá åðéâåâáéþóåôå üôé ôï áñ÷åßï /etc/rc.conf ðåñéÝ÷åé ôá ðáñáêÜôù: gateway_enable="YES" Ðïéï getty; Ç åíüôçôá Õðçñåóßá Åéóüäïõ ìÝóù ÅðéëïãéêÞò Óýíäåóçò (dial in) ðáñÝ÷åé ìéá êáëÞ ðåñéãñáöÞ ó÷åôéêÜ ìå ôçí åíåñãïðïßçóç õðçñåóéþí åðéëïãéêþí êëÞóåùí ÷ñçóéìïðïéþíôáò ôçí &man.getty.8;. Ìéá åíáëëáêôéêÞ óôçí getty åßíáé ç mgetty (áðü ôï ðáêÝôï comms/mgetty+sendfax), ìéá ðéï Ýîõðíç Ýêäïóç ôçò getty, ç ïðïßá Ý÷åé ó÷åäéáóôåß ãéá íá ëáìâÜíåé õðüøéí ôéò åðéëïãéêÝò ãñáììÝò. Ôá ðëåïíåêôÞìáôá ôçò mgetty åßíáé üôé åðéêïéíùíåß åíåñãÜ ìå ôá modem, ôï ïðïßï óçìáßíåé üôé áí ç èýñá åßíáé áðåíåñãïðïéçìÝíç óôï /etc/ttys, ôï modem óáò äåí èá áðáíôÞóåé óôçí êëÞóç. ÌåôáãåíÝóôåñåò åêäüóåéò ôçò mgetty (áðü ôçí 0.99beta êáé ìåôÜ) õðïóôçñßæïõí åðßóçò áõôüìáôç áíß÷íåõóç PPP streams, åðéôñÝðïíôáò óôïõò ðåëÜôåò óáò ðñüóâáóç óôïí åîõðçñåôçôÞ ÷ùñßò ÷ñÞóç scripts. ÄéáâÜóôå ôçí åíüôçôá Mgetty êáé AutoPPP ãéá ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôçí mgetty. ¶äåéåò ãéá ôï <application>PPP</application> ÖõóéïëïãéêÜ, ç åêôÝëåóç ôçò åíôïëÞò ppp ðñÝðåé íá ãßíåôáé ùò ÷ñÞóôçò root. Áí ùóôüóï èÝëåôå íá åðéôñÝøåôå ôçí åêôÝëåóç ôïõ ppp óå êáôÜóôáóç åîõðçñåôçôÞ ùò êáíïíéêüò ÷ñÞóôçò (ìå ôïí ôñüðï ðïõ ðåñéãñÜöåôáé ðáñáêÜôù) èá ðñÝðåé íá äþóåôå óå áõôü ôï ÷ñÞóôç ôá êáôÜëëçëá äéêáéþìáôá ãéá íá åêôåëåß ôï ppp, ðñïóèÝôïíôáò ôïí óôçí ïìÜäá network óôï áñ÷åßï /etc/group. Èá ðñÝðåé åðßóçò íá ôïõò äþóåôå ðñüóâáóç óå Ýíá Þ ðåñéóóüôåñá ôìÞìáôá ôïõ áñ÷åßïõ ñõèìßóåùí, ÷ñçóéìïðïéþíôáò ôçí åíôïëÞ allow: allow users fred mary Áí ÷ñçóéìïðïéÞóåôå ôçí åðéëïãÞ áõôÞ óôï ôìÞìá default, èá äþóåôå óå áõôïýò ôïõò ÷ñÞóôåò ðñüóâáóç óå üëåò ôéò ñõèìßóåéò. Êåëýöç PPP ãéá ×ñÞóôåò ìå ÄõíáìéêÜ IP PPP shells ÄçìéïõñãÞóôå Ýíá áñ÷åßï ìå ôï üíïìá /etc/ppp/ppp-shell ôï ïðïßï íá ðåñéÝ÷åé ôá ðáñáêÜôù: #!/bin/sh IDENT=`echo $0 | sed -e 's/^.*-\(.*\)$/\1/'` CALLEDAS="$IDENT" TTY=`tty` if [ x$IDENT = xdialup ]; then IDENT=`basename $TTY` fi echo "PPP for $CALLEDAS on $TTY" echo "Starting PPP for $IDENT" exec /usr/sbin/ppp -direct $IDENT Ôï script áõôü èá ðñÝðåé íá ãßíåé åêôåëÝóéìï. ÄçìéïõñãÞóôå ôþñá Ýíá óõìâïëéêü äåóìü ðïõ íá ïíïìÜæåôáé ppp-dialup ÷ñçóéìïðïéþíôáò ôéò ðáñáêÜôù åíôïëÝò: &prompt.root; ln -s ppp-shell /etc/ppp/ppp-dialup Èá ðñÝðåé íá ÷ñçóéìïðïéÞóåôå áõôü ôï script ùò ôï êÝëõöïò ãéá üëïõò ôïõò dialup ÷ñÞóôåò. Åäþ öáßíåôáé Ýíá ðáñÜäåéãìá ôïõ /etc/passwd ãéá Ýíá ÷ñÞóôç dialup ìå üíïìá pchilds (èõìçèåßôå üôé äåí ðñÝðåé íá ôñïðïðïéåßôå Üìåóá ôï áñ÷åßï ôùí êùäéêþí, áëëÜ ìÝóù ôçò åíôïëÞò &man.vipw.8;). pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialup ÄçìéïõñãÞóôå Ýíá êáôÜëïãï /home/ppp ðñïóâÜóéìï ãéá áíÜãíùóç áðü üëïõò, ï ïðïßïò èá ðåñéÝ÷åé ôá ðáñáêÜôù êåíÜ áñ÷åßá: -r--r--r-- 1 root wheel 0 May 27 02:23 .hushlogin -r--r--r-- 1 root wheel 0 May 27 02:22 .rhosts ôá ïðïßá åìðïäßæïõí ôçí åìöÜíéóç ôïõ ìçíýìáôïò áðü ôï áñ÷åßï /etc/motd. Êåëýöç PPP ãéá ×ñÞóôåò ìå Óôáôéêü IP PPP shells ÄçìéïõñãÞóôå ôï áñ÷åßï ppp-shell üðùò öáßíåôáé ðáñáðÜíù, êáé ãéá êÜèå ëïãáñéáóìü ìå óôáôéêü IP, äçìéïõñãÞóôå Ýíá óõìâïëéêü äåóìü ðñïò ôï ppp-shell. Ãéá ðáñÜäåéãìá, áí Ý÷åôå ôñåéò ðåëÜôåò dialup, ôïõò fred, sam, êáé mary, óôïõò ïðïßïõò åêôåëåßôå äñïìïëüãçóç /24 CIDR, èá ðñÝðåé íá ãñÜøåôå ôá ðáñáêÜôù: &prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-fred &prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-sam &prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-mary Ãéá êÜèå ëïãáñéáóìü ÷ñÞóôç dialup, èá ðñÝðåé íá ñõèìéóôåß ôï êÝëõöïò óôï óõìâïëéêü äåóìü ðïõ äçìéïõñãÞèçêå ðáñáðÜíù (ãéá ðáñÜäåéãìá ï óõìâïëéêüò äåóìüò ãéá ôï êÝëõöïò ôïõ ÷ñÞóôç mary èá ðñÝðåé íá åßíáé ï /etc/ppp/ppp-mary). Ñýèìéóç ôïõ <filename>ppp.conf</filename> ãéá ×ñÞóôåò ìå Äõíáìéêü IP Ôï áñ÷åßï /etc/ppp/ppp.conf èá ðñÝðåé íá ðåñéÝ÷åé êÜôé áíôßóôïé÷ï ìå ôï ðáñáêÜôù: default: set debug phase lcp chat set timeout 0 ttyu0: set ifaddr 203.14.100.1 203.14.100.20 255.255.255.255 enable proxy ttyu1: set ifaddr 203.14.100.1 203.14.100.21 255.255.255.255 enable proxy Ç óôïß÷éóç åßíáé óçìáíôéêÞ. Ãéá êÜèå óõíåäñßá, öïñôþíåôáé ç åíüôçôá default:. Ãéá êÜèå ãñáììÞ dialup ðïõ åíåñãïðïéåßôáé óôï /etc/ttys, èá ðñÝðåé íá äçìéïõñãÞóåôå ìéá êáôá÷þñéóç üìïéá ìå áõôÞ ðïõ öáßíåôáé ðáñáðÜíù ãéá ôï ttyu0:. ÊÜèå ãñáììÞ èá ðñÝðåé íá ðáßñíåé ìéá ìïíáäéêÞ äéåýèõíóç IP áðü ôï áðüèåìá ôùí IP äéåõèýíóåùí ðïõ ðñïïñßæïíôáé ãéá ôïõò äõíáìéêïýò ÷ñÞóôåò. Ñýèìéóç ôïõ <filename>ppp.conf</filename> ãéá ×ñÞóôåò ìå Óôáôéêü IP Åêôüò áðü ôá ðåñéå÷üìåíá ôïõ õðïäåßãìáôïò /usr/share/examples/ppp/ppp.conf èá ðñÝðåé íá ðñïóèÝóåôå ìéá åíüôçôá ãéá êáèÝíá áðü ôïõò ÷ñÞóôåò dialup óôïõò ïðïßïõò Ý÷åé áðïäïèåß óôáôéêü IP. Èá óõíå÷ßóïõìå ìå ôï ðáñÜäåéãìá ìáò ìå ôïõò ÷ñÞóôåò fred, sam, êáé mary. fred: set ifaddr 203.14.100.1 203.14.101.1 255.255.255.255 sam: set ifaddr 203.14.100.1 203.14.102.1 255.255.255.255 mary: set ifaddr 203.14.100.1 203.14.103.1 255.255.255.255 Ôï áñ÷åßï /etc/ppp/ppp.linkup èá ðñÝðåé åðßóçò íá ðåñéÝ÷åé ðëçñïöïñßåò äñïìïëüãçóçò ãéá êÜèå ÷ñÞóôç ìå óôáôéêü IP (áí áðáéôåßôáé). Ç ðáñáêÜôù ãñáììÞ èá ðñïóèÝóåé ìéá äéáäñïìÞ ðñïò ôç äéåýèõíóç äéêôýïõ 203.14.101.0/24 ìÝóù ôçò óýíäåóçò ppp ôïõ ðåëÜôç. fred: add 203.14.101.0 netmask 255.255.255.0 HISADDR sam: add 203.14.102.0 netmask 255.255.255.0 HISADDR mary: add 203.14.103.0 netmask 255.255.255.0 HISADDR <command>mgetty</command> êáé AutoPPP mgetty AutoPPP LCP Ôï port comms/mgetty+sendfax, Ýñ÷åôáé ìå ðñïåðéëåãìÝíç ôçí åðéëïãÞ AUTO_PPP, åðéôñÝðïíôáò Ýôóé óôçí mgetty íá áíé÷íåýåé ôçí öÜóç LCP ôùí óõíäÝóåùí PPP êáé íá åêôåëåß áõôüìáôá Ýíá êÝëõöïò ppp. Ùóôüóï, êáèþò ìå áõôü ôïí ôñüðï äåí åíåñãïðïéåßôáé ç ðñïåðéëåãìÝíç áêïëïõèßá ïíüìáôïò ÷ñÞóôç êáé êùäéêïý, åßíáé áðáñáßôçôï íá ãßíåé ðéóôïðïßçóç ôùí ÷ñçóôþí ìå ôç ÷ñÞóç PAP Þ CHAP. Ç åíüôçôá áõôÞ ðñïûðïèÝôåé üôé ï ÷ñÞóôçò Ý÷åé ñõèìßóåé, ìåôáãëùôôßóåé êáé åãêáôáóôÞóåé ìå åðéôõ÷ßá ôï port comms/mgetty+sendfax óôï óýóôçìá ôïõ. Âåâáéùèåßôå üôé ôï áñ÷åßï óáò /usr/local/etc/mgetty+sendfax/login.config ðåñéÝ÷åé ôá ðáñáêÜôù: /AutoPPP/ - - /etc/ppp/ppp-pap-dialup Áõôü èá ðåé óôçí mgetty íá åêôåëÝóåé ôï script ppp-pap-dialup ãéá ôéò PPP óõíäÝóåéò ðïõ áíé÷íåýèçêáí. ÄçìéïõñãÞóôå Ýíá áñ÷åßï ìå ôï üíïìá /etc/ppp/ppp-pap-dialup ôï ïðïßï èá ðåñéÝ÷åé ôá áêüëïõèá (ôï áñ÷åßï èá ðñÝðåé íá åßíáé åêôåëÝóéìï): #!/bin/sh exec /usr/sbin/ppp -direct pap$IDENT Ãéá êÜèå ãñáììÞ dialup ðïõ åßíáé åíåñãïðïéçìÝíç óôï /etc/ttys, äçìéïõñãÞóôå ìéá áíôßóôïé÷ç êáôá÷þñéóç óôï áñ÷åßï /etc/ppp/ppp.conf. Ç êáôá÷þñéóç áõôÞ ìðïñåß íá óõíõðÜñ÷åé ÷ùñßò ðñüâëçìá ìå áõôÝò ðïõ ïñßóáìå ðáñáðÜíù. pap: enable pap set ifaddr 203.14.100.1 203.14.100.20-203.14.100.40 enable proxy ÊÜèå ÷ñÞóôçò ðïõ åéóÝñ÷åôáé ìå áõôü ôïí ôñüðï, èá ðñÝðåé íá äéáèÝôåé üíïìá ÷ñÞóôç/êùäéêü óôï áñ÷åßï /etc/ppp/ppp.secret. ÅíáëëáêôéêÜ, ìðïñåßôå íá ðñïóèÝóåôå ôçí ðáñáêÜôù åðéëïãÞ þóôå íá ãßíåôáé ðéóôïðïßçóç ôùí ÷ñçóôþí ìÝóù PAP ìå âÜóç ôá óôïé÷åßá ôïõ áñ÷åßïõ /etc/passwd. enable passwdauth Áí èÝëåôå íá áðïäþóåôå óôáôéêü IP óå êÜðïéïõò ÷ñÞóôåò, ìðïñåßôå íá êáèïñßóåôå ôçí äéåýèõíóç ùò ôñßôï üñéóìá óôï áñ÷åßï /etc/ppp/ppp.secret. Ãéá ðáñáäåßãìáôá, äåßôå ôï áñ÷åßï /usr/share/examples/ppp/ppp.secret.sample. ÅðåêôÜóåéò MS DNS NetBIOS PPP Microsoft extensions Åßíáé äõíáôüí íá ñõèìßóåôå ôï PPP þóôå íá ðáñÝ÷åé äéåõèýíóåéò DNS êáé NetBIOS êáôÜ áðáßôçóç. Ãéá íá åíåñãïðïéÞóåôå áõôÝò ôéò åðåêôÜóåéò ìå ôçí Ýêäïóç 1.x ôïõ PPP, èá ðñÝðåé íá ðñïóèÝóåôå ôéò ðáñáêÜôù ãñáììÝò óôï ó÷åôéêü ôìÞìá ôïõ /etc/ppp/ppp.conf. enable msext set ns 203.14.100.1 203.14.100.2 set nbns 203.14.100.5 Ãéá ôï PPP áðü ôçí Ýêäïóç 2 êáé ðÜíù: accept dns set dns 203.14.100.1 203.14.100.2 set nbns 203.14.100.5 Ôï ðáñáðÜíù èá åíçìåñþóåé ôïõò ðåëÜôåò ãéá ôïí êýñéï êáé äåõôåñåýïíôá åîõðçñåôçôÞ DNS, êáé ãéá ôïí åîõðçñåôçôÞ ïíïìÜôùí NetBIOS. Áðü ôçí Ýêäïóç 2 êáé ðÜíù, áí ðáñáëåéöèåß ç ãñáììÞ set dns, ôï PPP èá ÷ñçóéìïðïéÞóåé ôéò ãñáììÝò ðïõ èá âñåé óôï /etc/resolv.conf. Ðéóôïðïßçóç PAP êáé CHAP PAP CHAP ÊÜðïéïé ISP ñõèìßæïõí ôá óõóôÞìáôá ôïõò ìå ôÝôïéï ôñüðï, þóôå ôï êïììÜôé ôçò óýíäåóçò ðïõ áó÷ïëåßôáé ìå ôçí ðéóôïðïßçóç ôïõ ÷ñÞóôç íá ãßíåôáé ìÝóù ôùí ìç÷áíéóìþí PAP Þ CHAP. Áí óõìâáßíåé áõôü óôç äéêÞ óáò ðåñßðôùóç, ï ISP óáò äåí èá óáò óôåßëåé ðñïôñïðÞ login üôáí óõíäåèåßôå, áëëÜ èá áñ÷ßóåé áðåõèåßáò ôç ìåôÜäïóç PPP. Ôï PAP åßíáé ëéãüôåñï áóöáëÝò áðü ôï CHAP, áëëÜ ç áóöÜëåéá åäþ äåí åßíáé ôüóï óðïõäáßï èÝìá, êáèþò ïé êùäéêïß (áí êáé óôÝëíïíôáé ùò êáíïíéêü êåßìåíï) ìåôáäßäïíôáé ìüíï ìÝóù óåéñéáêÞò ãñáììÞò. ¸ôóé äåí õðÜñ÷åé ðñáãìáôéêÞ äõíáôüôçôá ôùí crackers íá êñõöáêïýóïõí. ×ñçóéìïðïéþíôáò ùò áíáöïñÜ ôéò åíüôçôåò PPP êáé ÓôáôéêÝò Äéåõèýíóåéò IP Þ PPP êáé ÄõíáìéêÝò Äéåõèýíóåéò IP, èá ðñÝðåé íá ãßíïõí ïé ðáñáêÜôù áëëáãÝò: 13 set authname MyUserName 14 set authkey MyPassword 15 set login ÃñáììÞ 13: Ç ãñáììÞ áõôÞ êáèïñßæåé ôï üíïìá ÷ñÞóôç ãéá ôá PAP/CHAP. Èá ÷ñåéáóôåß íá åéóÜãåôå ôçí óùóôÞ ôéìÞ ãéá ôï MyUserName. ÃñáììÞ 14: - password - Ç ãñáììÞ áõôÞ êáèïñßæåé ôïí êùäéêü ãéá ôá PAP/CHAP. Èá ÷ñåéáóôåß íá åéóÜãåôå ôçí óùóôÞ ôéìÞ ãéá ôï - MyPassword. ºóùò èÝëåôå íá + MyPasswordpassword. ºóùò èÝëåôå íá ðñïóèÝóåôå ìéá áêüìá ãñáììÞ, üðùò ôçí ðáñáêÜôù: 16 accept PAP Þ 16 accept CHAP ãéá íá åßíáé öáíåñÞ ç ðñüèåóç óáò, ùóôüóï ôüóï ôï PAP üóï êáé ôï CHAP ãßíïíôáé äåêôÜ áðü ðñïåðéëïãÞ. ÃñáììÞ 15: Ï ISP óáò äåí èá áðáéôåß öõóéïëïãéêÜ íá åéóÝëèåôå óôïí åîõðçñåôçôÞ áí ÷ñçóéìïðïéåßôå PAP Þ CHAP. Ãéá ôï ëüãï áõôü, èá ðñÝðåé íá áðåíåñãïðïéÞóåôå ôï áëöáñéèìçôéêü set login. ÁëëÜæïíôáò ¶ìåóá ôéò Ñõèìßóåéò ôïõ <command>ppp</command> Åßíáé äõíáôüí íá åðéêïéíùíÞóåôå ìå ôï ðñüãñáììá ppp êáèþò åêôåëåßôáé óôïí ðáñáóêÞíéï, áëëÜ ìüíï áí Ý÷åôå ñõèìßóåé ìéá êáôÜëëçëç äéáãíùóôéêÞ èýñá ãéá áõôü ôï óêïðü. Ãéá íá ôï êÜíåôå áõôü, ðñïóèÝóôå ôçí ðáñáêÜôù ãñáììÞ óôéò ñõèìßóåéò óáò: set server /var/run/ppp-tun%d DiagnosticPassword 0177 Áõôü ïäçãåß ôï PPP íá áêïýåé óôï êáèïñéóìÝíï &unix; socket ôïõ ôïìÝá, êáé íá ñùôÜåé ôïõò ðåëÜôåò ãéá ôïí êùäéêü ðïõ Ý÷åé êáèïñéóôåß ðñéí åðéôñÝøåé ôçí ðñüóâáóç. Ôï %d óôï üíïìá, áíôéêáèßóôáôáé ìå ôïí áñéèìü ôçò óõóêåõÞò tun ðïõ ÷ñçóéìïðïéåßôáé. Áðü ôç óôéãìÞ ðïõ ñõèìéóôåß ôï socket, ôï ðñüãñáììá &man.pppctl.8; ìðïñåß íá ÷ñçóéìïðïéçèåß óå scripts ìå ôá ïðïßá åðéèõìåßôå íá äéá÷åéñéóôåßôå ôï ðñüãñáììá ppp ôï ïðïßï åêôåëåßôáé Þäç. ×ñçóéìïðïéþíôáò ôç Äõíáôüôçôá ÌåôÜöñáóçò Äéåõèýíóåùí (NAT) ôïõ PPP - - PPPNAT - - - Ôï PPP Ý÷åé ôçí éêáíüôçôá íá ÷ñçóéìïðïéÞóåé äéêü ôïõ åóùôåñéêü + Ôï PPPPPPNAT Ý÷åé ôçí éêáíüôçôá íá ÷ñçóéìïðïéÞóåé äéêü ôïõ åóùôåñéêü NAT, ÷ùñßò íá áðáéôïýíôáé ïé éêáíüôçôåò áíáêáôåýèõíóçò ôïõ ðõñÞíá. Ìðïñåßôå íá åíåñãïðïéÞóåôå áõôÞ ôç ëåéôïõñãßá ìå ôçí áêüëïõèç ãñáììÞ óôï /etc/ppp/ppp.conf: nat enable yes ÅíáëëáêôéêÜ, ôï NAT ôïõ PPP ìðïñåß íá åíåñãïðïéçèåß ìå ôçí åðéëïãÞ -nat óôçí ãñáììÞ åíôïëþí. Ìðïñåßôå áêüìá íá âÜëåôå ôçí åðéëïãÞ ppp_nat óôï áñ÷åßï /etc/rc.conf. Ç åðéëïãÞ áõôÞ åßíáé åíåñãïðïéçìÝíç áðü ðñïåðéëïãÞ. Áí ÷ñçóéìïðïéÞóåôå áõôü ôï ÷áñáêôçñéóôéêü, ìÜëëïí èá âñåßôå ÷ñÞóéìåò êáé ôéò ðáñáêÜôù åðéëïãÝò ãéá ôï /etc/ppp/ppp.conf, ìå ôéò ïðïßåò åíåñãïðïéåßôáé ç ðñïþèçóç åéóåñ÷üìåíùí óõíäÝóåùí: nat port tcp 10.0.0.2:ftp ftp nat port tcp 10.0.0.2:http http Þ áí äåí åìðéóôåýåóôå êáèüëïõ ôï åîùôåñéêü äßêôõï: nat deny_incoming yes ÔåëéêÝò Ñõèìßóåéò ÓõóôÞìáôïò PPPconfiguration ¸÷åôå ðëÝïí ñõèìßóåé ôï ppp, áëëÜ õðÜñ÷ïõí ìåñéêÜ áêüìá ðñÜãìáôá ðïõ ðñÝðåé íá êÜíåôå ðñéí íá åßíáé Ýôïéìï ãéá ëåéôïõñãßá. ¼ëá ðåñéëáìâÜíïõí ôçí åðåîåñãáóßá ôïõ áñ÷åßïõ /etc/rc.conf. Îåêéíþíôáò áðü ôçí áñ÷Þ ôïõ áñ÷åßïõ áõôïý, âåâáéùèåßôå üôé åßíáé ïñéóìÝíç ç ãñáììÞ hostname=, ð.÷.: hostname="foo.example.com" Áí ï ISP óáò ðáñÝ÷åé óôáôéêÞ IP äéåýèõíóç êáé üíïìá, åßíáé ìÜëëïí êáëýôåñï íá ÷ñçóéìïðïéÞóåôå áõôü ôï üíïìá ùò üíïìá ãéá ôï ìç÷Üíçìá óáò. ØÜîôå ãéá ôç ìåôáâëçôÞ network_interfaces. Áí èÝëåôå íá ñõèìßóåôå ôï óýóôçìá óáò íá êáëåß ôïí ISP óáò êáôÜ áðáßôçóç, âåâáéùèåßôå üôé õðÜñ÷åé óôç ëßóôá ç óõóêåõÞ tun0, äéáöïñåôéêÜ áöáéñÝóôå ôçí. network_interfaces="lo0 tun0" ifconfig_tun0= Ç ìåôáâëçôÞ ifconfig_tun0 èá ðñÝðåé íá åßíáé Üäåéá, êáé èá ðñÝðåé íá äçìéïõñãçèåß Ýíá áñ÷åßï ìå üíïìá /etc/start_if.tun0. Ôï áñ÷åßï áõôü èá ðñÝðåé íá ðåñéÝ÷åé ôçí ðáñáêÜôù ãñáììÞ: ppp -auto mysystem Ôï script áõôü åêôåëåßôáé êáôÜ ôç äéÜñêåéá ñýèìéóçò ôïõ äéêôýïõ, îåêéíþíôáò Ýôóé ôï äáßìïíá ppp óå êáôÜóôáóç áõôüìáôçò ëåéôïõñãßáò. Áí äéáèÝôåôå êÜðïéï ôïðéêü äßêôõï (LAN) ãéá ôï ïðïßï ôï ìç÷Üíçìá áõôü Ý÷åé ôï ñüëï ôçò ðýëçò, ßóùò íá èÝëåôå åðßóçò íá ÷ñçóéìïðïéÞóåôå ôçí åðéëïãÞ . Äåßôå ôç óåëßäá manual ãéá ðåñéóóüôåñåò ëåðôïìÝñåéåò. Âåâáéùèåßôå üôé ç ìåôáâëçôÞ ãéá ôï ðñüãñáììá router Ý÷åé ôåèåß óôï NO ìÝóù ôçò åðüìåíçò ãñáììÞò óôï /etc/rc.conf: router_enable="NO" routed Åßíáé óçìáíôéêü íá ìçí îåêéíÞóåé ï äáßìïíáò routed, ï ïðïßïò óõíÞèùò äéáãñÜöåé ôéò ðñïåðéëåãìÝíåò ôéìÝò ôïõ ðßíáêá äñïìïëüãçóçò ðïõ äçìéïõñãïýíôáé áðü ôï ppp. Åßíáé ìÜëëïí êáëÞ éäÝá íá åîáóöáëßóåôå üôé ç ãñáììÞ sendmail_flags äåí ðåñéëáìâÜíåé ôçí åðéëïãÞ , äéáöïñåôéêÜ ôï sendmail èá ðñïóðáèåß êÜèå ôüóï íá êÜíåé áíáæÞôçóç ôïõ äéêôýïõ, ìå ðéèáíü áðïôÝëåóìá ôï ìç÷Üíçìá óáò íá åêôåëåß ôçëåöùíéêÞ óýíäåóç (dial out). Ìðïñåßôå íá äïêéìÜóåôå: sendmail_flags="-bd" sendmail Ôï ìåéïíÝêôçìá ôïõ ðáñáðÜíù, åßíáé üôé ðñÝðåé íá åîáíáãêÜóåôå ôï sendmail íá åðáíåîåôÜóåé ôçí ïõñÜ ôùí ìçíõìÜôùí, êÜèå öïñÜ ðïõ áðïêáèßóôáôáé ç óýíäåóç ppp, ãñÜöïíôáò: &prompt.root; /usr/sbin/sendmail -q ºóùò èÝëåôå íá ÷ñçóéìïðïéÞóåôå ôçí åíôïëÞ !bg óôï ppp.linkup ãéá íá ãßíåôáé ôï ðáñáðÜíù áõôüìáôá: 1 provider: 2 delete ALL 3 add 0 0 HISADDR 4 !bg sendmail -bd -q30m SMTP Áí áõôü äåí óáò áñÝóåé, åßíáé äõíáôüí íá ñõèìßóåôå Ýíá dfilter ôï ïðïßï íá áðïêüðôåé ôçí êßíçóç SMTP. Äåßôå ôá õðïäåßãìáôá ãéá ðåñéóóüôåñåò ëåðôïìÝñåéåò. Ôï ìüíï ðïõ ìÝíåé åßíáé íá åðáíåêêéíÞóåôå ôï ìç÷Üíçìá. ÌåôÜ ôçí åðáíåêêßíçóç, ìðïñåßôå åßôå íá ãñÜøåôå: &prompt.root; ppp êáé Ýðåéôá dial provider ãéá íá îåêéíÞóåôå ôç óõíåäñßá PPP, Þ áí èÝëåôå ôï ppp íá áðïêáèéóôÜ ôéò óõíåäñßåò áõôüìáôá êÜèå öïñÜ ðïõ õðÜñ÷åé êßíçóç ðñïò ôï åîùôåñéêü äßêôõï (êáé äåí Ý÷åôå äçìéïõñãÞóåé ôï script start_if.tun0) ìðïñåßôå íá ãñÜøåôå: &prompt.root; ppp -auto provider Ðåñßëçøç Ãéá íá áíáêåöáëáéþóïõìå, ôá ðáñáêÜôù âÞìáôá åßíáé áðáñáßôçôá üôáí åãêáèéóôÜôå ôï ppp ãéá ðñþôç öïñÜ: Áðü ôç ìåñéÜ ôïõ ìç÷áíÞìáôïò-ðåëÜôç: Âåâáéùèåßôå üôé ðåñéëáìâÜíåôáé óôïí ðõñÞíá óáò ç óõóêåõÞ tun. Âåâáéùèåßôå üôé õðÜñ÷åé ôï áñ÷åßï ôçò óõóêåõÞò tunN óôïí êáôÜëïãï /dev. ÄçìéïõñãÞóôå ìéá êáôá÷þñéóç óôï áñ÷åßï /etc/ppp/ppp.conf. Ôï ðáñÜäåéãìá ãéá ôï pmdemand èá ðñÝðåé íá åßíáé åðáñêÝò ãéá ôïõò ðåñéóóüôåñïõò ISPs. Áí Ý÷åôå äõíáìéêÞ äéåýèõíóç IP, äçìéïõñãÞóôå ìéá êáôá÷þñéóç óôï /etc/ppp/ppp.linkup. Åíçìåñþóôå ôï áñ÷åßï /etc/rc.conf. ÄçìéïõñãÞóôå ôï script start_if.tun0 áí ÷ñåéÜæåóôå êëÞóç êáôÜ áðáßôçóç. Áðü ôç ìåñéÜ ôïõ åîõðçñåôçôÞ: Âåâáéùèåßôå üôé ðåñéëáìâÜíåôáé óôïí ðõñÞíá óáò ç óõóêåõÞ tun. Âåâáéùèåßôå üôé õðÜñ÷åé ôï áñ÷åßï ôçò óõóêåõÞò tunN óôïí êáôÜëïãï /dev. ÄçìéïõñãÞóôå ìéá êáôá÷þñéóç óôï /etc/passwd (÷ñçóéìïðïéþíôáò ôï ðñüãñáììá &man.vipw.8;). ÄçìéïõñãÞóôå Ýíá áñ÷åßï profile óôïí ðñïóùðéêü êáôÜëïãï ôïõ ÷ñÞóôç, ôï ïðïßï íá åêôåëåß ôçí åíôïëÞ ppp -direct direct-server Þ êÜðïéá áíôßóôïé÷ç. ÄçìéïõñãÞóôå ìéá êáôá÷þñéóç óôï /etc/ppp/ppp.conf. Ôï ðáñÜäåéãìá ãéá ôï direct-server èá ðñÝðåé íá åßíáé åðáñêÝò. ÄçìéïõñãÞóôå ìéá êáôá÷þñéóç óôï /etc/ppp/ppp.linkup. Åíçìåñþóôå ôï áñ÷åßï /etc/rc.conf. Gennady B. Sorokopud ÊÜðïéá ôìÞìáôá ðñïÝñ÷ïíôáé áðü áñ÷éêÞ óõíåéóöïñÜ ôùí Robert Huff ×ñçóéìïðïéþíôáò ôï PPP ôïõ ÐõñÞíá Ç åíüôçôá áõôÞ åßíáé Ýãêõñç êáé ìðïñåß íá åöáñìïóôåß ìüíï óå óõóôÞìáôá &os; 7.X. Ñõèìßæïíôáò ôï PPP ôïõ ÐõñÞíá PPP kernel PPP Ðñéí îåêéíÞóåôå íá ñõèìßæåôå ôï PPP óôï ìç÷Üíçìá óáò, âåâáéùèåßôå üôé ôï pppd âñßóêåôáé óôïí êáôÜëïãï /usr/sbin êáé üôé õðÜñ÷åé ï êáôÜëïãïò /etc/ppp. Ôï pppd Ý÷åé äýï êáôáóôÜóåéò ëåéôïõñãßáò: Ùò ðåëÜôçò (client) — üôáí èÝëåôå íá óõíäÝóåôå ôï ìç÷Üíçìá óáò ìå ôïí Ýîù êüóìï ìÝóù óåéñéáêÞò óýíäåóçò óýíäåóçò Þ ãñáììÞò modem. - - PPP - server - - - Ùò åîõðçñåôçôÞò (server) — ôï ìç÷Üíçìá + Ùò åîõðçñåôçôÞò (server)PPPserver — ôï ìç÷Üíçìá óáò åßíáé óõíäåìÝíï óôï äßêôõï êáé ÷ñçóéìïðïéåßôáé ãéá íá óõíäÝóåé Üëëïõò õðïëïãéóôÝò, ÷ñçóéìïðïéþíôáò ôï PPP. Êáé óôéò äýï ðåñéðôþóåéò èá ÷ñåéáóôåß íá äçìéïõñãÞóåôå Ýíá áñ÷åßï åðéëïãþí (/etc/ppp/options Þ ~/.ppprc áí óôï ìç÷Üíçìá óáò õðÜñ÷ïõí ðåñéóóüôåñïé áðü Ýíáò ÷ñÞóôåò ðïõ ÷ñçóéìïðïéïýí ôï PPP). Èá ÷ñåéáóôåßôå åðßóçò êáé êÜðïéï ëïãéóìéêü ãéá ÷ñÞóç ìå modem êáé óåéñéáêÝò óõíäÝóåéò (êáôÜ ðñïôßìçóç ôï comms/kermit), þóôå íá ìðïñåßôå íá êáëÝóåôå êáé íá áðïêáôáóôÞóåôå ôç óýíäåóç ìå ôïí áðïìáêñõóìÝíï åîõðçñåôçôÞ. Trev Roydhouse ÂáóéóìÝíï óå ðëçñïöïñßåò ðïõ ðáñåß÷å ï ×ñçóéìïðïéþíôáò ôï <command>pppd</command> ùò ÐåëÜôçò PPP client Cisco Ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôï /etc/ppp/options ðïõ öáßíåôáé ðáñáêÜôù, ãéá íá óõíäåèåßôå óå ìéá ãñáììÞ PPP åíüò åîõðçñåôçôÞ ôåñìáôéêþí (terminal server) ôçò Cisco. crtscts # enable hardware flow control modem # modem control line noipdefault # remote PPP server must supply your IP address # if the remote host does not send your IP during IPCP # negotiation, remove this option passive # wait for LCP packets domain ppp.foo.com # put your domain name here :remote_ip # put the IP of remote PPP host here # it will be used to route packets via PPP link # if you didn't specified the noipdefault option # change this line to local_ip:remote_ip defaultroute # put this if you want that PPP server will be your # default router Ãéá íá óõíäåèåßôå: Kermit modem ÊáëÝóôå ôïí áðïìáêñõóìÝíï åîõðçñåôçôÞ ÷ñçóéìïðïéþíôáò ôï Kermit (Þ êÜðïéï Üëëï ðñüãñáììá ãéá modem) êáé åéóÜãåôå ôï üíïìá ÷ñÞóôç êáé ôïí êùäéêü óáò (Þ üôé Üëëï ÷ñåéÜæåôáé ãéá íá åíåñãïðïéÞóåôå ôï PPP óôïí áðïìáêñõóìÝíï õðïëïãéóôÞ). Âãåßôå áðü ôï Kermit (÷ùñßò íá êëåßóåôå ôç ãñáììÞ). ÐëçêôñïëïãÞóôå ôá ðáñáêÜôù: &prompt.root; /usr/sbin/pppd /dev/tty01 19200 Âåâáéùèåßôå üôé ÷ñçóéìïðïéåßôå ôï óùóôü üíïìá óõóêåõÞò êáé ôçí êáôÜëëçëç ôá÷ýôçôá. Ï õðïëïãéóôÞò óáò åßíáé ôþñá óõíäåìÝíïò ìÝóù PPP. Áí ç óýíäåóç áðïôý÷åé, ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôçí åðéëïãÞ óôï áñ÷åßï /etc/ppp/options êáé íá åëÝãîåôå ôá ìçíýìáôá óôçí êïíóüëá ãéá íá áíé÷íåýóåôå ôï ðñüâëçìá. Ôï ðáñáêÜôù script /etc/ppp/pppup áõôïìáôïðïéåß êáé ôá 3 óôÜäéá: #!/bin/sh pgrep -l pppd pid=`pgrep pppd` if [ "X${pid}" != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill ${pid} fi pgrep -l kermit pid=`pgrep kermit` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi ifconfig ppp0 down ifconfig ppp0 delete kermit -y /etc/ppp/kermit.dial pppd /dev/tty01 19200 Kermit Ôï áñ÷åßï /etc/ppp/kermit.dial åßíáé Ýíá script ãéá ôï Kermit ôï ïðïßï êÜíåé ôçí êëÞóç êáé ôçí ðéóôïðïßçóç ôïõ ÷ñÞóôç óôïí áðïìáêñõóìÝíï õðïëïãéóôÞ (óôï ôÝëïò áõôïý ôïõ åããñÜöïõ, èá âñåßôå Ýíá ðáñÜäåéãìá ãéá Ýíá ôÝôïéï script). ×ñçóéìïðïéÞóôå ôï ðáñáêÜôù script /etc/ppp/pppdown ãéá íá áðïóõíäÝóåôå ôçí ãñáììÞ PPP: #!/bin/sh pid=`pgrep pppd` if [ X${pid} != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill -TERM ${pid} fi pgrep -l kermit pid=`pgrep kermit` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi /sbin/ifconfig ppp0 down /sbin/ifconfig ppp0 delete kermit -y /etc/ppp/kermit.hup /etc/ppp/ppptest ÅëÝãîôå áí åêôåëåßôáé áêüìá ôï pppd, åêôåëþíôáò ôï /usr/etc/ppp/ppptest, ôï ïðïßï èá ìïéÜæåé ìå ôï ðáñáêÜôù: #!/bin/sh pid=`pgrep pppd` if [ X${pid} != "X" ] ; then echo 'pppd running: PID=' ${pid-NONE} else echo 'No pppd running.' fi set -x netstat -n -I ppp0 ifconfig ppp0 Ãéá íá êëåßóåôå ôçí ãñáììÞ, åêôåëÝóôå ôï /etc/ppp/kermit.hup, ôï ïðïßï èá ðñÝðåé íá ðåñéÝ÷åé: set line /dev/tty01 ; put your modem device here set speed 19200 set file type binary set file names literal set win 8 set rec pack 1024 set send pack 1024 set block 3 set term bytesize 8 set command bytesize 8 set flow none pau 1 out +++ inp 5 OK out ATH0\13 echo \13 exit Ìéá åíáëëáêôéêÞ ìÝèïäïò ðïõ ÷ñçóéìïðïéåß ôï chat áíôß ãéá ôï kermit: Ôá ðáñáêÜôù äýï áñ÷åßá åðáñêïýí ãéá ôç äçìéïõñãßá ìéáò óýíäåóçò pppd. /etc/ppp/options: /dev/cuad1 115200 crtscts # enable hardware flow control modem # modem control line connect "/usr/bin/chat -f /etc/ppp/login.chat.script" noipdefault # remote PPP serve must supply your IP address # if the remote host doesn't send your IP during # IPCP negotiation, remove this option passive # wait for LCP packets domain your.domain # put your domain name here : # put the IP of remote PPP host here # it will be used to route packets via PPP link # if you didn't specified the noipdefault option # change this line to local_ip:remote_ip defaultroute # put this if you want that PPP server will be # your default router /etc/ppp/login.chat.script: Ôï ðáñáêÜôù èá ðñÝðåé íá ãñáöåß óå ìéá ìüíï ãñáììÞ. ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDTphone.number CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: login-id TIMEOUT 5 sword: password Ìüëéò ôñïðïðïéÞóåôå êáé åãêáôáóôÞóåôå óùóôÜ ôá ðáñáðÜíù áñ÷åßá, ôï ìüíï ðïõ ÷ñåéÜæåôáé íá êÜíåôå åßíáé íá åêôåëÝóåôå ôçí åíôïëÞ pppd, ìå ôïí ôñüðï ðïõ öáßíåôáé ðáñáêÜôù: &prompt.root; pppd ×ñçóéìïðïéþíôáò ôï <command>pppd</command> ùò ÅîõðçñåôçôÞ Ôï /etc/ppp/options èá ðñÝðåé íá ðåñéÝ÷åé êÜôé áíôßóôïé÷ï ìå ôï ðáñáêÜôù: crtscts # Hardware flow control netmask 255.255.255.0 # netmask (not required) 192.114.208.20:192.114.208.165 # IP's of local and remote hosts # local ip must be different from one # you assigned to the Ethernet (or other) # interface on your machine. # remote IP is IP address that will be # assigned to the remote machine domain ppp.foo.com # your domain passive # wait for LCP modem # modem line Ôï script /etc/ppp/pppserv ðïõ öáßíåôáé ðáñáêÜôù, èá ðåé óôï pppd íá ëåéôïõñãÞóåé ùò åîõðçñåôçôÞò: #!/bin/sh pgrep -l pppd pid=`pgrep pppd` if [ "X${pid}" != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill ${pid} fi pgrep -l kermit pid=`pgrep kermit` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi # reset ppp interface ifconfig ppp0 down ifconfig ppp0 delete # enable autoanswer mode kermit -y /etc/ppp/kermit.ans # run ppp pppd /dev/tty01 19200 ×ñçóéìïðïéÞóôå ôï ðáñáêÜôù script /etc/ppp/pppservdown ãéá íá óôáìáôÞóåôå ôïí åîõðçñåôçôÞ: #!/bin/sh pgrep -l pppd pid=`pgrep pppd` if [ "X${pid}" != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill ${pid} fi pgrep -l kermit pid=`pgrep kermit` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi ifconfig ppp0 down ifconfig ppp0 delete kermit -y /etc/ppp/kermit.noans Ôï ðáñáêÜôù script ãéá ôï Kermit (/etc/ppp/kermit.ans) ìðïñåß íá åíåñãïðïéåß êáé íá áðåíåñãïðïéåß ôçí ëåéôïõñãßá áõôüìáôçò áðÜíôçóçò óôï modem óáò. set line /dev/tty01 set speed 19200 set file type binary set file names literal set win 8 set rec pack 1024 set send pack 1024 set block 3 set term bytesize 8 set command bytesize 8 set flow none pau 1 out +++ inp 5 OK out ATH0\13 inp 5 OK echo \13 out ATS0=1\13 ; change this to out ATS0=0\13 if you want to disable ; autoanswer mode inp 5 OK echo \13 exit Óôïí áðïìáêñõóìÝíï õðïëïãéóôÞ, ÷ñçóéìïðïéåßôáé ôï script /etc/ppp/kermit.dial ãéá êëÞóç êáé ðéóôïðïßçóç ôïõ ÷ñÞóôç. Èá ðñÝðåé íá ôï ôñïðïðïéÞóåôå óýìöùíá ìå ôéò áíÜãêåò óáò. ÂÜëôå ôï üíïìá ÷ñÞóôç êáé ôïí êùäéêü óáò óå áõôü ôï script. Èá ÷ñåéáóôåß åðßóçò íá áëëÜîåôå ôçí ãñáììÞ ãéá ôçí åßóïäï (input) áíÜëïãá ìå ôéò áðáíôÞóåéò ðïõ äßíåé ôï modem óáò êáé ï áðïìáêñõóìÝíïò õðïëïãéóôÞò. ; ; put the com line attached to the modem here: ; set line /dev/tty01 ; ; put the modem speed here: ; set speed 19200 set file type binary ; full 8 bit file xfer set file names literal set win 8 set rec pack 1024 set send pack 1024 set block 3 set term bytesize 8 set command bytesize 8 set flow none set modem hayes set dial hangup off set carrier auto ; Then SET CARRIER if necessary, set dial display on ; Then SET DIAL if necessary, set input echo on set input timeout proceed set input case ignore def \%x 0 ; login prompt counter goto slhup :slcmd ; put the modem in command mode echo Put the modem in command mode. clear ; Clear unread characters from input buffer pause 1 output +++ ; hayes escape sequence input 1 OK\13\10 ; wait for OK if success goto slhup output \13 pause 1 output at\13 input 1 OK\13\10 if fail goto slcmd ; if modem doesn't answer OK, try again :slhup ; hang up the phone clear ; Clear unread characters from input buffer pause 1 echo Hanging up the phone. output ath0\13 ; hayes command for on hook input 2 OK\13\10 if fail goto slcmd ; if no OK answer, put modem in command mode :sldial ; dial the number pause 1 echo Dialing. output atdt9,550311\13\10 ; put phone number here assign \%x 0 ; zero the time counter :look clear ; Clear unread characters from input buffer increment \%x ; Count the seconds input 1 {CONNECT } if success goto sllogin reinput 1 {NO CARRIER\13\10} if success goto sldial reinput 1 {NO DIALTONE\13\10} if success goto slnodial reinput 1 {\255} if success goto slhup reinput 1 {\127} if success goto slhup if < \%x 60 goto look else goto slhup :sllogin ; login assign \%x 0 ; zero the time counter pause 1 echo Looking for login prompt. :slloop increment \%x ; Count the seconds clear ; Clear unread characters from input buffer output \13 ; ; put your expected login prompt here: ; input 1 {Username: } if success goto sluid reinput 1 {\255} if success goto slhup reinput 1 {\127} if success goto slhup if < \%x 10 goto slloop ; try 10 times to get a login prompt else goto slhup ; hang up and start again if 10 failures :sluid ; ; put your userid here: ; output ppp-login\13 input 1 {Password: } ; ; put your password here: ; output ppp-password\13 input 1 {Entering SLIP mode.} echo quit :slnodial echo \7No dialtone. Check the telephone line!\7 exit 1 ; local variables: ; mode: csh ; comment-start: "; " ; comment-start-skip: "; " ; end: Tom Rhodes ÓõíåéóöïñÜ ôïõ Áíôéìåôþðéóç ÐñïâëçìÜôùí óå ÓõíäÝóåéò <acronym>PPP</acronym> PPP troubleshooting Áðü ôï &os; 8.0 êáé ìåôÜ, ôï ðñüãñáììá ïäÞãçóçò &man.sio.4; áíôéêáôáóôÜèçêå áðü ôï &man.uart.4;. Ôá ïíüìáôá óõóêåõþí ôùí óåéñéáêþí èõñþí Ý÷ïõí áëëÜîåé áðü /dev/cuadN óå /dev/cuauN êáé áðü /dev/ttydN óå /dev/ttyuN. Ïé ÷ñÞóôåò ôïõ &os; 7.X èá ðñÝðåé íá ðñïóáñìüóïõí ôéò ðáñáêÜôù ïäçãßåò óýìöùíá ìå áõôÝò ôéò áëëáãÝò. Ç åíüôçôá áõôÞ êáëýðôåé ìåñéêÜ áðü ôá ðñïâëÞìáôá ðïõ ìðïñåß íá ðáñïõóéáóôïýí üôáí ãßíåôáé ÷ñÞóç ôïõ PPP ìÝóù óýíäåóçò modem. Ãéá ðáñÜäåéãìá, èá ðñÝðåé íá îÝñåôå ìå áêñßâåéá ôá ìçíýìáôá åéóüäïõ ðïõ èá åìöáíßóåé ôï óýóôçìá ôï ïðïßï êáëåßôå. Ìåñéêïß ISP äßíïõí ôçí ðñïôñïðÞ ssword, åíþ Üëëïé äßíïõí ôçí password. Áí äåí Ý÷åôå ãñÜøåé óùóôÜ ôï script ãéá ôï ppp, ç áðüðåéñá åéóüäïõ èá áðïôý÷åé. Ï ðéï óõíçèéóìÝíïò ôñüðïò íá åêóöáëìáôþóåôå ìéá óýíäåóç ppp, åßíáé íá óõíäåèåßôå ÷åéñïêßíçôá. Ïé ðëçñïöïñßåò ðïõ åìöáíßæïíôáé ðáñáêÜôù, èá óáò ïäçãÞóïõí âÞìá ðñïò âÞìá óôç ÷åéñïêßíçôç áðïêáôÜóôáóç ôçò óýíäåóçò. ÅëÝãîôå ôá Áñ÷åßá Óõóêåõþí Áí ÷ñçóéìïðïéåßôå ðñïóáñìïóìÝíï ðõñÞíá, âåâáéùèåßôå üôé Ý÷åôå ðåñéëÜâåé ôçí ðáñáêÜôù ãñáììÞ óôï áñ÷åßï ñõèìßóåùí ôïõ ðõñÞíá óáò: device uart Áí ÷ñçóéìïðïéåßôå ôïí ðõñÞíá GENERIC, äåí ÷ñåéÜæåôáé íá êÜíåôå êÜðïéá áëëáãÞ, êáèþò ç óõóêåýç uart ðåñéëáìâÜíåôáé Þäç óå áõôüí. Áðëþò åëÝãîôå ôá ìçíýìáôá ôçò dmesg ãéá ôçí óõóêåõÞ modem, ÷ñçóéìïðïéþíôáò ôçí ðáñáêÜôù åíôïëÞ: &prompt.root; dmesg | grep uart Èá ðñÝðåé íá äåßôå êÜðïéá Ýîïäï ó÷åôéêÞ ìå ôéò óõóêåõÝò uart. Ðñüêåéôáé ãéá ôéò èýñåò COM ðïõ ÷ñåéáæüìáóôå. Áí ôï modem óáò ëåéôïõñãåß ùò ôõðïðïéçìÝíç óåéñéáêÞ èýñá, èá ðñÝðåé íá ôï äåßôå íá áíáöÝñåôáé ùò uart1, Þ COM2. Áí óõìâáßíåé áõôü, äåí ÷ñåéÜæåôáé íá åðáíáìåôáãëùôôßóåôå ôïí ðõñÞíá óáò. Áí ç óåéñéáêÞ èýñá ðïõ áíôéóôïé÷åß óôï modem óáò åßíáé ç uart1 Þ COM2 óôï DOS, ç áíôßóôïé÷ç óõóêåõÞ modem èá åßíáé ç /dev/cuau1. ×åéñïêßíçôç Óýíäåóç Ç ÷åéñïêßíçôç óýíäåóç óôï Internet ìå ÷ñÞóç ôçò ppp, åßíáé Ýíáò ãñÞãïñïò êáé åýêïëïò ôñüðïò íá åíôïðßóåôå ôõ÷üí ðñïâëÞìáôá óýíäåóçò, Þ áðëþò íá ðÜñåôå ðëçñïöïñßåò ó÷åôéêÜ ìå ôï ðùò ï ISP óáò áíôéìåôùðßæåé ôéò óõíäÝóåéò ðåëáôþí ppp. Èá îåêéíÞóïõìå ôçí åöáñìïãÞ PPP áðü ôçí ãñáììÞ åíôïëþí. Óçìåéþóôå üôé óå üëá ìáò ôá ðáñáäåßãìáôá, èá ÷ñçóéìïðïéïýìå ôï example ùò ôï üíïìá ôïõ õðïëïãéóôÞ ðïõ åêôåëåß ôï PPP. Ìðïñåßôå íá îåêéíÞóåôå ôï ppp, ãñÜöïíôáò áðëþò ppp: &prompt.root; ppp ¸÷ïõìå ôþñá îåêéíÞóåé ôï ppp. ppp ON example> set device /dev/cuau1 ÈÝôïõìå ôç óõóêåõÞ modem. Óôï ðáñÜäåéãìá ìáò, åßíáé ç cuau1. ppp ON example> set speed 115200 ÈÝôïõìå ôçí ôá÷ýôçôá óýíäåóçò, óå áõôÞ ôçí ðåñßðôùóç ÷ñçóéìïðïéïýìå 115,200 kbps. ppp ON example> enable dns ËÝìå óôï ppp íá ñõèìßóåé ôïí resolver êáé ðñïóèÝôïõìå ôéò êáôÜëëçëåò ãñáììÝò ãéá ôï äéáêïìéóôÞ ïíïìÜôùí óôï /etc/resolv.conf. Áí ôï ppp äåí ìðïñåß íá êáèïñßóåé ôï üíïìá ôïõ äéáêïìéóôÞ, ìðïñïýìå íá ôï êáèïñßóïõìå ìå ÷åéñïêßíçôï ôñüðï áñãüôåñá. ppp ON example> term ÁëëÜæïõìå óå êáôÜóôáóç terminal þóôå íá ìðïñïýìå íá åëÝãîïõìå ôï modem ÷åéñïêßíçôá. deflink: Entering terminal mode on /dev/cuau1 type '~h' for help at OK atdt123456789 ×ñçóéìïðïéïýìå ôï at ãéá íá áñ÷éêïðïéÞóïõìå ôï modem, êáé Ýðåéôá ÷ñçóéìïðïéïýìå ôï atdt êáé ôïí áñéèìü ôïõ ISP ãéá íá îåêéíÞóïõìå ôç äéáäéêáóßá ôçò êëÞóçò. CONNECT Åäþ Ý÷ïõìå åðéâåâáßùóç ôçò óýíäåóçò. Áí Ý÷ïõìå ðñïâëÞìáôá óýíäåóçò ôá ïðïßá äåí ó÷åôßæïíôáé ìå ôï õëéêü ìáò, åäþ åßíáé ôï óçìåßï ðïõ ðñÝðåé íá ðñïóðáèÞóïõìå íá ôá åðéëýóïõìå. ISP Login:myusername Ç ðñïôñïðÞ áõôÞ åßíáé ãéá íá äþóïõìå ôï üíïìá ÷ñÞóôç. ×ñçóéìïðïéÞóôå ôï üíïìá ÷ñÞóôç ðïõ óáò Ý÷åé äïèåß áðü ôïí ISP óáò. ISP Pass:mypassword Ç ðñïôñïðÞ áõôÞ åßíáé ãéá ôïí êùäéêü ðñüóâáóçò. ÁðáíôÞóôå ìå ôïí êùäéêü ðïõ óáò Ý÷åé äïèåß áðü ôïí ISP óáò. Ï êùäéêüò áõôüò äåí èá åìöáíéóôåß óôçí ïèüíç óáò, üðùò áêñéâþò óõìâáßíåé êáé ìå ôïí êùäéêü óáò üôáí ôïí ãñÜöåôå óôçí ðñïôñïðÞ åéóüäïõ ôïõ &os; óõóôÞìáôïò óáò. Shell or PPP:ppp ÁíÜëïãá ìå ôïí ISP óáò, ìðïñåß íá ìçí äåßôå êáé êáèüëïõ ôçí ðáñáðÜíù ðñïôñïðÞ. Óôçí ðáñáðÜíù ðåñßðôùóç ìáò ñùôÜåé áí åðéèõìïýìå íá åêôåëÝóïõìå êÜðïéï êÝëõöïò (shell) óôï ìç÷Üíçìá ôïõ ðáñï÷Ýá, Þ áí èÝëïõìå íá åêêéíÞóïõìå ôï ppp. Óôï ðáñÜäåéãìá ìáò åðéëÝîáìå íá ÷ñçóéìïðïéÞóïõìå ppp êáèþò èÝëïõìå íá óõíäåèïýìå óôï Internet. Ppp ON example> ÐáñáôçñÞóôå üôé óôï ðáñÜäåéãìá ôï ðñþôï åßíáé êåöáëáßï. Áõôü äåß÷íåé üôé Ý÷ïõìå óõíäåèåß åðéôõ÷þò ìå ôïí ISP. PPp ON example> ¸÷ïõìå ðéóôïðïéçèåß ìå åðéôõ÷ßá áðü ôïí ISP ìáò, êáé ðåñéìÝíïõìå íá ìáò áðïäïèåß äéåýèõíóç IP. PPP ON example> ¸÷åé ðëÝïí êáèïñéóôåß äéåýèõíóç IP, êáé Ý÷ïõìå ïëïêëçñþóåé ôç óýíäåóç ìå åðéôõ÷ßá. PPP ON example>add default HISADDR Åäþ ðñïóèÝôïõìå ôçí ðñïåðéëåãìÝíç äéáäñïìÞ (default route). Ôï âÞìá áõôü åßíáé áðáñáßôçôï ðñéí ìðïñÝóïõìå íá åðéêïéíùíÞóïõìå ìå ôïí Ýîù êüóìï, êáèþò ôç äåäïìÝíç óôéãìÞ ç ìüíç óýíäåóç ðïõ Ý÷ïõìå åßíáé ìå Ýíá õðïëïãéóôÞ áðü ôçí Üëëç ìåñéÜ ôçò ãñáììÞò. Áí ôï ðáñáðÜíù áðïôý÷åé åðåéäÞ õðÜñ÷ïõí Þäç êáèïñéóìÝíåò äéáäñïìÝò, ìðïñåßôå íá âÜëåôå Ýíá èáõìáóôéêü ! ìðñïóôÜ áðü ôï . ÅíáëëáêôéêÜ, ìðïñåßôå íá êÜíåôå áõôÞ ôç ñýèìéóç ðñéí åðé÷åéñÞóåôå ôç óýíäåóç, êáé èá ãßíåé áõôüìáôá äéáðñáãìÜôåõóç ôçò íÝáò äéáäñïìÞò. Áí üëá ðÞãáí êáëÜ, èá ðñÝðåé ôþñá íá Ý÷åôå åíåñãÞ óýíäåóç ìå ôï Internet, ôçí ïðïßá ìðïñåßôå íá ìåôáêéíÞóåôå óôï ðáñáóêÞíéï ÷ñçóéìïðïéþíôáò ôï óõíäõáóìü ðëÞêôñùí CTRL z. Áí ðáñáôçñÞóåôå ôï PPP íá ãßíåôáé îáíÜ ppp, ç óýíäåóç Ý÷åé äéáêïðåß. Ìå ôïí ôñüðï áõôü ìðïñåßôå íá ðáñáêïëïõèåßôå ôçí êáôÜóôáóç ôçò óýíäåóç óáò. Ôá êåöáëáßá P äåß÷íïõí üôé õðÜñ÷åé óýíäåóç ìå ôïí ISP åíþ ôá ìéêñÜ p äåß÷íïõí üôé ãéá êÜðïéï ëüãï ç óýíäåóç Ý÷åé ÷áèåß. Ôï ppp Ý÷åé ìüíï áõôÝò ôéò äýï êáôáóôÜóåéò. Áíôéìåôþðéóç ÐñïâëçìÜôùí Áí Ý÷åôå áðåõèåßáò ãñáììÞ êáé äåí öáßíåôáé íá ìðïñåßôå íá áðïêáôáóôÞóåôå ôç óýíäåóç, áðåíåñãïðïéÞóôå ôïí Ýëåã÷ï ñïÞò ìÝóù õëéêïý (CTS/RTS) ÷ñçóéìïðïéþíôáò ôçí åðéëïãÞ . Ôï ðáñáðÜíù óõìâáßíåé óõíÞèùò áí åßóôå óõíäåìÝíïò óå êÜðïéï åîõðçñåôçôÞ ôåñìáôéêþí ìå äõíáôüôçôá PPP, üðïõ ôï PPP óôáìáôÜåé íá áðïêñßíåôáé üôáí ðñïóðáèåß íá ãñÜøåé äåäïìÝíá óôç óýíäåóç óáò. Óôçí ðåñßðôùóç áõôÞ, óõíÞèùò ðåñéìÝíåé ãéá êÜðïéï óÞìá CTS (Clear To Send) ôï ïðïßï äåí Ýñ÷åôáé ðïôÝ. Áí ùóôüóï ÷ñçóéìïðïéÞóåôå áõôÞ ôçí åðéëïãÞ, èá ðñÝðåé åðßóçò íá ÷ñçóéìïðïéÞóåôå êáé ôçí åðéëïãÞ ç ïðïßá åíäå÷ïìÝíùò áðáéôåßôáé ãéá íá áðïìïíùèåß ôï õëéêü ðïõ åîáñôÜôáé áðü ôç ìåôÜäïóç óõãêåêñéìÝíùí ÷áñáêôÞñùí áðü ôç ìéá Üêñç óôçí Üëëç, óõíÞèùò ìÝóù ôïõ XON/XOFF. Äåßôå ôç óåëßäá manual ôïõ &man.ppp.8; ãéá ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìå áõôÞ ôçí åðéëïãÞ êáé ðùò ìðïñåßôå íá ôçí ÷ñçóéìïðïéÞóåôå. Áí äéáèÝôåôå Ýíá ðáëáéüôåñï modem, ßóùò ÷ñåéáóôåß íá ÷ñçóéìïðïéÞóåôå ôçí åðéëïãÞ . Ç ðñïåðéëåãìÝíç ñýèìéóç åßíáé íá ìçí õðÜñ÷åé éóïôéìßá (parity none), áëëÜ óå ðáëéÜ modems (êáé óå êÜðïéïõò ISP) ÷ñçóéìïðïéåßôáé ãéá Ýëåã÷ï ëáèþí (ç ÷ñÞóç ôçò ðñïêáëåß ùóôüóï ìåãÜëç áýîçóç óôç ìåôáêßíçóç äåäïìÝíùí). ºóùò ÷ñåéáóôåßôå áõôÞ ôçí åðéëïãÞ, áí ï ISP óáò åßíáé ç Compuserve. Ôï PPP ßóùò íá ìçí åðáíÝëèåé óôçí êáôÜóôáóç åíôïëþí, ôï ïðïßï åßíáé óõíÞèùò óöÜëìá äéáðñáãìÜôåõóçò, êáèþò ï ISP ðåñéìÝíåé áðü ôç äéêÞ óáò ìåñéÜ íá îåêéíÞóåé ôç äéáðñáãìÜôåõóç. Óôï óçìåßï áõôü, ç ÷ñÞóç ôçò åíôïëÞò ~p èá åîáíáãêÜóåé ôï ppp íá áñ÷ßóåé íá óôÝëíåé ôéò ðëçñïöïñßåò ó÷åôéêÜ ìå ôç ñýèìéóç. Áí äåí ðÜñåôå ðïôÝ ðñïôñïðÞ åéóüäïõ, ôï ðéèáíüôåñï åßíáé íá ðñÝðåé íá ÷ñçóéìïðïéÞóåôå ðéóôïðïßçóç PAP Þ CHAP áíôß ãéá ôçí ôýðïõ &unix; ðéóôïðïßçóç ðïõ ðåñéãñÜøáìå óôï ðáñáðÜíù ðáñÜäåéãìá. Ãéá íá ÷ñçóéìïðïéÞóåôå PAP Þ CHAP áðëþò ðñïóèÝóôå ôéò ðáñáêÜôù åðéëïãÝò óôçí åöáñìïãÞ PPP ðñéí âñåèåßôå óå êáôÜóôáóç ôåñìáôéêïý: ppp ON example> set authname myusername Èá ðñÝðåé íá áíôéêáôáóôÞóåôå ôï myusername ìå ôï üíïìá ÷ñÞóôç ðïõ óáò Ý÷åé äïèåß áðü ôïí ISP óáò. ppp ON example> set authkey mypassword Èá ðñÝðåé íá áíôéêáôáóôÞóåôå ôï mypassword ìå ôïí êùäéêü ÷ñÞóôç ðïõ óáò Ý÷åé äïèåß áðü ôïí ISP óáò. Áí óõíäÝåóôå êáíïíéêÜ, áëëÜ äåí öáßíåôáé íá ìðïñåßôå íá åðéêïéíùíÞóåôå ìå êáìéÜ äéåýèõíóç, ðñïóðáèÞóôå íá ÷ñçóéìïðïéÞóåôå ôçí åíôïëÞ &man.ping.8; ìå ìéá äéåýèõíóç IP ãéá íá äåßôå áí èá ëÜâåôå áðÜíôçóç. Áí âëÝðåôå áðþëåéá ðáêÝôùí 100%, ôï ðéï ðéèáíü åßíáé üôé äåí Ý÷åôå êáèïñßóåé êÜðïéá ðñïåðéëåãìÝíç äéáäñïìÞ. ÅëÝãîôå îáíÜ üôé Ý÷åôå ñõèìßóåé ôçí åðéëïãÞ êáôÜ ôç äéÜñêåéá ôçò óýíäåóçò. Áí ìðïñåßôå íá åðéêïéíùíÞóåôå ìå ìéá áðïìáêñõóìÝíç äéåýèõíóç IP, ôï ðéèáíüôåñï åßíáé üôé äåí Ý÷åôå âÜëåé ôç äéåýèõíóç êÜðïéïõ äéáêïìéóôÞ ïíïìÜôùí óôï áñ÷åßï /etc/resolv.conf. Ôï áñ÷åßï áõôü èá ðñÝðåé íá ìïéÜæåé ìå ôï ðáñáêÜôù: domain example.com nameserver x.x.x.x nameserver y.y.y.y ¼ðïõ ôá x.x.x.x êáé y.y.y.y èá ðñÝðåé íá áíôéêáôáóôáèïýí ìå ôéò äéåõèýíóåéò IP ôùí äéáêïìéóôþí DNS ôïõ ISP óáò. Åíäå÷ïìÝíùò ïé ðëçñïöïñßåò áõôÝò íá óáò Ý÷ïõí äïèåß êáôÜ ôçí åããñáöÞ óáò óôçí õðçñåóßá. Áí ü÷é, èá ìðïñÝóåôå íá ôéò âñåßôå åýêïëá ìå Ýíá ôçëåöþíçìá óôïí ISP óáò. Ìðïñåßôå åðßóçò íá åíåñãïðïéÞóåôå ôçí êáôáãñáöÞ óõìâÜíôùí ãéá ôçí PPP óýíäåóç óáò, ìÝóù ôïõ &man.syslog.3;. Áðëþò ðñïóèÝóôå: !ppp *.* /var/log/ppp.log óôï /etc/syslog.conf. Ôéò ðåñéóóüôåñåò öïñÝò, áõôÞ ç ëåéôïõñãßá õðÜñ÷åé Þäç. Jim Mock ÓõíåéóöïñÜ (áðü http://node.to/freebsd/how-tos/how-to-freebsd-pppoe.html) ôïõ ×ñçóéìïðïéþíôáò PPP ìÝóù Ethernet (PPPoE) PPP over Ethernet PPPoE PPP, over Ethernet Ç åíüôçôá áõôÞ ðåñéãñÜöåé ðùò íá ñõèìßóåôå ìéá óýíäåóç PPP ìÝóù Ethernet (PPPoE). Ñýèìéóç ôïõ ÐõñÞíá Äåí áðáéôåßôáé ðëÝïí åéäéêÞ ñýèìéóç ôïõ ðõñÞíá ãéá ôç ëåéôïõñãßá PPPoE. Áí ï ðõñÞíáò óáò äåí ðåñéëáìâÜíåé ôçí áðáñáßôçôç õðïóôÞñéîç netgraph, ôï ppp èá ôçí öïñôþóåé áõôüìáôá ùò Üñèñùìá. Ñýèìéóç ôïõ <filename>ppp.conf</filename> ÐáñáêÜôù öáßíåôáé Ýíá õðüäåéãìá áñ÷åßïõ ppp.conf: default: set log Phase tun command # you can add more detailed logging if you wish set ifaddr 10.0.0.1/0 10.0.0.2/0 name_of_service_provider: set device PPPoE:xl1 # replace xl1 with your Ethernet device set authname YOURLOGINNAME set authkey YOURPASSWORD set dial set login add default HISADDR ÅêôÝëåóç ôïõ <application>ppp</application> Ùò ÷ñÞóôçò root, ìðïñåßôå íá åêôåëÝóåôå: &prompt.root; ppp -ddial name_of_service_provider Åêêßíçóç ôïõ <application>ppp</application> êáôÜ ôçí Åêêßíçóç ÐñïóèÝóôå ôéò ðáñáêÜôù ãñáììÝò óôï áñ÷åßï /etc/rc.conf: ppp_enable="YES" ppp_mode="ddial" ppp_nat="YES" # if you want to enable nat for your local network, otherwise NO ppp_profile="name_of_service_provider" ×ñÞóç ìéáò ÅôéêÝôáò Õðçñåóßáò PPPoE ÌåñéêÝò öïñÝò èá ÷ñåéáóôåß íá ÷ñçóéìïðïéÞóåôå ìéá åôéêÝôá õðçñåóßáò (service tag) ãéá ôçí áðïêáôÜóôáóç ôçò óýíäåóçò óáò. Ïé åôéêÝôåò õðçñåóéþí ÷ñçóéìïðïéïýíôáé ãéá ôïí äéá÷ùñéóìü ìåôáîý äéáöïñåôéêþí åîõðçñåôçôþí PPPoE ðïõ âñßóêïíôáé óôï ßäéï äßêôõï. Ç ôåêìçñßùóç ðïõ óáò Ý÷åé äþóåé ï ISP óáò, èá ðñÝðåé íá Ý÷åé ôéò áðáéôïýìåíåò ðëçñïöïñßåò ãéá ôçí åôéêÝôá õðçñåóßáò ðïõ ÷ñåéÜæåóôå. Áí äåí ìðïñåßôå íá ôçí âñåßôå, ñùôÞóôå ôçí åîõðçñÝôçóç ðåëáôþí ôïõ ISP óáò. Ùò ôåëåõôáßá ëýóç, èá ìðïñïýóáôå íá äïêéìÜóåôå ôçí ìÝèïäï ðïõ óõíßóôáôáé óôï ðñüãñáììá Roaring Penguin PPPoE ôï ïðïßï ìðïñåßôå íá âñåßôå óôçí ÓõëëïãÞ ôùí Ports. Íá Ý÷åôå õðüøç óáò, üôé áõôü ìðïñåß íá áðïðñïãñáììáôßóåé êáé íá á÷ñçóôåýóåé ôï modem óáò, Ýôóé óêåöôåßôå ôï êáëÜ ðñéí ôï êÜíåôå. Áðëþò åãêáôáóôÞóôå ôï ðñüãñáììá ðïõ äßíåé ï ðáñï÷Ýáò óáò ìáæß ìå ôï modem. ¸ðåéôá, åéóÝëèåôå óôï ìåíïý System ôïõ ðñïãñÜììáôïò. Åêåß èá ðñÝðåé íá åßíáé ôï üíïìá ôïõ ðñïößë óáò. ÓõíÞèùò ãñÜöåé ISP. Ôï üíïìá ôïõ ðñïößë (åôéêÝôá õðçñåóßáò) èá ÷ñçóéìïðïéçèåß óôçí êáôá÷þñéóç ãéá ôçí ñýèìéóç ôïõ PPPoE óôï áñ÷åßï ppp.conf, ùò ôï ôìÞìá ðïõ äçëþíåé ôïí ðáñï÷Ýá óôçí åíôïëÞ set device (äåßôå ôç óåëßäá manual ôïõ &man.ppp.8; ãéá ðëÞñåéò ëåðôïìÝñåéåò). èá äåß÷íåé üðùò ôï ðáñáêÜôù: set device PPPoE:xl1:ISP Ìçí îå÷Üóåôå íá áëëÜîåôå ôï xl1 ìå ôç óùóôÞ óõóêåõÞ ðïõ áíôéóôïé÷åß óôçí êÜñôá Ethernet ðïõ ÷ñçóéìïðïéåßôå. Ìçí îå÷Üóåôå íá áëëÜîåôå ôï ISP ìå ôï ðñïößë ðïõ âñÞêáôå ðáñáðÜíù. Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò, äåßôå: Öèçíüôåñåò ÅõñõæùíéêÝò ÓõíäÝóåéò ìÝóù &os; óå ÃñáììÞ DSL áðü ôïí Renaud Waldura. Ôï PPPoE óå Modem &tm.3com; <trademark class="registered">HomeConnect</trademark> ADSL Dual Link Áõôü ôï modem äåí áêïëïõèåß ôï RFC 2516 (Ìéá ìÝèïäïò ãéá ìåôÜäïóç PPP ìÝóù Ethernet (PPPoE), ãñáììÝíï áðü ôïõò L. Mamakos, K. Lidl, J. Evarts, D. Carrel, D. Simone, êáé R. Wheeler). Áíôßèåôá, ÷ñçóéìïðïéåß äéáöïñåôéêïýò ôýðïõò êùäéêþí ðáêÝôùí ãéá ôá ðëáßóéá Ethernet. Ðáñáêáëïýìå íá åêöñÜóåôå ôá ðáñÜðïíá óáò óôçí 3Com áí íïìßæåôå üôé èá ðñÝðåé íá óõììïñöùèåß ìå ôéò ðñïäéáãñáöÝò ôïõ PPPoE. Ãéá íá ìðïñåß ôï &os; íá åðéêïéíùíåß ìå áõôÞ ôç óõóêåõÞ, èá ðñÝðåé íá ôåèåß Ýíá êáôÜëëçëï sysctl. Áõôü ìðïñåß íá ãßíåôáé áõôüìáôá êáôÜ ôçí åêêßíçóç, ìå ôçí åíçìÝñùóç ôïõ áñ÷åßïõ /etc/sysctl.conf: net.graph.nonstandard_pppoe=1 Þ ìðïñåß íá ãßíåé Üìåóá ìå ôçí åíôïëÞ: &prompt.root; sysctl net.graph.nonstandard_pppoe=1 Äõóôõ÷þò, åðåéäÞ ðñüêåéôáé ãéá ìéá ñýèìéóç ðïõ åðçñåÜæåé ïëüêëçñï ôï óýóôçìá, äåí åßíáé äõíáôüí íá åðéêïéíùíåßôå ôáõôü÷ñïíá ìå Ýíá êáíïíéêü ðåëÜôç Þ åîõðçñåôçôÞ PPPoE êáé ìå Ýíá ADSL modem &tm.3com; HomeConnect. ×ñçóéìïðïéþíôáò <application>PPP</application> ìÝóù ATM (PPPoA) PPP over ATM PPPoA PPP, over ATM ¹ åíüôçôá ðïõ áêïëïõèåß, ðåñéãñÜöåé ðùò íá ñõèìßóåôå ôï PPP ãéá ëåéôïõñãßá ìÝóù ATM (PPPoA). Ôï PPPoA åßíáé ìéá äçìïöéëÞò åðéëïãÞ óôïõò ðáñï÷åßò õðçñåóéþí DSL óôçí Åõñþðç. ×ñçóéìïðïéþíôáò PPPoA ìå ôï Alcatel &speedtouch; USB Ç õðïóôÞñéîç PPPooA ãéá áõôÞ ôç óõóêåõÞ, ðáñÝ÷åôáé ùò port óôï &os;, êáèþò ôï firmware ôçò óõóêåõÞò äéáíÝìåôáé õðü ôçí Üäåéá Alcatel's license agreement êáé äåí ìðïñåß íá äéáíåìçèåß åëåýèåñá ìå ôï âáóéêü óýóôçìá ôïõ &os;. Ãéá íá åãêáôáóôÞóåôå ôï ëïãéóìéêü, áðëÜ ÷ñçóéìïðïéÞóôå ôçí ÓõëëïãÞ ôùí Ports. ÅãêáôáóôÞóôå ôï port net/pppoa êáé áêïëïõèÞóôå ôéò ïäçãßåò ðïõ ðåñéëáìâÜíïíôáé óå áõôü. ¼ðùò ðïëëÝò óõóêåõÝò USB, ôï Alcatel &speedtouch; ÷ñåéÜæåôáé íá êáôåâÜóåé ôï firmware ôïõ áðü ôïí õðïëïãéóôÞ óôï ïðïßï åßíáé óõíäåìÝíï, ðñïêåéìÝíïõ íá ëåéôïõñãÞóåé óùóôÜ. Ç äéáäéêáóßá áõôÞ ìðïñåß íá áõôïìáôïðïéçèåß óôï &os;, þóôå ç ìåôáöïñÜ íá ãßíåôáé êÜèå öïñÜ ðïõ óõíäÝåôáé ç óõóêåõÞ óôç èýñá USB. Ìðïñåßôå íá ðñïóèÝóåôå ôéò ðáñáêÜôù ðëçñïöïñßåò óôï áñ÷åßï /etc/usbd.conf ãéá íá åíåñãïðïéÞóåôå ôçí áõôüìáôç ìåôáöïñÜ ôïõ firmware. Èá ðñÝðåé íá åðåîåñãáóôåßôå áõôü ôï áñ÷åßï ùò ÷ñÞóôçò root. device "Alcatel SpeedTouch USB" devname "ugen[0-9]+" vendor 0x06b9 product 0x4061 attach "/usr/local/sbin/modem_run -f /usr/local/libdata/mgmt.o" Ãéá íá åíåñãïðïéÞóåôå ôï usbd, ôï äáßìïíá USB, ðñïóèÝóôå ôçí ðáñáêÜôù ãñáììÞ óôï áñ÷åßï /etc/rc.conf: usbd_enable="YES" Ìðïñåß åðßóçò íá ñõèìßóåôå ôï ppp þóôå íá åêôåëåß áõôüìáôá êëÞóç êáôÜ ôçí åêêßíçóç ôïõ óõóôÞìáôïò. Ãéá íá ãßíåé áõôü, ðñïóèÝóôå ôéò ðáñáêÜôù ãñáììÝò óôï /etc/rc.conf. Èá ðñÝðåé êáé ðÜëé íá åêôåëÝóåôå ôç äéáäéêáóßá áõôÞ ùò root. ppp_enable="YES" ppp_mode="ddial" ppp_profile="adsl" Ãéá íá ëåéôïõñãÞóåé óùóôÜ ôï ðáñáðÜíù, èá ðñÝðåé íá Ý÷åôå ÷ñçóéìïðïéÞóåé ôï õðüäåéãìá ôïõ áñ÷åßïõ ppp.conf ôï ïðïßï ðáñÝ÷åôáé ìå ôï port net/pppoa. ×ñçóéìïðïéþíôáò ôï mpd Ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôï mpd ãéá íá óõíäåèåßôå óå Ýíá ðëÞèïò õðçñåóéþí, êáé åéäéêüôåñá õðçñåóßåò PPTP. Ìðïñåßôå íá âñåßôå ôï mpd óôçí ÓõëëïãÞ ôùí Ports, óôï net/mpd. ÐïëëÜ ADSL modem áðáéôïýí ôç äçìéïõñãßá åíüò PPTP ôïýíåë ìåôáîý ôïõ modem êáé ôïõ õðïëïãéóôÞ. ¸íá ôÝôïéï modem åßíáé ôï Alcatel &speedtouch; Home. Ðñþôá ðñÝðåé íá åãêáôáóôÞóåôå ôï port, êáé ìåôÜ ìðïñåßôå íá ñõèìßóåôå ôï mpd þóôå íá êáëýðôåé ôéò áðáéôÞóåéò óáò êáé ôéò ñõèìßóåéò ôïõ ðáñï÷Ýá óáò. Ôï port åãêáèéóôÜ êÜðïéá ðáñáäåßãìáôá áñ÷åßùí ñõèìßóåùí óôïí êáôÜëïãï PREFIX/etc/mpd/. Ôá áñ÷åßá áõôÜ ðåñéÝ÷ïõí áñêåôÜ êáëÞ ôåêìçñßùóç ôùí ñõèìßóåùí. Óçìåéþóôå åäþ, üôé ôï PREFIX åßíáé ï êáôÜëïãïò óôïí ïðïßï åãêáèßóôáíôáé ôá ports, êáé áðü ðñïåðéëïãÞ åßíáé ï /usr/local/. ÌåôÜ ôçí åãêáôÜóôáóç ôïõ port, èá âñåßôå Ýíá ðëÞñç ïäçãü ãéá ôç ñýèìéóç ôïõ mpd óå ìïñöÞ HTML. Ç ôåêìçñßùóç åãêáèßóôáôáé óôïí êáôÜëïãï PREFIX/share/doc/mpd/. ÐáñáêÜôù öáßíåôáé Ýíá õðüäåéãìá ñõèìßóåùí ãéá óýíäåóç óå ìéá õðçñåóßá ADSL ìÝóù ôïõ mpd. Ïé ñõèìßóåéò ÷ùñßæïíôáé óå äýï áñ÷åßá, ðñþôá äåß÷íïõìå ôï mpd.conf: Ôï ðáñáêÜôù õðüäåéãìá mpd.conf ëåéôïõñãåß ìüíï ìå ôçí Ýêäïóç 4.X ôïõ mpd. default: load adsl adsl: new -i ng0 adsl adsl set bundle authname username set bundle password password set bundle disable multilink set link no pap acfcomp protocomp set link disable chap set link accept chap set link keep-alive 30 10 set ipcp no vjcomp set ipcp ranges 0.0.0.0/0 0.0.0.0/0 set iface route default set iface disable on-demand set iface enable proxy-arp set iface idle 0 open Ôï üíïìá ÷ñÞóôç ìå ôï ïðïßï ãßíåôáé ç ðéóôïðïßçóç óôïí ISP óáò. Ï êùäéêüò ìå ôïí ïðïßï ãßíåôáé ç ðéóôïðïßçóç óôïí ISP óáò. Ôï áñ÷åßï mpd.links ðåñéÝ÷åé ðëçñïöïñßåò ó÷åôéêÜ ìå ôç óýíäåóç Þ ôéò óõíäÝóåéò ðïõ èá ðñáãìáôïðïéçèïýí. Ãéá ðáñÜäåéãìá, ôï mpd.links ðïõ óõíïäåýåé ôï ðáñáðÜíù ðáñÜäåéãìá, öáßíåôáé ðáñáêÜôù: adsl: set link type pptp set pptp mode active set pptp enable originate outcall set pptp self 10.0.0.1 set pptp peer 10.0.0.138 Ç äéåýèõíóç IP ôïõ &os; õðïëïãéóôÞ óáò, óôïí ïðïßï èá ÷ñçóéìïðïéÞóåôå ôï mpd. Ç äéåýèõíóç IP ôïõ ADSL modem óáò. Ãéá ôï Alcatel &speedtouch; Home, ç äéåýèõíóç áõôÞ åßíáé áðü ðñïåðéëïãÞ ç 10.0.0.138. Åßíáé äõíáôüí íá áñ÷éêïðïéÞóåôå ôç óýíäåóç åýêïëá, äßíïíôáò ôçí ðáñáêÜôù åíôïëÞ ùò root: &prompt.root; mpd -b adsl Ìðïñåßôå íá äåßôå ôçí êáôÜóôáóç ôçò óýíäåóçò ìå ôçí ðáñáêÜôù åíôïëÞ: &prompt.user; ifconfig ng0 ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1500 inet 216.136.204.117 --> 204.152.186.171 netmask 0xffffffff Ôï mpd áðïôåëåß ôïí óõíéóôþìåíï ôñüðï óýíäåóçò ôïõ &os; ìå ìéá õðçñåóßá ADSL. ×ñçóéìïðïéþíôáò ôï pptpclient Ìðïñåßôå åðßóçò íá ÷ñçóéìïðïéÞóåôå ôï &os; ãéá íá óõíäåèåßôå óå Üëëåò õðçñåóßåò PPPoA ÷ñçóéìïðïéþíôáò ôï net/pptpclient. Ãéá íá ÷ñçóéìïðïéÞóåôå ôï net/pptpclient ãéá íá óõíäåèåßôå óå ìéá õðçñåóßá DSL, åãêáôáóôÞóôå ôï port Þ ôï ðáêÝôï, êáé åðåîåñãáóôåßôå ôï áñ÷åßï /etc/ppp/ppp.conf. Èá ÷ñåéáóôåß íá åßóôå root ãéá íá êÜíåôå êáé ôéò äýï ðáñáðÜíù äéáäéêáóßåò. ÐáñáêÜôù öáßíåôáé Ýíá ðáñÜäåéãìá ìéáò åíüôçôáò ôïõ ppp.conf. Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôéò åðéëïãÝò ôïõ ppp.conf, äåßôå ôç óåëßäá manual ôïõ ppp, &man.ppp.8;. adsl: set log phase chat lcp ipcp ccp tun command set timeout 0 enable dns set authname username set authkey password set ifaddr 0 0 add default HISADDR Ôï üíïìá ÷ñÞóôç ãéá ôïí ëïãáñéáóìü óáò óôïí ðáñï÷Ýá DSL. Ï êùäéêüò ãéá ôïí ëïãáñéáóìü óáò. Êáèþò èá ðñÝðåé íá ãñÜøåôå ôïí êùäéêü óáò ìïñöÞ áðëïý êåéìÝíïõ óôï áñ÷åßï ppp.conf, èá ðñÝðåé íá âåâáéùèåßôå üôé êáíÝíáò Üëëïò äåí èá ìðïñåß íá äéáâÜóåé ôá ðåñéå÷üìåíá áõôïý ôïõ áñ÷åßïõ. Ìå ôéò ðáñáêÜôù åíôïëÝò, ìðïñåßôå íá åîáóöáëßóåôå üôé ôï áñ÷åßï èá ìðïñåß íá äéáâáóôåß ìüíï ìÝóá áðü ôï ëïãáñéáóìü ôïõ root. Äåßôå ôéò óåëßäåò manual ôùí &man.chmod.1; êáé &man.chown.8; ãéá ðåñéóóüôåñåò ðëçñïöïñßåò. &prompt.root; chown root:wheel /etc/ppp/ppp.conf &prompt.root; chmod 600 /etc/ppp/ppp.conf Áõôü èá áíïßîåé Ýíá ôïýíåë ãéá ìéá óõíåäñßá PPP ìå ôïí DSL äñïìïëïãçôÞ óáò. Ôá DSL modem ôýðïõ ethernet Ý÷ïõí ìéá ðñïêáèïñéóìÝíç äéåýèõíóç IP óôï ôïðéêü óáò äßêôõï, óôçí ïðïßá ìðïñåßôå íá óõíäåèåßôå. Óôçí ðåñßðôùóç ôïõ Alcatel &speedtouch; Home, ç äéåýèõíóç áõôÞ åßíáé 10.0.0.138. Ç ôåêìçñßùóç ðïõ äéáèÝôåé ï äñïìïëïãçôÞò óáò, èá áíáöÝñåé ðïéá äéåýèõíóç ÷ñçóéìïðïéåß ç óõóêåõÞ óáò. Ãéá íá áíïßîåôå ôï ôïýíåë êáé íá îåêéíÞóåôå ìéá óõíåäñßá PPP, åêôåëÝóôå ôçí áêüëïõèç åíôïëÞ: &prompt.root; pptp address adsl Åßíáé êáëÞ éäÝá íá ðñïóèÝóåôå Ýíá & óôï ôÝëïò ôçò ðñïçãïýìåíçò åíôïëÞò, äéáöïñåôéêÜ ôï pptp äåí èá óáò åðéóôñÝøåé ôïí Ýëåã÷ï (ðñïôñïðÞ) ôïõ ôåñìáôéêïý óáò. Èá äçìéïõñãçèåß ìéá óõóêåõÞ tun (åéêïíéêü ôïýíåë) ãéá ôçí áëëçëåðßäñáóç ìåôáîý ôùí äéåñãáóéþí pptp êáé ppp. Ìüëéò åðéóôñÝøåé ç ðñïôñïðÞ óôï ôåñìáôéêü óáò, Þ ôï pptp åðéâåâáéþóåé ôç óýíäåóç, ìðïñåßôå íá åîåôÜóåôå ôï ôïýíåë ìå ôïí ôñüðï ðïõ öáßíåôáé ðáñáêÜôù: &prompt.user; ifconfig tun0 tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500 inet 216.136.204.21 --> 204.152.186.171 netmask 0xffffff00 Opened by PID 918 Áí äåí ìðïñÝóåôå íá óõíäåèåßôå, åëÝãîôå ôéò ñõèìßóåéò ôïõ äñïìïëïãçôÞ óáò, ïé ïðïßåò óõíÞèùò åßíáé ðñïóâÜóéìåò ìÝóù telnet Þ ìÝóù êÜðïéïõ öõëëïìåôñçôÞ. Áí áêüìá äåí ìðïñåßôå íá óõíäåèåßôå, èá ðñÝðåé íá åîåôÜóåôå ôçí Ýîïäï ôçò åíôïëÞò pptp êáé ôá ðåñéå÷üìåíá ôïõ áñ÷åßïõ êáôáãñáöÞò ôïõ ppp, /var/log/ppp.log ãéá ðéèáíÜ óôïé÷åßá. Satoshi Asami Áñ÷éêÞ óõíåéóöïñÜ ôïõ Guy Helmer Ìå ôç âïÞèåéá ôùí Piero Serini ×ñçóéìïðïéþíôáò ôï SLIP SLIP Ç åíüôçôá áõôÞ åöáñìüæåôáé êáé åßíáé Ýãêõñç ìüíï óå óõóôÞìáôá &os; 7.X. Ñõèìßæïíôáò Ýíá ÐåëÜôç SLIP SLIP client ÐáñáêÜôù ðáñïõóéÜæïõìå Ýíá ôñüðï íá ñõèìßóåôå Ýíá ìç÷Üíçìá &os; ùò ðåëÜôç SLIP óå Ýíá äßêôõï ìå óôáôéêÝò äéåõèýíóåéò. Ãéá ìç÷áíÞìáôá ôá ïðïßá ëáìâÜíïõí üíïìá äõíáìéêÜ (ç äéåýèõíóç ôïõò áëëÜæåé êÜèå öïñÜ ðïõ óõíäÝïíôáé), ðéèáíüí íá ÷ñåéáóôåß íá êÜíåôå ðéï ðïëýðëïêåò ñõèìßóåéò. Áñ÷éêÜ, èá ðñÝðåé íá êáèïñßóåôå óå ðïéá óåéñéáêÞ èýñá åßíáé óõíäåìÝíï ôï modem óáò. Áñêåôïß ÷ñÞóôåò äçìéïõñãïýí Ýíá óõìâïëéêü äåóìü ð.÷. /dev/modem, ôï ïðïßï äåß÷íåé óôçí ðñáãìáôéêÞ óõóêåõÞ /dev/cuadN. Áõôü óáò åðéôñÝðåé íá óõíå÷ßóåôå íá ÷ñçóéìïðïéåßôå ôï ßäéï üíïìá óõóêåõÞò, áêüìá êáé áí ìåôáêéíÞóåôå ôï modem óå äéáöïñåôéêÞ èýñá. Åßíáé ìÜëëïí Üâïëï íá ðñÝðåé íá áëëÜîåôå ðëÞèïò áñ÷åßùí óôï /etc êáèþò êáé ôá áñ÷åßá .kermrc óå üëï ôï óýóôçìá! Ôï /dev/cuad0 åßíáé ç COM1, ôï /dev/cuad1 åßíáé ç COM2, ê.ï.ê. Âåâáéùèåßôå üôé ôï áñ÷åßï ñõèìßóåùí ôïõ ðõñÞíá óáò ðåñéÝ÷åé ôá ðáñáêÜôù: device sl Ôï ðáñáðÜíù ðåñéëáìâÜíåôáé óôïí ðõñÞíá GENERIC, êáé áí äåí ôï Ý÷åôå äéáãñÜøåé, äåí èá Ý÷åôå ðñüâëçìá. Ñõèìßóåéò ðïõ èá ×ñåéáóôåß íá ÊÜíåôå Ìüíï ìéá ÖïñÜ ÐñïóèÝóôå ôï ìç÷Üíçìá óáò, ôçí ðýëç (gateway) êáé ôïõò äéáêïìéóôÝò ïíïìÜôùí (nameservers) óôï áñ÷åßï /etc/hosts. Óôï ðáñÜäåéãìá ìáò, ôï áñ÷åßï áõôü ìïéÜæåé ìå ôï ðáñáêÜôù: 127.0.0.1 localhost loghost 136.152.64.181 water.CS.Example.EDU water.CS water 136.152.64.1 inr-3.CS.Example.EDU inr-3 slip-gateway 128.32.136.9 ns1.Example.EDU ns1 128.32.136.12 ns2.Example.EDU ns2 Âåâáéùèåßôå üôé ç åíüôçôá files âñßóêåôáé ðñéí ôï dns óôçí åíüôçôá hosts: ôïõ áñ÷åßïõ /etc/nsswitch.conf. Áí äåí õðÜñ÷ïõí áõôÝò ïé ðáñÜìåôñïé, ìðïñåß íá åìöáíéóôïýí ðáñÜîåíá óõìðôþìáôá. ÔñïðïðïéÞóôå ôï áñ÷åßï /etc/rc.conf. Ïñßóôå ôï üíïìá ôïõ õðïëïãéóôÞ óáò, ôñïðïðïéþíôáò ôç ãñáììÞ ðïõ ãñÜöåé: hostname="myname.my.domain" Èá ðñÝðåé åäþ íá ôïðïèåôÞóåôå ôï ðëÞñåò üíïìá ôïõ õðïëïãéóôÞ óáò. - default route - Ïñßóôå ôïí ðñïåðéëåãìÝíï äñïìïëïãçôÞ, áëëÜæïíôáò ôç - ãñáììÞ: + ãñáììÞdefault route: defaultrouter="NO" óå: defaultrouter="slip-gateway" ÄçìéïõñãÞóôå Ýíá áñ÷åßï /etc/resolv.conf ôï ïðïßï èá ðåñéÝ÷åé: domain CS.Example.EDU nameserver 128.32.136.9 nameserver 128.32.136.12 nameserver domain name ¼ðùò ìðïñåßôå íá äåßôå, ôï ðáñáðÜíù ïñßæåé ôïõò äéáêïìéóôÝò DNS. ÖõóéêÜ, ôá ðñáãìáôéêÜ ïíüìáôá êáé ïé äéåõèýíóåéò ôùí ôïìÝùí åîáñôþíôáé áðü ôï ðåñéâÜëëïí óáò. Ñõèìßóôå êùäéêü ðñüóâáóçò ãéá ôïõò ÷ñÞóôåò root êáé toor (êáèþò êáé ãéá üóïõò Üëëïõò ëïãáñéáóìïýò äåí Ý÷ïõí êùäéêü). ÅðáíåêêéíÞóôå ôï ìç÷Üíçìá óáò, êáé âåâáéùèåßôå üôé Ý÷åé ôåèåß óùóôÜ ôï üíïìá õðïëïãéóôÞ. Äçìéïõñãþíôáò ìéá Óýíäåóç SLIP SLIP connecting with ÌåôÜ ôçí êëÞóç, ãñÜøôå ôçí åíôïëÞ slip óôçí ðñïôñïðÞ, ãñÜøôå ôï üíïìá ôïõ ìç÷áíÞìáôïò óáò êáé ôïí êùäéêü. Ôï ôé áêñéâþò ÷ñåéÜæåôáé íá ãñÜøåôå, åîáñôÜôáé áðü ôï ðåñéâÜëëïí óáò. Áí ÷ñçóéìïðïéåßôå ôï Kermit, ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå Ýíá script üðùò ôï áêüëïõèï: # kermit setup set modem hayes set line /dev/modem set speed 115200 set parity none set flow rts/cts set terminal bytesize 8 set file type binary # The next macro will dial up and login define slip dial 643-9600, input 10 =>, if failure stop, - output slip\x0d, input 10 Username:, if failure stop, - output silvia\x0d, input 10 Password:, if failure stop, - output ***\x0d, echo \x0aCONNECTED\x0a ÖõóéêÜ, èá ðñÝðåé íá áëëÜîåôå ôï üíïìá ÷ñÞóôç êáé ôïí êùäéêü þóôå íá ôáéñéÜæïõí ìå ôá äéêÜ óáò. ÌåôÜ áðü áõôü, ìðïñåßôå áðëþò íá ðëçêôñïëïãÞóåôå slip óôçí ðñïôñïðÞ óýíäåóçò ôïõ Kermit. Ç ýðáñîç ôïõ êùäéêïý óáò óå ìïñöÞ áðëïý êåéìÝíïõ óå ïðïéïäÞðïôå óçìåßï åíüò óõóôÞìáôïò áñ÷åßùí, åßíáé ãåíéêÜ êáêÞ éäÝá. Ðñï÷ùñÞóôå ìå äéêÞ óáò åõèýíç. ÁöÞóôå ôï Kermit åêåß (ìðïñåßôå íá ôï óôåßëåôå óôï ðáñáóêÞíéï ÷ñçóéìïðïéþíôáò ôá ðëÞêôñá Ctrl z ) êáé ùò root, ãñÜøôå: &prompt.root; slattach -h -c -s 115200 /dev/modem Áí ìðïñåßôå íá êÜíåôå ping óå õðïëïãéóôÝò óôçí Üëëç ìåñéÜ ôïõ äñïìïëïãçôÞ, åßóôå óõíäåìÝíïé! Áí áõôü äåí äïõëåýåé, äïêéìÜóôå ôçí åðéëïãÞ áíôß ãéá ôçí ùò üñéóìá óôçí slattach. Ðùò íá Ôåñìáôßóåôå ôçí Óýíäåóç ÊÜíôå ôá áêüëïõèá: &prompt.root; kill -INT `cat /var/run/slattach.modem.pid` ãéá íá ôåñìáôßóåôå ôï slattach. Èõìçèåßôå üôé ðñÝðåé íá åßóôå root ãéá íá åêôåëÝóåôå ôï ðáñáðÜíù. ¸ðåéôá åðáíÝëèåôå óôï kermit (åêôåëþíôáò ôçí fg áí ôï åß÷áôå óôåßëåé óôï ðáñáóêÞíéï) êáé ôåñìáôßóôå ôï (ðéÝæïíôáò q). Ç óåëßäá manual ôïõ &man.slattach.8; áíáöÝñåé üôé ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôçí åíôïëÞ ifconfig sl0 down ãéá íá äéáêüøåôå ôç óýíäåóç, áëëÜ áõôü äåí öáßíåôáé íá Ý÷åé êáíÝíá áðïôÝëåóìá. (To ifconfig sl0 áíáöÝñåé ôï ßäéï ðñÜãìá.) ÌåñéêÝò öïñÝò, ôï modem óáò ìðïñåß íá áñíçèåß íá êëåßóåé ôç ãñáììÞ. Óôéò ðåñéðôþóåéò áõôÝò, îåêéíÞóôå îáíÜ ôï kermit êáé ôåñìáôßóôå ôï îáíÜ. Ôç äåýôåñç öïñÜ óõíÞèùò ðåôõ÷áßíåé. Áíôéìåôþðéóç ÐñïâëçìÜôùí Áí ôï ðáñáðÜíù äåí ëåéôïõñãÞóåé, ñùôÞóôå óôç ëßóôá &a.net.name;. ÌåñéêÜ áðü ôá óõíçèéóìÝíá ðñïâëÞìáôá ôá ïðïßá Ý÷ïõìå ìÝ÷ñé óôéãìÞò áíôéìåôùðßóåé: Íá ìçí Ý÷åé ÷ñçóéìïðïéçèåß ç åðéëïãÞ Þ óôçí slattach (Áõôü êáíïíéêÜ äåí åßíáé êñßóéìï óöÜëìá, áëëÜ ìåñéêïß ÷ñÞóôåò áíÝöåñáí üôé áõôü Ýëõóå ôá ðñïâëÞìáôá ôïõò.) ×ñÞóç ôïõ áíôß ãéá (ç äéáöïñÜ ìðïñåß íá åßíáé ðïëý ìéêñÞ óå ìåñéêÝò ãñáììáôïóåéñÝò). ÄïêéìÜóôå ôçí åíôïëÞ ifconfig sl0 ãéá íá äåßôå ôçí êáôÜóôáóç ôçò äéåðáöÞò. Ãéá ðáñÜäåéãìá, ìðïñåß íá äåßôå ôï ðáñáêÜôù: &prompt.root; ifconfig sl0 sl0: flags=10<POINTOPOINT> inet 136.152.64.181 --> 136.152.64.1 netmask ffffff00 Áí ç åíôïëÞ &man.ping.8; äßíåé ìçíýìáôá no route to host, ßóùò õðÜñ÷åé ðñüâëçìá ìå ôïí ðßíáêá äñïìïëüãçóçò óáò. Ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôçí åíôïëÞ netstat -r ãéá íá äåßôå ôçí ôñÝ÷ïõóá äñïìïëüãçóç: &prompt.root; netstat -r Routing tables Destination Gateway Flags Refs Use IfaceMTU Rtt Netmasks: (root node) (root node) Route Tree for Protocol Family inet: (root node) => default inr-3.Example.EDU UG 8 224515 sl0 - - localhost.Exampl localhost.Example. UH 5 42127 lo0 - 0.438 inr-3.Example.ED water.CS.Example.E UH 1 0 sl0 - - water.CS.Example localhost.Example. UGH 34 47641234 lo0 - 0.438 (root node) Ôá ðáñáðÜíù ðáñáäåßãìáôá åßíáé áðü Ýíá ó÷åôéêÜ áðáó÷ïëçìÝíï óýóôçìá. Ïé áñéèìïß èá äéáöÝñïõí óôï óýóôçìá óáò, áíÜëïãá ìå ôç äñáóôçñéüôçôá ôïõ äéêôýïõ. Ñõèìßæïíôáò ¸íá ÅîõðçñåôçôÞ SLIP SLIP server Ôï êåßìåíï áõôü ðáñÝ÷åé êÜðïéåò õðïäåßîåéò ãéá ôç ñýèìéóç åíüò &os; óõóôÞìáôïò ùò åîõðçñåôçôÞ SLIP. ÔõðéêÜ áõôü óçìáßíåé üôé ôï óýóôçìá óáò èá ñõèìéóôåß íá îåêéíÜ áõôüìáôá ôéò óõíäÝóåéò ìåôÜ ôçí åßóïäï áðïìáêñõóìÝíùí ðåëáôþí SLIP. ÐñïûðïèÝóåéò TCP/IP networking Ç åíüôçôá áõôÞ åßíáé éäéáßôåñá ôå÷íéêÞò öýóåùò, êáé ãéá ôï ëüãï áõôü áðáéôåßôáé íá Ý÷åôå ôéò áíôßóôïé÷åò ãíþóåéò ãéá íá ôçí êáôáíïÞóåôå. ÕðïèÝôïõìå üôé Ý÷åôå ìéá åîïéêåßùóç ìå ôï ðñùôüêïëëï TCP/IP êáé åéäéêüôåñá ìå ôç äéåõèõíóéïäüôçóç êüìâùí, ôéò ìÜóêåò äéêôýùí, ôá õðïäßêôõá, ôç äñïìïëüãçóç êáé ôá ðñùôüêïëëá äñïìïëüãçóçò üðùò ôï RIP. Ç ñýèìéóç ôùí õðçñåóéþí SLIP óå Ýíá åîõðçñåôçôÞ åðéëïãéêþí óõíäÝóåùí áðáéôåß ãíþóç áõôþí ôùí åííïéþí, êáé áí äåí åßóôå åîïéêåéùìÝíïò ìå áõôÝò, óáò ðáñáêáëïýìå íá äéáâÜóåôå åßôå ôï TCP/IP Network Administration ôïõ Craig Hunt (åêäüóåéò O'Reilly & Associates, Inc, Áñéèìüò ISBN 0-937175-82-X) Þ êÜðïéï áðü ôá âéâëßá ôïõ Douglas Comer ó÷åôéêÜ ìå ôï ðñùôüêïëëï TCP/IP. modem ÅðéðëÝïí, õðïèÝôïõìå üôé Þäç Ý÷åôå ñõèìßóåé ôï modem óáò êáé Ý÷åôå ôñïðïðïéÞóåé ôá êáôÜëëçëá áñ÷åßá ñõèìßóåùí ôïõ óõóôÞìáôïò þóôå íá åðéôñÝðåôáé ç åßóïäïò óôï óýóôçìá ìÝóù ôùí modem. Áí äåí Ý÷åôå áêüìá ðñïåôïéìÜóåé ôï óýóôçìá ãéá áõôü, ðáñáêáëïýìå äåßôå ôï ãéá ëåðôïìÝñåéåò ó÷åôéêÜ ìå ôç ñýèìéóç ôùí åðéëïãéêþí óõíäÝóåùí. Åíäå÷ïìÝíùò íá èÝëåôå åðßóçò íá äåßôå ôéò óåëßäåò manual ôçò &man.sio.4; ãéá ðëçñïöïñßåò ó÷åôéêÜ ìå ôï ðñüãñáììá ïäÞãçóçò ôçò óåéñéáêÞò èýñáò, ôá &man.ttys.5;, &man.gettytab.5;, &man.getty.8;, êáé &man.init.8; ãéá ðëçñïöïñßåò ðïõ ó÷åôßæïíôáé ìå ôç ñýèìéóç ôïõ óõóôÞìáôïò þóôå íá äÝ÷åôáé åßóïäï ÷ñçóôþí ìÝóù modem, êáé ßóùò êáé ôç &man.stty.1; ãéá ðëçñïöïñßåò ó÷åôéêÜ ìå ôéò ðáñáìÝôñïõò óåéñéáêþí èõñþí (üðùò ôçí clocal ãéá óåéñéáêÝò äéåðáöÝò ðïõ åßíáé áðåõèåßáò óõíäåìÝíåò). ÃñÞãïñç Åðéóêüðçóç ÔõðéêÜ, Ýíáò åîõðçñåôçôÞò SLIP ðïõ ÷ñçóéìïðïéåß &os; ëåéôïõñãåß ìå ôïí åîÞò ôñüðï: Ýíáò ÷ñÞóôçò SLIP êáëåß ôïí åîõðçñåôçôÞ SLIP, êáé åéóÝñ÷åôáé óôï óýóôçìá ìÝóù åíüò åéäéêïý áíáãíùñéóôéêïý åéóüäïõ ãéá ôï SLIP. Ôï êÝëõöïò ôïõ ÷ñÞóôç åßíáé ôï /usr/sbin/sliplogin. Ôï ðñüãñáììá sliplogin äéáâÜæåé ôï áñ÷åßï /etc/sliphome/slip.hosts ãéá íá âñåé ìéá ãñáììÞ ðïõ íá ôáéñéÜæåé ìå ôïí ÷ñÞóôç, êáé áí õðÜñ÷åé, óõíäÝåé ôçí óåéñéáêÞ ãñáììÞ óå ìéá äéáèÝóéìç äéåðáöÞ SLIP êáé Ýðåéôá åêôåëåß ôï script ôïõ êåëýöïõò /etc/sliphome/slip.login ãéá íá ñõèìßóåé ôç äéåðáöÞ SLIP. ¸íá ÐáñÜäåéãìá Åéóüäïõ óå ÅîõðçñåôçôÞ SLIP Ãéá ðáñÜäåéãìá, ãéá Ýíá ÷ñÞóôç SLIP ìå ID Shelmerg, ç áíôßóôïé÷ç êáôá÷þñéóç óôï /etc/master.passwd èá Ýìïéáæå ìå ôçí ðáñáêÜôù: Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:/usr/users/Shelmerg:/usr/sbin/sliplogin ¼ôáí åéóÝëèåé ï Shelmerg, ôï sliplogin èá øÜîåé ôï /etc/sliphome/slip.hosts ãéá ìéá ãñáììÞ ìå ID ÷ñÞóôç ðïõ íá ôáéñéÜæåé. Ãéá ðáñÜäåéãìá, ìðïñåß íá õðÜñ÷åé ìéá ãñáììÞ óôï /etc/sliphome/slip.hosts ðïõ íá ãñÜöåé: Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp Ôï sliplogin èá âñåé ôç ãñáììÞ áõôÞ, èá óõíäÝóåé ôç óåéñéáêÞ ãñáììÞ óôçí åðüìåíç äéáèÝóéìç äéåðáöÞ SLIP, êáé Ýðåéôá èá åêôåëÝóåé ôï /etc/sliphome/slip.login üðùò öáßíåôáé ðáñáêÜôù: /etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp Áí üëá ðÜíå êáëÜ, ôï /etc/sliphome/slip.login èá åêôåëÝóåé ìéá åíôïëÞ ifconfig ãéá ôç äéåðáöÞ SLIP óôçí ïðïßá Ý÷åé óõíäåèåß ç sliplogin (ç äéåðáöÞ 0 óôï ðáñáðÜíù ðáñÜäåéãìá, ç ðñþôç ðáñÜìåôñïò ôçò ëßóôáò ðïõ äßíåôáé óôï slip.login) þóôå íá ñõèìéóôïýí ç ôïðéêÞ äéåýèõíóç IP (dc-slip), ç áðïìáêñõóìÝíç äéåýèõíóç IP (sl-helmer), ç ìÜóêá äéêôýïõ ãéá ôç äéåðáöÞ SLIP (0xfffffc00), êáé ïðïéåóäÞðïôå ðñüóèåôåò åðéëïãÝò (autocomp). Áí êÜôé ðÜåé óôñáâÜ, èá ìðïñÝóåôå íá ôï åíôïðßóåôå áðü ôá áñ÷åßá êáôáãñáöÞò ôçò sliplogin. Ç sliplogin êáôáãñÜöåé ôá ìçíýìáôá ÷ñçóéìïðïéþíôáò ôï äáßìïíá syslogd ï ïðïßïò óõíÞèùò ÷ñçóéìïðïéåß ôï áñ÷åßï /var/log/messages (äåßôå ôéò óåëßäåò âïÞèåéáò ãéá ôá &man.syslogd.8; êáé &man.syslog.conf.5; êáé åíäå÷ïìÝíùò åëÝãîôå ôï /etc/syslog.conf ãéá íá äåßôå ôçí ôïðïèåóßá êáé ôï áñ÷åßï ðïõ ÷ñçóéìïðïéåß ôï syslogd ãéá ôçí êáôáãñáöÞ). Ñýèìéóç ôïõ ÐõñÞíá kernel configuration SLIP Ï ðñïåðéëåãìÝíïò ðõñÞíáò ôïõ &os; (ï GENERIC) äéáèÝôåé åíóùìáôùìÝíç õðïóôÞñéîç SLIP (&man.sl.4;). Óôçí ðåñßðôùóç ðïõ èÝëåôå íá äçìéïõñãÞóåôå ðñïóáñìïóìÝíï ðõñÞíá, ðñïóèÝóôå ôçí ðáñáêÜôù ãñáììÞ óôï áñ÷åßï ñõèìßóåùí ôïõ ðõñÞíá óáò: device sl Ôï &os;, áðü ðñïåðéëïãÞ, äåí ðñïùèåß ðáêÝôá. Áí èÝëåôå ï åîõðçñåôçôÞò óáò íá åíåñãåß ùò äñïìïëïãçôÞò, èá ðñÝðåé íá åðåîåñãáóôåßôå ôï áñ÷åßï /etc/rc.conf êáé íá áëëÜîåôå ôç ñýèìéóç ôçò ìåôáâëçôÞò gateway_enable óå . Ìå ôïí ôñüðï áõôü, èá åßíáé óßãïõñï üôé ç åðéëïãÞ ôçò äñïìïëüãçóçò èá äéáôçñçèåß ìåôÜ áðü ìéá åðáíåêêßíçóç. Èá ðñÝðåé Ýðåéôá íá åðáíåêêéíÞóåôå ãéá íá åíåñãïðïéçèïýí ïé íÝåò ñõèìßóåéò. Ãéá íá åöáñìüóåôå áõôÝò ôéò ñõèìßóåéò Üìåóá, ìðïñåßôå íá åêôåëÝóåôå ôçí ðáñáêÜôù åíôïëÞ ùò root: &prompt.root; /etc/rc.d/routing start Ðáñáêáëïýìå äåßôå ôï ãéá ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôçí ñýèìéóç ôïõ ðõñÞíá ôïõ &os;. Ñýèìéóç ôïõ Sliplogin ¼ðùò áíáöÝñèçêå êáé ðñéí, õðÜñ÷ïõí ôñßá áñ÷åßá óôïí êáôÜëïãï /etc/sliphome ôá ïðïßá ÷ñçóéìïðïéïýíôáé óôç ñýèìéóç ôïõ /usr/sbin/sliplogin (äåßôå êáé ôç óåëßäá manual ôïõ &man.sliplogin.8;): ôï slip.hosts, ôï ïðïßï ïñßæåé ôïõò ÷ñÞóôåò SLIP êáé ôéò áíôßóôïé÷åò IP äéåõèýíóåéò ôïõò, ôï slip.login ôï ïðïßï óõíÞèùò ñõèìßæåé áðëÜ ôçí äéåðáöÞ SLIP, êáé ðñïáéñåôéêÜ ôï slip.logout, ôï ïðïßï áíáéñåß ôéò áëëáãÝò ôïõ slip.login üôáí ôåñìáôßóåé ç óåéñéáêÞ óýíäåóç. Ñýèìéóç ôïõ <filename>slip.hosts</filename> Ôï /etc/sliphome/slip.hosts ðåñéÝ÷åé ãñáììÝò ìå ôÝóóåñá ðåäßá ðïõ ÷ùñßæïíôáé ìåôáîý ôïõò ìå êåíÜ äéáóôÞìáôá: Ôï áíáãíùñéóôéêü åéóüäïõ ôïõ ÷ñÞóôç SLIP Ôçí ôïðéêÞ äéåýèõíóç (ôïðéêÞ ùò ðñïò ôïí åîõðçñåôçôÞ SLIP) ôçò äéáóýíäåóçò SLIP Ôçí áðïìáêñõóìÝíç äéåýèõíóç ôçò äéáóýíäåóçò SLIP Ôç ìÜóêá ôïõ äéêôýïõ Ç ôïðéêÞ êáé ç áðïìáêñõóìÝíç äéåýèõíóç, ìðïñåß íá åßíáé ïíüìáôá õðïëïãéóôþí (ôá ïðïßá íá ìåôáôñÝðïíôáé óå äéåõèýíóåéò IP ìÝóù ôïõ /etc/hosts Þ ìÝóù ôïõ DNS, áíÜëïãá ìå ôéò êáôá÷ùñßóåéò ðïõ õðÜñ÷ïõí óôï áñ÷åßï /etc/nsswitch.conf), êáé ç ìÜóêá äéêôýïõ ìðïñåß íá åßíáé Ýíá üíïìá ôï ïðïßï íá ìðïñåß íá äéåõêñéíéóôåß ìÝóù áíáæÞôçóçò óôï /etc/networks. Óå Ýíá äïêéìáóôéêü óýóôçìá, ôï /etc/sliphome/slip.hosts ìïéÜæåé ìå ôï ðáñáêÜôù: # # login local-addr remote-addr mask opt1 opt2 # (normal,compress,noicmp) # Shelmerg dc-slip sl-helmerg 0xfffffc00 autocomp Óôï ôÝëïò ôçò ãñáììÞò, âñßóêïíôáé ìéá Þ ðåñéóóüôåñåò áðü ôéò ðáñáêÜôù åðéëïãÝò: — ÷ùñßò óõìðßåóç ôùí åðéêåöáëßäùí — ìå óõìðßåóç ôùí åðéêåöáëßäùí — ìå óõìðßåóç ôùí åðéêåöáëßäùí, áí åðéôñÝðåôáé áðü ôïí áðïìáêñõóìÝíï õðïëïãéóôÞ — áðåíåñãïðïßçóç ôùí ðáêÝôùí ICMP (ìå ôïí ôñüðï áõôü ôá ðáêÝôá ping èá áðïññßðôïíôáé áíôß íá êáôáíáëþíïõí ôï åýñïò æþíçò ôçò óýíäåóçò óáò) SLIP TCP/IP networking Ïé åðéëïãÝò ðïõ Ý÷åôå ãéá ôéò ôïðéêÝò êáé áðïìáêñõóìÝíåò äéåõèýíóåéò ôùí SLIP óõíäÝóåùí óáò, åîáñôþíôáé áðü ôï áí ðñüêåéôáé íá áöéåñþóåôå Ýíá õðïäßêôõï TCP/IP Þ áí ðñüêåéôáé íá ÷ñçóéìïðïéÞóåôå proxy ARP óôï SLIP åîõðçñåôçôÞ óáò (äåí åßíáé ðñáãìáôéêü proxy ARP, áëëÜ óôçí åíüôçôá áõôÞ ðåñéãñÜöåôáé ìå áõôü ôïí üñï). Áí äåí åßóôå óßãïõñïò ðïéá ìÝèïäï íá åðéëÝîåôå Þ ðùò íá áðïäßäåôå äéåõèýíóåéò IP, ðáñáêáëïýìå áíáôñÝîôå óôá âéâëßá ôïõ TCP/IP ðïõ áíáöÝñïíôáé óôéò ÐñïûðïèÝóåéò SLIP () Þ/êáé óõìâïõëåõèåßôå ôï äéá÷åéñéóôÞ äéêôýïõ óáò. Áí ðñüêåéôáé íá ÷ñçóéìïðïéÞóåôå îå÷ùñéóôü õðïäßêôõï ãéá ôïõò SLIP ðåëÜôåò óáò, èá ÷ñåéáóôåß íá äéáèÝóåôå ôïí áñéèìü õðïäéêôýïõ áðü ôçí äéåýèõíóç IP ðïõ óáò Ý÷åé áðïäïèåß êáé íá áðïäþóåôå óôïõò ðåëÜôåò SLIP äéåõèýíóåéò ðïõ áíÞêïõí óå áõôü ôï õðïäßêôõï. ¸ðåéôá, èá ÷ñåéáóôåß ìÜëëïí íá êáèïñßóåôå ìéá óôáôéêÞ äéáäñïìÞ óôï õðïäßêôõï SLIP ìÝóù ôïõ åîõðçñåôçôÞ SLIP óôïí êïíôéíüôåñï óáò äñïìïëïãçôÞ IP. Ethernet ÄéáöïñåôéêÜ, áí ÷ñçóéìïðïéÞóåôå ôç ìÝèïäï proxy ARP, èá ÷ñåéáóôåß íá áðïäßäåôå óôïõò SLIP ðåëÜôåò óáò äéåõèýíóåéò IP ðïõ áíÞêïõí óôï õðïäßêôõï Ethernet óôï ïðïßï áíÞêåé ï åîõðçñåôçôÞò SLIP, êáé èá ÷ñåéáóôåß åðßóçò íá ñõèìßóåôå ôá scripts /etc/sliphome/slip.login êáé /etc/sliphome/slip.logout íá ÷ñçóéìïðïéïýí ôï &man.arp.8; ãéá íá ÷åéñßæïíôáé ôéò êáôá÷ùñßóåéò proxy ARP óôïí ðßíáêá ARP ôïõ åîõðçñåôçôÞ SLIP. Ñýèìéóç ôïõ <filename>slip.login</filename> ¸íá ôõðéêü /etc/sliphome/slip.login ìïéÜæåé ìå ôï ðáñáêÜôù: #!/bin/sh - # # @(#)slip.login 5.1 (Berkeley) 7/1/90 # # generic login file for a slip line. sliplogin invokes this with # the parameters: # 1 2 3 4 5 6 7-n # slipunit ttyspeed loginname local-addr remote-addr mask opt-args # /sbin/ifconfig sl$1 inet $4 $5 netmask $6 Ôï áñ÷åßï slip.login åêôåëåß áðëþò ôï ifconfig ãéá ôçí êáôÜëëçëç äéåðáöÞ SLIP, ìå ôéò ôïðéêÝò êáé áðïìáêñõóìÝíåò äéåõèýíóåéò êáé ôç ìÜóêá äéêôýïõ ôçò äéåðáöÞò áõôÞò. Áí Ý÷åôå áðïöáóßóåé íá ÷ñçóéìïðïéÞóåôå ôçí ìÝèïäï proxy ARP (áíôß íá ÷ñçóéìïðïéÞóåôå äéáöïñåôéêü õðïäßêôõï ãéá ôïõò ðåëÜôåò SLIP), ôï áñ÷åßï /etc/sliphome/slip.login èá ìïéÜæåé ìå ôï ðáñáêÜôù: #!/bin/sh - # # @(#)slip.login 5.1 (Berkeley) 7/1/90 # # generic login file for a slip line. sliplogin invokes this with # the parameters: # 1 2 3 4 5 6 7-n # slipunit ttyspeed loginname local-addr remote-addr mask opt-args # /sbin/ifconfig sl$1 inet $4 $5 netmask $6 # Answer ARP requests for the SLIP client with our Ethernet addr /usr/sbin/arp -s $5 00:11:22:33:44:55 pub Ç ðñüóèåôç ãñáììÞ óå áõôü ôï slip.login, ç arp -s $5 00:11:22:33:44:55 pub, äçìéïõñãåß ìéá êáôá÷þñéóç ARP óôïí ðßíáêá ARP ôïõ åîõðçñåôçôÞ SLIP. ÁõôÞ ç êáôá÷þñéóç ARP êÜíåé ôïí åîõðçñåôçôÞ SLIP íá áðáíôÜ ìå ôçí äéåýèõíóç Ethernet MAC üôáí êÜðïéïò Üëëïò êüìâïò IP óôï Ethernet åðéèõìåß íá åðéêïéíùíÞóåé ìå ôçí äéåýèõíóç IP ôïõ ðåëÜôç SLIP. Ethernet MAC address ¼ôáí ÷ñçóéìïðïéåßôå ôï ðáñáðÜíù ðáñÜäåéãìá, âåâáéùèåßôå üôé Ý÷åôå áíôéêáôáóôÞóåé ôçí äéåýèõíóç MAC ôïõ Ethernet (00:11:22:33:44:55) ìå ôçí áíôßóôïé÷ç ôçò äéêÞò óáò êÜñôáò Ethernet, äéáöïñåôéêÜ ôï proxy ARP óßãïõñá äåí èá ëåéôïõñãÞóåé! Ìðïñåßôå íá áíáêáëýøåôå ôç äéåýèõíóç MAC ôïõ äéêïý óáò åîõðçñåôçôÞ SLIP êïéôÜæïíôáò ôá áðïôåëÝóìáôá ôçò åíôïëÞò netstat -i. Ç äåýôåñç ãñáììÞ ôçò åîüäïõ èá ìïéÜæåé ìå ôçí ðáñáêÜôù: ed0 1500 <Link>0.2.c1.28.5f.4a 191923 0 129457 0 116 Áõôü äåß÷íåé üôé óôï óõãêåêñéìÝíï óýóôçìá ç äéåýèõíóç MAC ôïõ Ethernet åßíáé 00:02:c1:28:5f:4a. Ïé ôåëåßåò óôçí äéåýèõíóç ðïõ äåß÷íåé ç netstat -i ðñÝðåé íá áíôéêáôáóôáèïýí ìå Üíù-êÜôù ôåëåßåò, êáé êÜèå ìïíü äåêáåîáäéêü øçößï ðñÝðåé íá ìåôáôñáðåß óå äéðëü ðñïóèÝôïíôáò áðü ìðñïóôÜ Ýíá ìçäåíéêü. Ç äéåýèõíóç ìåôáôñÝðåôáé ìå áõôü ôïí ôñüðï óå ìéá ìïñöÞ ðïõ ìðïñåß íá ÷ñçóéìïðïéÞóåé ç &man.arp.8;. Äåßôå ôç óåëßäá manual ôçò &man.arp.8; ãéá ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôç ÷ñÞóç ôçò åíôïëÞò áõôÞò. ¼ôáí äçìéïõñãåßôå ôï /etc/sliphome/slip.login êáé ôï /etc/sliphome/slip.logout, èá ðñÝðåé íá èÝóåôå ôï bit åêôÝëåóçò (ð.÷. chmod 755 /etc/sliphome/slip.login /etc/sliphome/slip.logout), äéáöïñåôéêÜ ç sliplogin äåí èá ìðïñåß íá ôá åêôåëÝóåé. Ñýèìéóç ôïõ <filename>slip.logout</filename> Ôï /etc/sliphome/slip.logout äåí åßíáé áðüëõôá áðáñáßôçôï (åêôüò áí ðñüêåéôáé íá õëïðïéÞóåôå proxy ARP), áëëÜ áí óêïðåýåôå íá ôï äçìéïõñãÞóåôå, ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ùò õðüäåéãìá ôï ðáñáêÜôù áðëü ðáñÜäåéãìá: #!/bin/sh - # # slip.logout # # logout file for a slip line. sliplogin invokes this with # the parameters: # 1 2 3 4 5 6 7-n # slipunit ttyspeed loginname local-addr remote-addr mask opt-args # /sbin/ifconfig sl$1 down Áí ÷ñçóéìïðïéåßôå proxy ARP, èá èÝëåôå ôï /etc/sliphome/slip.logout íá äéáãñÜöåé ôçí êáôá÷þñéóç ARP ôïõ ðåëÜôç SLIP: #!/bin/sh - # # @(#)slip.logout # # logout file for a slip line. sliplogin invokes this with # the parameters: # 1 2 3 4 5 6 7-n # slipunit ttyspeed loginname local-addr remote-addr mask opt-args # /sbin/ifconfig sl$1 down # Quit answering ARP requests for the SLIP client /usr/sbin/arp -d $5 Ç arp -d $5 äéáãñÜöåé ôçí êáôá÷þñéóç ARP ðïõ ðñïóôÝèçêå ìå ôçí åêôÝëåóç ôïõ slip.login ôïõ proxy ARP, êáôÜ ôçí åßóïäï ôïõ ðåëÜôç SLIP. ÐñÝðåé íá ôï åðáíáëÜâïõìå Üëëç ìéá öïñÜ: Âåâáéùèåßôå üôé ôï /etc/sliphome/slip.logout Ý÷åé ïñéóôåß ùò åêôåëÝóéìï ìåôÜ ôçí äçìéïõñãßá ôïõ (ð.÷., chmod 755 /etc/sliphome/slip.logout). ÐáñÜãïíôåò ðïõ ÐñÝðåé íá ËÜâåôå Õðüøç óáò óôç Äñïìïëüãçóç SLIP routing Áí äåí ÷ñçóéìïðïéåßôå ôçí ìÝèïäï proxy ARP ãéá íá äñïìïëïãåßôå ðáêÝôá ìåôáîý ôùí ðåëáôþí SLIP êáé ôïõ õðüëïéðïõ äéêôýïõ óáò (êáé åíäå÷ïìÝíùò êáé ôïõ Internet), èá ðñÝðåé ìÜëëïí íá ðñïóèÝóåôå óôáôéêÝò äéáäñïìÝò ðñïò ôïí ðëçóéÝóôåñï óáò ðñïåðéëåãìÝíï äñïìïëïãçôÞ ãéá íá äñïìïëïãåßôå ôï õðïäßêôõï ôùí SLIP ðåëáôþí óáò äéáìÝóïõ ôïõ åîõðçñåôçôÞ SLIP. ÓôáôéêÝò ÄéáäñïìÝò static routes Ç ðñïóèÞêç óôáôéêþí äéáäñïìþí ðñïò ôïõò ðëçóéÝóôåñïõò óáò ðñïåðéëåãìÝíïõò äñïìïëïãçôÝò, ìðïñåß íá åßíáé ðñïâëçìáôéêÞ (Þ êáé áäýíáôç áí äåí Ý÷åôå ôá êáôÜëëçëá äéêáéþìáôá ðñüóâáóçò). Áí ç åôáéñßá óáò äéáèÝôåé äßêôõï ìå ðïëëáðëïýò äñïìïëïãçôÝò, êÜðïéá ìïíôÝëá (ð.÷. áðü ôçí Cisco êáé ôçí Proteon), åêôüò üôé ðñÝðåé íá ñõèìéóôïýí ìå ôçí óôáôéêÞ äéáäñïìÞ ðñïò ôï õðïäßêôõï SLIP, ðñÝðåé åðßóçò íá ñõèìéóôïýí ìå ôéò óôáôéêÝò äéáäñïìÝò ðïõ èá áíáöÝñïõí óôïõò Üëëïõò äñïìïëïãçôÝò. Èá ÷ñåéáóôåß íá ðåéñáìáôéóôåßôå êáé íá äïêéìÜóåôå äéÜöïñåò ñõèìßóåéò ãéá íá äïõëÝøåé ç äñïìïëüãçóç ìÝóù óôáôéêþí äéáäñïìþí. diff --git a/el_GR.ISO8859-7/books/handbook/printing/chapter.xml b/el_GR.ISO8859-7/books/handbook/printing/chapter.xml index d39064cba6..1f7db410d4 100644 --- a/el_GR.ISO8859-7/books/handbook/printing/chapter.xml +++ b/el_GR.ISO8859-7/books/handbook/printing/chapter.xml @@ -1,5266 +1,5229 @@ Sean Kelly ÓõíåéóöïñÜ áðü ôïí Jim Mock ÁíáäïìÞèçêå êáé áíáíåþèçêå áðü ôïí Åêôõðþóåéò Óýíïøç LPD óýóôçìá spooling åêôõðþóåéò Ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôï &os; ãéá íá êÜíåôå åêôõðþóåéò óå äéÜöïñïõò ôýðïõò åêôõðùôþí, áðü ôïí ðáëáéüôåñï êñïõóôéêü ùò ôïí ðéï óýã÷ñïíï laser åêôõðùôÞ, êáèþò êáé ïðïéáóäÞðïôå Üëëçò ôå÷íïëïãßáò áíÜìåóá ôïõò, êáé íá äçìéïõñãÞóåôå åêôõðþóåéò õøçëÞò ðïéüôçôáò ìå ôéò åöáñìïãÝò ðïõ åêôåëåßôå. Ôï &os; ìðïñåß åðßóçò íá ñõèìéóôåß þóôå íá ëåéôïõñãåß ùò åîõðçñåôçôÞò åêôõðþóåùí äéêôýïõ. Ìå áõôÞ ôç äõíáôüôçôá ôï &os; ìðïñåß íá ëáìâÜíåé åñãáóßåò åêôýðùóçò áðü äéÜöïñïõò Üëëïõò õðïëïãéóôÝò, óõìðåñéëáìâáíïìÝíùí õðïëïãéóôþí &os;, &windows; êáé &macos;. Ôï &os; ìðïñåß íá åîáóöáëßæåé üôé ìüíï ìéá åñãáóßá èá ôõðþíåôáé êÜèå ÷ñïíéêÞ óôéãìÞ êáé ìðïñåß íá ôçñåß óôáôéóôéêÜ ãéá ôïõò ÷ñÞóôåò êáé ôá ìç÷áíÞìáôá ðïõ èá êÜíïõí ôéò ðåñéóóüôåñåò åêôõðþóåéò, íá ðáñÜãåé óåëßäåò banner ðïõ íá äåß÷íïõí óå ðïéüí áíÞêåé ç êÜèå åêôýðùóç, êáé ðïëëÜ Üëëá. Áöïý äéáâÜóåôå áõôü ôï êåöÜëáéï èá îÝñåôå: Ðùò íá ñõèìßóåôå ôçí ïõñÜ åêôõðþóåùí (print spooler) ôïõ &os;. Ðùò íá åãêáèéóôÜôå ößëôñá åêôýðùóçò, íá ÷åéñßæåóôå åéäéêÝò åñãáóßåò åêôýðùóçò (ð.÷. ôç ìåôáôñïðÞ åéóåñ÷üìåíùí êåéìÝíùí óå ìïñöÝò åêôýðùóçò ðïõ åßíáé êáôáíïçôÝò áðü ôïõò åêôõðùôÝò óáò). Ðùò íá åíåñãïðïéÞóåôå óåëßäåò ôýðïõ êåöáëßäáò Þ banner óôéò åêôõðþóåéò óáò. Ðùò íá åêôõðþíåôå óå åêôõðùôÝò ðïõ åßíáé óõíäåäåìÝíïé óå Üëëïõò õðïëïãéóôÝò. Ðùò íá åêôõðþíåôå óå åêôõðùôÝò ðïõ åßíáé óõíäåäåìÝíïé áðåõèåßáò óôï äßêôõï. Ðùò íá åëÝã÷åôå ôïõò ðåñéïñéóìïýò åêôýðùóçò, óõìðåñéëáìâáíïìÝíùí ôùí ðåñéïñéóìþí ìåãÝèïõò ôùí åñãáóéþí åêôýðùóçò, êáé ðùò íá ðáñåìðïäßæåôå ôçí äõíáôüôçôá åêôýðùóçò óå óõãêåêñéìÝíïõò ÷ñÞóôåò. Ðùò íá êñáôÞóåôå óôáôéóôéêÜ ãéá ôïí åêôõðùôÞ, êáé êáôáãñáöÞ ãéá ôç ÷ñÞóç ôïõ åêôõðùôÞ áðü êÜèå ÷ñÞóôç. Ðùò íá áíôéìåôùðßóåôå ðñïâëÞìáôá óôéò åêôõðþóåéò. Ðñéí äéáâÜóåôå áõôü ôï êåöÜëáéï, èá ðñÝðåé: Íá ãíùñßæåôå ðùò íá ñõèìßóåôå êáé íá åãêáôáóôÞóåôå Ýíá íÝï ðõñÞíá (). ÅéóáãùãÞ Ãéá íá ÷ñçóéìïðïéÞóåôå åêôõðùôÝò óôï &os;, èá ÷ñåéáóôåß íá ñõèìßóåôå ôç ëåéôïõñãßá ôïõò ìå ôï óýóôçìá ðáñï÷Ýôåõóçò (spooling) åêôõðùôþí ãñáììÞò ôïõ Berkeley, ãíùóôü åðßóçò êáé ùò óýóôçìá ðáñï÷Ýôåõóçò LPD, Þ áðëÜ LPD. Áõôü åßíáé ôï ðñïêáèïñéóìÝíï óýóôçìá åëÝã÷ïõ åêôõðùôþí óôï &os;. Ôï êåöÜëáéï áõôü åßíáé ìéá åéóáãùãÞ óôï LPD êáé èá óáò êáèïäçãÞóåé óôéò ñõèìßóåéò ôïõ. ÅÜí óáò åßíáé ïéêåßï ôï LPD Þ êÜðïéï Üëëï óýóôçìá ðáñï÷Ýôåõóçò åêôõðùôþí, ôüôå ìðïñåßôå íá ìåôáðçäÞóåôå óôçí åíüôçôá ÂáóéêÞ ÅãêáôÜóôáóç. Ôï LPD ìðïñåß íá åëÝã÷åé åî' ïëïêëÞñïõ üëåò ôéò ëåéôïõñãßåò ôùí åêôõðùôþí åíüò õðïëïãéóôÞ. Åßíáé êõñßùò õðåýèõíï ãéá Ýíá ðëÞèïò ëåéôïõñãéþí: ÅëÝã÷åé ôçí ðñüóâáóç óå áðåõèåßáò óõíäåìÝíïõò åêôõðùôÝò êáé åêôõðùôÝò ðñïóáñôçìÝíïõò óå Üëëïõò êüìâïõò óôï äßêôõï. - åñãáóßåò åêôýðùóçò - ÅðéôñÝðåé óå ÷ñÞóôåò íá óôÝëíïõí áñ÷åßá ðñïò åêôýðùóç. Ïé áðïóôïëÝò áõôÝò åßíáé ãíùóôÝò ùò - åñãáóßåò (jobs). + åñãáóßåò (jobs)åñãáóßåò åêôýðùóçò. Äéáôçñåß ïõñÜ áíáìïíÞò (queue) ãéá êÜèå åêôõðùôÞ, þóôå íá ðñïëáìâÜíåé ôçí ôáõôü÷ñïíç ðñüóâáóç áðü ðïëëïýò ÷ñÞóôåò. Ìðïñåß íá åêôõðþíåé óåëßäåò êåöáëßäáò (ãíùóôÝò åðßóçò ùò banner Þ óåëßäåò burst) þóôå ïé ÷ñÞóôåò íá ìðïñïýí åýêïëá íá îå÷ùñßóïõí ôéò åñãáóßåò ôïõò ìÝóá óôçí óôïßâá åêôõðþóåùí. Öñïíôßæåé ãéá ôçí ïñèüôçôá ôùí ðáñáìÝôñùí åðéêïéíùíßáò ôùí åêôõðùôþí ðïõ åßíáé óõíäåäåìÝíïé óå óåéñéáêÝò èýñåò. Ìðïñåß ìÝóù ôïõ äéêôýïõ íá óôåßëåé åñãáóßåò óå óýóôçìá ðáñï÷Ýôåõóçò LPD äéáöïñåôéêïý õðïëïãéóôÞ. Ìðïñåß íá åêôåëÝóåé äéÜöïñá ößëôñá ãéá íá ðñïóáñìüóåé åñãáóßåò þóôå íá åßíáé äõíáôÞ ç åêôýðùóç ôïõò óå åêôõðùôÝò ðïõ ÷ñçóéìïðïéïýí äéáöïñåôéêÝò ãëþóóåò Þ Ý÷ïõí äéáöïñåôéêÝò äõíáôüôçôåò. Ìðïñåß íá êÜíåé êáôáìÝôñçóç ÷ñÞóçò ôïõ åêôõðùôÞ. ÌÝóù ôïõ áñ÷åßïõ ñýèìéóçò (/etc/printcap), êáé ìå ôç âïÞèåéá åéäéêþí ðñïãñáììÜôùí ößëôñùí, ìðïñåßôå íá åíåñãïðïéÞóåôå ôï óýóôçìá LPD íá êÜíåé üëåò Þ êÜðïéåò áðü ôéò ðáñáðÜíù åñãáóßåò óå ìéá ìåãÜëç ãêÜìá óõóêåõþí åêôýðùóçò. Ãéáôß èá ðñÝðåé íá ÷ñçóéìïðïéåßôå ôïí Spooler Áí åßóôå ï ìïíáäéêüò ÷ñÞóôçò ôïõ óõóôÞìáôïò, èá áíáñùôéÝóôå ãéáôß èá Ýðñåðå íá åíäéáöåñèåßôå ãéá ôïí spooler áöïý äåí ÷ñåéÜæåóôå Ýëåã÷ï ðñüóâáóçò, óåëßäåò êåöáëßäáò, Þ áíáöïñÝò åêôýðùóçò. Áí êáé ìðïñåßôå íá åíåñãïðïéÞóåôå ôçí Üìåóç ðñüóâáóç óôïí åêôõðùôÞ, åßíáé êáëýôåñá íá ÷ñçóéìïðïéåßôå ôïí spooler ãéá ôïõò ðáñáêÜôù ëüãïõò: ôï LPD åêôõðþíåé ôéò åñãáóßåò óôï ðáñáóêÞíéï, äåí ÷ñåéÜæåôáé íá ðåñéìÝíåôå íá áíôéãñáöïýí ôá äåäïìÝíá óôïí åêôõðùôÞ. - &tex; - Ôï LPD ìðïñåß Üíåôá íá åêôåëåß ìéá åñãáóßá åêôýðùóçò äéáìÝóïõ ößëôñùí êáé íá ðñïóèÝôåé êåöáëßäåò çìåñïìçíßáò/þñáò Þ íá ìåôáôñÝðåé êÜðïéï åéäéêü ôýðï áñ÷åßïõ - (üðùò Ýíá áñ÷åßï &tex; DVI) óå Ýíá ôýðï êáôáíïçôü áðü ôïí + (üðùò Ýíá áñ÷åßï &tex;&tex; DVI) óå Ýíá ôýðï êáôáíïçôü áðü ôïí åêôõðùôÞ óáò. ÁõôÝò ïé äéáäéêáóßåò äåí ÷ñåéÜæåôáé íá ãßíïíôáé ÷åéñïêßíçôá. ÐïëëÜ áðü ôá åëåýèåñá êáé åìðïñéêÜ äéáèÝóéìá ðñïãñÜììáôá ðïõ ðáñÝ÷ïõí äéåõêïëýíóåéò óôçí åêôýðùóç, óõíÞèùò åðéæçôïýí íá åðéêïéíùíÞóïõí ìå ôïí spooler ôïõ óõóôÞìáôïò óáò. Ñõèìßæïíôáò ôï óýóôçìá ðáñï÷Ýôåõóçò, èá ìðïñåßôå åõêïëüôåñá íá õðïóôçñßæåôå ëïãéóìéêü ôñßôùí, ðïõ ìðïñåß Þäç íá Ý÷åôå Þ ðïõ ðñüêåéôáé íá åãêáôáóôÞóåôå óôï ìÝëëïí. ÂáóéêÞ ÅãêáôÜóôáóç Áðü ôï &os; 8.0 êáé ìåôÜ, ôá áñ÷åßá óõóêåõþí ãéá ôéò óåéñéáêÝò èýñåò ìåôïíïìÜóôçêáí áðü /dev/ttydN óå /dev/ttyuN. Ïé ÷ñÞóôåò ôïõ &os; 7.X èá ðñÝðåé íá ðñïóáñìüóïõí ôçí ôåêìçñßùóç ðïõ áêïëïõèåß ìå âÜóç áõôÝò ôéò áëëáãÝò. Ãéá íá ÷ñçóéìïðïéÞóåôå åêôõðùôÝò ìå ôï óýóôçìá ðáñï÷Ýôåõóçò LPD, èá ðñÝðåé íá åãêáôáóôÞóåôå ôüóï ôï hardware ôïõ åêôõðùôÞ óáò üóï êáé ôï ëïãéóìéêü LPD. Áõôü ôï Ýããñáöï ðåñéãñÜöåé ôçí åãêáôÜóôáóç óå äýï óôÜäéá: Äåßôå ôçí åíüôçôá ÂáóéêÝò Ñõèìßóåéò Åêôõðùôþí ãéá íá ìÜèåôå ðùò ãßíåôáé ç óýíäåóç åêôõðùôþí, ìå ðïéï ôñüðï åðéêïéíùíåß ôï LPD ìå ôïõò åêôõðùôÝò, êáé ðùò íá åêôõðþíåôå áðëÜ áñ÷åßá êåéìÝíïõ. Äåßôå ôçí åíüôçôá Ñõèìßóåéò Åêôõðùôþí ãéá Ðñï÷ùñçìÝíïõò ãéá íá ìÜèåôå ðùò íá åêôõðþíåôå áñ÷åßá åéäéêÞò ìïñöÞò äéáöüñùí ôýðùí, ðùò íá åêôõðþíåôå óåëßäåò êåöáëßäáò, ðùò íá åêôõðþíåôå óå Ýíá äßêôõï, ðùò íá åëÝã÷åôå ôçí ðñüóâáóç óôïõò åêôõðùôÝò, êáé ðùò íá ÷ñçóéìïðïéåßôå ôçí êáôáãñáöÞ åêôõðþóåùí. ÂáóéêÝò Ñõèìßóåéò Åêôõðùôþí ÁõôÞ ç åíüôçôá ðåñéãñÜöåé ðùò íá ñõèìßóåôå ôï hardware ôïõ åêôõðùôÞ êáé ôï ëïãéóìéêü LPD. ÐáñÝ÷åé âáóéêÝò ãíþóåéò ãéá ôá åîÞò èÝìáôá: Ç Åíüôçôá Ñõèìßóåéò Hardware õðïäåéêíýåé ðùò íá óõíäÝóåôå ôïí åêôõðùôÞ óå ìéá èýñá ôïõ õðïëïãéóôÞ óáò. Ç Åíüôçôá Ñõèìßóåéò Ëïãéóìéêïý õðïäåéêíýåé ðùò íá åãêáôáóôÞóåôå ôï áñ÷åßï ñýèìéóçò ôïõ óõóôÞìáôïò ðáñï÷Ýôåõóçò LPD: ôï áñ÷åßï /etc/printcap. Áí ðñïóðáèåßôå íá åãêáôáóôÞóåôå Ýíáí åêôõðùôÞ ðïõ äÝ÷åôáé äåäïìÝíá ìÝóù ðñùôïêüëëïõ äéêôýïõ êáé ü÷é ìÝóù äéáóýíäåóçò ôïðéêÞò èýñáò, ôüôå äåßôå ôçí åíüôçôá ÅêôõðùôÝò Ìå ÓõíäÝóåéò Äéêôýïõ. Áí êáé áõôÞ ç åíüôçôá ïíïìÜæåôáé ÂáóéêÝò Ñõèìßóåéò Åêôõðùôþí, óôçí ðñáãìáôéêüôçôá åßíáé áñêåôÜ ðåñßðëïêç. Ôï äõóêïëüôåñï óôÜäéï óôçí åãêáôÜóôáóç åßíáé ç åðéôõ÷Þò ëåéôïõñãßá óôçí åðéêïéíùíßá ôïõ åêôõðùôÞ ìå ôïí õðïëïãéóôÞ óáò êáé ôï óýóôçìá ðáñï÷Ýôåõóçò LPD. Ïé åðéëïãÝò ãéá ðñï÷ùñçìÝíïõò, üðùò ïé óåëßäåò êåöáëßäáò êáé áíáöïñÜò åßíáé ó÷åôéêÜ åýêïëåò íá åðéôåõ÷èïýí, ìåôÜ ôçí åðéôõ÷Þ ñýèìéóç ôçò âáóéêÞò ëåéôïõñãßáò åêôýðùóçò. Ñõèìßóåéò Hardware ÁõôÞ ç åíüôçôá åîçãåß ôïõò äéÜöïñïõò ôñüðïõò óýíäåóçò ôïõ åêôõðùôÞ ìå ôïí õðïëïãéóôÞ óáò. ÐåñéãñÜöåé ôïõò äéÜöïñïõò ôýðïõò èõñþí êáé êáëùäßùí, êáé ôéò ñõèìßóåéò ðïõ ðñÝðåé íá êÜíåôå óôïí ðõñÞíá ãéá íá åíåñãïðïéÞóåôå ôçí åðéêïéíùíßá ìåôáîý &os; êáé åêôõðùôÞ. Áí Þäç Ý÷åôå êáôáöÝñåé íá óõíäÝóåôå ôïí åêôõðùôÞ óáò êáé Ý÷åôå åêôõðþóåé åðéôõ÷þò óå Üëëï ëåéôïõñãéêü óýóôçìá, ôüôå ìðïñåßôå íá ìåôáâåßôå êáôåõèåßáí óôçí åíüôçôá Ñõèìßóåéò Ëïãéóìéêïý. Èýñåò êáé Êáëþäéá Ïé åêôõðùôÝò ðïõ äéáôßèåíôáé óÞìåñá ãéá ÷ñÞóç ìå Ç/Õ ðáñÝ÷ïíôáé ìå ìßá Þ ðåñéóóüôåñåò åê ôùí áêïëïýèùí ôñéþí äéáóõíäÝóåùí: - - åêôõðùôÝò - óåéñéáêïß - - Ïé ÓåéñéáêÝò äéáóõíäÝóåéò, ãíùóôÝò + Ïé ÓåéñéáêÝòåêôõðùôÝòóåéñéáêïß äéáóõíäÝóåéò, ãíùóôÝò êáé ùò RS-232 Þ èýñåò COM, ÷ñçóéìïðïéïýí ôçí óåéñéáêÞ èýñá ôïõ õðïëïãéóôÞ óáò ãéá íá óôåßëïõí äåäïìÝíá óôïí åêôõðùôÞ. Ïé óåéñéáêÝò äéáóõíäÝóåéò åßíáé óõíÞèåéò óôçí âéïìç÷áíßá êáôáóêåõÞò Ç/Õ êáé ôá êáëþäéá åßíáé åêôåíþò äéáäåäïìÝíá êáé åðßóçò åýêïëá íá êáôáóêåõáóôïýí. Ïé óåéñéáêÝò äéáóõíäÝóåéò ìåñéêÝò öïñÝò ÷ñåéÜæïíôáé åéäéêÜ êáëþäéá êáé ìðïñåß íá óáò æçôçèïýí ðïëýðëïêåò åðéêïéíùíéáêÝò ñõèìßóåéò. Ïé ðåñéóóüôåñåò óåéñéáêÝò èýñåò ôùí Ç/Õ Ý÷ïõí ìÝãéóôç ôá÷ýôçôá ìåôÜäïóçò 115200 bps, êÜíïíôáò äýóêïëç ôçí åñãáóßá åêôýðùóçò ãñáöéêþí ìåãÜëùí äéáóôÜóåùí. - - åêôõðùôÝò - ðáñÜëëçëïé - - - Ïé ÐáñÜëëçëåò äéáóõíäÝóåéò + Ïé ÐáñÜëëçëåòåêôõðùôÝòðáñÜëëçëïé äéáóõíäÝóåéò ÷ñçóéìïðïéïýí ôçí ðáñÜëëçëç èýñá ôïõ õðïëïãéóôÞ óáò ãéá íá óôÝëíïõí äåäïìÝíá óôïí åêôõðùôÞ. Ïé ðáñÜëëçëåò äéáóõíäÝóåéò åßíáé äéáäåäïìÝíåò óôï åìðüñéï êáé åßíáé ãñçãïñüôåñåò áðü ôéò óåéñéáêÝò RS-232. Ôá êáëþäéá äéáôßèåíôáé Ýôïéìá, áëëÜ åßíáé äõóêïëüôåñï íá êáôáóêåõáóôïýí ÷åéñùíáêôéêÜ. Ìå ôéò ðáñÜëëçëåò äéáóõíäÝóåéò äåí ðñïâëÝðïíôáé åðéëïãÝò ñýèìéóçò åðéêïéíùíßáò, êÜíïíôáò ôçí ñýèìéóç ôïõò åîáéñåôéêÜ áðëÞ. - - centronics - ðáñÜëëçëïé åêôõðùôÝò - Ïé ðáñÜëëçëåò äéáóõíäÝóåéò åßíáé ãíùóôÝò êáé ùò - äéáóõíäÝóåéò Centronics, ïíïìáóßá ðñïåñ÷üìåíç + äéáóõíäÝóåéò CentronicscentronicsðáñÜëëçëïé åêôõðùôÝò, ïíïìáóßá ðñïåñ÷üìåíç áðü ôïí ôýðï ôïõ áêñïäÝêôç ôïõ åêôõðùôÞ. - - åêôõðùôÝò - USB - - - Ïé äéáóõíäÝóåéò USB, óõíôïìïãñáößá áðü ôï Universal + Ïé äéáóõíäÝóåéò USBåêôõðùôÝòUSB, óõíôïìïãñáößá áðü ôï Universal Serial Bus, äïõëåýïõí óå áêüìç ìåãáëýôåñåò ôá÷ýôçôåò áðü ôçí ðáñÜëëçëç êáé ôçí RS-232 óåéñéáêÞ äéáóýíäåóç. Ôá êáëþäéá ôïõò åßíáé áðëÜ êáé öôçíÜ. Ç USB åßíáé áíþôåñç áðü ôçí ÓåéñéáêÞ RS-232 êáé áðü ôçí ÐáñÜëëçëç óôçí åêôýðùóç, áëëÜ äõóôõ÷þò äåí õðïóôçñßæåôáé êáëÜ áðü ôá óõóôÞìáôá &unix;. ¸íáò ôñüðïò ãéá íá áðïöýãåôå áõôü ôï ðñüâëçìá åßíáé íá áãïñÜóåôå åêôõðùôÞ ðïõ öÝñåé äéáóýíäåóç USB êáé ÐáñÜëëçëç, üðùò óõìâáßíåé ìå ðïëëïýò åêôõðùôÝò. ÃåíéêÜ, ïé ÐáñÜëëçëåò äéáóõíäÝóåéò ðñïóöÝñïõí óõíÞèùò ìßáò êáôåýèõíóçò åðéêïéíùíßá (áðü ôïí õðïëïãéóôÞ óôïí åêôõðùôÞ) åíþ ç óåéñéáêÞ êáé ç USB äßíïõí áìößäñïìç. Óôï &os; ïé ðéï ðñüóöáôåò ðáñÜëëçëåò èýñåò (EPP êáé ECP) êáôáöÝñíïõí áìößäñïìç åðéêïéíùíßá ìå ôïõò åêôõðùôÝò, üôáí ÷ñçóéìïðïéïýíôáé êáëþäéá ðïõ óõììïñöþíïíôáé ìå ôï ðñüôõðï IEEE-1284. PostScript Ç áìößäñïìç åðéêïéíùíßá ìå åêôõðùôÝò äéáìÝóïõ ðáñÜëëçëçò èýñáò ìðïñåß íá åðéôåõ÷èåß ãåíéêÜ ìå äýï ôñüðïõò. Ï ðñþôïò ôñüðïò ÷ñçóéìïðïéåß Ýíá ðñïóáñìïóìÝíï ðñüãñáììá ïäÞãçóçò åêôõðùôÞ, þóôå íá ìðïñåß ôï &os; íá óõíïìéëåß óôçí ãëþóóá ôïõ åêôõðùôÞ. Áõôü åßíáé óýíçèåò ìå åêôõðùôÝò inkjet êáé ìðïñåß åðßóçò íá ÷ñçóéìïðïéçèåß ãéá áíáöïñÝò äéáèÝóéìçò ðïóüôçôáò ìåëáíéïý êáé ãéá Üëëåò ðëçñïöïñßåò ëåéôïõñãßáò. Ç äåýôåñç ìÝèïäïò ÷ñçóéìïðïéåßôáé üôáí ï åêôõðùôÞò Ý÷åé äõíáôüôçôá õðïóôÞñéîçò &postscript;. Ïé åñãáóßåò &postscript; åßíáé óôçí ðñáãìáôéêüôçôá ðñïãñÜììáôá ðïõ áðïóôÝëëïíôáé óôïí åêôõðùôÞ, äåí åßíáé áðáñáßôçôï íá ðáñÜãïõí åêôõðþóåéò, åíþ ìðïñïýí íá åðéóôñÝøïõí ôï áðïôÝëåóìá ôïõò áðåõèåßáò óôïí õðïëïãéóôÞ. Ôï &postscript; ÷ñçóéìïðïéåß áìößäñïìç åðéêïéíùíßá ãéá íá åíçìåñþóåé ôïí õðïëïãéóôÞ ãéá ôõ÷üí ðñïâëÞìáôá, üðùò óöÜëìáôá óôï ðñüãñáììá &postscript; Þ ìðëïêÜñéóìá ôñïöïäïóßáò ÷áñôéïý. Ïé ÷ñÞóôåò óáò, èá óáò åßíáé åõãíþìïíåò ãéá áõôÝò ôéò ðëçñïöïñßåò. ÅðéðëÝïí, ï êáëýôåñïò ôñüðïò ãéá íá êÜíåôå óùóôÞ êáôáìÝôñçóç ìå Ýíá áìößäñïìï åêôõðùôÞ &postscript; åßíáé: íá ñùôÞóåôå ôïí åêôõðùôÞ ãéá ôçí óõíïëéêÞ êáôáìÝôñçóç ôùí óåëßäùí ôïõ (ðüóåò óåëßäåò åêôýðùóå óå üëç ôç äéÜñêåéá æùÞò ôïõ), ìåôÜ íá áðïóôåßëåôå ôçí åñãáóßá ôïõ ÷ñÞóôç, êáé Ýðåéôá íá îáíáñùôÞóåôå ãéá ôçí êáôáìÝôñçóç ôùí óåëßäùí ôïõ. ÁöáéñÝóôå ôéò äýï ôéìÝò êáé èá ãíùñßæåôå ðüóåò óåëßäåò íá ÷ñåþóåôå óôïí ÷ñÞóôç. ÐáñÜëëçëåò Èýñåò Ãéá íá óõíäÝóåôå Ýíáí åêôõðùôÞ óå ðáñÜëëçëç èýñá, óõíäÝóôå ôï êáëþäéï Centronics ìåôáîý åêôõðùôÞ êáé õðïëïãéóôÞ. Ïé ïäçãßåò ðïõ óõíïäåýïõí ôïí åêôõðùôÞ êáé ôïí õðïëïãéóôÞ èá óáò êáèïäçãÞóïõí íá ïëïêëçñþóåôå ôçí óýíäåóç. Èõìçèåßôå ðïéá ðáñÜëëçëç èýñá ÷ñçóéìïðïéåßôå óôïí õðïëïãéóôÞ. Ç ðñþôç ðáñÜëëçëç èýñá óôï &os; åßíáé ç ppc0, ç äåýôåñç åßíáé ç ppc1, êáé ïýôù êáèåîÞò. Ôï üíïìá óõóêåõÞò ôïõ åêôõðùôÞ ÷ñçóéìïðïéåß ôçí ßäéá áñßèìçóç: /dev/lpt0 ãéá ôïí åêôõðùôÞ óôçí ðñþôç ðáñÜëëçëç èýñá ê.ô.ë. ÓåéñéáêÝò Èýñåò Ãéá íá óõíäÝóåôå Ýíáí åêôõðùôÞ ÷ñçóéìïðïéþíôáò óåéñéáêÞ äéáóýíäåóç, óõíäÝóôå ôï êáôÜëëçëï óåéñéáêü êáëþäéï ìåôáîý åêôõðùôÞ êáé õðïëïãéóôÞ. Ïé ïäçãßåò ðïõ óõíïäåýïõí ôïí åêôõðùôÞ êáé ôïí õðïëïãéóôÞ óáò, èá óáò êáèïäçãÞóïõí íá ïëïêëçñþóåôå ôçí óýíäåóç. Áí äåí åßóôå óßãïõñïé ðïéï åßíáé ôï êáôÜëëçëï óåéñéáêü êáëþäéï, ìðïñåßôå íá äïêéìÜóåôå ìßá áðü ôéò áêüëïõèåò åíáëëáêôéêÝò: ¸íá êáëþäéï modem åíþíåé êÜèå pin ôïõ áêñïäÝêôç áðü ôç ìéá ðëåõñÜ ôïõ êáëùäßïõ êáôåõèåßáí ìå ôï áíôßóôïé÷ï pin ôïõ áêñïäÝêôç óôï Üëëï Üêñï. Áõôüò ï ôýðïò êáëùäßïõ åßíáé ãíùóôüò êáé ùò êáëþäéï DTE-to-DCE. - null-modem cable - - ¸íá êáëþäéï null-modem åíþíåé + ¸íá êáëþäéï null-modemnull-modem cable åíþíåé êáôåõèåßáí ìåñéêÜ pins, áíôáëëÜóóåé ìåñéêÜ Üëëá (ãéá ðáñÜäåéãìá, ôá pins áðïóôïëÞò êáé ëÞøçò), åíþ âñá÷õêõêëþíåé ìåñéêÜ Üëëá, åóùôåñéêÜ, óôï ðñïóôáôåõôéêü êÜëõììá êÜèå áêñïäÝêôç. Áõôüò ï ôýðïò êáëùäßïõ åßíáé ãíùóôüò êáé ùò êáëþäéï DTE-to-DTE. ¸íá êáëþäéï óåéñéáêïý åêôõðùôÞ, ðïõ áðáéôåßôáé áðü êÜðïéïõò ëéãüôåñï óõíçèéóìÝíïõò åêôõðùôÝò, åßíáé óáí ôï êáëþäéï null-modem, áëëÜ óôÝëíåé éóïäýíáìá óÞìáôá êáé óôá äýï Üêñá áíôß íá ôá âñá÷õêõêëþíåé åóùôåñéêÜ. ñõèìüò baud éóïäõíáìßá ðñùôüêïëëï åëÝã÷ïõ ñïÞò Èá ðñÝðåé åðßóçò íá ñõèìßóåôå ôéò ðáñáìÝôñïõò åðéêïéíùíßáò ôïõ åêôõðùôÞ, óõíÞèùò áðü ôïí ìðñïóôéíü ðßíáêá åëÝã÷ïõ Þ áðü ôïõò DIP äéáêüðôåò ôïõ. ÅðéëÝîôå ôçí ìÝãéóôç ôéìÞ bps (bits per second = bits áíÜ äåõôåñüëåðôï, áíáöÝñåôáé êáé ùò ñõèìüò baud) ðïõ õðïóôçñßæïõí ï õðïëïãéóôÞò êáé ï åêôõðùôÞò óáò. ÅðéëÝîôå 7 Þ 8 data bits, none, even, Þ odd parity, êáé 1 Þ 2 stop bits. Åðßóçò åðéëÝîôå Ýíá ðñùôüêïëëï åëÝã÷ïõ ñïÞò: åßôå none, Þ XON/XOFF (áíáöÝñåôáé êáé ùò Ýëåã÷ïò ñïÞò in-band Þ software). Íá èõìÜóôå áõôÝò ôéò ñõèìßóåéò, ãéá ôï óôÜäéï ñýèìéóçò ëïãéóìéêïý ðïõ áêïëïõèåß. Ñõèìßóåéò Ëïãéóìéêïý ÁõôÞ ç åíüôçôá ðåñéãñÜöåé ôéò áíáãêáßåò ñõèìßóåéò ðïõ ðñÝðåé íá ãßíïõí óôï ëïãéóìéêü ãéá íá ìðïñåßôå íá åêôõðþíåôå ìå ôï óýóôçìá ðáñï÷Ýôåõóçò åêôõðùôþí LPD óôï &os;. Ìéá ãåíéêÞ Üðïøç ôùí åíåñãåéþí ðïõ ðñÝðåé íá áêïëïõèÞóåôå åßíáé: Ñõèìßóôå ôïí ðõñÞíá óáò, áí åßíáé áíáãêáßï, ãéá ôçí èýñá ðïõ ÷ñçóéìïðïéåßôå ãéá ôïí åêôõðùôÞ óáò. Ïé áðáñáßôçôåò ñõèìßóåéò ðåñéãñÜöïíôáé óôçí åíüôçôá Ñõèìßóåéò ÐõñÞíá. Ñõèìßóôå ôçí êáôÜóôáóç åðéêïéíùíßáò ãéá ôçí ðáñÜëëçëç èýñá, áí ðñüêåéôáé íá ôçí ÷ñçóéìïðïéÞóåôå. Ç åíüôçôá Ñõèìßóåéò ÊáôÜóôáóçò Åðéêïéíùíßáò ãéá ôçí ÐáñÜëëçëç Èýñá ðåñéÝ÷åé ëåðôïìÝñåéåò. ÅëÝãîôå áí ôï ëåéôïõñãéêü óýóôçìá ìðïñåß íá óôåßëåé äåäïìÝíá óôïí åêôõðùôÞ. Ç åíüôçôá ¸ëåã÷ïò Åðéêïéíùíßáò ôïõ ÅêôõðùôÞ ðáñÝ÷åé ìåñéêÝò óõìâïõëÝò ãéá ôï ðùò èá ìðïñïýóå íá ãßíåé ï Ýëåã÷ïò. Ñõèìßóôå ôï LPD ãéá ôïí åêôõðùôÞ óáò, ôñïðïðïéþíôáò ôï áñ÷åßï /etc/printcap. Èá âñåßôå ïäçãßåò ãéá áõôÝò ôéò ñõèìßóåéò óå åðüìåíï ôìÞìá áõôïý ôïõ êåöáëáßïõ. Ñõèìßóåéò ÐõñÞíá Ï ðõñÞíáò ôïõ ëåéôïõñãéêïý óõóôÞìáôïò Ý÷åé ìåôáãëùôôéóôåß Ýôóé þóôå íá äïõëåýåé ìå Ýíá óõãêåêñéìÝíï óýíïëï óõóêåõþí. Ç óåéñéáêÞ êáé ç ðáñÜëëçëç äéáóýíäåóç ôïõ åêôõðùôÞ åßíáé ìÝñïò áõôïý ôïõ óõíüëïõ. ÅðïìÝíùò, ßóùò íá åßíáé áíáãêáßï íá ðñïóèÝóåôå õðïóôÞñéîç ãéá êÜðïéá ðñüóèåôç óåéñéáêÞ Þ ðáñÜëëçëç èýñá, áí äåí åßíáé Þäç ñõèìéóìÝíç óôïí ðõñÞíá óáò. Ãéá íá åëÝãîåôå áí ï ðõñÞíáò óáò ìðïñåß íá õðïóôçñßîåé ìéá óåéñéáêÞ äéáóýíäåóç, ðëçêôñïëïãÞóôå: &prompt.root; grep sioN /var/run/dmesg.boot ¼ðïõ N åßíáé ï áñéèìüò ôçò óåéñéáêÞò èýñáò, îåêéíþíôáò áðü ôï ìçäÝí. Áí äåßôå óôçí Ýîïäï ôïõ ôåñìáôéêïý óáò êÜôé ðáñüìïéï ìå: sio2 at port 0x3e8-0x3ef irq 5 on isa sio2: type 16550A ôüôå ï ðõñÞíáò õðïóôçñßæåé áõôÞ ôç èýñá. Ãéá íá åëÝãîåôå áí ï ðõñÞíáò óáò õðïóôçñßæåé ðáñÜëëçëåò äéáóõíäÝóåéò, ðëçêôñïëïãÞóôå: &prompt.root; grep ppcN /var/run/dmesg.boot ¼ðïõ N åßíáé ï áñéèìüò ôçò ðáñÜëëçëçò èýñáò, îåêéíþíôáò áðü ôï ìçäÝí. Áí äåßôå óôçí Ýîïäï ôïõ ôåñìáôéêïý óáò êÜôé ðáñüìïéï ìå: ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0 ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode ppc0: FIFO with 16/16/8 bytes threshold ôüôå ï ðõñÞíáò õðïóôçñßæåé áõôÞ ôç èýñá. Ãéá íá ìðïñåß ôï ëåéôïõñãéêü óýóôçìá íá áíáãíùñßæåé êáé íá ÷ñçóéìïðïéåß ôçí èýñá (ðáñÜëëçëç Þ óåéñéáêÞ) ãéá ôïí åêôõðùôÞ óáò, ßóùò ÷ñåéáóôåß íá åðáíáðñïóáñìüóåôå ôïí ðõñÞíá óáò. Ãéá ôçí õðïóôÞñéîç óåéñéáêÞò èýñáò, äåßôå ôçí åíüôçôá óôéò ñõèìßóåéò ôïõ ðõñÞíá. Ãéá ôçí õðïóôÞñéîç ðáñÜëëçëçò èýñáò, äåßôå ôçí ßäéá åíüôçôá êáé ôçí åíüôçôá ðïõ áêïëïõèåß. Ñõèìßóåéò ÊáôÜóôáóçò Åðéêïéíùíßáò ãéá ôçí ÐáñÜëëçëç Èýñá ¼ôáí ÷ñçóéìïðïéåßôå ôçí ðáñÜëëçëç äéáóýíäåóç, ìðïñåßôå íá åðéëÝîåôå áí ç åðéêïéíùíßá ôïõ &os; ìå ôïí åêôõðùôÞ èá åßíáé ôýðïõ interrupt-driven Þ polled. Ï ãåíéêüò ïäçãüò óõóêåõÞò ôïõ åêôõðùôÞ (&man.lpt.4;) óôï &os; ÷ñçóéìïðïéåß ôï óýóôçìá &man.ppbus.4;, ôï ïðïßï åëÝã÷åé ôçí èýñá ôïõ chipset ìå ôïí ïäçãü &man.ppc.4;. Ç ìÝèïäïò interrupt-driven åßíáé ðñïåðéëåãìÝíç óôïí ðõñÞíá GENERIC. Ìå áõôÞ ôç ìÝèïäï, ôï ëåéôïõñãéêü óýóôçìá ÷ñçóéìïðïéåß Ýíá óÞìá IRQ ãéá íá ðñïóäéïñßóåé áí ï åêôõðùôÞò åßíáé Ýôïéìïò ãéá äåäïìÝíá. Ç ìÝèïäïò polled ïäçãåß ôï ëåéôïõñãéêü óýóôçìá íá æçôÜ êáôÜ åðáíÜëçøç áðü ôïí åêôõðùôÞ áí åßíáé Ýôïéìïò ãéá ðñüóèåôá äåäïìÝíá. ¼ôáí áðáíôÞóåé èåôéêÜ, ï ðõñÞíáò óôÝëíåé ðñüóèåôá äåäïìÝíá. Ç ìÝèïäïò interrupt-driven åßíáé óõíÞèùò êÜðùò ãñçãïñüôåñç áëëÜ ÷ñçóéìïðïéåß ìéá ðïëýôéìç ãñáììÞ IRQ. ¸÷åé ðáñáôçñçèåß ðùò êÜðïéïé óýã÷ñïíïé åêôõðùôÝò HP äå äïõëåýïõí óùóôÜ óå êáôÜóôáóç interrupt, ðéèáíþò ëüãù êÜðïéùí (ü÷é áðüëõôá åîáêñéâùìÝíùí) ðñïâëçìÜôùí óõã÷ñïíéóìïý. Áõôïß ïé åêôõðùôÝò ÷ñåéÜæïíôáé ôçí ìÝèïäï polled. Èá ðñÝðåé íá ÷ñçóéìïðïéåßôå ôçí áðïôåëåóìáôéêüôåñç êáôÜóôáóç ëåéôïõñãßáò. ÊÜðïéïé åêôõðùôÝò äïõëåýïõí êáé óôéò äõï êáôáóôÜóåéò, áëëÜ åßíáé ïäõíçñÜ áñãïß óôçí êáôÜóôáóç ëåéôïõñãßáò interrupt. Ìðïñåßôå íá ñõèìßóåôå ôçí êáôÜóôáóç åðéêïéíùíßáò ìå äýï ôñüðïõò: ñõèìßæïíôáò ôïí ðõñÞíá Þ ÷ñçóéìïðïéþíôáò ôï ðñüãñáììá &man.lptcontrol.8;. Ãéá íá èÝóåôå ôçí êáôÜóôáóç åðéêïéíùíßáò ñõèìßæïíôáò ôïí ðõñÞíá: Åðåîåñãáóôåßôå ôï áñ÷åßï ñýèìéóçò ôïõ ðõñÞíá. Äåßôå ôçí êáôá÷þñéóç ppc0. Áí åãêáèéóôÜôå ôçí äåýôåñç ðáñÜëëçëç èýñá, ôüôå ÷ñçóéìïðïéåßóôå ppc1. Ãéá ôçí ôñßôç èýñá ppc2 êáé ïýôù êáèåîÞò. Áí åðéèõìåßôå êáôÜóôáóç ëåéôïõñãßáò interrupt-driven, åðåîåñãáóôåßôå ôçí áêüëïõèç ãñáììÞ: hint.ppc.0.irq="N" óôï áñ÷åßï /boot/device.hints êáé áíôéêáôáóôÞóôå ôï N ìå ôïí óùóôü áñéèìü IRQ. Ôï áñ÷åßï ñýèìéóçò ôïõ ðõñÞíá ðñÝðåé åðßóçò íá ðåñéÝ÷åé ôïí ïäçãü &man.ppc.4;: device ppc Áí åðéèõìåßôå êáôÜóôáóç ëåéôïõñãßáò polled, äéáãñÜøôå áðü ôï áñ÷åßï /boot/device.hints, ôçí áêüëïõèç ãñáììÞ: hint.ppc.0.irq="N" Óå ìåñéêÝò ðåñéðôþóåéò, ôï ðáñáðÜíù äåí åßíáé áñêåôü ãéá íá èÝóåôå ôçí èýñá óå êáôÜóôáóç polled. Ôéò ðåñéóóüôåñåò öïñÝò ôï ðñüâëçìá ðñïÝñ÷åôáé áðü ôïí ïäçãü &man.acpi.4;, ï ïðïßïò Ý÷åé ôçí åõ÷Ýñåéá íá åîåôÜæåé êáé íá ðñïóáñôÜ óõóêåõÝò, êáé åðïìÝíùò, íá åëÝã÷åé ôïí ôñüðï ðñüóâáóçò óôçí èýñá ôïõ åêôõðùôÞ. Èá ðñÝðåé íá åëÝãîåôå ôéò ñõèìßóåéò ôïõ &man.acpi.4; ãéá íá äéïñèþóåôå áõôü ôï ðñüâëçìá. Áðïèçêåýóôå ôï áñ÷åßï. Ñõèìßóôå, ìåôáãëùôôßóôå, êáé åãêáôáóôÞóôå ôïí ðõñÞíá, êáé Ýðåéôá êÜíôå åðáíåêêßíçóç. Ãéá ðåñéóóüôåñåò ëåðôïìÝñåéåò, äåßôå ôéò ñõèìßóåéò ôïõ ðõñÞíá. Ãéá íá èÝóåôå ôçí êáôÜóôáóç åðéêïéíùíßáò ìå ôï &man.lptcontrol.8;: ÐëçêôñïëïãÞóôå: &prompt.root; lptcontrol /dev/lptN ãéá íá èÝóåôå ôçí êáôÜóôáóç ëåéôïõñãßáò interrupt-driven ãéá ôï lptN. ÐëçêôñïëïãÞóôå: &prompt.root; lptcontrol /dev/lptN ãéá íá èÝóåôå ôçí êáôÜóôáóç ëåéôïõñãßáò polled ãéá ôï lptN. Èá ìðïñïýóáôå íá êáôá÷ùñßóåôå áõôÝò ôéò åíôïëÝò óôï äéêü óáò áñ÷åßï /etc/rc.local. ¸ôóé èá åêôåëïýíôáé áõôüìáôá êáôÜ ôçí åêêßíçóç ôïõ óõóôÞìáôïò óáò. Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò äåßôå ôï &man.lptcontrol.8;. ¸ëåã÷ïò Åðéêïéíùíßáò ôïõ ÅêôõðùôÞ Ðñéí óõíå÷ßóïõìå íá ñõèìßæïõìå ôï óýóôçìá ðáñï÷Ýôåõóçò, èá ðñÝðåé íá âåâáéùèåßôå üôé ôï ëåéôïõñãéêü óýóôçìá ìðïñåß íá óôåßëåé åðéôõ÷þò äåäïìÝíá óôïí åêôõðùôÞ óáò. Åßíáé åõêïëüôåñï íá êÜíïõìå îå÷ùñéóôÜ ôçí áðïóöáëìÜôùóç åðéêïéíùíßáò ôïõ åêôõðùôÞ êáé ôçí áðïóöáëìÜôùóç ôïõ óõóôÞìáôïò ðáñï÷Ýôåõóçò. Èá åëÝãîïõìå ôïí åêôõðùôÞ óôÝëíïíôáò ìåñéêÜ äåäïìÝíá êåéìÝíïõ. Ãéá åêåßíïõò ôïõò åêôõðùôÝò ðïõ ìðïñïýí íá åêôõðþíïõí Üìåóá ôïõò ÷áñáêôÞñåò ðïõ Ý÷ïõí áðïóôáëåß, ôï ðñüãñáììá &man.lptest.1; åßíáé ôÝëåéï: ÐáñÜãåé üëïõò ôïõò åêôõðþóéìïõò ÷áñáêôÞñåò (96) ASCII óå 96 ãñáììÝò. PostScript Ãéá åêôõðùôÝò &postscript; (Þ ðïõ âáóßæïíôáé óå Üëëç ãëþóóá), èá ÷ñåéáóôåß íá êÜíïõìå Ýíá ðéï ðïëýðëïêï ôåóô. ¸íá ìéêñü ðñüãñáììá &postscript;, üðùò áõôü ðïõ áêïëïõèåß, åðáñêåß: %!PS 100 100 moveto 300 300 lineto stroke 310 310 moveto /Helvetica findfont 12 scalefont setfont (Is this thing working?) show showpage Ï ðáñáðÜíù êþäéêáò &postscript; ìðïñåß íá ôïðïèåôçèåß óå Ýíá áñ÷åßï êáé íá ÷ñçóéìïðïéçèåß üðùò õðïäåéêíýïõí ôá ðáñáäåßãìáôá óôéò áêüëïõèåò åíüôçôåò. PCL ¼ôáí áõôü ôï Ýããñáöï áíáöÝñåôáé óå ìéá ãëþóóá åêôõðùôÞ, åííïåßôáé ìéá ãëþóóá üðùò ç &postscript;, áëëÜ ü÷é ç PCL ôçò Hewlett Packard — ç PCL åßíáé ìéá ãëþóóá åõñåßáò ëåéôïõñãéêüôçôáò ç ïðïßá åðéôñÝðåé ôçí áíÜìéîç áðëïý êåéìÝíïõ ìå áêïëïõèßåò äéáöõãÞò. Ç &postscript; äåí ìðïñåß íá åêôõðþóåé Üìåóá áðëü êåßìåíï, êáé áõôüò åßíáé áêñéâþò ï ôýðïò ôçò ãëþóóáò åêôõðùôÞ ðïõ èá ðñÝðåé íá äéåõèåôÞóïõìå êáôÜëëçëá. ¸ëåã÷ïò ÐáñÜëëçëïõ ÅêôõðùôÞ åêôõðùôÝò ðáñÜëëçëç ÁõôÞ ç åíüôçôá õðïäåéêíýåé ðùò íá åëÝãîåôå áí ôï &os; ìðïñåß íá åðéêïéíùíÞóåé ìå Ýíáí åêôõðùôÞ óõíäåäåìÝíï óå ðáñÜëëçëç èýñá. Ãéá íá åëÝãîåôå Ýíáí åêôõðùôÞ óå ðáñÜëëçëç èýñá: Ãßíåôå root ìå &man.su.1;. Óôåßëôå äåäïìÝíá óôïí åêôõðùôÞ. Áí ï åêôõðùôÞò ìðïñåß íá åêôõðþóåé áðëü êåßìåíï, ôüôå ÷ñçóéìïðïéÞóôå ôï &man.lptest.1;. ÐëçêôñïëïãÞóôå: &prompt.root; lptest > /dev/lptN ¼ðïõ N åßíáé ï áñéèìüò ôçò ðáñÜëëçëçò èýñáò, îåêéíþíôáò áðü ôï ìçäÝí. ÅÜí ï åêôõðùôÞò êáôáëáâáßíåé &postscript; Þ êÜðïéá Üëëç ãëþóóá åêôõðùôþí, ôüôå óôåßëôå Ýíá ìéêñü ðñüãñáììá óôïí åêôõðùôÞ. ÐëçêôñïëïãÞóôå: &prompt.root; cat > /dev/lptN ¸ðåéôá ðëçêôñïëïãÞóôå ôï ðñüãñáììá ìßá ðñïò ìßá ãñáììÞ, ðñïóåêôéêÜ, ãéáôß äåí ìðïñåßôå íá åðåîåñãáóôåßôå ìéá ãñáììÞ áöüôïõ Ý÷åôå ðéÝóåé ôï ðëÞêôñï RETURN Þ ENTER. Áöïý ôåëåéþóåôå ìå ôçí êáôá÷þñéóç ôïõ ðñïãñÜììáôïò, ðéÝóôå CONTROL+D, Þ Üëëï ðëÞêôñï ôåñìáôéóìïý áñ÷åßïõ. ÅíáëëáêôéêÜ, ìðïñåßôå íá ôïðïèåôÞóåôå ôï ðñüãñáììá óå Ýíá áñ÷åßï êáé íá ðëçêôñïëïãÞóåôå: &prompt.root; cat file > /dev/lptN ¼ðïõ file åßíáé ôï üíïìá ôïõ áñ÷åßïõ ðïõ ðåñéÝ÷åé ôï ðñüãñáììá ðïõ èÝëåôå íá óôåßëåôå óôïí åêôõðùôÞ. Èá äåßôå êÜôé íá åêôõðþíåôáé. Ìçí áíçóõ÷åßôå áí ôï êåßìåíï äåí öáßíåôáé óùóôü. Èá ôï äéïñèþóïõìå áñãüôåñá. ¸ëåã÷ïò Óåéñéáêïý ÅêôõðùôÞ printers serial ÁõôÞ ç åíüôçôá õðïäåéêíýåé ðùò íá åëÝãîåôå áí ôï &os; ìðïñåß íá åðéêïéíùíÞóåé ìå Ýíáí åêôõðùôÞ óõíäåäåìÝíï óå óåéñéáêÞ èýñá. Ãéá íá åëÝãîåôå Ýíáí åêôõðùôÞ óå óåéñéáêÞ èýñá: Ãßíåôå root ìå &man.su.1;. Åðåîåñãáóôåßôå ôï áñ÷åßï /etc/remote. ÐñïóèÝóôå ôçí áêüëïõèç êáôá÷þñéóç: printer:dv=/dev/port:br#bps-rate:pa=parity bits-per-second serial port parity ¼ðïõ port åßíáé ç êáôá÷þñéóç óõóêåõÞò ãéá ôçí óåéñéáêÞ ðüñôá (ttyu0, ttyu1, êôë.), bps-rate åßíáé ç ôá÷ýôçôá bits-per-second åðéêïéíùíßáò ìå ôïí åêôõðùôÞ, êáé parity ç éóïôéìßá ðïõ áðáéôåßôáé áðü ôïí åêôõðùôÞ (even, odd, none, Þ zero). ÐáñáêÜôù öáßíåôáé Ýíá õðüäåéãìá êáôá÷þñéóçò, ãéá Ýíáí åêôõðùôÞ óõíäåäåìÝíï ìÝóù óåéñéáêÞò ãñáììÞò óôçí ôñßôç óåéñéáêÞ èýñá ìå ôá÷ýôçôá 19200 bps êáé ÷ùñßò parity: printer:dv=/dev/ttyu2:br#19200:pa=none Óõíäåèåßôå óôïí åêôõðùôÞ ìå &man.tip.1;. ÐëçêôñïëïãÞóôå: &prompt.root; tip printer Áí áõôü ôï óôÜäéï äåí äïõëåýåé, åðåîåñãáóôåßôå ðÜëé ôï áñ÷åßï /etc/remote êáé ðñïóðáèÞóôå ôï ÷ñçóéìïðïéþíôáò /dev/cuaaN áíôß ãéá /dev/ttyuN. Óôåßëôå äåäïìÝíá óôïí åêôõðùôÞ. Áí ï åêôõðùôÞò ìðïñåß íá åêôõðþóåé áðëü êåßìåíï, ÷ñçóéìïðïéÞóôå &man.lptest.1;. ÃñÜøôå: &prompt.user; $lptest ÅÜí ï åêôõðùôÞò êáôáëáâáßíåé &postscript; Þ êÜðïéá Üëëç ãëþóóá åêôõðùôþí, ôüôå óôåßëôå Ýíá ìéêñü ðñüãñáììá óôïí åêôõðùôÞ. ÐëçêôñïëïãÞóôå ôï ðñüãñáììá, ìßá ðñïò ìßá ãñáììÞ, ðïëý ðñïóåêôéêÜ, êáèþò ï åêôõðùôÞò ìðïñåß íá åñìçíåýåé äéáöïñåôéêÜ ôçí ÷ñÞóç ÷áñáêôÞñùí üðùò ôï backspace Þ Üëëùí ðïõ ðáñÜãïíôáé áðü äéÜöïñá ðëÞêôñá åðåîåñãáóßáò. Ìðïñåß åðßóçò íá ÷ñåéáóôåß íá ðëçêôñïëïãÞóåôå êÜðïéï åéäéêü ðëÞêôñï ôåñìáôéóìïý áñ÷åßïõ ãéá ôïí åêôõðùôÞ þóôå íá ãíùñßæåé ðüôå ïëïêëçñþíåôáé ôï ðñüãñáììá. Ãéá åêôõðùôÝò &postscript;, ðéÝóôå CONTROL+D. ÅíáëëáêôéêÜ, ìðïñåßôå íá ôïðïèåôÞóåôå ôï ðñüãñáììá óå Ýíá áñ÷åßï êáé íá ðëçêôñïëïãÞóåôå: &prompt.user; >file ¼ðïõ file åßíáé ôï üíïìá ôïõ áñ÷åßïõ ðïõ ðåñéÝ÷åé ôï ðñüãñáììá. Áöïý ôï &man.tip.1; óôåßëåé ôï áñ÷åßï, ðéÝóôå ôï êáôÜëëçëï ðëÞêôñï ôåñìáôéóìïý áñ÷åßïõ, áí áðáéôåßôáé. Èá äåßôå êÜôé íá åêôõðþíåôáé. Ìçí áíçóõ÷åßôå áí ôï êåßìåíï äåí öáßíåôáé óùóôü. Èá ôï äéïñèþóïõìå áñãüôåñá. Åíåñãïðïßçóç ôïõ Spooler: ôï Áñ÷åßï <filename>/etc/printcap</filename> Óå áõôü ôï óçìåßï, ï åêôõðùôÞò óáò èá ðñÝðåé íá åßíáé óõíäåìÝíïò, ï ðõñÞíáò óáò ñõèìéóìÝíïò íá åðéêïéíùíåß ìáæß ôïõ (áí ÷ñåéÜæåôáé), êáé Ý÷åôå ðåôý÷åé íá óôåßëåôå êÜðïéá äïêéìáóôéêÜ äåäïìÝíá óôïí åêôõðùôÞ. Åßóôå ôþñá Ýôïéìïé íá ñõèìßóåôå ôï LPD ãéá íá åëÝã÷åôå ôçí ðñüóâáóç óôïí åêôõðùôÞ óáò. Ìðïñåßôå íá ñõèìßóåôå ôï LPD ìå åðåîåñãáóßá ôïõ áñ÷åßïõ /etc/printcap. Ôï óýóôçìá ðáñï÷Ýôåõóçò LPD äéáâÜæåé áõôü ôï áñ÷åßï êÜèå öïñÜ ðïõ ÷ñçóéìïðïéåßôáé ï spooler, åðïìÝíùò ðéèáíÝò áíáâáèìßóåéò ôïõ ìðáßíïõí Üìåóá óå åöáñìïãÞ. åêôõðùôÝò éêáíüôçôåò Åßíáé åýêïëï íá êáôáíïÞóåôå ôçí ìïñöÞ ôïõ áñ÷åßïõ &man.printcap.5;. ×ñçóéìïðïéÞóôå ôïí êåéìåíïãñÜöï ðïõ ðñïôéìÜôå ãéá íá êÜíåôå áëëáãÝò óôï /etc/printcap. Ç ìïñöÞ ôïõ åßíáé ðáñüìïéá ìå Üëëá áñ÷åßá ðåñéãñáöÞò äõíáôïôÞôùí, üðùò ôá /usr/share/misc/termcap êáé /etc/remote. Äåßôå ôçí &man.cgetent.3; ãéá ëåðôïìåñåßò ðëçñïöïñßåò ó÷åôéêÜ ìå ôçí ìïñöÞ ôïõ áñ÷åßïõ. Ç ðéï áðëÞ ñýèìéóç ôïõ spooler áðïôåëåßôáé áðü ôá áêüëïõèá âÞìáôá: ÅðéëÝîôå Ýíá üíïìá (êáé ëßãá âïëéêÜ ðáñùíýìéá) ãéá ôïí åêôõðùôÞ, êáé ôïðïèåôÞóôå ôá óôï áñ÷åßï /etc/printcap. Äåßôå ôçí åíüôçôá Ïíïìáôïäüôçóç ÅêôõðùôÞ ãéá ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôçí ïíïìáóßá ôùí åêôõðùôþí. - óåëßäåò êåöáëßäáò - - ÁðåíåñãïðïéÞóôå ôéò óåëßäåò êåöáëßäáò (åßíáé åíåñãÝò áðü + ÁðåíåñãïðïéÞóôå ôéò óåëßäåò êåöáëßäáòóåëßäåò êåöáëßäáò (åßíáé åíåñãÝò áðü ðñïåðéëïãÞ) åéóÜãïíôáò ôçí éêáíüôçôá sh. Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò äåßôå ôçí åíüôçôá Ðáñåìðüäéóç Óåëßäùí Êåöáëßäáò. ÄçìéïõñãÞóôå Ýíá êáôÜëïãï ðáñï÷Ýôåõóçò, êáé êáèïñßóôå ôçí ôïðïèåóßá ôïõ ìå ôçí éêáíüôçôá sd. Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò äåßôå ôçí åíüôçôá Äçìéïõñãßá Êáôáëüãïõ Ðáñï÷Ýôåõóçò. Êáèïñßóôå ôçí êáôÜëëçëç êáôá÷þñéóç /dev ãéá ôïí åêôõðùôÞ, êáé óçìåéþóôå ôç óôï /etc/printcap ìå ôçí éêáíüôçôá lp. Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò, äåßôå ôçí åíüôçôá Áíáãíþñéóç ôçò ÓõóêåõÞò Åêôýðùóçò. Åðßóçò, áí ï åêôõðùôÞò åßíáé óå óåéñéáêÞ èýñá, åãêáôáóôÞóôå ôéò ðáñáìÝôñïõò åðéêïéíùíßáò ìå ôçí éêáíüôçôá ms# ç ïðïßá áíáëýåôáé óôçí åíüôçôá Ñõèìßóåéò ÐáñáìÝôñùí Åðéêïéíùíßáò ôïõ Spooler. ÅãêáôáóôÞóôå ößëôñá åéóüäïõ áðëïý êåéìÝíïõ. Äåßôå ôçí åíüôçôá ÅãêáôÜóôáóç Ößëôñïõ ÊåéìÝíïõ ãéá ðåñéóóüôåñåò ðëçñïöïñßåò. ÅëÝãîôå ôçí åãêáôÜóôáóç åêôõðþíïíôáò ïôéäÞðïôå ìå ôçí åíôïëÞ &man.lpr.1;. Ðåñéóóüôåñåò ðëçñïöïñßåò åßíáé äéáèÝóéìåò óôéò åíüôçôåò ÄïêéìÞ ôïõ Spooler êáé Åíôïðéóìüò Âëáâþí. ÅêôõðùôÝò ðïõ âáóßæïíôáé óå ãëþóóåò åêôýðùóçò, üðùò ïé åêôõðùôÝò &postscript;, äåí ìðïñïýí íá åêôõðþóïõí Üìåóá áðëü êåßìåíï. Ï áðëüò ôñüðïò ñýèìéóçò ðïõ äåßîáìå ðáñáðÜíù êáé ðïõ èá ðåñéãñÜøïõìå åêôåíÝóôåñá óôéò åðüìåíåò åíüôçôåò, ðñïûðïèÝôåé ðùò áí ñõèìßæåôå Ýíáí ôÝôïéï åêôõðùôÞ èá ìðïñåßôå íá åêôõðþóåôå ìüíïí áñ÷åßá ãñáììÝíá óôç ãëþóóá ôïõ. Ïé ÷ñÞóôåò óõíÞèùò íïìßæïõí ðùò ìðïñïýí íá åêôõðþóïõí áðëü êåßìåíï óå üëïõò ôïõò åêôõðùôÝò ðïõ åßíáé åãêáôåóôçìÝíïé óôï óýóôçìá ôïõò. Ôá ðñïãñÜììáôá ðïõ ÷ñçóéìïðïéïýí ôï LPD ãéá íá åêôõðþóïõí, êÜíïõí áêñéâþò ôçí ßäéá õðüèåóç. Áí ðñïóðáèåßôå íá åãêáôáóôÞóåôå Ýíáí ôÝôïéï åêôõðùôÞ êáé èÝëåôå íá ìðïñåßôå íá ôõðþíåôå åñãáóßåò óôçí ãëþóóá ôïõ åêôõðùôÞ áëëÜ êáé óå áðëü êåßìåíï, óáò óõíéóôïýìå íá ðñïóèÝóåôå Ýíá åðéðëÝïí âÞìá óôçí äéáäéêáóßá åãêáôÜóôáóçò ðïõ ðåñéãñÜøáìå ðáñáðÜíù: ÅãêáôáóôÞóôå Ýíá ðñüãñáììá áõôüìáôçò ìåôáôñïðÞò áðü áðëü êåßìåíï óå PostScript (Þ óå Üëëç ãëþóóá åêôõðùôÞ). Ç åíüôçôá Óõìâáôüôçôá Åñãáóéþí Áðëïý ÊåéìÝíïõ óå åêôõðùôÝò &postscript; åîçãåß ðùò íá åíåñãÞóåôå. Ïíïìáôïäüôçóç ÅêôõðùôÞ Ôï ðñþôï (åýêïëï) âÞìá åßíáé íá åðéëÝîåôå üíïìá ãéá ôïí åêôõðùôÞ óáò. Äåí Ý÷åé óçìáóßá áí èá ðñïôéìÞóåôå Ýíá ëåéôïõñãéêü Þ êÜðïéï åîùôéêü üíïìá áöïý ìðïñåßôå åðßóçò íá ðñïóèÝóåôå êáé ìåñéêÜ ðáñùíýìéá (aliases) ãéá ôïí ßäéï åêôõðùôÞ. ÔïõëÜ÷éóôïí Ýíáò áðü ôïõò åêôõðùôÝò ðïõ áíáöÝñïíôáé óôï /etc/printcap èá ðñÝðåé íá Ý÷åé ôï ðáñùíýìéï lp. ÁõôÞ åßíáé ç ïíïìáóßá ôïõ ðñïåðéëåãìÝíïõ åêôõðùôÞ. ÅÜí ïé ÷ñÞóôåò äåí Ý÷ïõí ôçí ìåôáâëçôÞ ðåñéâÜëëïíôïò PRINTER êáé äåí áíáöÝñïõí êÜðïéï üíïìá åêôõðùôÞ óôçí ãñáììÞ åíôïëþí ìå ïðïéáäÞðïôå åíôïëÞ LPD, ôüôå ï lp èá åßíáé ï ðñïåðéëåãìÝíïò åêôõðùôÞò ãéá ôéò åêôõðþóåéò ôïõò. Åðßóçò, åßíáé êïéíÞ ðñáêôéêÞ ôï ôåëåõôáßï alias ôïõ åêôõðùôÞ íá åßíáé ìéá ðëÞñçò ðåñéãñáöÞ ôïõ åêôõðùôÞ, ðïõ íá ðåñéëáìâÜíåé ôïí êáôáóêåõáóôÞ êáé ôï ìïíôÝëï. Áöïý åðéëÝîåôå ìéá ïíïìáóßá êáé ìåñéêÜ óõíÞèç ðáñùíýìéá, êáôá÷ùñßóôå ôá óôï áñ÷åßï /etc/printcap. Ôï üíïìá ôïõ åêôõðùôÞ èá ðñÝðåé íá áíáöÝñåôáé ðñþôï óôï áñéóôåñü Üêñï. Äéá÷ùñßóôå êÜèå ðáñùíýìéï ìå ìéá êÜèåôç ìðÜñá êáé ôïðïèåôÞóôå ìéá Üíù-êÜôù ôåëåßá ìåôÜ ôï ôåëåõôáßï ðáñùíýìéï. Óôï áêüëïõèï ðáñÜäåéãìá, îåêéíÜìå ìå Ýíá åíôåëþò âáóéêü /etc/printcap ðïõ ïñßæåé äýï åêôõðùôÝò (Ýíáí åêôõðùôÞ ãñáììÞò Diablo 630 êáé Ýíáí åêôõðùôÞ &postscript; laser Panasonic KX-P4455): # # /etc/printcap for host rose # rattan|line|diablo|lp|Diablo 630 Line Printer: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4: Óå áõôü ôï ðáñÜäåéãìá, ï ðñþôïò åêôõðùôÞò ïíïìÜæåôáé rattan êáé Ý÷åé ùò ðáñùíýìéá ôá line, diablo, lp, êáé Diablo 630 Line Printer. Áðü ôç óôéãìÞ ðïõ Ý÷åé ôï ðáñùíýìéï lp, åßíáé êáé ï ðñïåðéëåãìÝíïò åêôõðùôÞò. Ï äåýôåñïò ïíïìÜæåôáé bamboo, êáé Ý÷åé ùò ðáñùíýìéá ôá ps, PS, S, panasonic, êáé Panasonic KX-P4455 PostScript v51.4. Ðáñåìðüäéóç Óåëßäùí Êåöáëßäáò printing header pages Ôï óýóôçìá ðáñï÷Ýôåõóçò LPD, áðü ðñïåðéëïãÞ, åêôõðþíåé ìéá óåëßäá êåöáëßäáò ãéá êÜèå åñãáóßá. Ç óåëßäá êåöáëßäáò ðåñéëáìâÜíåé ôï üíïìá ÷ñÞóôç ðïõ áéôÞèçêå ôçí åñãáóßá, ôïí õðïëïãéóôÞ áðü ôïí ïðïßïí ðñïÞëèå ç åñãáóßá, êáé ôï üíïìá ôçò åñãáóßáò, ìå ìåãÜëïõò üìïñöïõò ÷áñáêôÞñåò. Äõóôõ÷þò áõôü ôï ðñüóèåôï êåßìåíï áêïëïõèåß ôçí äéáäéêáóßá áðïóöáëìÜôùóçò ôçò åãêáôÜóôáóçò åíüò áðëïý åêôõðùôÞ, åðïìÝíùò èá ðáñåìðïäßóïõìå ôéò óåëßäåò êåöáëßäáò. Ãéá ôçí ðáñåìðüäéóç ôùí óåëßäùí êåöáëßäáò, ðñïóèÝóôå ôçí éêáíüôçôá sh óôçí êáôá÷þñéóç ãéá ôïí åêôõðùôÞ óôï áñ÷åßï /etc/printcap. Åäþ âëÝðåôå Ýíá ðáñÜäåéãìá ôïõ /etc/printcap ìå ðñïóèÞêç ôçò sh: # # /etc/printcap for host rose - no header pages anywhere # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh: ÐáñáôçñÞóôå ðùò ÷åéñéóôÞêáìå óùóôÜ ôç ìïñöÞ: ç ðñþôç ãñáììÞ îåêéíÜ óôçí áñéóôåñÞ óôÞëç, êáé ïé áêüëïõèåò ãñáììÝò åßíáé óôïé÷éóìÝíåò (indented). ÊÜèå ãñáììÞ êáôá÷þñéóçò (åêôüò áðü ôçí ôåëåõôáßá) ôåëåéþíåé ìå ìéá áñéóôåñüóôñïöç êÜèåôï. Äçìéïõñãßá Êáôáëüãïõ Ðáñï÷Ýôåõóçò åêôõðùôÞò spool åêôýðùóç åñãáóßåò Ôï åðüìåíï âÞìá óôïí áðëü ôñüðï åãêáôÜóôáóçò åßíáé ç äçìéïõñãßá åíüò êáôáëüãïõ ðáñï÷Ýôåõóçò (spool), üðïõ èá öéëïîåíïýíôáé ïé åñãáóßåò åêôýðùóçò Ýùò üôïõ íá åêôõðùèïýí êáé üðïõ åðßóçò öõëÜóóïíôáé êáé êÜðïéá Üëëá âïçèçôéêÜ áñ÷åßá ôïõ óõóôÞìáôïò åêôýðùóçò. Ëüãù ôçò ìåôáâáëëüìåíçò öýóçò ôùí êáôáëüãùí ðáñï÷Ýôåõóçò, óõíçèßæåôáé íá ôïðïèåôïýíôáé êÜôù áðü ôïí êáôÜëïãï /var/spool. Äåí åßíáé áíáãêáßï íá ðáßñíåôå áíôßãñáöá áóöáëåßáò ôùí êáôáëüãùí ðáñï÷Ýôåõóçò. Ç åðáíáäçìéïõñãßá ôïõò åßíáé ôüóï áðëÞ üóï íá ôñÝîïõìå ôçí åíôïëÞ &man.mkdir.1;. Åßíáé åðßóçò óõíçèéóìÝíï íá ïíïìÜæåôáé ï êáôÜëïãïò ìå ôï ßäéï üíïìá ìå ôïí åêôõðùôÞ, üðùò öáßíåôáé ðáñáêÜôù: &prompt.root; mkdir /var/spool/printer-name Ùóôüóï, áí Ý÷åôå áñêåôïýò åêôõðùôÝò óôï äßêôõï, ßóùò åðéèõìåßôå íá ôïðïèåôÞóåôå ôïõò êáôáëüãïõò ðáñï÷Ýôåõóçò êÜôù áðü Ýíá ìïíáäéêü êáôÜëïãï ðïõ èá ÷ñçóéìïðïéåßôáé áðïêëåéóôéêÜ ãéá åêôõðþóåéò ìå ôï LPD. Èá êÜíïõìå áêñéâþò áõôü ãéá ôá ðáñáäåßãìáôá ìáò ìå ôïõò åêôõðùôÝò rattan êáé bamboo: &prompt.root; mkdir /var/spool/lpd &prompt.root; mkdir /var/spool/lpd/rattan &prompt.root; mkdir /var/spool/lpd/bamboo ÅÜí ïé åñãáóßåò ôùí ÷ñçóôþí ðåñéÝ÷ïõí ðñïóùðéêÜ äåäïìÝíá, ìðïñåß íá èÝëåôå íá ðñïóôáôÝøåôå ôïí êáôÜëïãï ðáñï÷Ýôåõóçò ìå êÜðïéï ôñüðï, þóôå íá ìçí åßíáé äçìüóéá ðñïóâÜóéìïò. Ïé êáôÜëïãïé ðáñï÷Ýôåõóçò èá ðñÝðåé íá áíÞêïõí êáé íá åßíáé áíáãíþóéìïé, åããñÜøéìïé êáé ìå äõíáôüôçôá áíáæÞôçóçò áðü ôïí ÷ñÞóôç daemon êáé áðü ôçí ïìÜäá daemon, áðü êáíÝíáí Üëëï. Ãéá ôïõò åêôõðùôÝò ôïõ ðáñáäåßãìáôïò: &prompt.root; chown daemon:daemon /var/spool/lpd/rattan &prompt.root; chown daemon:daemon /var/spool/lpd/bamboo &prompt.root; chmod 770 /var/spool/lpd/rattan &prompt.root; chmod 770 /var/spool/lpd/bamboo ÔÝëïò, ðñÝðåé íá åíçìåñþóåôå ôï LPD ãéá áõôïýò ôïõò êáôáëüãïõò ÷ñçóéìïðïéþíôáò ôï áñ÷åßï /etc/printcap. Ðñïóäéïñßóôå ôçí äéáäñïìÞ ôïõ êáôáëüãïõ ðáñï÷Ýôåõóçò ìå ôçí éêáíüôçôá sd: # # /etc/printcap for host rose - added spooling directories # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo: Óçìåéþóôå ðùò ôï üíïìá ôïõ åêôõðùôÞ îåêéíÜ óôçí ðñþôç óôÞëç, åíþ üëåò ïé Üëëåò êáôá÷ùñßóåéò ðïõ ðåñéãñÜöïõí ôïí åêôõðùôÞ èá ðñÝðåé íá åßíáé óôïé÷éóìÝíåò êáé êÜèå ôÝëïò ãñáììÞò íá öÝñåé ÷áñáêôÞñá äéáöõãÞò ìå áñéóôåñüóôñïöç êÜèåôï. ÅÜí äåí ðñïóäéïñßóåôå ôïí êáôÜëïãï ðáñï÷Ýôåõóçò ìÝóù ôïõ sd, ôüôå ôï óýóôçìá ðáñï÷Ýôåõóçò èá ÷ñçóéìïðïéÞóåé ôïí ðñïåðéëåãìÝíï /var/spool/lpd. Áíáãíþñéóç ôçò ÓõóêåõÞò Åêôýðùóçò Óôçí åíüôçôá Ñõèìßóåéò Hardware áíáãíùñßóáìå ôç èýñá, êáé êáôÜ óõíÝðåéá ôçí êáôá÷þñéóç ôïõ êáôáëüãïõ /dev ðïõ èá ÷ñçóéìïðïéÞóåé ôï &os; ãéá íá åðéêïéíùíÞóåé ìå ôïí åêôõðùôÞ. Ôþñá, èá äþóïõìå óôï LPD áõôÞ ôçí ðëçñïöïñßá. ¼ôáí ôï óýóôçìá ðáñï÷Ýôåõóçò Ý÷åé ìéá åñãáóßá íá åêôõðþóåé, èá áíïßîåé áõôÞ ôçí åéäéêÞ óõóêåõÞ ãéá ëïãáñéáóìü ôïõ ðñïãñÜììáôïò ößëôñïõ (ðïõ åßíáé õðåýèõíï ãéá ôï ðÝñáóìá ôùí äåäïìÝíùí óôïí åêôõðùôÞ). Ðñïóäéïñßóôå ôçí äéáäñïìÞ ôçò êáôá÷þñéóçò /dev óôï áñ÷åßï /etc/printcap ÷ñçóéìïðïéþíôáò ôçí éêáíüôçôá lp. Óôï ôñÝ÷ïí ðáñÜäåéãìá ìáò, áò õðïèÝóïõìå üôé ï rattan åßíáé óôçí ðñþôç ðáñÜëëçëç èýñá, êáé ï bamboo åßíáé óôçí Ýêôç óåéñéáêÞ ðüñôá. Ïé íÝåò êáôá÷ùñßóåéò óôï /etc/printcap èá åßíáé: # # /etc/printcap for host rose - identified what devices to use # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:\ :lp=/dev/ttyu5: Áí äåí êáèïñßóåôå óå êÜðïéïí åêôõðùôÞ ôçí éêáíüôçôá lp óôï áñ÷åßï /etc/printcap, ôï LPD ÷ñçóéìïðïéåß áðü ðñïåðéëïãÞ ôï /dev/lp. Ôï /dev/lp äåí õðÜñ÷åé ôçí äåäïìÝíç óôéãìÞ óôï &os;. ÅÜí ï åêôõðùôÞò ðïõ åãêáèéóôÜôå åßíáé óõíäåäåìÝíïò óå ðáñÜëëçëç èýñá, äéáâÜóôå áðåõèåßáò ôçí åíüôçôá ìå ôßôëï ÅãêáôÜóôáóç Ößëôñïõ ÊåéìÝíïõ. ÄéáöïñåôéêÜ, áêïëïõèÞóôå ðñïóåêôéêÜ ôéò ïäçãßåò ðïõ áêïëïõèïýí óôçí åðüìåíç åíüôçôá. Ñõèìßóåéò ÐáñáìÝôñùí Åðéêïéíùíßáò ôïõ Spooler åêôõðùôÝò óåéñéáêïß Ãéá åêôõðùôÝò óå óåéñéáêÞ ðüñôá, ôï LPD ìðïñåß íá ñõèìßóåé ôçí ôá÷ýôçôá óå bps, ôï parity, êáé Üëëåò ðáñáìÝôñïõò óåéñéáêÞò åðéêïéíùíßáò ãéá ëïãáñéáóìü ôïõ ðñïãñÜììáôïò ößëôñïõ ðïõ óôÝëíåé äåäïìÝíá óôïí åêôõðùôÞ. Áõôü åßíáé ðëåïíÝêôçìá ãéáôß: Óáò åðéôñÝðåé íá äïêéìÜóåôå äéÜöïñåò ðáñáìÝôñïõò åðéêïéíùíßáò ðñïóèÝôïíôáò ôéò áðëÜ ìå åðåîåñãáóßá ôïõ áñ÷åßïõ /etc/printcap. Äåí ÷ñåéÜæåôáé íá åðáíáìåôáãëùôôßóåôå ôï ðñüãñáììá ößëôñïõ. ÅðéôñÝðåé óôï óýóôçìá ðáñï÷Ýôåõóçò íá ÷ñçóéìïðïéåß ôï ßäéï ðñüãñáììá ãéá ðïëëáðëïýò åêôõðùôÝò, ïé ïðïßïé ìðïñåß íá Ý÷ïõí äéáöïñåôéêÝò óåéñéáêÝò ñõèìßóåéò åðéêïéíùíßáò. Ïé áêüëïõèåò éêáíüôçôåò ôïõ /etc/printcap åëÝã÷ïõí ôéò ðáñáìÝôñïõò óåéñéáêÞò åðéêïéíùíßáò ôùí óõóêåõþí ðïõ áíáöÝñïíôáé óôçí éêáíüôçôá lp: br#bps-rate Ïñßæåé ôçí ôá÷ýôçôá åðéêïéíùíßáò ôçò óõóêåõÞò óå bps-rate, üðïõ ôï bps-rate ìðïñåß íá åßíáé 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, Þ 115200 bits-per-second. ms#stty-mode Ïñßæåé ôéò åðéëïãÝò ôçò óõóêåõÞò ôåñìáôéêïý ìåôÜ ôï Üíïéãìá ôçò óõóêåõÞò. Ç &man.stty.1; åîçãåß ôéò äéáèÝóéìåò åðéëïãÝò. ¼ôáí ôï LPD áíïßãåé ôçí óõóêåõÞ ðïõ ïñßæåôáé áðü ôçí éêáíüôçôá lp, õéïèåôåß ôá ÷áñáêôçñéóôéêÜ ôçò óõóêåõÞò ìå éêáíüôçôá ms#. ¸÷ïõí éäéáßôåñï åíäéáöÝñïí ïé êáôáóôÜóåéò ëåéôïõñãßáò parenb, parodd, cs5, cs6, cs7, cs8, cstopb, crtscts, êáé ixon, ðïõ åîçãïýíôáé óôçí óåëßäá âïçèåßáò &man.stty.1;. Áò ðñïóèÝóïõìå óôï ðáñÜäåéãìá ìáò Ýíáí åêôõðùôÞ óôçí Ýêôç óåéñéáêÞ èýñá. Èá èÝóïõìå ôçí ôá÷ýôçôá bps óå 38400. Ãéá ôçí êáôÜóôáóç ëåéôïõñãßáò èá èÝóïõìå , no parity ìå -parenb, ÷áñáêôÞñåò 8-bit ìå cs8, no modem control ìå clocal êáé Ýëåã÷ï ñïÞò ìÝóù hardware ìå crtscts: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:\ :lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts: ÅãêáôÜóôáóç Ößëôñïõ ÊåéìÝíïõ åêôýðùóç ößëôñá Ôþñá åßìáóôå Ýôïéìïé íá ðïýìå óôï LPD ðïéï ößëôñï êåéìÝíïõ íá ÷ñçóéìïðïéÞóåé ãéá íá óôåßëåé åñãáóßåò óôïí åêôõðùôÞ. Ôï ößëôñï êåéìÝíïõ, ãíùóôü êáé ùò ößëôñï åéóüäïõ, åßíáé Ýíá ðñüãñáììá ðïõ åêôåëåß ôï LPD üôáí õðÜñ÷åé åñãáóßá ðñïò åêôýðùóç. ¼ôáí ôï LPD åêôåëåß ôï ößëôñï êåéìÝíïõ ãéá êÜðïéïí åêôõðùôÞ, èÝôåé ôçí standard input ôïõ ößëôñïõ óôçí åñãáóßá åêôýðùóçò, êáé ôçí standard output óôçí óõóêåõÞ ôïõ åêôõðùôÞ ðïõ ïñßæåôáé ìå ôçí éêáíüôçôá lp. Ôï ößëôñï áíáìÝíåôáé íá áíáãíþóåé ôçí åñãáóßá áðü ôçí standard input, íá åêôåëÝóåé üëåò ôéò áðáñáßôçôåò ìåôáãëùôôßóåéò ãéá ôïí åêôõðùôÞ, êáé íá ãñÜøåé ôï áðïôÝëåóìá óôçí standard output, ôï ïðïßï êáé èá åêôõðùèåß. Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò ãéá ôá ößëôñá êåéìÝíïõ, äåßôå ôçí åíüôçôá Ößëôñá. Ãéá ôçí áðëÞ åãêáôÜóôáóç ôùí åêôõðùôþí ìáò, ôï ößëôñï êåéìÝíïõ ìðïñåß íá åßíáé Ýíá ìéêñü shell script ðïõ áðëÜ èá åêôåëåß ôçí åíôïëÞ /bin/cat ãéá íá óôÝëíåé åñãáóßåò óôïí åêôõðùôÞ. Ôï &os; Ýñ÷åôáé ìå Üëëï Ýíá ößëôñï, ôï lpf ðïõ ÷åéñßæåôáé äõíáôüôçôåò backspacing êáé õðïãñÜììéóçò ãéá åêôõðùôÝò ðïõ ßóùò íá ìçí ÷åéñßæïíôáé óùóôÜ áõôÝò ôéò ëåéôïõñãßåò. Êáé öõóéêÜ, ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ïðïéïäÞðïôå Üëëï ðñüãñáììá ößëôñïõ åðéèõìåßôå. Ôï ößëôñï lpf ðåñéãñÜöåôáé ëåðôïìåñþò óôçí åíüôçôá lpf: Ýíá Ößëôñï ÊåéìÝíïõ. Èá îåêéíÞóïõìå äçìéïõñãþíôáò ôï shell script /usr/local/libexec/if-simple óáí Ýíá áðëü ößëôñï êåéìÝíïõ. ÔïðïèåôÞóôå ôï áêüëïõèï êåßìåíï óôï áñ÷åßï ÷ñçóéìïðïéþíôáò ôïí êåéìåíïãñÜöï ðïõ ðñïôéìÜôå: #!/bin/sh # # if-simple - Simple text input filter for lpd # Installed in /usr/local/libexec/if-simple # # Simply copies stdin to stdout. Ignores all filter arguments. /bin/cat && exit 0 exit 2 ÊÜíôå ôï áñ÷åßï åêôåëÝóéìï: &prompt.root; chmod 555 /usr/local/libexec/if-simple Êáé åíçìåñþóôå ôï LPD íá ôï ÷ñçóéìïðïéÞóåé, ïñßæïíôáò ôï ìå ôçí éêáíüôçôá if óôï áñ÷åßï /etc/printcap. Èá ôï ðñïóèÝóïõìå óôïõò äýï åêôõðùôÝò áðü ôï ðñïçãïýìåíï ðáñÜäåéãìá óôï /etc/printcap: # # /etc/printcap for host rose - added text filter # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:\ :lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:\ :if=/usr/local/libexec/if-simple: Ìðïñåßôå íá âñåßôå Ýíá áíôßãñáöï ôïõ script if-simple óôïí êáôÜëïãï /usr/share/examples/printing. Åíåñãïðïßçóç ôïõ <application>LPD</application> Ôï &man.lpd.8; åêôåëåßôáé áðü ôï /etc/rc, êáé åëÝã÷åôáé áðü ôçí ìåôáâëçôÞ lpd_enable. Ç ìåôáâëçôÞ áõôÞ Ý÷åé ðñïåðéëåãìÝíç ôéìÞ NO. Áí äåí ôï Ý÷åôå êÜíåé áêüìá, ðñïóèÝóôå ôçí áêüëïõèç ãñáììÞ: lpd_enable="YES" óôï áñ÷åßï /etc/rc.conf, êáé åðáíåêêéíÞóôå ôï óýóôçìá óáò, Þ áðëÜ åêôåëÝóôå ôï &man.lpd.8;. &prompt.root; lpd ÄïêéìÞ ôïõ Spooler ÖôÜóáôå óôï ôÝëïò ôçò áðëÞò åãêáôÜóôáóçò ôïõ LPD. Èá áöÞóïõìå ãéá áñãüôåñá ôá óõã÷áñçôÞñéá, áöïý áêüìç èá ðñÝðåé íá åëÝãîïõìå ôçí åãêáôÜóôáóç êáé íá äéïñèþóïõìå ïðïéïäÞðïôå ðñüâëçìá Ý÷åé ðñïêýøåé. Ãéá íá åëÝãîåôå ôçí åãêáôÜóôáóç ðñïóðáèÞóôå íá åêôõðþóåôå êÜôé. Ãéá íá åêôõðþóåôå ìå ôï óýóôçìá LPD, ÷ñçóéìïðïéÞóôå ôçí åíôïëÞ &man.lpr.1;, ç ïðïßá áðïóôÝëëåé ìßá åñãáóßá ðñïò åêôýðùóç. Ìðïñåßôå íá óõíäõÜóåôå ôçí &man.lpr.1; ìå ôï ðñüãñáììá &man.lptest.1;, ãéá ôï ïðïßï êÜíáìå ìéá åéóáãùãÞ óôçí åíüôçôá ¸ëåã÷ïò Åðéêïéíùíßáò ôïõ ÅêôõðùôÞ, ãéá ôïí Ýëåã÷ï êåéìÝíïõ. Ãéá ôïí Ýëåã÷ï ìéáò áðëÞò åãêáôÜóôáóçò LPD: ÐëçêôñïëïãÞóôå: &prompt.root; lptest 20 5 | lpr printer-name ¼ðïõ printer-name åßíáé ôï üíïìá åíüò åêôõðùôÞ (Þ ôï alias) ðïõ áíáöÝñåôáé óôï /etc/printcap. Ãéá íá åëÝãîåôå ôïí ðñïåðéëåãìÝíï åêôõðùôÞ, ðëçêôñïëïãÞóôå &man.lpr.1; ÷ùñßò ôï ðñüèåìá . Áí ï åêôõðùôÞò óáò ÷ñçóéìïðïéåß &postscript;, ðñÝðåé íá óôåßëåôå Ýíá ðñüãñáììá &postscript;, áíôß íá ÷ñçóéìïðïéÞóåôå ôï &man.lptest.1;. Ãéá íá ôá êáôáöÝñåôå, ôïðïèåôÞóôå ôï ðñüãñáììá óå Ýíá áñ÷åßï êáé ðëçêôñïëïãÞóôå lpr file. Óå Ýíáí åêôõðùôÞ &postscript;, ç åêôýðùóç èá åßíáé ôï áðïôÝëåóìá ôïõ ðñïãñÜììáôïò ðïõ óôåßëáôå. Áí ÷ñçóéìïðïéåßôå ôï &man.lptest.1;, ôüôå ôï áðïôÝëåóìá èá ìïéÜæåé ìå ôï áêüëïõèï: !"#$%&'()*+,-./01234 "#$%&'()*+,-./012345 #$%&'()*+,-./0123456 $%&'()*+,-./01234567 %&'()*+,-./012345678 Ãéá ðåñáéôÝñù Ýëåã÷ï ôïõ åêôõðùôÞ, äïêéìÜóôå íá êáôåâÜóåôå ìåãáëýôåñá ðñïãñÜììáôá (ãéá åêôõðùôÝò ðïõ ÷ñçóéìïðïéïýí ãëþóóá ðñïãñáììáôéóìïý) Þ ôñÝîôå ôï &man.lptest.1; ìå äéáöïñåôéêÜ ðñïèÝìáôá. Ãéá ðáñÜäåéãìá, ç åíôïëÞ lptest 80 60 èá ðáñÜãåé 60 ãñáììÝò ôùí 80 ÷áñáêôÞñùí ç êáèåìßá. Áí ï åêôõðùôÞò äåí äïõëåýåé, äåßôå ôçí åíüôçôá Åíôïðéóìüò Âëáâþí. Ñõèìßóåéò Åêôõðùôþí ãéá Ðñï÷ùñçìÝíïõò Áðü ôï &os; 8.0 êáé ìåôÜ, ôá áñ÷åßá óõóêåõþí ãéá ôéò óåéñéáêÝò èýñåò ìåôïíïìÜóôçêáí áðü /dev/ttydN óå /dev/ttyuN. Ïé ÷ñÞóôåò ôïõ &os; 7.X èá ðñÝðåé íá ðñïóáñìüóïõí ôçí ôåêìçñßùóç ðïõ áêïëïõèåß ìå âÜóç áõôÝò ôéò áëëáãÝò. ÁõôÞ ç åíüôçôá ðåñéãñÜöåé ößëôñá ãéá ôçí åêôýðùóç åéäéêÞò ìïñöÞò áñ÷åßùí, óåëßäùí êåöáëßäáò, ãéá åêôõðþóåéò ìÝóù äéêôýïõ, êáèþò êáé ãéá ôïí Ýëåã÷ï ðñüóâáóçò êáé ôçí êáôáìÝôñçóç ÷ñÞóçò ôùí åêôõðùôþí. Ößëôñá åêôýðùóç ößëôñá Áí êáé ôï LPD ìðïñåß íá ÷åéñéóôåß ðñùôüêïëëá äéêôýùí, ëßóôåò áíáìïíÞò, Ýëåã÷ï ðñüóâáóçò, êáé Üëëåò ðáñáìÝôñïõò ôùí åêôõðþóåùí, ôï êýñéï ìÝñïò ôçò ðñáãìáôéêÞò åñãáóßáò ãßíåôáé ìå ôá ößëôñá. Ôá ößëôñá åßíáé ðñïãñÜììáôá ðïõ åðéêïéíùíïýí ìå ôïí åêôõðùôÞ êáé ÷åéñßæïíôáé ôéò åîáñôÞóåéò ôçò óõóêåõÞò êáé Üëëåò åéäéêÝò áðáéôÞóåéò ôçò. Óôçí áðëÞ åãêáôÜóôáóç åêôõðùôÞ, åãêáôáóôÞóáìå Ýíá ößëôñï áðëïý êåéìÝíïõ éäéáßôåñá áðëÞò ìïñöÞò, ðïõ èá ðñÝðåé íá äïõëåýåé ìå ôïõò ðåñéóóüôåñïõò åêôõðùôÝò (åíüôçôá ÅãêáôÜóôáóç Ößëôñïõ ÊåéìÝíïõ). Ùóôüóï, ãéá íá ìðïñÝóåôå íá åêìåôáëëåõôåßôå ôéò äõíáôüôçôåò ìåôáôñïðþí ìïñöÞò, åëÝã÷ïõ ðñüóâáóçò êáé êáôáìÝôñçóçò, êáé ôõ÷üí åéäéêÝò äõíáôüôçôåò ôïõ åêôõðùôÞ óáò, èá ðñÝðåé íá êáôáëÜâåôå ðùò äïõëåýïõí ôá ößëôñá. Óå ôåëéêÞ áíÜëõóç, èá åßíáé åõèýíç ôùí ößëôñùí íá ÷åéñßæïíôáé üëåò áõôÝò ôéò ðáñáìÝôñïõò. Ôá êáêÜ íÝá åßíáé ðùò ôéò ðåñéóóüôåñåò öïñÝò èá ðñÝðåé íá ðáñÝ÷åôå åóåßò ïé ßäéïé ôá ößëôñá óáò. Ôá êáëÜ íÝá åßíáé ðùò ãåíéêþò õðÜñ÷ïõí áñêåôÜ äéáèÝóéìá, êáé áí äåí õðÜñ÷ïõí, åßíáé ó÷åôéêÜ åýêïëï íá ôá ãñÜøåôå. Åðßóçò, ôï &os; äéáôßèåôáé ìå Ýíá ößëôñï, ôï /usr/libexec/lpr/lpf, ðïõ äïõëåýåé ìå ðïëëïýò åêôõðùôÝò ðïõ ìðïñïýí íá åêôõðþóïõí áðëü êåßìåíï. (×åéñßæåôáé backspacing êáé tabs óôï áñ÷åßï, êáé êÜíåé êáôáìÝôñçóç, áëëÜ ôßðïôá ðåñéóóüôåñï.) ÕðÜñ÷ïõí, åðßóçò, äéÜöïñá Üëëá ößëôñá êáé óõóôáôéêÜ ôïõò óôçí ÓõëëïãÞ ôùí Ports ôïõ &os;. Óå áõôÞ ôçí åíüôçôá èá âñåßôå: : Ç åíüôçôá Ðùò äïõëåýïõí ôá Ößëôñá, ðñïóðáèåß íá äþóåé ìéá ãåíéêÞ Üðïøç ãéá ôéò áñìïäéüôçôåò ôùí ößëôñùí óôéò äéåñãáóßåò åêôýðùóçò. Èá ðñÝðåé íá äéáâÜóåôå áõôÞ ôçí åíüôçôá ãéá íá ìðïñåßôå íá êáôáëÜâåôå ôé ðñáãìáôéêÜ óõìâáßíåé üôáí ôï LPD ÷ñçóéìïðïéåß ößëôñá. ÁõôÝò ïé ãíþóåéò èá óáò âïçèÞóïõí íá ðñïëáìâÜíåôå êáé íá áðïóöáëìáôþíåôå ðñïâëÞìáôá ðïõ ìðïñïýí íá óõìâïýí êáèþò åãêáèéóôÜôå üëï êáé ðåñéóóüôåñá ößëôñá óå êÜèå åêôõðùôÞ óáò. Ôï LPD áíáìÝíåé ðùò êÜèå åêôõðùôÞò åßíáé éêáíüò, áðü ðñïåðéëïãÞ, íá åêôõðþóåé áðëü êåßìåíï. Áõôü üìùò åßíáé ðñüâëçìá ãéá åêôõðùôÝò &postscript; (Þ Üëëïõò ðïõ âáóßæïíôáé óå ãëþóóåò ðñïãñáììáôéóìïý) ïé ïðïßïé äåí ìðïñïýí íá åêôõðþóïõí Üìåóá áðëü êåßìåíï. Ç åíüôçôá Óõìâáôüôçôá Åñãáóéþí Áðëïý ÊåéìÝíïõ óå åêôõðùôÝò &postscript; óáò åîçãåß ôé èá ðñÝðåé íá êÜíåôå ãéá íá îåðåñÜóåôå áõôü ôï ðñüâëçìá. Èá ðñÝðåé íá äéáâÜóåôå áõôÞ ôçí åíüôçôá áí Ý÷åôå åêôõðùôÞ &postscript;. Ôï &postscript; åßíáé äçìïöéëÞò ìïñöÞ åîüäïõ ãéá ðïëëÜ ðñïãñÜììáôá. Ìåñéêïß Üíèñùðïé ðñïôéìïýí êáé íá ãñÜöïõí êáôåõèåßáí óå êþäéêá &postscript;. Äõóôõ÷þò, ïé åêôõðùôÝò &postscript; Ý÷ïõí ìåãÜëï êüóôïò. Ç åíüôçôá Ðñïóïìïßùóç &postscript; ãéá åêôõðùôÝò ðïõ äåí ôï õðïóôçñßæïõí åîçãåß ëåðôïìåñþò ðùò íá ìåôáôñÝøåôå Ýíá ößëôñï êåéìÝíïõ ãéá åêôõðùôÝò þóôå íá ëáìâÜíåé êáé íá ôõðþíåé äåäïìÝíá &postscript; óå åêôõðùôÝò ðïõ äåí åßíáé &postscript;. Èá ðñÝðåé íá äéáâÜóåôå áõôÞí ôçí åíüôçôá áí åßóôå êÜôï÷ïò åêôõðùôÞ ðïõ äåí õðïóôçñßæåé &postscript;. Ç åíüôçôá Ößëôñá ÌåôáôñïðÞò ðåñéãñÜöåé ìéá áõôïìáôïðïéçìÝíç äéáäéêáóßá ãéá ôçí ìåôáôñïðÞ áñ÷åßùí åéäéêÞò ìïñöÞò, üðùò äåäïìÝíá ãñáöéêþí Þ óôïé÷åéïèåóßáò, óå ìéá ìïñöÞ êáôáíïçôÞ áðü ôïí åêôõðùôÞ óáò. ÌåôÜ ôçí áíÜãíùóç áõôÞò ôçò åíüôçôáò, èá ðñÝðåé íá åßóôå óå èÝóç íá ñõèìßóåôå ôïõò åêôõðùôÝò óáò ìå ôÝôïéï ôñüðï þóôå ðëçêôñïëïãþíôáò lpr ïé ÷ñÞóôåò óáò íá ìðïñïýí íá åêôõðþóïõí äåäïìÝíá troff, Þ ìå lpr äåäïìÝíá &tex; DVI, Þ ìå lpr íá åêôõðþíïõí åéêüíåò äåäïìÝíùí ñÜóôåñ, êáé ïýôù êáèåîÞò. Óáò óõìâïõëåýïõìå íá äéáâÜóåôå áõôÞ ôçí åíüôçôá. Ç åíüôçôá Ößëôñá Åîüäïõ ðåñéãñÜöåé Ýíá ÷áñáêôçñéóôéêü ôïõ LPD ðïõ äåí ÷ñçóéìïðïéåßôáé óõ÷íÜ: ôá ößëôñá åîüäïõ. Ìðïñåßôå íá ðñïóðåñÜóåôå áõôÞ ôçí åíüôçôá, åêôüò áí ôõðþíåôå óåëßäåò êåöáëßäáò (äåßôå ôéò Óåëßäåò Êåöáëßäáò). Ç åíüôçôá lpf: Ýíá Ößëôñï ÊåéìÝíïõ ðåñéãñÜöåé ôï lpf, Ýíá ðñáãìáôéêÜ ðëÞñåò, áí êáé áðëü, ößëôñï êåéìÝíïõ ãéá åêôõðùôÝò ãñáììÞò (êáé åêôõðùôÝò laser ðïõ ìðïñïýí íá ëåéôïõñãÞóïõí êáé ùò åêôõðùôÝò ãñáììÞò) ðïõ ðåñéÝ÷åôáé óôï &os;. Áí ÷ñåéÜæåóôå Ýíá ãñÞãïñï ôñüðï ãéá íá êÜíåôå ôçí êáôáìÝôñçóç óåëßäùí íá äïõëåýåé óå áðëü êåßìåíï, Þ áí Ý÷åôå êÜðïéïí åêôõðùôÞ ðïõ âãÜæåé êáðíïýò üôáí âëÝðåé ÷áñáêôÞñåò backspace, èá ðñÝðåé ïðùóäÞðïôå íá åîåôÜóåôå ôçí ðåñßðôùóç ôïõ lpf. Ìðïñåßôå íá âñåßôå áíôßãñáöï ôùí äéÜöïñùí scripts ðïõ áíáöÝñïíôáé ðáñáêÜôù, óôïí êáôÜëïãï /usr/share/examples/printing. Ðùò Äïõëåýïõí ôá Ößëôñá ¼ðùò áíáöÝñáìå ðñïçãïõìÝíùò, ößëôñï åßíáé Ýíá åêôåëÝóéìï ðñüãñáììá ðïõ åíåñãïðïéåßôáé áðü ôï LPD ãéá íá ÷åéñßæåôáé ôï ôìÞìá ôçò åðéêïéíùíßáò ìå ôïí åêôõðùôÞ ðïõ åîáñôÜôáé áðü ôïí ôýðï ôçò ßäéáò ôçò óõóêåõÞò. ¼ôáí ôï LPD èÝëåé íá åêôõðþóåé Ýíá áñ÷åßï ìéáò åñãáóßáò, îåêéíÜ ôï ðñüãñáììá ôïõ ößëôñïõ. ÈÝôåé ùò standard input ôïõ ößëôñïõ ôï áñ÷åßï ðïõ ðñÝðåé íá åêôõðùèåß, ùò standard output ôïí ßäéï ôïí åêôõðùôÞ êáé ùò standard error ôï áñ÷åßï áíáöïñÜò óöáëìÜôùí (áíáöÝñåôáé óôçí éêáíüôçôá lf ôïõ /etc/printcap, Þ áðü ðñïåðéëïãÞ ôï /dev/console). troff Ôï ößëôñï ðïõ èá îåêéíÞóåé ôï LPD êáèþò êáé ïé ðáñÜìåôñïé ôïõ ößëôñïõ, åîáñôþíôáé áðü ôï ôé Ý÷åôå äçëþóåé óôï áñ÷åßï /etc/printcap êáé áðü ôï ôé ðáñáìÝôñïõò Ý÷åé êáèïñßóåé ï ßäéïò ï ÷ñÞóôçò ãéá ôçí åñãáóßá ìå ôçí ãñáììÞ åíôïëÞò &man.lpr.1;. Ãéá ðáñÜäåéãìá, áí ï ÷ñÞóôçò ðëçêôñïëïãÞóåé lpr , ôï LPD èá îåêéíÞóåé ôï ößëôñï troff, ðïõ õðïäçëþíåôáé ìå ôçí éêáíüôçôá tf ãéá ôïí åêôõðùôÞ ðñïïñéóìïý. Áí ï ÷ñÞóôçò åðéèõìåß íá åêôõðþóåé áðëü êåßìåíï, èá îåêéíÞóåé ôï ößëôñï if (áõôü ðñÜãìáôé éó÷ýåé ôéò ðåñéóóüôåñåò öïñÝò: äåßôå ôá Ößëôñá Åîüäïõ ãéá ëåðôïìÝñåéåò). ÕðÜñ÷ïõí ôñåéò ôýðïé ößëôñùí ðïõ ìðïñåßôå íá ðñïóäéïñßóåôå óôï /etc/printcap: Ôï ößëôñï êåéìÝíïõ, åðïíïìáæüìåíï êáé ùò ößëôñï åéóüäïõ óôçí ôåêìçñßùóç ôïõ LPD, ÷åéñßæåôáé åêôõðþóåéò êáíïíéêïý êåéìÝíïõ. ÈåùñÞóôå ôï ùò ôï ðñïåðéëåãìÝíï ößëôñï. Ôï LPD áíáìÝíåé ðùò üëïé ïé åêôõðùôÝò, áðü ðñïåðéëïãÞ, åßíáé óå èÝóç íá åêôõðþóïõí áðëü êåßìåíï, êáé åßíáé äïõëåéÜ ôïõ ößëôñïõ êåéìÝíïõ íá âåâáéùèåß üôé ôá backspaces, ôá tabs, êáé üëïé ïé Üëëïé åéäéêïß ÷áñáêôÞñåò äåí ðñüêåéôáé íá ðñïâëçìáôßóïõí ôïí åêôõðùôÞ. ÅÜí âñßóêåóôå óå Ýíá ðåñéâÜëëïí üðïõ èá ðñÝðåé íá êáôáìåôñÞóåôå ôçí ÷ñÞóç ôùí åêôõðùôþí, ôï ößëôñï êåéìÝíïõ èá ðñÝðåé åðßóçò íá êáôáìåôñÞóåé ôéò åêôõðùìÝíåò óåëßäåò, óõíÞèùò ìåôñþíôáò ôïí áñéèìü ôùí åêôõðùìÝíùí ãñáììþí êáé óõãêñßíïíôáò ôïí ìå ôïí áñéèìü ôùí ãñáììþí ðïõ õðïóôçñßæåé ï åêôõðùôÞò áíÜ óåëßäá. Ôï ößëôñï êåéìÝíïõ îåêéíÜ ìå ôçí áêüëïõèç ëßóôá ðáñáìÝôñùí: filter-name -c -wwidth -llength -iindent -n login -h host acct-file üðïõ åìöáíßæåôáé áí ç åñãáóßá Ý÷åé áðïóôáëåß ìå lpr width åßíáé ç ôéìÞ áðü ôçí éêáíüôçôá pw (ðëÜôïò óåëßäáò - page width) üðùò ðñïóäéïñßæåôáé óôï /etc/printcap, ìå ðñïåðéëåãìÝíç ôéìÞ ôï 132 length åßíáé ç ôéìÞ áðü ôçí éêáíüôçôá pl (ìÞêïò óåëßäáò - page length), ìå ðñïåðéëåãìÝíç ôéìÞ ôï 66 indent åßíáé ôï ìÝãåèïò ôçò åóï÷Þò (indentation) áðü ôï lpr , ìå ðñïåðéëåãìÝíç ôéìÞ 0 login åßíáé ôï êáôáãåãñáììÝíï üíïìá ÷ñÞóôç ðïõ åêôõðþíåé ôï áñ÷åßï host åßíáé ôï üíïìá ôïõ õðïëïãéóôÞ áðü ôïí ïðïßï óôÜëèçêå ç åñãáóßá acct-file åßíáé ôï üíïìá ôïõ áñ÷åßïõ êáôáìÝôñçóçò áðü ôçí éêáíüôçôá af. - - åêôõðþóåéò - ößëôñá - - - ¸íá ößëôñï ìåôáôñïðÞò ìåôáôñÝðåé Ýíá + ¸íá ößëôñï ìåôáôñïðÞòåêôõðþóåéòößëôñá ìåôáôñÝðåé Ýíá áñ÷åßï åéäéêÞò ìïñöÞò óå Ýíá ôýðï áñ÷åßïõ êáôÜëëçëï ãéá åêôýðùóç áðü ôïí óõãêåêñéìÝíï åêôõðùôÞ. Ãéá ðáñÜäåéãìá, ôá äåäïìÝíá óôïé÷åéïèåóßáò ditroff äåí ìðïñïýí íá åêôõðùèïýí êáôåõèåßáí, áëëÜ ìðïñåßôå íá åãêáôáóôÞóåôå Ýíá ößëôñï ìåôáôñïðÞò áñ÷åßùí ditroff, þóôå íá ìåôáôñÝøåôå ôá äåäïìÝíá ditroff óå ìéá ìïñöÞ ðïõ ï åêôõðùôÞò íá ìðïñåß íá áöïìïéþóåé êáé íá ôõðþóåé. Èá ìÜèåôå ðåñéóóüôåñá óôçí åíüôçôá Öúëôñá ÌåôáôñïðÞò. Ôá ößëôñá ìåôáôñïðÞò åðßóçò ÷ñåéÜæïíôáé ãéá íá êÜíåôå áñßèìçóç/êáôáìÝôñçóç, áí ÷ñåéÜæåóôå êáôáìÝôñçóç ôùí åêôõðþóåùí óáò. Ôá ößëôñá ìåôáôñïðÞò îåêéíïýí ìå ôéò áêüëïõèåò ðáñáìÝôñïõò: filter-name -xpixel-width -ypixel-height -n login -h host acct-file üðïõ pixel-width åßíáé ç ôéìÞ áðü ôçí éêáíüôçôá px (ðñïåðéëåãìÝíç ôéìÞ 0) êáé pixel-height åßíáé ç ôéìÞ áðü ôçí éêáíüôçôá py (ðñïåðéëåãìÝíç ôéìÞ 0). Ôï ößëôñï åîüäïõ ÷ñçóéìïðïéåßôáé ìüíïí áí äåí õðÜñ÷åé ößëôñï êåéìÝíïõ, Þ áí åßíáé åíåñãïðïéçìÝíåò ïé óåëßäåò êåöáëßäáò. ÄéáâÜóôå ôç ó÷åôéêÞ åíüôçôá Ößëôñá Åîüäïõ, áí êáé áðü ôçí åìðåéñßá ìáò ìðïñïýìå íá óáò ðïýìå üôé ÷ñçóéìïðïéïýíôáé óðÜíéá. ÕðÜñ÷ïõí ìüíï äýï ðáñÜìåôñïé ãéá ôá ößëôñá åîüäïõ: filter-name -wwidth -llength ïé ïðïßåò åßíáé ðáíïìïéüôõðåò ìå ôéò ðáñáìÝôñïõò êáé ôùí ößëôñùí êåéìÝíïõ. Ôá ößëôñá èá ðñÝðåé åðßóçò íá ôåñìáôßæïõí ìå êÜðïéá áðü ôéò áêüëïõèåò êáôáóôÜóåéò åîüäïõ: exit 0 Áí ôï ößëôñï ôýðùóå åðéôõ÷þò ôï áñ÷åßï. exit 1 Áí ôï ößëôñï áðÝôõ÷å íá ôõðþóåé ôï áñ÷åßï, áëëÜ èÝëåé ôï LPD íá ðñïóðáèÞóåé íá åêôõðþóåé ôï áñ÷åßï îáíÜ. Ôï LPD èá îåêéíÞóåé îáíÜ ôï ößëôñï áí ãßíåé Ýîïäïò ìå áõôÞ ôçí êáôÜóôáóç. exit 2 Áí ôï ößëôñï áðÝôõ÷å íá åêôõðþóåé ôï áñ÷åßï êáé äåí èÝëåé ôï LPD íá ðñïóðáèÞóåé îáíÜ. Ôï LPD èá áðïññßøåé ôï áñ÷åßï. Ôï ößëôñï êåéìÝíïõ ðïõ Ýñ÷åôáé ìå ôçí êáíïíéêÞ Ýêäïóç ôïõ &os;, /usr/libexec/lpr/lpf, åêìåôáëëåýåôáé ôéò ðáñáìÝôñïõò ðëÜôïõò êáé ìÞêïõò óåëßäáò ãéá íá ðñïóäéïñßóåé ðüôå íá áðïóôåßëåé ôï form feed êáé ðùò íá êÜíåé êáôáìÝôñçóç. ×ñçóéìïðïéåß ôéò ðáñáìÝôñïõò ãéá login, host, êáé áñ÷åßïõ êáôáìÝôñçóçò ãéá íá äçìéïõñãÞóåé ôéò ó÷åôéêÝò åããñáöÝò êáôáìÝôñçóçò. Áí åßóôå óôç äéáäéêáóßá åðéëïãÞò ößëôñùí, åëÝãîôå áí åßíáé óõìâáôÜ ìå ôï LPD. Áí åßíáé óõìâáôÜ, ôüôå ðñÝðåé íá õðïóôçñßæïõí ôçí ëßóôá ðáñáìÝôñùí ðïõ ðåñéãñÜøáìå ðñïçãïõìÝíùò. Áí ó÷åäéÜæåôå íá ãñÜøáôå ôá äéêÜ óáò ößëôñá ãåíéêÞò ÷ñÞóçò, ôüôå ðñÝðåé íá ôá êÜíåôå íá õðïóôçñßæïõí ôçí ßäéá ëßóôá ðáñáìÝôñùí êáé êùäéêþí åîüäïõ. Óõìâáôüôçôá Åñãáóéþí Áðëïý ÊåéìÝíïõ óå ÅêôõðùôÝò &postscript; åêôýðùóç åñãáóéþí Áí åßóôå ï ìïíáäéêüò ÷ñÞóôçò ôïõ Ç/Õ óáò êáé ôïõ åêôõðùôÞ &postscript; (Þ Üëëçò ãëþóóáò åêôõðùôþí), êáé åßóôå óßãïõñïé ðùò äåí ðñüêåéôáé íá óôåßëåôå ðïôÝ åêôõðþóåéò áðëïý êåéìÝíïõ óôïí åêôõðùôÞ óáò êáé ðùò äåí èá ÷ñçóéìïðïéÞóåôå ôéò õðçñåóßåò ôùí äéáöüñùí ðñïãñáììÜôùí óáò ðïõ èá èåëÞóïõí íá óôåßëïõí áðëü êåßìåíï óôïí åêôõðùôÞ óáò, ôüôå äåí ÷ñåéÜæåôáé íá áó÷ïëçèåßôå êáèüëïõ ìå áõôÞ ôçí åíüôçôá. ÁëëÜ, áí åðéèõìåßôå íá óôåßëåôå ôüóï åñãáóßåò &postscript; üóï êáé áðëïý êåéìÝíïõ óôïí åêôõðùôÞ óáò, ôüôå óáò ðñïôñÝðïõìå íá ðñïóèÝóåôå êÜðïéåò ñõèìßóåéò óôçí åãêáôÜóôáóç óáò. Ãéá íá ãßíåé áõôü, èá ðñÝðåé ôï ößëôñï êåéìÝíïõ íá áíé÷íåýåé áí ç ôñÝ÷ïõóá åñãáóßá åßíáé áðëü êåßìåíï Þ &postscript;. ¼ëåò ïé åñãáóßåò &postscript; ðñÝðåé íá îåêéíïýí ìå %! (áí ï åêôõðùôÞò óáò ÷ñçóéìïðïéåß Üëëç ãëþóóá, óõìâïõëåõèåßôå ôçí ôåêìçñßùóç ôïõ). Áí åßíáé áõôïß ïé ðñþôïé äýï ÷áñáêôÞñåò, ôüôå Ý÷ïõìå &postscript;, êáé ç õðüëïéðç åñãáóßá ìðïñåß íá óôáëåß áðåõèåßáò óôïí åêôõðùôÞ. Áí äåí åßíáé áõôïß ïé ðñþôïé äýï ÷áñáêôÞñåò, ôüôå ôï ößëôñï èá ìåôáôñÝøåé ôï êåßìåíï óå &postscript; êáé èá ôõðþóåé ôï áðïôÝëåóìá. Ðùò ãßíåôáé áõôü; åêôõðùôÝò óåéñéáêïß Áí åßóôå êÜôï÷ïò óåéñéáêïý åêôõðùôÞ, Ýíáò êáëüò ôñüðïò ãéá íá ãßíåé áõôü åöéêôü åßíáé íá åãêáôáóôÞóåôå ôï lprps. Ôï lprps åßíáé Ýíá ößëôñï åêôýðùóçò &postscript; ðïõ åðéêïéíùíåß áìößäñïìá ìå ôïí åêôõðùôÞ. Åíçìåñþíåé ôï áñ÷åßï êáôÜóôáóçò ôïõ åêôõðùôÞ ìå áíáëõôéêÝò ðëçñïöïñßåò, þóôå ïé ÷ñÞóôåò êáé ïé äéá÷åéñéóôÝò íá ìðïñïýí íá äïõí åðáêñéâþò ðïéá åßíáé ç êáôÜóôáóç ôïõ åêôõðùôÞ (üðùò ÷áìçëÞ óôÜèìç toner Þ ðñüâëçìá ÷áñôéïý). Áêüìç ðéï óçìáíôéêü åßíáé ðùò ðåñéÝ÷åé ôï ðñüãñáììá psif ðïõ áíé÷íåýåé áí ç åéóåñ÷üìåíç åñãáóßá åßíáé áðëïý êåéìÝíïõ êáé êáëåß ôï textps (Ýíá Üëëï ðñüãñáììá ðïõ ðåñéÝ÷åôáé óôï lprps) íá ôï ìåôáôñÝøåé óå &postscript;. ÔÝëïò ÷ñçóéìïðïéåßôáé ôï lprps ãéá íá áðïóôåßëåé ôçí åñãáóßá óôïí åêôõðùôÞ. Ôï lprps åßíáé ìÝñïò ôçò ÓõëëïãÞò ôùí Ports ôïõ &os; (äåßôå Ç ÓõëëïãÞ ôùí Ports). ÖõóéêÜ, ìðïñåßôå íá ôï êáôåâÜóåôå, íá ôï ìåôáãëùôôßóåôå êáé íá ôï åãêáôáóôÞóåôå ìüíïé óáò. ÌåôÜ ôçí åãêáôÜóôáóç ôïõ lprps, áðëÜ ðñïóäéïñßóôå ôç äéáäñïìÞ ðñïò ôï ðñüãñáììá psif ðïõ åßíáé ìÝñïò ôïõ lprps. Áí åãêáôáóôÞóáôå ôï lprps áðü ôçí ÓõëëïãÞ ôùí Ports, ôüôå ãéá ôïí óåéñéáêü óáò åêôõðùôÞ &postscript; ÷ñçóéìïðïéÞóôå ôçí áêüëïõèç êáôá÷þñéóç óôï áñ÷åßï /etc/printcap: :if=/usr/local/libexec/psif: Èá ðñÝðåé åðßóçò íá êáèïñßóåôå ôçí éêáíüôçôá rw ç ïðïßá ïñßæåé üôé ôï LPD èá ÷åéñßæåôáé ôïí åêôõðùôÞ óå êáôÜóôáóç áíÜãíùóçò êáé åããñáöÞò. Áí Ý÷åôå ðáñÜëëçëï åêôõðùôÞ &postscript; (êáé ãéá ôï ëüãï áõôü äåí ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå áìößäñïìç åðéêïéíùíßá ìå ôïí åêôõðùôÞ, üðùò áðáéôåßôáé áðü ôï lprps), ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôï áêüëïõèï shell script ùò ößëôñï êåéìÝíïõ: #!/bin/sh # # psif - Print PostScript or plain text on a PostScript printer # Script version; NOT the version that comes with lprps # Installed in /usr/local/libexec/psif # IFS="" read -r first_line first_two_chars=`expr "$first_line" : '\(..\)'` if [ "$first_two_chars" = "%!" ]; then # # PostScript job, print it. # echo "$first_line" && cat && printf "\004" && exit 0 exit 2 else # # Plain text, convert it, then print it. # ( echo "$first_line"; cat ) | /usr/local/bin/textps && printf "\004" && exit 0 exit 2 fi Óôï ðáñáðÜíù script, ôï textps åßíáé Ýíá ðñüãñáììá ðïõ åãêáôáóôÞóáìå îå÷ùñéóôÜ ãéá íá ìåôáôñÝðïõìå áðëü êåßìåíï óå &postscript;. Ìðïñåßôå íá ÷ñçóéìïðïéåßôå ïðïéïäÞðïôå ðñüãñáììá ìåôáôñïðÞò áðü êåßìåíï- óå-&postscript;. Ç ÓõëëïãÞ ôùí Ports (äåßôå Ç ÓõëëïãÞ ôùí Ports) ðåñéÝ÷åé åðßóçò Ýíá ðëÞñåò ðñüãñáììá ìåôáôñïðÞò áðü êåßìåíï óå &postscript;, ôï a2ps ðïõ ßóùò åðéèõìåßôå íá äéåñåõíÞóåôå. Ðñïóïìïßùóç &postscript; ãéá ÅêôõðùôÝò ðïõ äåí ôï Õðïóôçñßæïõí PostScript ðñïóïìïßùóç Ghostscript Ôï &postscript; åßíáé ôï de facto ðñüôõðï ãéá óôïé÷åéïèåóßá êáé åêôýðùóç õøçëÞò ðïéüôçôáò. Ùóôüóï, ôï &postscript; åßíáé êÜðùò äáðáíçñü ðñüôõðï. Åõôõ÷þò, ç Aladdin Enterprises ðáñÝ÷åé Ýíá ðáñåìöåñÝò åëåýèåñï &postscript; ðïõ ïíïìÜæåôáé Ghostscript êáé äïõëåýåé Üøïãá óôï &os;. Ôï Ghostscript äéáâÜæåé ôá ðåñéóóüôåñá áñ÷åßá &postscript; êáé ìðïñåß íá áðïäþóåé ôéò óåëßäåò ôïõò óå ìåãÜëç ãêÜìá óõóêåõþí, óõìðåñéëáìâÜíïíôáò ðïëëïýò ôýðïõò åêôõðùôþí ðïõ äåí õðïóôçñßæïõí &postscript;. Åãêáèéóôþíôáò ôï Ghostscript êáé ÷ñçóéìïðïéþíôáò Ýíá åéäéêü ößëôñï êåéìÝíïõ ãéá ôïí åêôõðùôÞ óáò, ìðïñåßôå íá êÜíåôå ôïí êïéíü åêôõðùôÞ óáò íá ëåéôïõñãåß óáí Ýíáò ðñáãìáôéêüò åêôõðùôÞò &postscript;. Ôï Ghostscript âñßóêåôáé óôçí ÓõëëïãÞ ôùí Ports ôïõ &os;, êáé ìÜëéóôá óå ðïëëÝò åêäüóåéò. Ç ðéï äéáäåäïìÝíç åßíáé ôï print/ghostscript-gpl. Ãéá íá êÜíåôå ðñïóïìïßùóç &postscript;, ðñÝðåé ôï ößëôñï êåéìÝíïõ íá áíé÷íåýóåé áí åêôõðþíåôå áñ÷åßï &postscript;. ÅÜí ü÷é, ôüôå ôï ößëôñï èá ðåñÜóåé ôï áñ÷åßï êáôåõèåßáí óôïí åêôõðùôÞ. ÄéáöïñåôéêÜ, èá ÷ñçóéìïðïéÞóåé ôï Ghostscript ãéá íá ìåôáôñÝøåé áñ÷éêÜ ôï áñ÷åßï óå Ýíá ôýðï ðïõ èá êáôáëáâáßíåé ï åêôõðùôÞò. Éäïý Ýíá ðáñÜäåéãìá: ôï áêüëïõèï script åßíáé Ýíá ößëôñï êåéìÝíïõ ãéá åêôõðùôÝò Hewlett Packard DeskJet 500. Ãéá Üëëïõò åêôõðùôÝò, áíôéêáôáóôÞóôå ôï üñéóìá óôçí åíôïëÞ gs (Ghostscript). (ÐëçêôñïëïãÞóôå gs ãéá íá äåßôå ôçí ëßóôá óõóêåõþí ðïõ õðïóôçñßæåé ç ôñÝ÷ïõóá åãêáôÜóôáóç ôïõ Ghostscript.) #!/bin/sh # # ifhp - Print Ghostscript-simulated PostScript on a DeskJet 500 # Installed in /usr/local/libexec/ifhp # # Treat LF as CR+LF (to avoid the "staircase effect" on HP/PCL # printers): # printf "\033&k2G" || exit 2 # # Read first two characters of the file # IFS="" read -r first_line first_two_chars=`expr "$first_line" : '\(..\)'` if [ "$first_two_chars" = "%!" ]; then # # It is PostScript; use Ghostscript to scan-convert and print it. # /usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 \ -sOutputFile=- - && exit 0 else # # Plain text or HP/PCL, so just print it directly; print a form feed # at the end to eject the last page. # echo "$first_line" && cat && printf "\033&l0H" && exit 0 fi exit 2 ÔÝëïò, ÷ñåéÜæåôáé íá åíçìåñþóåôå ôï LPD ãéá ôï ößëôñï ìå ôçí éêáíüôçôá if: :if=/usr/local/libexec/ifhp: Áõôü åßíáé üëï. Ìðïñåßôå íá ðëçêôñïëïãÞóåôå lpr plain.text êáé lpr whatever.ps êáé ôá äýï èá åêôõðùèïýí åðéôõ÷þò. Ößëôñá ÌåôáôñïðÞò Ôï åðüìåíï âÞìá ìåôÜ ôçí ïëïêëÞñùóç ôçò áðëÞò åãêáôÜóôáóçò ðïõ ðåñéãñÜøáìå óôéò ÂáóéêÝò Ñõèìßóåéò Åêôõðùôþí, åßíáé óõíÞèùò ç åãêáôÜóôáóç ößëôñùí ìåôáôñïðÞò ãéá ôïõò ôýðïõò áñ÷åßùí ðïõ ðñïôéìÜôå (åêôüò áðü áðëü êåßìåíï ASCII). Ãéáôß íá åãêáôáóôÞóåôå Ößëôñá ÌåôáôñïðÞò; &tex; åêôýðùóç áñ÷åßùí DVI Ôá ößëôñá ìåôáôñïðÞò êÜíïõí ôçí åêôýðùóç äéáöüñùí ôýðùí áñ÷åßùí åýêïëç õðüèåóç. Ãéá ðáñÜäåéãìá, áò õðïèÝóïõìå üôé Ý÷ïõìå íá êÜíïõìå áñêåôÞ åñãáóßá ìå ôï óýóôçìá óôïé÷åéïèåóßáò &tex;, êáé üôé Ý÷ïõìå åêôõðùôÞ &postscript;. ÊÜèå öïñÜ ðïõ äçìéïõñãïýìå Ýíá áñ÷åßï DVI ìå ôï &tex;, äåí ìðïñïýìå íá åêôõðþóïõìå êáôåõèåßáí Ýùò üôïõ íá ìåôáôñÝøïõìå ôï áñ÷åßï DVI óå &postscript;. Ç áêïëïõèßá åíôïëþí ðïõ ðñÝðåé íá áêïëïõèÞóïõìå åßíáé: &prompt.user; dvips seaweed-analysis.dvi &prompt.user; lpr seaweed-analysis.ps Ìå ôçí ÷ñÞóç åíüò ößëôñïõ ìåôáôñïðÞò ãéá áñ÷åßá DVI, ìðïñïýìå íá áðïöýãïõìå ôçí ìåôáôñïðÞ ðïõ ðñÝðåé íá êÜíïõìå êÜèå öïñÜ ÷åéñïêßíçôá, êáëþíôáò ôï LPD íá êÜíåé ôç äïõëåéÜ ãéá ìáò. Ôþñá, êÜèå öïñÜ ðïõ Ý÷ïõìå Ýíá áñ÷åßï DVI, ãéá íá ôï ôõðþóïõìå ÷ñåéÜæåôáé ìüíï Ýíá âÞìá: &prompt.user; lpr seaweed-analysis.dvi ¸÷ïõìå áíáèÝóåé óôï LPD íá êÜíåé ôç ìåôáôñïðÞ ôïõ áñ÷åßïõ DVI ðñïóèÝôïíôáò ôïõ ôçí åðéëïãÞ . Ç åíüôçôá ÅðéëïãÝò Ìïñöïðïßçóçò êáé ÌåôáôñïðÞò ðåñéÝ÷åé ôïõò ðßíáêåò åðéëïãÞò ìåôáôñïðþí. Ãéá êÜèå åðéëïãÞ ìåôáôñïðÞò ðïõ èÝëåôå íá õðïóôçñßæåôå áðü Ýíá åêôõðùôÞ, ðñÝðåé íá åãêáôáóôÞóåôå Ýíá ößëôñï ìåôáôñïðÞò êáé íá ïñßóåôå ôçí äéáäñïìÞ ôïõ óôï áñ÷åßï /etc/printcap. ¸íá ößëôñï ìåôáôñïðÞò åßíáé óáí ôï ößëôñï êåéìÝíïõ óôçí áðëÞ åãêáôÜóôáóç åêôõðùôÞ (äåßôå ôçí åíüôçôá ÅãêáôÜóôáóç Ößëôñïõ ÊåéìÝíïõ) ìå ìüíç äéáöïñÜ ðùò áíôß ôï ößëôñï íá åêôõðþíåé áðëü êåßìåíï, ìåôáôñÝðåé ôï áñ÷åßï óå ìéá äéáöïñåôéêÞ ìïñöÞ þóôå íá åßíáé êáôáíïçôü áðü ôïí åêôõðùôÞ. Ðïéï Ößëôñï ÌåôáôñïðÞò èá ÐñÝðåé íá ÅãêáôáóôÞóù; Èá ðñÝðåé íá åãêáèéóôÜôå ôá ößëôñá ìåôáôñïðÞò ðïõ íïìßæåôå ðùò èá ÷ñçóéìïðïéÞóåôå. Áí åêôõðþíåôå áñêåôÜ äåäïìÝíá DVI, ôüôå åßíáé ëïãéêü íá óõìðåñéëÜâåôå Ýíá ößëôñï ìåôáôñïðÞò DVI. Áí åêôõðþíåôå óõ÷íÜ äåäïìÝíá troff, èá èÝëåôå íá åãêáôáóôÞóåôå Ýíá ößëôñï troff. Ï áêüëïõèïò ðßíáêáò óõíïøßæåé ôá ößëôñá ìå ôá ïðïßá óõíåñãÜæåôáé ôï LPD, ôéò êáôá÷ùñßóåéò ôçò áíôßóôïé÷çò éêáíüôçôáò óôï áñ÷åßï /etc/printcap, êáé ðùò íá ôéò êáëÝóåôå ìÝóù ôçò åíôïëÞò lpr: Ôýðïò áñ÷åßïõ Éêáíüôçôá /etc/printcap ÐáñÜìåôñïò åíôïëÞò lpr cifplot cf DVI df plot gf ditroff nf FORTRAN text rf troff tf raster vf plain text if none, , or Óôï ðáñÜäåéãìá ìáò, áí ÷ñçóéìïðïéÞóïõìå lpr óçìáßíåé üôé ï åêôõðùôÞò ÷ñåéÜæåôáé ôçí éêáíüôçôá df óôçí êáôá÷þñéóç ôïõ óôï /etc/printcap. FORTRAN Áí êáé êÜðïéïé ìðïñåß íá éó÷õñéóôïýí ôï áíôßèåôï, ìåñéêïß ôýðïé áñ÷åßùí üðùò åßíáé ôá êåßìåíá êáé ãñáöéêÜ FORTRAN åßíáé îåðåñáóìÝíá. Ìðïñåßôå íá äþóåôå íÝá ðíïÞ óå áñ÷åßá áõôïý ôïõ ôýðïõ (Þ êáé ïðïéáóäÞðïôå Üëëçò ìïñöÞò åîüäïõ), åãêáèéóôþíôáò ðñïóáñìïóìÝíá ößëôñá. Ãéá ðáñÜäåéãìá, áò õðïèÝóïõìå üôé èá èÝëáôå íá åêôõðþóåôå êáôåõèåßáí áñ÷åßá Printerleaf (áñ÷åßá ðñïåñ÷üìåíá áðü ôï ðñüãñáììá åðéôñáðÝæéáò ôõðïãñáößáò Interleaf), áëëÜ äåí èá åêôõðþóåôå ðïôÝ äéáãñÜììáôá (plots). Èá ìðïñïýóáôå íá åãêáôáóôÞóåôå Ýíá ößëôñï ìåôáôñïðÞò áñ÷åßùí Printerleaf õðü ôçí éêáíüôçôá gf êáé íá åêðáéäåýóåôå ôïõò ÷ñÞóôåò óáò üôé ç åíôïëÞ lpr óçìáßíåé ôýðùóå áñ÷åßá Printerleaf. ÅãêáôÜóôáóç Ößëôñùí Ìåôáôñïðþí Áðü ôç óôéãìÞ ðïõ ôá ößëôñá ìåôáôñïðÞò åßíáé ðñïãñÜììáôá ðïõ äåí áíÞêïõí óôï âáóéêü óýóôçìá åãêáôÜóôáóçò ôïõ &os;, åßíáé ðéï óùóôü íá åãêáôáóôáèïýí óôïí êáôÜëïãï /usr/local. ¸íáò óõíÞèçò ðñïïñéóìüò ôùí ðñïãñáììÜôùí áõôþí åßíáé ï êáôÜëïãïò /usr/local/libexec, ìéá ðïõ ðñüêåéôáé ãéá åîåéäéêåõìÝíá ðñïãñÜììáôá ðïõ åêôåëïýíôáé ìüíï áðü ôï LPD. Ïé áðëïß ÷ñÞóôåò äåí èá ÷ñåéáóôåß ðïôÝ íá ôá åêôåëÝóïõí. Ãéá íá åíåñãïðïéÞóåôå Ýíá ößëôñï ìåôáôñïðÞò, ðñïóäéïñßóôå ôç äéáäñïìÞ ôïõ óôï áñ÷åßï /etc/printcap, áëëÜæïíôáò ôçí êáôÜëëçëç éêáíüôçôá óôïí åêôõðùôÞ ðïõ åðéèõìåßôå íá ôï ÷ñçóéìïðïéÞóåôå. Óôï ðáñÜäåéãìá ìáò, èá ðñïóèÝóïõìå ôï ößëôñï ìåôáôñïðÞò DVI óôçí êáôá÷þñéóç ìáò ãéá ôïí åêôõðùôÞ ìå ôï üíïìá bamboo. Áêïëïõèåß, ëïéðüí, ôï ðáñÜäåéãìá ãéá ôï áñ÷åßï /etc/printcap, ìå ôçí íÝá éêáíüôçôá df ãéá ôïí åêôõðùôÞ bamboo: # # /etc/printcap for host rose - added df filter for bamboo # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:\ :lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:rw:\ :if=/usr/local/libexec/psif:\ :df=/usr/local/libexec/psdf: Ôï ößëôñï DVI åßíáé Ýíá shell script ðïõ ïíïìÜæåôáé /usr/local/libexec/psdf, ôï ïðïßï êáé ðáñáèÝôïõìå ðáñáêÜôù: #!/bin/sh # # psdf - DVI to PostScript printer filter # Installed in /usr/local/libexec/psdf # # Invoked by lpd when user runs lpr -d # exec /usr/local/bin/dvips -f | /usr/local/libexec/lprps "$@" Áõôü ôï script ôñÝ÷åé ôï dvips óå êáôÜóôáóç ößëôñïõ (ìå ôçí ðáñÜìåôñï ) óôçí standard input, áðü üðïõ êáé ëáìâÜíåé ôçí åñãáóßá ðñïò åêôýðùóç. Áõôü îåêéíÜ ôï ößëôñï åêôýðùóçò &postscript; lprps (äåßôå ôçí åíüôçôá Óõìâáôüôçôá Åñãáóéþí Áðëïý ÊåéìÝíïõ óå åêôõðùôÝò &postscript;) äßíïíôáò ôïõ êáé ôéò ðáñáìÝôñïõò ðïõ ðÝñáóå ôï LPD óôï ðáñáðÜíù script. Ôï lprps èá ÷ñçóéìïðïéÞóåé áõôÝò ôéò ðáñáìÝôñïõò ãéá ôçí êáôáìÝôñçóç ôùí åêôõðùìÝíùí óåëßäùí. Áêüìá ìåñéêÜ Ðáñáäåßãìáôá Ößëôñùí ÌåôáôñïðÞò Áðü ôç óôéãìÞ ðïõ äåí õðÜñ÷åé áõôïìáôïðïéçìÝíç ìÝèïäïò ãéá ôçí åãêáôÜóôáóç ôùí ößëôñùí ìåôáôñïðÞò, áò ìáò åðéôñáðåß íá ðáñÝ÷ïõìå ìåñéêÜ áêüìç ðáñáäåßãìáôá. Ìðïñåßôå íá ôá ÷ñçóéìïðïéÞóåôå óáí ïäçãü ãéá ôçí äçìéïõñãßá ôùí äéêþí óáò ößëôñùí. Áí íïìßæåôå ðùò åßíáé êáôÜëëçëá ãéá ôçí ðåñßðôùóç óáò ìðïñåßôå íá ôá ÷ñçóéìïðïéÞóåôå êáé êáôåõèåßáí. Áõôü ôï ðáñÜäåéãìá script åßíáé Ýíá ößëôñï ìåôáôñïðÞò ñÜóôåñ (áñ÷åßïõ GIF ãéá ôçí áêñßâåéá) ãéá Ýíáí åêôõðùôÞ Hewlett Packard LaserJet III-Si: #!/bin/sh # # hpvf - Convert GIF files into HP/PCL, then print # Installed in /usr/local/libexec/hpvf PATH=/usr/X11R6/bin:$PATH; export PATH giftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300 \ && exit 0 \ || exit 2 Äïõëåýåé ùò åîÞò: ìåôáôñÝðåé ôï áñ÷åßï GIF óå Ýíá ãåíéêü öïñçôü ôýðï anymap, åí óõíå÷åßá ôï ìåôáôñÝðåé óå Ýíá öïñçôü ôýðï graymap, Ýðåéôá óå Ýíá öïñçôü ôýðï bitmap, êáé ôÝëïò ôï ìåôáôñÝðåé óå äåäïìÝíá óõìâáôÜ ìå PCL ãéá ôïí LaserJet. Åäþ åßíáé ôï áñ÷åßï /etc/printcap ìå ìéá êáôá÷þñéóç ãéá Ýíáí åêôõðùôÞ ðïõ ÷ñçóéìïðïéåß ôï ðáñáðÜíù ößëôñï: # # /etc/printcap for host orchid # teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\ :if=/usr/local/libexec/hpif:\ :vf=/usr/local/libexec/hpvf: Ôï áêüëïõèï script åßíáé Ýíá ößëôñï ìåôáôñïðÞò äåäïìÝíùí troff áðü ôï óýóôçìá óôïé÷åéïèåóßáò groff ãéá ôïí åêôõðùôÞ &postscript; ìå üíïìá bamboo: #!/bin/sh # # pstf - Convert groff's troff data into PS, then print. # Installed in /usr/local/libexec/pstf # exec grops | /usr/local/libexec/lprps "$@" Ôï ðáñáðÜíù script ÷ñçóéìïðïéåß ðÜëé ôï lprps ãéá íá ÷åéñéóôåß ôçí åðéêïéíùíßá ìå ôïí åêôõðùôÞ. Áí ï åêôõðùôÞò Þôáí óå ðáñÜëëçëç ðüñôá ôüôå èá åß÷áìå, áíôéèÝôùò, ÷ñçóéìïðïéÞóåé ôï áêüëïõèï script: #!/bin/sh # # pstf - Convert groff's troff data into PS, then print. # Installed in /usr/local/libexec/pstf # exec grops Åäþ åßíáé ç êáôá÷þñéóç ðïõ ÷ñåéÜæåôáé íá ðñïóèÝóïõìå óôï /etc/printcap ãéá íá åíåñãïðïéÞóïõìå ôï ößëôñï: :tf=/usr/local/libexec/pstf: Åäþ åßíáé Ýíá ðáñÜäåéãìá ðïõ ìáò åðéôñÝðåé íá åêôõðþóïõìå ðáëáéü êþäéêá ôçò FORTRAN. Åßíáé Ýíá ößëôñï êåéìÝíïõ ãéá FORTRAN ãéá ïðïéïíäÞðïôå åêôõðùôÞ ìðïñåß íá åêôõðþóåé êáôåõèåßáí áðëü êåßìåíï. Èá ôï åãêáôáóôÞóïõìå ãéá Ýíáí åêôõðùôÞ ðïõ ïíïìÜæåôáé teak: #!/bin/sh # # hprf - FORTRAN text filter for LaserJet 3si: # Installed in /usr/local/libexec/hprf # printf "\033&k2G" && fpr && printf "\033&l0H" && exit 0 exit 2 Êáé èá ðñïóèÝóïõìå áõôÞ ôç ãñáììÞ óôï /etc/printcap ãéá íá åíåñãïðïéÞóïõìå ôï ößëôñï ãéá ôïí åêôõðùôÞ teak: :rf=/usr/local/libexec/hprf: Êáé Ýíá ôåëåõôáßï êÜðùò ðåñßðëïêï ðáñÜäåéãìá: Èá ðñïóèÝóïõìå Ýíá ößëôñï DVI óôïí åêôõðùôÞ LaserJet teak ðïõ áíáöÝñáìå ðñïçãïýìåíá. Êáôáñ÷Þí ôï åýêïëï ìÝñïò: áíáâáèìßæïõìå ôï /etc/printcap ìå ôçí ôïðïèåóßá üðïõ âñßóêåôáé ôï ößëôñï DVI: :df=/usr/local/libexec/hpdf: Ôþñá, ôï äýóêïëï ìÝñïò: ç êáôáóêåõÞ ôïõ ößëôñïõ. Èá ÷ñåéáóôïýìå Ýíá ðñüãñáììá ìåôáôñïðÞò áðü DVI-óå-LaserJet/PCL. Óôçí ÓõëëïãÞ ôùí Ports ôïõ &os; (äåßôå ÓõëëïãÞ ôùí Ports) õðÜñ÷åé Ýíá ôÝôïéï ðñüãñáììá: Ôï üíïìá ôïõ ðáêÝôïõ åßíáé dvi2xx. Ç åãêáôÜóôáóç ôïõ ðáêÝôïõ, ìáò ðáñÝ÷åé áêñéâþò ôï ðñüãñáììá ðïõ ÷ñåéáæüìáóôå, ôï dvilj2p, ôï ïðïßï ìåôáôñÝðåé ôïí êþäéêá DVI óå êþäéêá óõìâáôü ìå LaserJet IIp, LaserJet III, êáé LaserJet 2000. Ôï dvilj2p êÜíåé ôï ößëôñï hpdf áñêåôÜ ðåñßðëïêï áðü ôç óôéãìÞ ðïõ ôï dvilj2p äå ìðïñåß íá äéáâÜóåé áðü ôï standard input. ×ñåéÜæåôáé íá äïõëÝøåé ìå êÜðïéï üíïìá áñ÷åßïõ. Áêüìç ÷åéñüôåñá, ôï üíïìá ôïõ áñ÷åßïõ ðñÝðåé íá ôåëåéþíåé óå .dvi êé åðïìÝíùò ç ÷ñÞóç ôïõ /dev/fd/0 ùò standard input åßíáé ðñïâëçìáôéêÞ. Èá ìðïñïýóáìå íá áíôéìåôùðßóïõìå ôï ðñüâëçìá äçìéïõñãþíôáò (óõìâïëéêïýò) äåóìïýò ìå êÜðïéï ðñïóùñéíü üíïìá áñ÷åßïõ (ðïõ íá ôåëåéþíåé óå .dvi) ãéá ôï /dev/fd/0, êáé ìå áõôü ôïí ôñüðï íá åîáíáãêÜóïõìå ôï dvilj2p íá äéáâÜæåé áðü ôï standard input. Áêüìç Ýíá ðñüâëçìá ðïõ ðñïêýðôåé åßíáé ôï ãåãïíüò ðùò äåí ìðïñïýìå íá ÷ñçóéìïðïéÞóïõìå ôï /tmp ãéá ôïí ðñïóùñéíü äåóìü. Ïé óõìâïëéêïß äåóìïß áíÞêïõí óôïí ÷ñÞóôç êáé óôçí ïìÜäá bin, åíþ ôï ößëôñï ôñÝ÷åé óáí ÷ñÞóôçò daemon. Åðßóçò óôïí êáôÜëïãï /tmp åßíáé åíåñãü ôï sticky bit. Ôï ößëôñï ìðïñåß íá äçìéïõñãÞóåé ôï äåóìü, áëëÜ äåí èá åßíáé éêáíü íá ôïí åîáëåßøåé êáé íá ôïí áöáéñÝóåé áðü ôç óôéãìÞ ðïõ áõôüò èá áíÞêåé óå äéáöïñåôéêü ÷ñÞóôç. Áíôßèåôá, ôï ößëôñï èá öôéÜîåé ôï óõìâïëéêü link óôïí ôñÝ÷ïíôá êáôÜëïãï, ðïõ åßíáé ï êáôÜëïãïò ðáñï÷Ýôåõóçò (spooling) (êáé ðïõ ðñïóäéïñßæåôáé áðü ôçí éêáíüôçôá sd óôï /etc/printcap). Áõôü åßíáé ôï ôÝëåéï ìÝñïò ãéá íá äïõëåýïõí ôá ößëôñá, åéäéêÜ ëüãù ôïõ üôé (ìåñéêÝò öïñÝò) õðÜñ÷åé ðåñéóóüôåñåò åëåýèåñïò ÷þñïò óôï äßóêï óôïí êáôÜëïãï ðáñï÷Ýôåõóçò (spool) áðü üôé óôï /tmp. Êáé ôåëéêÜ, éäïý ôï ößëôñï: #!/bin/sh # # hpdf - Print DVI data on HP/PCL printer # Installed in /usr/local/libexec/hpdf PATH=/usr/local/bin:$PATH; export PATH # # Define a function to clean up our temporary files. These exist # in the current directory, which will be the spooling directory # for the printer. # cleanup() { rm -f hpdf$$.dvi } # # Define a function to handle fatal errors: print the given message # and exit 2. Exiting with 2 tells LPD to do not try to reprint the # job. # fatal() { echo "$@" 1>&2 cleanup exit 2 } # # If user removes the job, LPD will send SIGINT, so trap SIGINT # (and a few other signals) to clean up after ourselves. # trap cleanup 1 2 15 # # Make sure we are not colliding with any existing files. # cleanup # # Link the DVI input file to standard input (the file to print). # ln -s /dev/fd/0 hpdf$$.dvi || fatal "Cannot symlink /dev/fd/0" # # Make LF = CR+LF # printf "\033&k2G" || fatal "Cannot initialize printer" # # Convert and print. Return value from dvilj2p does not seem to be # reliable, so we ignore it. # dvilj2p -M1 -q -e- dfhp$$.dvi # # Clean up and exit # cleanup exit 0 ÁõôïìáôïðïéçìÝíåò ÌåôáôñïðÝò: Ìßá ÅíáëëáêôéêÞ óôá Ößëôñá ÌåôáôñïðÞò ¼ëá ôá ößëôñá ìåôáôñïðÞò ìðïñåß íá ðëçñïýí ôï ðåñéâÜëëïí åêôõðþóåùí óáò, áëëÜ õðï÷ñåþíïõí ôïí ÷ñÞóôç íá ðñïóäéïñßæåé (óôçí ãñáììÞ åíôïëþí ôïõ &man.lpr.1;) ðïéü áðü áõôÜ èá ÷ñçóéìïðïéçèåß. Áí ïé ÷ñÞóôåò óáò äåí åßíáé éäéáßôåñá åîïéêåéùìÝíïé ìå ôïõò Ç/Õ, ôï íá ðñÝðåé íá áíáöÝñïõí êÜèå öïñÜ Ýíá ößëôñï ðéèáíþò íá åßíáé åíï÷ëçôéêü. Åßíáé áêüìá ÷åéñüôåñï ùóôüóï íá ãßíåé ëáíèáóìÝíç åðéëïãÞ ößëôñïõ, ôï ïðïßï èá åêôåëåóôåß óå áêáôÜëëçëï ãéá áõôü ôýðï áñ÷åßïõ, êáé èá ðñïêáëÝóåé ôçí óðáôÜëç åêáôïíôÜäùí óåëßäùí ÷áñôéïý. Áíôß íá åãêáôáóôÞóåôå ïðïéïäÞðïôå ößëôñï ìåôáôñïðÞò, ìðïñåß íá èÝëåôå íá äïêéìÜóåôå íá Ý÷åôå Ýíá ößëôñï êåéìÝíïõ (áöïý åßíáé ôï ðñïåðéëåãìÝíï ößëôñï) ðïõ íá áíé÷íåýåé ôïí ôýðï ôïõ áñ÷åßïõ ðïõ Ý÷åé æçôçèåß íá åêôõðùèåß êáé íá åêôåëåß áõôüìáôá ôï êáôÜëëçëï ößëôñï ìåôáôñïðÞò. Åñãáëåßá óáí ôï file ìðïñïýí íá óáò âïçèÞóïõí. Ìðïñåß íá åßíáé äýóêïëï íá ðñïóäéïñéóôïýí ïé äéáöïñÝò ìåôáîý êÜðïéùí ôýðùí áñ÷åßùí—áëëÜ, öõóéêÜ, ìðïñåßôå ðÜíôá íá ðáñÝ÷åôå ößëôñá ìåôáôñïðÞò åéäéêÜ ãéá áõôÝò ôéò ðåñéðôþóåéò. apsfilter printing filters apsfilter Ç ÓõëëïãÞ ôùí Ports ôïõ &os; Ý÷åé Ýíá ößëôñï êåéìÝíïõ ðïõ åêôåëåß áõôüìáôåò ìåôáôñïðÝò êáé ïíïìÜæåôáé apsfilter. Ìðïñåß íá áíé÷íåýåé áðëü êåßìåíï, &postscript;, DVI êáé ó÷åäüí ïðïéïäÞðïôå ôýðï áñ÷åßïõ, íá åêôåëåß ôçí êáôÜëëçëç ìåôáôñïðÞ, êáé íá åêôõðþíåé. Ößëôñá Åîüäïõ Ôï óýóôçìá ðáñï÷Ýôåõóçò LPD õðïóôçñßæåé Ýíáí áêüìç ôýðï ößëôñïõ ðïõ ßóùò íá ìçí Ý÷åôå åîåñåõíÞóåé áêüìá: ôï ößëôñï åîüäïõ. Ôï ößëôñï åîüäïõ ðñïïñßæåôáé ìüíï ãéá åêôýðùóç áðëïý êåéìÝíïõ, üðùò ôï ößëôñï êåéìÝíïõ, áëëÜ ìå ðïëëÝò áðëïðïéÞóåéò. ÅÜí ÷ñçóéìïðïéåßôå ößëôñï åîüäïõ áëëÜ ü÷é ößëôñï êåéìÝíïõ, ôüôå: Ôï LPD îåêéíÜ Ýíá ößëôñï åîüäïõ ìüíï ìéá öïñÜ ãéá üëç ôçí åñãáóßá, áíôß Ýíá ÷ùñéóôü ãéá êÜèå áñ÷åßï ôçò åñãáóßáò. Ôï LPD äåí öñïíôßæåé íá áíáãíùñßóåé ôçí áñ÷Þ Þ ôï ôÝëïò ôùí áñ÷åßùí ìÝóá óôçí ßäéá ôçí åñãáóßá üôáí ÷ñçóéìïðïéåßôáé ôï ößëôñï åîüäïõ. Ôï LPD äåí ðåñíÜåé óôï ößëôñï ôá äåäïìÝíá åéóüäïõ ôïõ ÷ñÞóôç Þ ôï üíïìá ôïõ ìç÷áíÞìáôïò, åðïìÝíùò äåí ðñïïñßæåôáé ãéá êáôáìÝôñçóç åêôõðùìÝíùí óåëßäùí. Ôï ößëôñï åîüäïõ äÝ÷åôáé ìüíïò ôéò ðáñáìÝôñïõò: filter-name -wwidth -llength ¼ðïõ ôï width åßíáé áðü ôçí éêáíüôçôá pw êáé ôï length åßíáé áðü ôçí éêáíüôçôá pl ãéá ôïí óõãêåêñéìÝíï åêôõðùôÞ. Ìçí ðáñáóýñåóôå áðü ôçí áðëüôçôá ôïõ ößëôñïõ åîüäïõ. Áí åðéèõìåßôå êÜèå áñ÷åßï ìéáò åñãáóßáò íá îåêéíÜ óå ìéá íÝá óåëßäá, ôï ößëôñï åîüäïõ äåí êÜíåé ãéá óáò. ×ñçóéìïðïéÞóôå Ýíá ößëôñï êåéìÝíïõ (ãíùóôü êáé ùò ößëôñï åéóüäïõ). Äåßôå ôçí åíüôçôá ÅãêáôÜóôáóç Ößëôñïõ ÊåéìÝíïõ. ÅðéðëÝïí, Ýíá ößëôñï åîüäïõ åßíáé óôçí ðñáãìáôéêüôçôá ðéï ðåñßðëïêï áöïý ðñÝðåé íá åîåôÜæåé ôçí ñïÞ ôùí byte ðïõ áðïóôÝëëåôáé ðñïò áõôü ãéá åéäéêïýò ÷áñáêôÞñåò flag êáé ðñÝðåé íá óôÝëíåé óÞìáôá óôïí åáõôü ôïõ ãéá ëïãáñéáóìü ôïõ LPD. Ùóôüóï, Ýíá ößëôñï åîüäïõ åßíáé áíáãêáßï áí èÝëåôå óåëßäåò êåöáëßäáò êáé ÷ñåéÜæåôáé íá óôÝëíåôå áêïëïõèßåò äéáöõãÞò Þ Üëëåò áêïëïõèßåò áñ÷éêïðïßçóçò ðñïêåéìÝíïõ íá ôéò åêôõðþóåôå. (ÁëëÜ åßíáé åðßóçò ìÜôáéï áí èÝëåôå íá ÷ñåþíåôå óåëßäåò êåöáëßäáò óôïí ëïãáñéáóìü ôïõ áíôßóôïé÷ïõ ÷ñÞóôç, áðü ôç óôéãìÞ ðïõ ôï LPD äåí óôÝëíåé êáìéÜ ðëçñïöïñßá ãéá ôïí ÷ñÞóôç Þ ôïí õðïëïãéóôÞ óôï ößëôñï åîüäïõ.) Ôï LPD åðéôñÝðåé ôçí óõíýðáñîç åíüò ößëôñïõ åîüäïõ êáé Üëëùí ößëôñùí (êåéìÝíïõ Þ äéáöïñåôéêïý ôýðïõ) óôïí ßäéï åêôõðùôÞ. Óå áõôÝò ôéò ðåñéðôþóåéò, ôï LPD èá îåêéíÜ ôï ößëôñï åîüäïõ ìüíï ãéá ôçí åêôýðùóç ôçò óåëßäáò êåöáëßäáò (äåßôå ôçí åíüôçôá Óåëßäåò Êåöáëßäáò). Ôï LPD èá áíáìÝíåé ôï ößëôñï åîüäïõ íá óôáìáôÞóåé áðü ìüíï ôïõ üôáí ôïõ óôåßëåé äýï bytes: Ýíá ASCII 031 áêïëïõèïýìåíï áðü Ýíá ASCII 001. ¼ôáí Ýíá ößëôñï åîüäïõ âëÝðåé áõôÜ ôá äýï bytes (031, 001), èá ðñÝðåé íá óôáìáôÜ óôÝëíïíôáò óÞìá SIGSTOP óôïí åáõôü ôïõ. ¼ôáí ôï LPD ïëïêëçñþóåé ôçí åêôÝëåóç êáé ôùí õðïëïßðùí ößëôñùí, èá åðáíåêêéíÞóåé ôï ößëôñï åîüäïõ óôÝëíïíôáò ôïõ ôï óÞìá SIGCONT. Áí õðÜñ÷åé ößëôñï åîüäïõ, áëëÜ äåí õðÜñ÷åé ößëôñï êåéìÝíïõ êáé ôï LPD äïõëåýåé óå åñãáóßá áðëïý êåéìÝíïõ, ôï LPD ÷ñçóéìïðïéåß ôï ößëôñï åîüäïõ ãéá ôçí åêôÝëåóç ôçò åñãáóßáò. ¼ðùò áíáöÝñáìå êáé ðáñáðÜíù, ôï ößëôñï åîüäïõ èá åêôõðþóåé êÜèå áñ÷åßï åñãáóßáò óôç óåéñÜ, äß÷ùò äõíáôüôçôá ðáñåìâïëÞò êåíÞò óåëßäáò Þ Üëëùí ñõèìßóåùí óôçí ôñïöïäïóßá ÷áñôéïý, êáé ðéèáíþò áõôü íá ìçí åßíáé åðéèõìçôü. Ó÷åäüí óå üëåò ôéò ðåñéðôþóåéò, èá ÷ñåéáóôåßôå Ýíá ößëôñï êåéìÝíïõ. Ôï ðñüãñáììá lpf, ðïõ áíáöÝñáìå íùñßôåñá óáí ößëôñï êåéìÝíïõ, ìðïñåß íá ôñÝîåé êáé óáí ößëôñï åîüäïõ. Áí ÷ñåéÜæåóôå Ýíá ãñÞãïñï ößëôñï åîüäïõ áëëÜ äåí èÝëåôå íá ãñÜøåôå ôïí êþäéêá áíß÷íåõóçò ôùí byte êáé ôïí êþäéêá áðïóôïëÞò óçìÜôùí, äïêéìÜóôå ôï lpf. Ìðïñåßôå åðßóçò íá ÷ñçóéìïðïéÞóåôå ôï lpf ìÝóá áðü Ýíá shell script ôï ïðïßï èá ÷åéñßæåôáé ôïõò êùäéêïýò áñ÷éêïðïßçóçò ðïõ ßóùò íá ÷ñåéÜæåôáé ï åêôõðùôÞò. <command>lpf</command>: Ýíá Ößëôñï ÊåéìÝíïõ Ôï ðñüãñáììá /usr/libexec/lpr/lpf ðïõ ðáñÝ÷åôáé ìå ôç äéáíïìÞ åêôåëÝóéìùí ôïõ &os; åßíáé Ýíá ößëôñï êåéìÝíïõ (ößëôñï åéóüäïõ) ðïõ ìðïñåß íá ðáñáãñáöïðïéåß ôçí Ýîïäï (åñãáóßåò ðïõ Ý÷ïõí óôáëåß ìå lpr ), íá åðéôñÝðåé ôçí äéÝëåõóç literal ÷áñáêôÞñùí (åñãáóßåò ðïõ Ý÷ïõí óôáëåß ìå lpr ), íá ñõèìßæåé ôçí èÝóç åêôýðùóçò ìå ôç ÷ñÞóç ÷áñáêôÞñùí backspace êáé tab óôçí åñãáóßá, êáé íá êÜíåé êáôáìÝôñçóç ôùí åêôõðùìÝíùí óåëßäùí. Åðßóçò ìðïñåß íá åíåñãåß êáé óáí ößëôñï åîüäïõ. Ôï lpf åßíáé êáôÜëëçëï ãéá äéÜöïñá ðåñéâÜëëïíôá åêôýðùóçò. Áí êáé äåí Ý÷åé äõíáôüôçôá áðïóôïëÞò áêïëïõèéþí áñ÷éêïðïßçóçò óôïí åêôõðùôÞ, åßíáé åýêïëï íá ãñÜøåôå Ýíá shell script ãéá íá êÜíåôå ôçí áðáñáßôçôç áñ÷éêïðïßçóç êáé íá åêôåëÝóåôå Ýðåéôá ôï lpf. êáôáìÝôñçóç óåëßäùí êáôáìÝôñçóç åêôõðùôÞò Ãéá íá êÜíåé óùóôÜ êáôáìÝôñçóç óåëßäùí, ôï lpf ÷ñåéÜæåôáé êáôÜëëçëåò ôéìÝò ãéá ôéò éêáíüôçôåò pw êáé pl óôï áñ÷åßï /etc/printcap. ×ñçóéìïðïéåß áõôÝò ôéò ôéìÝò ãéá íá ðñïóäéïñßóåé ðüóï êåßìåíï ìðïñåß íá ÷ùñÝóåé óå ìßá óåëßäá êáé áðü ðüóåò óåëßäåò áðïôåëåßôáé ç åñãáóßá ôïõ ÷ñÞóôç. Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôçí êáôáìÝôñçóç óåëßäùí, óõìâïõëåõôåßôå ôçí ÊáôáìÝôñçóç ×ñÞóçò Åêôõðùôþí. Óåëßäåò Êåöáëßäáò Áí Ý÷åôå áñêåôïýò ÷ñÞóôåò, êáé üëïé ôïõò ÷ñçóéìïðïéïýí äéÜöïñïõò åêôõðùôÝò, ôüôå ðéèáíþò íá èåùñåßôå ôéò óåëßäåò êåöáëßäáò ùò áíáãêáßï êáêü. óåëßäåò banner óåëßäåò êåöáëßäáò óåëßäåò êåöáëßäáò Ïé óåëßäåò êåöáëßäáò, ãíùóôÝò åðßóçò êáé ùò banner Þ óåëßäåò burst áíáãíùñßæïõí óå ðïéïí áíÞêïõí ïé åñãáóßåò ìåôÜ ôçí åêôýðùóç ôïõò. ÓõíÞèùò ôõðþíïíôáé ìå ìåãÜëá, Ýíôïíá ãñÜììáôá, êáé ßóùò ìå äéáêïóìçôéêÜ ðåñéãñÜììáôá, þóôå óå ìéá óôïßâá åêôõðþóåùí íá îå÷ùñßæïõí áðü ôá ðñáãìáôéêÜ Ýããñáöá åñãáóéþí ôùí ÷ñçóôþí. ÅðéôñÝðïõí Ýôóé óôïõò ÷ñÞóôåò íá âñßóêïõí ãñÞãïñá ôéò åñãáóßåò ôïõò. Ôï ðñïöáíÝò ìåéïíÝêôçìá óå ìéá óåëßäá êåöáëßäáò åßíáé ðùò ðñüêåéôáé íá åêôõðùèåß ìéá áêüìá óåëßäá ãéá êÜèå ìßá åñãáóßá. Ç åöÞìåñç ÷ñçóéìüôçôá ôïõò äéáñêåß ëßãá ëåðôÜ, êáé ï ðñïïñéóìüò ôïõò åßíáé ï êÜäïò á÷ñÞóôùí/áíáêýêëùóçò. (ÐáñáôçñÞóôå ðùò ïé óåëßäåò êåöáëßäáò åßíáé áíÜ åñãáóßá, êáé ü÷é áíÜ áñ÷åßï óå ìéá åñãáóßá, åðïìÝíùò ôï á÷ñçóôåõìÝíï ÷áñôß ßóùò íá ìçí åßíáé ôüóï ðïëý). Ôï óýóôçìá LPD ìðïñåß íá ðáñÝ÷åé áõôüìáôá óåëßäåò êåöáëßäáò ãéá ôéò åêôõðþóåéò óáò, áí ï åêôõðùôÞò óáò ìðïñåß íá åêôõðþóåé Üìåóá áðëü êåßìåíï. Áí Ý÷åôå åêôõðùôÞ &postscript;, èá ÷ñåéáóôåßôå Ýíá åîùôåñéêü ðñüãñáììá ãéá íá äçìéïõñãÞóåôå ôçí óåëßäá êåöáëßäáò. Äåßôå ôï Óåëßäåò Êåöáëßäáò óå ÅêôõðùôÝò &postscript;. Åíåñãïðïßçóç Óåëßäùí Êåöáëßäáò Óôçí åíüôçôá ÂáóéêÝò Ñõèìßóåéò Åêôõðùôþí, áðåíåñãïðïéÞóáìå ôéò óåëßäåò êåöáëßäáò ìå ôçí êáôá÷þñéóç sh (óçìáßíåé suppress header) óôï áñ÷åßï /etc/printcap. Ãéá íá åíåñãïðïéÞóåôå ôéò óåëßäåò êåöáëßäáò ãéá êÜðïéïí åêôõðùôÞ, áðëÜ áöáéñÝóôå ôçí éêáíüôçôá sh. Áêïýãåôáé åýêïëï, äåí íïìßæåôå; ¸ôóé åßíáé. ºóùò ÷ñåéáóôåß íá ðáñÝ÷åôå Ýíá ößëôñï åîüäïõ ãéá íá óôåßëåôå åíôïëÝò áñ÷éêïðïßçóçò óôïí åêôõðùôÞ. Åäþ åßíáé Ýíá ðáñÜäåéãìá ößëôñïõ åîüäïõ ãéá åêôõðùôÝò óõìâáôïýò ìå ôïí ôýðï PCL ôçò Hewlett Packard: #!/bin/sh # # hpof - Output filter for Hewlett Packard PCL-compatible printers # Installed in /usr/local/libexec/hpof printf "\033&k2G" || exit 2 exec /usr/libexec/lpr/lpf Ðñïóäéïñßóôå ôçí äéáäñïìÞ ðñïò ôï ößëôñï åîüäïõ óôçí éêáíüôçôá of. Äåßôå ôçí åíüôçôá Ößëôñá Åîüäïõ ãéá ðåñéóóüôåñåò ðëçñïöïñßåò. Åäþ åßíáé Ýíá ðáñÜäåéãìá áñ÷åßïõ /etc/printcap ãéá ôïí åêôõðùôÞ teak áðü ôï ðñïçãïýìåíï ðáñÜäåéãìá. ÅíåñãïðïéÞóáìå ôéò óåëßäåò êåöáëßäáò êáé ðñïóèÝóáìå ôï ðáñáðÜíù ößëôñï åîüäïõ: # # /etc/printcap for host orchid # teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\ :if=/usr/local/libexec/hpif:\ :vf=/usr/local/libexec/hpvf:\ :of=/usr/local/libexec/hpof: Ôþñá, üôáí ïé ÷ñÞóôåò åêôõðþíïõí åñãáóßåò óôïí teak, èá ðáßñíïõí êáé ìßá óåëßäá êåöáëßäáò áíÜ åñãáóßá. Áí ïé ÷ñÞóôåò èÝëïõí íá îïäåýïõí ÷ñüíï øÜ÷íïíôáò ãéá ôéò åêôõðþóåéò ôïõò, ìðïñïýí íá ðáñåìðïäßóïõí ôéò óåëßäåò êåöáëßäáò áðïóôÝëëïíôáò ôéò åñãáóßåò ôïõò ìå lpr . Äåßôå ôçí åíüôçôá ÅðéëïãÝò Óåëßäùí Êåöáëßäáò ãéá ðåñéóóüôåñåò åðéëïãÝò ôïõ &man.lpr.1;. Ôï LPD óôÝëíåé ôï ÷áñáêôÞñá áëëáãÞò óåëßäáò (form feed) áìÝóùò ìåôÜ ôç óåëßäá êåöáëßäáò. Áí ï åêôõðùôÞò óáò ÷ñçóéìïðïéåß äéáöïñåôéêü ÷áñáêôÞñá Þ áêïëïõèßá ÷áñáêôÞñùí ãéá ôçí áëëáãÞ óåëßäáò, ðñïóäéïñßóôå ôá ìå ôçí éêáíüôçôá ff óôï áñ÷åßï /etc/printcap. ¸ëåã÷ïò Óåëßäùí Êåöáëßäáò ÌåôÜ ôçí åíåñãïðïßçóç ôùí óåëßäùí êåöáëßäáò, ôï LPD èá ðáñÜãåé ìßá åðéìÞêç êåöáëßäá, ìßá ïëüêëçñç óåëßäá ìå ìåãÜëá ãñÜììáôá ðïõ ðñïóäéïñßæåé ôïí ÷ñÞóôç, ôïí õðïëïãéóôÞ (host), êáé ôçí åñãáóßá. Åäþ åßíáé Ýíá ðáñÜäåéãìá (ç kelly åêôýðùóå ôçí åñãáóßá ìå üíïìá outline áðü ôïí õðïëïãéóôÞ rose): k ll ll k l l k l l k k eeee l l y y k k e e l l y y k k eeeeee l l y y kk k e l l y y k k e e l l y yy k k eeee lll lll yyy y y y y yyyy ll t l i t l oooo u u ttttt l ii n nnn eeee o o u u t l i nn n e e o o u u t l i n n eeeeee o o u u t l i n n e o o u uu t t l i n n e e oooo uuu u tt lll iii n n eeee r rrr oooo ssss eeee rr r o o s s e e r o o ss eeeeee r o o ss e r o o s s e e r oooo ssss eeee Job: outline Date: Sun Sep 17 11:04:58 1995 Ôï LPD ðñïóèÝôåé ìéá åíôïëÞ áëëáãÞò óåëßäáò (form feed) ìåôÜ áðü áõôü ôï êåßìåíï Ýôóé þóôå ç åñãáóßá íá îåêéíÞóåé óå íÝá óåëßäá (åêôüò áí Ý÷åôå ðñïóäéïñßóåé ôçí éêáíüôçôá sf (suppress form feeds) ãéá ôïí åêôõðùôÞ óôï áñ÷åßï /etc/printcap). Áí ðñïôéìÜôå, ôï LPD ìðïñåß íá öôéÜîåé ìéá ìéêñüôåñïõ ìÞêïõò êåöáëßäá. Ðñïóäéïñßóôå sb (short banner) óôï áñ÷åßï /etc/printcap. Ç óåëßäá êåöáëßäáò èá ìïéÜæåé óáí áõôÞ: rose:kelly Job: outline Date: Sun Sep 17 11:07:51 1995 Ôï LPD ôõðþíåé (áðü ðñïåðéëïãÞ) ðñþôá ôçí óåëßäá êåöáëßäáò, êáé ìåôÜ ôçí åñãáóßá. Ãéá íá áíôéóôñÝøåôå ôçí óåéñÜ, ÷ñçóéìïðïéÞóôå ôçí éêáíüôçôá hl (header last) óôï áñ÷åßï /etc/printcap. ÊáôáìÝôñçóç ìå Óåëßäåò Êåöáëßäáò Ç ÷ñÞóç ôùí ðñïåãêáôåóôçìÝíùí óåëßäùí êåöáëßäáò ôïõ LPD ïõóéáóôéêÜ õðï÷ñåþíïõí ôçí ôÞñçóç ôïõ ðáñáêÜôù êáíüíá üôáí êÜíïõìå êáôáìÝôñçóç ÷ñÞóçò ôïõ åêôõðùôÞ: Ïé óåëßäåò êåöáëßäáò ðñÝðåé íá äéáôßèåíôáé åëåýèåñá (äß÷ùò ÷ñÝùóç). Ãéáôß; Äéüôé ôï ößëôñï åîüäïõ åßíáé ôï ìïíáäéêü åîùôåñéêü ðñüãñáììá ðïõ Ý÷åé ôïí Ýëåã÷ï óôçí åêôýðùóç ôçò êåöáëßäáò êáé èá ìðïñïýóå íá êÜíåé êáôáìÝôñçóç, áëëÜ ùóôüóï äåí ðáñÝ÷åé êáìßá ðëçñïöïñßá ãéá ôïí ÷ñÞóôç Þ ôïí õðïëïãéóôÞ Þ êÜðïéï Üëëï áñ÷åßï êáôáìÝôñçóçò, åðïìÝíùò äåí ãíùñßæåé óå ðïéüí íá áðïäþóåé ôçí ÷ñÞóç ôïõ åêôõðùôÞ. Äåí áñêåß áðëÜ íá ðñïóèÝóåôå ìßá áêüìç óåëßäá óôçí êáôáìÝôñçóç ôñïðïðïéþíôáò ôï ößëôñï êåéìÝíïõ Þ ïðïéïäÞðïôå Üëëï ößëôñï ìåôáôñïðÞò (ôï ïðïßï äéáèÝôåé ôéò ðëçñïöïñßåò ÷ñÞóôç êáé õðïëïãéóôÞ), áðü ôç óôéãìÞ ðïõ ïé ÷ñÞóôåò Ý÷ïõí ôçí äõíáôüôçôá íá ðáñåìðïäßóïõí ôéò óåëßäåò êåöáëßäáò ìå lpr . Èá ìðïñïýóáí ðÜëé íá ÷ñåùèïýí ãéá óåëßäåò êåöáëßäáò ðïõ äåí åêôýðùóáí. ÂáóéêÜ, ç lpr èá åßíáé ç ðñïôéìþìåíç åðéëïãÞ óå Ýíá ðåñéâÜëëïí ðïõ ïé ÷ñÞóôåò Ý÷ïõí ïéêïëïãéêÞ óõíåßäçóç, áëëÜ äåí ìðïñåßôå ðñáãìáôéêÜ íá ðáñïôñýíåôå ïðïéïíäÞðïôå íá ôç ÷ñçóéìïðïéÞóåé. Äåí åßíáé áñêåôü áðëÜ êÜèå ößëôñï óáò íá äçìéïõñãåß ôç äéêéÜ ôïõ óåëßäá êåöáëßäáò (Ýôóé þóôå íá ìðïñåß íá ÷ñåþíåé ìå áõôü ôïí ôñüðï). Áí ïé ÷ñÞóôåò åðéèõìïýí ôçí åðéëïãÞ ðáñåìðüäéóçò ôùí óåëßäùí êåöáëßäáò ìå lpr , èá óõíå÷ßóïõí íá ôéò ðáñáëáìâÜíïõí - êáé íá ÷ñåþíïíôáé ãéá áõôÝò - áöïý ôï LPD äåí Ý÷åé äõíáôüôçôá íá ðåñÜóåé óå ïðïéïäÞðïôå ößëôñï ôçí åðéëïãÞ . ÅðïìÝíùò, ðïéåò åðéëïãÝò Ý÷åôå; Ìðïñåßôå: Íá áðïäå÷èåßôå ôçí õðüäåéîç ôïõ LPD êáé íá ðáñÝ÷åôå ôéò óåëßäåò êåöáëßäáò åëåýèåñá. Íá åãêáôáóôÞóåôå åíáëëáêôéêÝò ëýóåéò áíôß ôïõ LPD, üðùò ôï LPRng. Ç åíüôçôá ÅíáëëáêôéêÝò Ëýóåéò ãéá ôïí ÓôÜíôáñ Spooler äßíåé ðåñéóóüôåñåò ðëçñïöïñßåò ãéá Üëëåò åöáñìïãÝò ðáñï÷Ýôåõóçò ðïõ ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå áíôß ãéá ôï LPD. Íá ãñÜøåôå Ýíá Ýîõðíï ößëôñï åîüäïõ. Õðü êáíïíéêÝò óõíèÞêåò, Ýíá "ößëôñï åîüäïõ" äåí êÜíåé ôßðïôå ðáñáðÜíù áðü ôçí áñ÷éêïðïßçóç åíüò åêôõðùôÞ Þ ìåñéêÝò áðëÝò ìåôáôñïðÝò ÷áñáêôÞñùí. Åßíáé êáôÜëëçëï ãéá óåëßäåò êåöáëßäáò êáé ãéá åñãáóßåò áðëïý êåéìÝíïõ (üôáí äåí õðÜñ÷åé ößëôñï (åéóüäïõ) êåéìÝíïõ). ÁëëÜ áí õðÜñ÷åé ößëôñï êåéìÝíïõ ãéá åñãáóßåò áðëïý êåéìÝíïõ, ôüôå ôï LPD èá åíåñãïðïéåß ôï ößëôñï åîüäïõ ìüíï ãéá ôéò óåëßäåò êåöáëßäáò. Êáé ôï ößëôñï åîüäïõ ìðïñåß íá áíáëýåé ôï êåßìåíï ôçò óåëßäáò êåöáëßäáò ðïõ äçìéïõñãåß ôï LPD ãéá íá ðñïóäéïñßæåé ôïí ÷ñÞóôç êáé ôïí õðïëïãéóôÞ, þóôå íá ÷ñåþíåé ôéò óåëßäåò êåöáëßäáò. Ôï ìüíï åðéðëÝïí ðñüâëçìá ìå áõôÞ ôç ìÝèïäï åßíáé ðùò ôï ößëôñï åîüäïõ åîáêïëïõèåß íá ìç ãíùñßæåé ðïéü áñ÷åßï êáôáìÝôñçóçò íá ÷ñçóéìïðïéÞóåé (äåí ôïõ Ý÷åé äïèåß ôï üíïìá ôïõ áñ÷åßïõ áðü ôçí éêáíüôçôá af), áëëÜ áí ôï üíïìá ôïõ áñ÷åßïõ óáò åßíáé ãíùóôü, ìðïñåßôå íá ôï åíóùìáôþóåôå áðåõèåßáò óôïí êþäéêá ôïõ ößëôñïõ åîüäïõ. Ãéá íá äéåõêïëýíåôå ôçí äéáäéêáóßá áíÜëõóçò, ÷ñçóéìïðïéÞóôå ôçí éêáíüôçôá sh (short header) óôï /etc/printcap. ºóùò ðÜëé üëá áõôÜ íá åßíáé õðåñâïëéêÜ êïðéáóôéêÜ, åíþ åßíáé óßãïõñï ðùò ïé ÷ñÞóôåò èá åêôéìÞóïõí ôïí ãåííáéüäùñï äéá÷åéñéóôÞ óõóôÞìáôïò ðïõ åðéôñÝðåé åëåýèåñá ôéò óåëßäåò êåöáëßäáò. Óåëßäåò Êåöáëßäáò óå ÅêôõðùôÝò &postscript; ¼ðùò ðåñéãñÜøáìå ðáñáðÜíù, ôï LPD ìðïñåß íá äçìéïõñãÞóåé ìßá óåëßäá êåöáëßäáò áðëïý êåéìÝíïõ, êáôÜëëçëç ãéá ðïëëïýò åêôõðùôÝò. Ïé åêôõðùôÝò &postscript;, öõóéêÜ, äåí ìðïñïýí íá ôõðþóïõí êáôåõèåßáí áðëü êåßìåíï, åðïìÝíùò áõôÞ ç äõíáôüôçôá ôïõ LPD ãéá ôéò óåëßäåò êåöáëßäáò åßíáé Ü÷ñçóôç óå áõôÞ ôçí ðåñßðôùóç. ¸íáò ðñïöáíÞò ôñüðïò íá ðáñÝ÷ïíôáé óåëßäåò êåöáëßäáò åßíáé íá äçìéïõñãïýíôáé áðü êÜèå ößëôñï ìåôáôñïðÞò êáé ôï ößëôñï êåéìÝíïõ. Ôá ößëôñá èá ðñÝðåé íá äÝ÷ïíôáé ùò ðáñáìÝôñïõò ôï üíïìá ôïõ ÷ñÞóôç êáé ôïõ õðïëïãéóôÞ þóôå íá äçìéïõñãïýí ôçí êáôÜëëçëç óåëßäá êåöáëßäáò. Ôï ìåéïíÝêôçìá áõôÞò ôçò ìåèüäïõ åßíáé ðùò ïé ÷ñÞóôåò èá åêôõðþíïõí ðÜíôá óåëßäá êåöáëßäáò, áêüìç êé áí áðïóôÝëëïõí ôçí åñãáóßá ôïõò ìå lpr . ÅðéôñÝøôå ìáò íá åîåñåõíÞóïõìå áõôÞ ôç ìÝèïäï. Ôï áêüëïõèï script äÝ÷åôáé ôñåéò ðáñáìÝôñïõò (ôï üíïìá ÷ñÞóôç - login name, ôï üíïìá ôïõ õðïëïãéóôÞ - host name, êáé ôï üíïìá åñãáóßáò) êáé äçìéïõñãåß ìßá áðëÞ óåëßäá êåöáëßäáò &postscript;: #!/bin/sh # # make-ps-header - make a PostScript header page on stdout # Installed in /usr/local/libexec/make-ps-header # # # These are PostScript units (72 to the inch). Modify for A4 or # whatever size paper you are using: # page_width=612 page_height=792 border=72 # # Check arguments # if [ $# -ne 3 ]; then echo "Usage: `basename $0` <user> <host> <job>" 1>&2 exit 1 fi # # Save these, mostly for readability in the PostScript, below. # user=$1 host=$2 job=$3 date=`date` # # Send the PostScript code to stdout. # exec cat <<EOF %!PS % % Make sure we do not interfere with user's job that will follow % save % % Make a thick, unpleasant border around the edge of the paper. % $border $border moveto $page_width $border 2 mul sub 0 rlineto 0 $page_height $border 2 mul sub rlineto currentscreen 3 -1 roll pop 100 3 1 roll setscreen $border 2 mul $page_width sub 0 rlineto closepath 0.8 setgray 10 setlinewidth stroke 0 setgray % % Display user's login name, nice and large and prominent % /Helvetica-Bold findfont 64 scalefont setfont $page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto ($user) show % % Now show the boring particulars % /Helvetica findfont 14 scalefont setfont /y 200 def [ (Job:) (Host:) (Date:) ] { 200 y moveto show /y y 18 sub def } forall /Helvetica-Bold findfont 14 scalefont setfont /y 200 def [ ($job) ($host) ($date) ] { 270 y moveto show /y y 18 sub def } forall % % That is it % restore showpage EOF Ôþñá, êáèÝíá áðü ôá ößëôñá ìåôáôñïðÞò êáé ôï ößëôñï êåéìÝíïõ ìðïñïýí íá êáëÝóïõí ôï script, ðñþôá ãéá íá äçìéïõñãÞóïõí ôç óåëßäá êåöáëßäáò, êáé Ýðåéôá ãéá íá åêôõðþóïõí ôçí åñãáóßá ôïõ ÷ñÞóôç. Áêïëïõèåß ôï ößëôñï ìåôáôñïðÞò DVI ðïõ äåßîáìå íùñßôåñá, åéäéêÜ äéáìïñöùìÝíï ãéá íá öôéÜîïõìå ìéá óåëßäá êåöáëßäáò: #!/bin/sh # # psdf - DVI to PostScript printer filter # Installed in /usr/local/libexec/psdf # # Invoked by lpd when user runs lpr -d # orig_args="$@" fail() { echo "$@" 1>&2 exit 2 } while getopts "x:y:n:h:" option; do case $option in x|y) ;; # Ignore n) login=$OPTARG ;; h) host=$OPTARG ;; *) echo "LPD started `basename $0` wrong." 1>&2 exit 2 ;; esac done [ "$login" ] || fail "No login name" [ "$host" ] || fail "No host name" ( /usr/local/libexec/make-ps-header $login $host "DVI File" /usr/local/bin/dvips -f ) | eval /usr/local/libexec/lprps $orig_args ÐáñáôçñÞóôå ðùò ôï ößëôñï ðñÝðåé íá áíáëýóåé ôçí ëßóôá ðáñáìÝôñùí ãéá íá ðñïóäéïñßóåé ôï üíïìá ÷ñÞóôç êáé õðïëïãéóôÞ. Ç ìÝèïäïò áíÜëõóçò åßíáé ðáñüìïéá êáé ãéá ôá õðüëïéðá ößëôñá ìåôáôñïðÞò. Ôï ößëôñï êåéìÝíïõ ðáßñíåé Ýíá åëáöñþò äéáöïñåôéêü óåô ðáñáìÝôñùí, (äåßôå ôçí åíüôçôá Ðùò äïõëåýïõí ôá Ößëôñá). ¼ðùò áíáöÝñáìå ðñïçãïýìåíá, ï ðáñáðÜíù ó÷åäéáóìüò, áí êáé ðñáãìáôéêÜ áðëüò, áðåíåñãïðïéåß ôçí åðéëïãÞ ðáñåìðüäéóçò óåëßäùí êåöáëßäáò (ôçí åðéëïãÞ ) ôïõ lpr. Áí ïé ÷ñÞóôåò åðéèõìïýí íá óþóïõí Ýíá äÝíôñï (Þ ëßãá ÷ñÞìáôá, áí ÷ñåþíåôå ôéò óåëßäåò êåöáëßäáò), äåí èá õðÜñ÷åé ôñüðïò ãéá íá ãßíåé áõôü, áðü ôç óôéãìÞ ðïõ êÜèå åêôýðùóç ìÝóù ôùí ößëôñùí èá óõíïäåýåôáé êáé áðü ìéá óåëßäá êåöáëßäáò ãéá êÜèå åñãáóßá. Ãéá íá åðéôñÝøåôå óôïõò ÷ñÞóôåò íá áðåíåñãïðïéïýí ôéò óåëßäåò êåöáëßäáò áíÜ åñãáóßá, èá ðñÝðåé íá ÷ñçóéìïðïéÞóåôå ôï ôÝ÷íáóìá ðïõ ðáñïõóéÜóáìå óôçí åíüôçôá ÊáôáìÝôñçóç ìå Óåëßäåò Êåöáëßäáò: äçëáäÞ íá ãñÜøåôå Ýíá ößëôñï åîüäïõ ðïõ íá áíáëýåé ôçí óåëßäá êåöáëßäáò ðïõ äçìéïõñãåßôáé áðü ôï LPD êáé íá êáôáóêåõÜæåé ìéá &postscript; Ýêäïóç. Áí ï ÷ñÞóôçò óôåßëåé ìéá åñãáóßá ìå lpr , ôüôå ïýôå ôï LPD, ïýôå ôï ößëôñï åîüäïõ èá öôéÜîïõí óåëßäá êåöáëßäáò. Óå üëåò ôéò Üëëåò ðåñéðôþóåéò, ôï ößëôñï åîüäïõ èá äéáâÜæåé ôï êåßìåíï áðü ôï LPD êáé èá óôÝëíåé ôïí êáôÜëëçëï êþäéêá &postscript; óôïí åêôõðùôÞ þóôå íá åêôõðþíåôáé ç óåëßäá êåöáëßäáò. Áí Ý÷åôå åêôõðùôÞ &postscript; ìå óåéñéáêÞ óýíäåóç, ìðïñåßôå íá êÜíåôå ÷ñÞóç ôçò lprps, ç ïðïßá óõíïäåýåôáé áðü Ýíá ößëôñï åîüäïõ, ôï psof, ôï ïðïßá êÜíåé ôá ðáñáðÜíù. Óçìåéþóôå ðùò ôï psof äåí ÷ñåþíåé ãéá ôéò óåëßäåò êåöáëßäáò. Åêôõðþóåéò ìÝóù Äéêôýïõ åêôõðùôÝò äßêôõï åêôõðþóåéò ìÝóù äéêôýïõ Ôï &os; õðïóôçñßæåé ôéò åêôõðþóåéò ìÝóù äéêôýïõ: ìðïñåß íá óôåßëåé åñãáóßåò óå áðïìáêñõóìÝíïõò åêôõðùôÝò. Ç Ýííïéá ôçò äéêôõáêÞò åêôýðùóçò áíáöÝñåôáé ãåíéêÜ óå äýï äéáöïñåôéêÜ ðñÜãìáôá: Ðñüóâáóç óå åêôõðùôÞ óõíäåäåìÝíï óå áðïìáêñõóìÝíï õðïëïãéóôÞ (host). ÅãêáèéóôÜôå Ýíáí åêôõðùôÞ ìå óõìâáôéêÞ óåéñéáêÞ Þ ðáñÜëëçëç óýíäåóç óå Ýíá õðïëïãéóôÞ. ¸ðåéôá, ñõèìßæåôå ôï LPD ãéá íá åíåñãïðïéçèåß ç ðñüóâáóç óôïí åêôõðùôÞ áðü Üëëïõò õðïëïãéóôÝò ôïõ äéêôýïõ. Ç åíüôçôá ÅêôõðùôÝò ÅãêáôåóôçìÝíïé óå ÁðïìáêñõóìÝíïõò ÕðïëïãéóôÝò åîçãåß ôéò áðáñáßôçôåò åíÝñãåéåò. Ðñüóâáóç óå åêôõðùôÞ óõíäåäåìÝíï êáôåõèåßáí óôï äßêôõï. Åêôüò (Þ áíôß) ôçò óõìâáôéêÞò óåéñéáêÞò Þ ðáñÜëëçëçò èýñáò, ï åêôõðùôÞò ðñÝðåé íá Ý÷åé åðéðñüóèåôá ìéá äéêôõáêÞ äéáóýíäåóç. ¸íáò ôÝôïéïò åêôõðùôÞò äïõëåýåé ùò åîÞò: Ìðïñåß íá êáôáëáâáßíåé ôï ðñùôüêïëëï LPD êáé íá äçìéïõñãåß ïõñÜ áíáìïíÞò ãéá ôéò åñãáóßåò ðïõ ðñïÝñ÷ïíôáé áðü áðïìáêñõóìÝíïõò õðïëïãéóôÝò. Óå áõôÞ ôçí ðåñßðôùóç, åíåñãåß óáí Ýíáò êáíïíéêüò õðïëïãéóôÞò ðïõ åêôåëåß ôï LPD. ÁêïëïõèÞóôå ôçí ßäéá äéáäéêáóßá ìå ôçí åíüôçôá ÅêôõðùôÝò ÅãêáôåóôçìÝíïé óå ÁðïìáêñõóìÝíïõò ÕðïëïãéóôÝò ãéá íá åãêáôáóôÞóåôå áõôüí ôïí åêôõðùôÞ. Ìðïñåß íá õðïóôçñßæåé óýíäåóç äéêôõáêÞò ñïÞò äåäïìÝíùí (data stream). Óå áõôÞ ôçí ðåñßðôùóç, óõíäÝåôå ôïí åêôõðùôÞ óå Ýíáí õðïëïãéóôÞ óõíäåäåìÝíï óôï äßêôõï, ï ïðïßïò èá åßíáé õðåýèõíïò ãéá ôçí ðáñï÷Ýôåõóç ôùí åñãáóéþí êáé ôçí áðïóôïëÞ ôïõò óôïí åêôõðùôÞ. Ç åíüôçôá ÅêôõðùôÝò Ìå ÓõíäÝóåéò Äéêôýïõ äßíåé ìåñéêÝò óõìâïõëÝò ãéá ôçí åãêáôÜóôáóç åêôõðùôþí áõôïý ôïõ ôýðïõ. ÅêôõðùôÝò ÅãêáôåóôçìÝíïé óå ÁðïìáêñõóìÝíïõò ÕðïëïãéóôÝò Ôï óýóôçìá ðáñï÷Ýôåõóçò LPD Ý÷åé åíóùìáôùìÝíç õðïóôÞñéîç ãéá ôçí áðïóôïëÞ åñãáóéþí óå Üëëïõò õðïëïãéóôÝò ðïõ åêôåëïýí ôï LPD (Þ ðïõ åßíáé óõìâáôïß ìå ôï LPD). Áõôü ôï ÷áñáêôçñéóôéêü óáò åðéôñÝðåé íá åãêáôáóôÞóåôå Ýíáí åêôõðùôÞ óå Ýíá õðïëïãéóôÞ êáé íá Ý÷åôå ðñüóâáóç óå áõôüí áðü Üëëïõò. Åðßóçò äïõëåýåé êáé ìå åêôõðùôÝò ðïõ Ý÷ïõí äéêôõáêÝò äéáóõíäÝóåéò ðïõ êáôáëáâáßíïõí ôï ðñùôüêïëëï LPD. Ãéá íá åíåñãïðïéÞóåôå áõôüí ôïí ôýðï áðïìáêñõóìÝíçò åêôýðùóçò, åãêáôáóôÞóôå ðñþôá Ýíáí åêôõðùôÞ óå Ýíá õðïëïãéóôÞ, ôïí õðïëïãéóôÞ åêôýðùóçò (printer host), ÷ñçóéìïðïéþíôáò ôçí áðëÞ åãêáôÜóôáóç åêôõðùôÞ ðïõ ðåñéãñÜöåôáé óôçí åíüôçôá ÂáóéêÝò Ñõèìßóåéò Åêôõðùôþí. ÊÜíôå üóåò ðñï÷ùñçìÝíåò ñõèìßóåéò ÷ñåéÜæåóôå üðùò áíáöÝñåôáé óôéò Ñõèìßóåéò Åêôõðùôþí ãéá Ðñï÷ùñçìÝíïõò. ÅëÝãîôå ôïí åêôõðùôÞ êáé äåßôå áí äïõëåýåé ìå ôá ÷áñáêôçñéóôéêÜ ôïõ LPD ðïõ Ý÷åôå åíåñãïðïéÞóåé. Åðßóçò âåâáéùèåßôå ðùò ï ôïðéêüò õðïëïãéóôÞò (local host) åßíáé åîïõóéïäïôçìÝíïò íá ÷ñçóéìïðïéåß ôéò õðçñåóßåò ôïõ LPD óôïí áðïìáêñõóìÝíï õðïëïãéóôÞ (remote host) (äåßôå Ðáñåìðüäéóç Åñãáóéþí áðü ÁðïìáêñõóìÝíïõò ÕðïëïãéóôÝò). åêôõðùôÝò äßêôõï äéêôõáêÝò åêôõðþóåéò ÅÜí ÷ñçóéìïðïéåßôå åêôõðùôÞ ìå äéêôõáêÞ äéáóýíäåóç ðïõ åßíáé óõìâáôüò ìå ôï LPD, ôüôå ï ï õðïëïãéóôÞò åêôýðùóçò (printer host) åßíáé ï åí ëüãù åêôõðùôÞò, êáé ôï üíïìá ôïõ åêôõðùôÞ åßíáé ôï üíïìá ðïõ Ý÷åôå ïñßóåé ãéá ôïí åêôõðùôÞ. Äåßôå ôçí ôåêìçñßùóç ðïõ óõíïäåýåé ôïí åêôõðùôÞ óáò êáé/Þ ôçí êÜñôá äéêôýïõ ôïõ. Áí ÷ñçóéìïðïéåßôå Hewlett Packard Laserjet ìå üíïìá åêôõðùôÞ text èá ãßíïíôáé áõôüìáôá ïé ìåôáôñïðÝò áðü LF óå CRLF, åðïìÝíùò äåí ÷ñåéÜæåôáé íá ôñÝîåôå ôï script hpif. ÅðïìÝíùò, óôïõò õðüëïéðïõò õðïëïãéóôÝò üðïõ åðéèõìåßôå íá Ý÷åôå ðñüóâáóç óôïí åêôõðùôÞ, áðëÜ êÜíôå ìéá êáôá÷þñéóç óôï áñ÷åßï /etc/printcap ìå ôá áêüëïõèá óôïé÷åßá: ÏíïìÜóôå ôçí êáôá÷þñéóç üðùò åðéèõìåßôå: Ãéá äéêÞ óáò åõêïëßá ðéèáíþò íá èÝëåôå íá ÷ñçóéìïðïéÞóåôå ôï ßäéï üíïìá êáé ôá ßäéá ðáñùíýìéá ìå áõôÜ ôïõ õðïëïãéóôÞ åêôýðùóçò. ÁöÞóôå ôçí éêáíüôçôá lp êåíÞ, ãéá ôçí áêñßâåéá (:lp=:). ÄçìéïõñãÞóôå Ýíá êáôÜëïãï spooling êáé ðñïóäéïñßóôå ôçí ôïðïèåóßá ôïõ ìå ôçí éêáíüôçôá sd. Ôï LPD èá áðïèçêåýåé åäþ ôéò åñãáóßåò ðñéí ôçí áðïóôïëÞ ôïõò óôïí õðïëïãéóôÞ åêôýðùóçò. ÔïðïèåôÞóôå ôï üíïìá ôïõ õðïëïãéóôÞ åêôýðùóçò óôçí éêáíüôçôá rm. ÔïðïèåôÞóôå ôï üíïìá ôïõ åêôõðùôÞ óôçí éêáíüôçôá rp, óôïí õðïëïãéóôÞ åêôýðùóçò. Áõôü åßíáé üëï. Äåí ÷ñåéÜæåôáé íá äçìéïõñãÞóåôå ëßóôá ößëôñùí ìåôáôñïðÞò, äéáóôÜóåéò óåëßäáò, Þ ïôéäÞðïôå Üëëï óôï áñ÷åßï/etc/printcap. Åäþ åßíáé Ýíá ðáñÜäåéãìá. Ï õðïëïãéóôÞò rose Ý÷åé äýï åêôõðùôÝò, ôïí bamboo êáé ôïí rattan. ÈÝëïõìå íá åíåñãïðïéÞóïõìå ôéò åêôõðþóåéò óå áõôïýò ôïõò åêôõðùôÝò ãéá ôïõò ÷ñÞóôåò ôïõ áðïìáêñõóìÝíïõ õðïëïãéóôÞ orchid. Åäþ åßíáé ôï áñ÷åßï /etc/printcap ôïõ õðïëïãéóôÞ orchid (äåßôå ðéï ðßóù óôçí åíüôçôá Åíåñãïðïßçóç Óåëßäùí Êåöáëßäáò). ¹äç Ý÷åé ìéá êáôá÷þñéóç ãéá ôïí åêôõðùôÞ teak. Åäþ ðñïóèÝóáìå ôéò áðáñáßôçôåò êáôá÷ùñßóåéò ãéá ôïõò äýï åêôõðùôÝò ôïõ õðïëïãéóôÞ rose: # # /etc/printcap for host orchid - added (remote) printers on rose # # # teak is local; it is connected directly to orchid: # teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\ :if=/usr/local/libexec/ifhp:\ :vf=/usr/local/libexec/vfhp:\ :of=/usr/local/libexec/ofhp: # # rattan is connected to rose; send jobs for rattan to rose: # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan: # # bamboo is connected to rose as well: # bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo: Ôï ìüíï ðïõ áðïìÝíåé åßíáé íá äçìéïõñãÞóïõìå ôïõò êáôáëüãïõò spooling óôïí êüìâï orchid: &prompt.root; mkdir /var/spool/lpd/rattan /var/spool/lpd/bamboo &prompt.root; chmod 770 /var/spool/lpd/rattan /var/spool/lpd/bamboo &prompt.root; chown daemon:daemon /var/spool/lpd/rattan /var/spool/lpd/bamboo Ôþñá, ïé ÷ñÞóôåò ôïõ orchid ìðïñïýí íá åêôõðþíïõí óôïí rattan êáé óôïí bamboo. Áí, ãéá ðáñÜäåéãìá, Ýíáò ÷ñÞóôçò ôïõ orchid ðëçêôñïëïãÞóåé: &prompt.user; lpr bamboo sushi-review.dvi ôï óýóôçìá LPD óôïí orchid èá áíôéãñÜøåé ôçí åñãáóßá óôïí êáôÜëïãï spooling /var/spool/lpd/bamboo êáé èá óçìåéþóåé ðùò ðñüêåéôáé ãéá åñãáóßá DVI. Ìüëéò ï õðïëïãéóôÞò rose Ý÷åé äéáèÝóéìï ÷þñï óôïí êáôÜëïãï spooling ôïõ bamboo, ôá äýï LPDs èá ìåôáöÝñïõí ôï áñ÷åßï óôïí rose. Ôï áñ÷åßï èá ìðåé óå ïõñÜ áíáìïíÞò óôïí õðïëïãéóôÞ rose Ýùò üôïõ åêôõðùèåß. Èá ìåôáôñáðåß áðü DVI óå &postscript; (áöïý ï bamboo åßíáé åêôõðùôÞò &postscript;) óôïí õðïëïãéóôÞ rose. ÅêôõðùôÝò ìå ÓõíäÝóåéò Äéêôýïõ Óõ÷íÜ, üôáí áãïñÜæåôå êÜñôá äéêôýïõ ãéá åêôõðùôÞ, Ý÷åôå ôç äõíáôüôçôá åðéëïãÞò äýï åêäüóåùí: ç ìßá åßíáé ðñïóïìïßùóç ôïõ spooler (ç ðéï áêñéâÞ Ýêäïóç) åíþ ç Üëëç áðëÜ óáò åðéôñÝðåé íá óôÝëíåôå äåäïìÝíá ìÝóù áõôÞò óáí íá ÷ñçóéìïðïéïýóáôå ìéá óåéñéáêÞ Þ ðáñÜëëçëç èýñá (ç öôçíÞ Ýêäïóç). ÁõôÞ ç åíüôçôá ðåñéãñÜöåé ðùò íá ÷ñçóéìïðïéåßôå ôçí öôçíÞ Ýêäïóç. Ãéá ôçí ðéï áêñéâÞ Ýêäïóç ìðïñåßôå íá âñåßôå ðåñéóóüôåñåò ðëçñïöïñßåò óôçí ðñïçãïýìåíç åíüôçôá ÅêôõðùôÝò ÅãêáôåóôçìÝíïé óå ÁðïìáêñõóìÝíïõò ÕðïëïãéóôÝò. Ç ìïñöÞ ôïõ áñ÷åßïõ /etc/printcap óáò åðéôñÝðåé íá ïñßóåôå ôç äéáóýíäåóç - óåéñéáêÞ Þ ðáñÜëëçëç - ðïõ èá ÷ñçóéìïðïéÞóåôå, êáé (áí ÷ñçóéìïðïéåßôå óåéñéáêÞ äéáóýíäåóç) ôïí ñõèìü baud, ðéèáíïýò åëÝã÷ïõò ñïÞò, êáèõóôåñÞóåéò ãéá tabs, ìåôáôñïðÝò ãéá ÷áñáêôÞñåò íÝáò ãñáììÞò, êáé Üëëá. ÁëëÜ äåí õðÜñ÷åé ôñüðïò íá ïñßóåôå ìéá óýíäåóç óå åêôõðùôÞ ðïõ áêïýåé óå èýñá TCP/IP Þ Üëëï ôýðï äéêôýïõ. Ãéá íá óôåßëåôå äåäïìÝíá óå Ýíá äéêôõáêü åêôõðùôÞ, ÷ñåéÜæåôáé íá áíáðôýîåôå ðñïãñÜììáôá åðéêïéíùíßáò ðïõ íá êáëïýíôáé áðü ößëôñá êåéìÝíïõ êáé ößëôñá ìåôáôñïðÞò. Åäþ Ý÷ïõìå Ýíá ôÝôïéï ðáñÜäåéãìá: ôï script netprint ðáßñíåé üëá ôá äåäïìÝíá áðü ôï standard input êáé ôá óôÝëíåé óå Ýíáí åêôõðùôÞ óõíäåäåìÝíï óôï äßêôõï. Ïñßæïõìå óôï netprint ôï üíïìá ôïõ åêôõðùôÞ ùò ðñþôç ðáñÜìåôñï, êáé ôïí áñéèìü èýñáò óôçí ïðïßá óõíäÝåôáé ùò äåýôåñç. Óçìåéþóôå ðùò áõôüò ï ôñüðïò õðïóôçñßæåé ìüíï åðéêïéíùíßá ìéáò êáôåýèõíóçò (áðü ôï &os; óôïí åêôõðùôÞ). Ðïëëïß äéêôõáêïß åêôõðùôÝò õðïóôçñßæïõí áìößäñïìç åðéêïéíùíßá, êáé åßíáé ðïëý ðéèáíü íá åðéèõìåßôå íá åêìåôáëëåõôåßôå ôá ðñïôåñÞìáôá ôïõò (ãéá íá åëÝã÷åôå ôçí êáôÜóôáóç ôïõ åêôõðùôÞ, ãéá êáôáìÝôñçóç åêôõðþóåùí, êëð.). #!/usr/bin/perl # # netprint - Text filter for printer attached to network # Installed in /usr/local/libexec/netprint # $#ARGV eq 1 || die "Usage: $0 <printer-hostname> <port-number>"; $printer_host = $ARGV[0]; $printer_port = $ARGV[1]; require 'sys/socket.ph'; ($ignore, $ignore, $protocol) = getprotobyname('tcp'); ($ignore, $ignore, $ignore, $ignore, $address) = gethostbyname($printer_host); $sockaddr = pack('S n a4 x8', &AF_INET, $printer_port, $address); socket(PRINTER, &PF_INET, &SOCK_STREAM, $protocol) || die "Can't create TCP/IP stream socket: $!"; connect(PRINTER, $sockaddr) || die "Can't contact $printer_host: $!"; while (<STDIN>) { print PRINTER; } exit 0; Ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå áõôü ôï script óå äéÜöïñá ößëôñá. Áò õðïèÝóïõìå ðùò Ý÷ïõìå Ýíáí åêôõðùôÞ ãñáììÞò Diablo 750-N óõíäåäåìÝíï óôï äßêôõï. Ï åêôõðùôÞò äÝ÷åôáé äåäïìÝíá ðñïò åêôýðùóç óôçí èýñá 5100. Ôï üíïìá ôïõ åêôõðùôÞ óôï äßêôõï åßíáé scrivener. Åäþ åßíáé ôï ößëôñï êåéìÝíïõ ãéá ôïí åêôõðùôÞ: #!/bin/sh # # diablo-if-net - Text filter for Diablo printer `scrivener' listening # on port 5100. Installed in /usr/local/libexec/diablo-if-net # exec /usr/libexec/lpr/lpf "$@" | /usr/local/libexec/netprint scrivener 5100 ¸ëåã÷ïò Ðñüóâáóçò êáé Ðåñéïñéóìïß óôç ×ñÞóç ôùí Åêôõðùôþí åêôõðùôÝò Ýëåã÷ïò ðñüóâáóçò ÁõôÞ ç åíüôçôá äßíåé ðëçñïöïñßåò ãéá ôïí Ýëåã÷ï ðñüóâáóçò êáé ôïí ðåñéïñéóìü ÷ñÞóçò ôùí åêôõðùôþí. Ôï óýóôçìá LPD óáò åðéôñÝðåé íá åëÝã÷åôå ðïéüò ìðïñåß íá Ý÷åé ðñüóâáóç óå êÜèå åêôõðùôÞ, ôüóï ôïðéêÜ üóï êáé áðïìáêñõóìÝíá, êáé åðßóçò áí ìðïñïýí ïé ÷ñÞóôåò íá åêôõðþíïõí ðïëëáðëÜ áíôßãñáöá, ðüóï ìåãÜëåò ìðïñïýí íá åßíáé ïé åñãáóßåò ôïõò, êáé ðüóï ìåãÜëåò ìðïñïýí íá ãßíïõí ïé ïõñÝò áíáìïíÞò (print queues). Ðåñéïñéóìüò Åêôýðùóçò Ðïëëáðëþí ÁíôéãñÜöùí Ôï óýóôçìá LPD äéåõêïëýíåé ôïõò ÷ñÞóôåò íá åêôõðþóïõí ðïëëáðëÜ áíôßãñáöá åíüò áñ÷åßïõ. Ïé ÷ñÞóôåò ìðïñïýí íá åêôõðþíïõí åñãáóßåò ìå lpr (ãéá ðáñÜäåéãìá) êáé íá ðáßñíïõí ðÝíôå áíôßãñáöá êÜèå áñ÷åßïõ ôçò åñãáóßáò åêôýðùóçò. Ôï áí áõôü åßíáé êáëü, åîáñôÜôáé áðü åóÜò. Áí ðéóôåýåôå ðùò ôá ðïëëáðëÜ áíôßãñáöá äçìéïõñãïýí Üóêïðç êáôáðüíçóç ôùí åêôõðùôþí óáò, ìðïñåßôå íá áðåíåñãïðïéÞóåôå ôçí åðéëïãÞ óôï &man.lpr.1; ðñïóèÝôïíôáò ôçí éêáíüôçôá sc óôï áñ÷åßï /etc/printcap. ¼ôáí ïé ÷ñÞóôåò áðïóôÝëëïõí åñãáóßåò ìå ôçí åðéëïãÞ , èá âëÝðïõí: lpr: multiple copies are not allowed Óçìåéþóôå ðùò áí Ý÷åôå ñõèìßóåé ðñüóâáóç óå Ýíáí åêôõðùôÞ áðïìáêñõóìÝíá (äåßôå ôçí åíüôçôá ÅêôõðùôÝò ÅãêáôåóôçìÝíïé óå ÁðïìáêñõóìÝíïõò ÕðïëïãéóôÝò), èá ÷ñåéáóôåß íá ðñïóèÝóåôå ôçí éêáíüôçôá sc óå üëá ôá áðïìáêñõóìÝíá áñ÷åßá /etc/printcap, äéáöïñåôéêÜ ïé ÷ñÞóôåò èá Ý÷ïõí áêüìç ôçí äõíáôüôçôá íá áðïóôÝëëïõí åñãáóßåò ðïëëáðëþí áíôéãñÜöùí ÷ñçóéìïðïéþíôáò äéáöïñåôéêü êüìâï. Åäþ åßíáé Ýíá ðáñÜäåéãìá. Áõôü åßíáé ôï áñ÷åßï /etc/printcap ãéá ôïí êüìâï rose. Ï åêôõðùôÞò rattan åßíáé äõíáôü ìç÷Üíçìá êáé åðéôñÝðåé ôçí åêôýðùóç ðïëëáðëþí áíôéãñÜöùí, áëëÜ ï åêôõðùôÞò laser bamboo åßíáé ðéï åõáßóèçôï, åðïìÝíùò èá áðåíåñãïðïéÞóïõìå ôç äõíáôüôçôá ðïëëáðëþí áíôéãñÜöùí ðñïóèÝôïíôáò ôçí éêáíüôçôá sc: # # /etc/printcap for host rose - restrict multiple copies on bamboo # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:sc:\ :lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:rw:\ :if=/usr/local/libexec/psif:\ :df=/usr/local/libexec/psdf: Ôþñá, èá ÷ñåéáóôåß íá ðñïóèÝóïõìå åðßóçò ôçí éêáíüôçôá sc óôï áñ÷åßï /etc/printcap ôïõ êüìâïõ orchid (êáé åíþ âñéóêüìáóôå óå áõôü, åðéôñÝøôå ìáò íá áðåíåñãïðïéÞóïõìå ôá ðïëëáðëÜ áíôßãñáöá ãéá ôïí åêôõðùôÞ teak): # # /etc/printcap for host orchid - no multiple copies for local # printer teak or remote printer bamboo teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:sc:\ :if=/usr/local/libexec/ifhp:\ :vf=/usr/local/libexec/vfhp:\ :of=/usr/local/libexec/ofhp: rattan|line|diablo|lp|Diablo 630 Line Printer:\ :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:sc: ×ñçóéìïðïéþíôáò ôçí éêáíüôçôá sc, ðñïëáìâÜíïõìå ôçí ÷ñÞóç ôùí åíôïëþí lpr , áëëÜ äåí Ý÷ïõìå áêüìç ôçí äõíáôüôçôá íá ðáñåìðïäßóïõìå ôïõò ÷ñÞóôåò íá ôñÝîïõí ôçí åíôïëÞ &man.lpr.1; ðïëëÝò öïñÝò, Þ íá áðïóôåßëïõí ôï ßäéï áñ÷åßï ðïëëÝò öïñÝò óå ìßá ìïíáäéêÞ åñãáóßá, üðùò åäþ: &prompt.user; lpr forsale.sign forsale.sign forsale.sign forsale.sign forsale.sign ÕðÜñ÷ïõí ðïëëïß ôñüðïé ðñüëçøçò áõôþí ôùí åíåñãåéþí (óõìðåñéëáìâÜíïíôáò êáé ôçí ðåñßðôùóç íá ôï áãíïÞóåôå) ðïõ åßóôå åëåýèåñïé íá åîåñåõíÞóåôå. Ðåñéïñßæïíôáò ôçí Ðñüóâáóç óå ÅêôõðùôÝò Ìðïñåßôå íá åëÝã÷åôå ðïéüò ìðïñåß íá åêôõðþíåé óå ðïéüí åêôõðùôÞ ÷ñçóéìïðïéþíôáò ôïõò ìç÷áíéóìïýò ïìÜäùí (groups) ôïõ &unix; êáé ôçí éêáíüôçôá rg óôï /etc/printcap. ÁðëÜ ôïðïèåôÞóôå ôïõò ÷ñÞóôåò ðïõ èÝëåôå íá Ý÷ïõí ðñüóâáóç óå êÜðïéïí åêôõðùôÞ óå ìéá óõãêåêñéìÝíç ïìÜäá (÷ñçóôþí), êáé äçëþóôå áõôÞ ôçí ïìÜäá óôçí éêáíüôçôá rg. ¼ëïé ïé ÷ñÞóôåò ðïõ äåí áíÞêïõí óôçí ïìÜäá (óõìðåñéëáìâáíïìÝíïõ êáé ôïõ root) èá äÝ÷ïíôáé ôï áêüëïõèï ìÞíõìá: lpr: Not a member of the restricted group üôáí ðñïóðáèïýí íá åêôõðþóïõí óôïí åëåã÷üìåíï åêôõðùôÞ. ¼ðùò êáé ìå ôçí éêáíüôçôá sc (ðåñéïñéóìïý ðïëëáðëþí áíôéãñÜöùí), èá ÷ñåéáóôåß íá ðñïóäéïñßóåôå ôçí rg óôïõò áðïìáêñõóìÝíïõò êüìâïõò ðïõ èá Ý÷ïõí ðñüóâáóç óôïõò åêôõðùôÝò óáò, áí íïìßæåôå ðùò áõôü åßíáé óùóôü (äåßôå ôçí åíüôçôá ÅêôõðùôÝò ÅãêáôåóôçìÝíïé óå ÁðïìáêñõóìÝíïõò ÕðïëïãéóôÝò). Ãéá ðáñÜäåéãìá, èá áöÞóïõìå ãéá üëïõò åëåýèåñç ôçí ðñüóâáóç óôïí åêôõðùôÞ rattan, áëëÜ ìüíï ïé ÷ñÞóôåò ôçò ïìÜäáò artists èá ìðïñïýí íá ÷ñçóéìïðïéÞóïõí ôïí bamboo. Åäþ åßíáé ôï ãíùóôü ìáò /etc/printcap ãéá ôïí êüìâï rose: # # /etc/printcap for host rose - restricted group for bamboo # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:\ :lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:rw:\ :if=/usr/local/libexec/psif:\ :df=/usr/local/libexec/psdf: ÅðéôñÝøôå ìáò íá ìçí áëëÜîïõìå ôï áñ÷åßï /etc/printcap áðü ôï Üëëï ðáñÜäåéãìá (ãéá ôïí õðïëïãéóôÞ orchid). ÖõóéêÜ, ïðïéïóäÞðïôå ÷ñÞóôçò ôïõ orchid ìðïñåß íá åêôõðþóåé óôïí bamboo. ºóùò üìùò íá åðéôñÝðïõìå ìüíïí óå óõãêåêñéìÝíïõò ÷ñÞóôåò ôçí ðñüóâáóç óôïí õðïëïãéóôÞ orchid, êáé èÝëïõìå áõôïß ïé ÷ñÞóôåò íá Ý÷ïõí ðñüóâáóç óôïí åêôõðùôÞ. ¹ ßóùò ðÜëé, êáé ü÷é. ÅðéôñÝðåôáé ìüíï ìéá ðåñéïñéóìÝíç ïìÜäá áíÜ åêôõðùôÞ. ¸ëåã÷ïò ÌåãÝèïõò ôùí ÁðåóôáëìÝíùí Åñãáóéþí åñãáóßåò åêôýðùóçò Áí ðïëëïß ÷ñÞóôåò Ý÷ïõí ðñüóâáóç óôïõò åêôõðùôÝò óáò, ðéèáíþò íá ÷ñåéÜæåôáé íá èÝóåôå Ýíá áíþôáôï üñéï óôï åðéôñåðüìåíï ìÝãåèïò áñ÷åßùí ðïõ ìðïñïýí íá áðïóôåßëïõí ïé ÷ñÞóôåò ãéá åêôýðùóç. Áêüìá êáé áí õðÜñ÷åé áñêåôüò ÷þñïò óôï óýóôçìá áñ÷åßùí ðïõ öéëïîåíåß ôïõò êáôáëüãïõò spool, èá ðñÝðåé ùóôüóï íá âåâáéùèåßôå üôé åðáñêåß ãéá ôéò åñãáóßåò üëùí ôùí ÷ñçóôþí. åñãáóßåò åêôýðùóçò Ýëåã÷ïò Ôï LPD óáò åðéôñÝðåé íá ïñéïèåôÞóåôå ôï ìÝãéóôï áñéèìü bytes ðïõ ðåñéÝ÷åé ìéá åñãáóßá, ìå ôçí éêáíüôçôá mx. Ç ìïíÜäá ìÝôñçóçò åßíáé óå BUFSIZ blocks, ôá ïðïßá åßíáé 1024 bytes. Áí èÝóåôå ìçäÝí óå áõôÞ ôçí éêáíüôçôá, äåí èá õðÜñ÷ïõí üñéá óôï ìÝãåèïò ôùí áñ÷åßùí. Ùóôüóï, áí äåí Ý÷åé ïñéóôåß ç éêáíüôçôá mx, ôüôå èá ÷ñçóéìïðïéåßôáé ç ðñïåðéëåãìÝíç ôéìÞ ôùí 1000 blocks. Ôï üñéï åöáñìüæåôáé óôá áñ÷åßá ìéáò åñãáóßáò, êáé ü÷é óôï óõíïëéêü ìÝãåèïò ôçò åñãáóßáò. Ôï LPD äåí èá áðïññßøåé Ýíá áñ÷åßï ðïõ îåðåñíÜ ôï üñéï ìåãÝèïõò ðïõ Ý÷åôå èÝóåé. ÁíôéèÝôùò, èá ôï ôïðïèåôÞóåé óôçí ïõñÜ áíáìïíÞò ìå ìÝãåèïò ßóï ìå ôï ìÝãéóôï åðéôñåðôü, ôï ïðïßï êáé èá åêôõðþóåé ôåëéêÜ. Ôï õðüëïéðï áñ÷åßï áðïññßðôåôáé. Áí áõôüò åßíáé óùóôüò Þ ëáíèáóìÝíïò ôñüðïò áíôéìåôþðéóçò ãéá ôçí õðÝñâáóç ôïõ ïñßïõ, åßíáé èÝìá ðñïò óõæÞôçóç. Áò ïñéïèåôÞóïõìå óôï ðáñÜäåéãìá ìáò ôïõò åêôõðùôÝò rattan êáé bamboo. ÅðåéäÞ ôá áñ÷åßá &postscript; ôùí artists ôåßíïõí ðñïò ìåãÜëá ìåãÝèç, èá èÝóïõìå Ýíá üñéï ðÝíôå megabytes. Äåí èá èÝóïõìå üñéá ãéá ôïí åêôõðùôÞ ãñáììÞò áðëïý êåéìÝíïõ: # # /etc/printcap for host rose # # # No limit on job size: # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:mx#0:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple: # # Limit of five megabytes: # bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\ :lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:rw:\ :if=/usr/local/libexec/psif:\ :df=/usr/local/libexec/psdf: Êáé ðÜëé, ôá üñéá åöáñìüæïíôáé ìüíï ãéá ôïõò ôïðéêïýò ÷ñÞóôåò. Áí Ý÷åôå åíåñãïðïéÞóåé áðïìáêñõóìÝíç ðñüóâáóç ãéá ôïõò åêôõðùôÝò óáò, ôá üñéá áõôÜ äåí éó÷ýïõí ãéá ôïõò áðïìáêñõóìÝíïõò ÷ñÞóôåò. Èá ÷ñåéáóôåß íá ðñïóäéïñßóåôå ìå ôçí éêáíüôçôá mx êáé ôá áðïìáêñõóìÝíá áñ÷åßá /etc/printcap. Äåßôå ôçí åíüôçôá ÅêôõðùôÝò ÅãêáôåóôçìÝíïé óå ÁðïìáêñõóìÝíïõò ÕðïëïãéóôÝò ãéá ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôéò åêôõðþóåéò áðü áðïìáêñõóìÝíïõò õðïëïãéóôÝò. ÕðÜñ÷åé êáé Üëëïò åîåéäéêåõìÝíïò ôñüðïò ðåñéïñéóìïý ôïõ ìåãÝèïõò åñãáóéþí ãéá áðïìáêñõóìÝíïõò åêôõðùôÝò. Äåßôå ôçí åíüôçôá Ðåñéïñéóìüò Åñãáóéþí áðü ÁðïìáêñõóìÝíïõò ÕðïëïãéóôÝò. Ðåñéïñéóìüò Åñãáóéþí áðü ÁðïìáêñõóìÝíïõò ÕðïëïãéóôÝò Ôï óýóôçìá ðáñï÷Ýôåõóçò LPD ðáñÝ÷åé äéÜöïñïõò ôñüðïõò ðåñéïñéóìïý ôùí åñãáóéþí áðü áðïìáêñõóìÝíïõò õðïëïãéóôÝò: Ðáñåìðüäéóç õðïëïãéóôþí Ìðïñåßôå íá åëÝã÷åôå áðü ðïéïõò áðïìáêñõóìÝíïõò õðïëïãéóôÝò èá äÝ÷åôáé áéôÞóåéò åêôýðùóçò ôï ôïðéêü LPD, ÷ñçóéìïðïéþíôáò ôá áñ÷åßá /etc/hosts.equiv êáé /etc/hosts.lpd. Ôï LPD åëÝã÷åé íá äåé áí ç åéóåñ÷üìåíç áßôçóç ðñïÝñ÷åôáé áðü Ýíáí õðïëïãéóôÞ ðïõ áíáöÝñåôáé óå êÜðïéï áðü ôá äýï áñ÷åßá. Áí ü÷é, ôï LPD áðïññßðôåé ôçí áßôçóç. Ç ìïñöÞ áõôþí ôùí áñ÷åßùí åßíáé áðëÞ: Ýíá üíïìá õðïëïãéóôÞ áíÜ ãñáììÞ. ÐáñáôçñÞóôå ðùò ôï áñ÷åßï /etc/hosts.equiv ÷ñçóéìïðïéåßôáé êáé áðü ôï ðñùôüêïëëï &man.ruserok.3;, êáé åðçñåÜæåé ðñïãñÜììáôá üðùò ôï &man.rsh.1; êáé ôï &man.rcp.1;, åðïìÝíùò íá åßóôå ðñïóåêôéêïß. Ãéá ðáñÜäåéãìá, åäþ åßíáé ôï áñ÷åßï /etc/hosts.lpd óôïí õðïëïãéóôÞ rose: orchid violet madrigal.fishbaum.de Áõôü óçìáßíåé ðùò ï rose äÝ÷åôáé áéôÞóåéò áðü ôïõò õðïëïãéóôÝò orchid, violet, êáé madrigal.fishbaum.de. Áí êÜðïéïò Üëëïò õðïëïãéóôÞò ðñïóðáèÞóåé íá áðïêôÞóåé ðñüóâáóç óôï LPD ôïõ rose, ç åñãáóßá èá áðïññéöèåß. Ðåñéïñéóìïß óôï ÌÝãåèïò Ìðïñåßôå íá åëÝã÷åôå ðüóïò åëåýèåñïò ÷þñïò ðñÝðåé íá áðïìÝíåé óôï óýóôçìá áñ÷åßùí üðïõ âñßóêåôáé ï êáôÜëïãïò spool. ÄçìéïõñãÞóôå Ýíá áñ÷åßï ìå üíïìá minfree óôïí êáôÜëïãï spool ãéá ôïí ôïðéêü åêôõðùôÞ. ÅéóÜãåôå óå áõôü ôï áñ÷åßï Ýíáí áñéèìü ðïõ áíôéðñïóùðåýåé ðüóá blocks äßóêïõ (512 bytes) åëåýèåñïõ ÷þñïõ ðñÝðåé íá õðÜñ÷ïõí ãéá íá åßíáé äåêôÞ ìéá áðïìáêñõóìÝíç åñãáóßá. Áõôü óáò åðéôñÝðåé íá åßóôå âÝâáéïé ðùò ïé áðïìáêñõóìÝíïé ÷ñÞóôåò äåí èá ãåìßóïõí ôï óýóôçìá áñ÷åßùí óáò. Ìðïñåßôå åðßóçò íá ôï ÷ñçóéìïðïéÞóåôå ãéá íá äþóåôå ìåñéêÞ ðñïôåñáéüôçôá óôïõò ôïðéêïýò ÷ñÞóôåò: ïé ôïðéêïß ÷ñÞóôåò èá ìðïñïýí íá óôÝëíïõí åñãáóßåò óôçí ïõñÜ áíáìïíÞò áêüìç êáé üôáí ï åëåýèåñïò ÷þñïò ôïõ äßóêïõ Ý÷åé ðÝóåé êÜôù áðü ôïí áñéèìü ðïõ áíáöÝñåôáé óôï áñ÷åßï minfree. Ãéá ðáñÜäåéãìá, áò ðñïóèÝóïõìå Ýíá áñ÷åßï minfree ãéá ôïí åêôõðùôÞ bamboo. ÅîåôÜæïõìå ôï /etc/printcap ãéá íá âñïýìå ôïí êáôÜëïãï spool ãéá áõôüí ôïí åêôõðùôÞ. Åäþ åßíáé ç êáôá÷þñéóç ãéá ôïí bamboo: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\ :lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:rw:mx#5000:\ :if=/usr/local/libexec/psif:\ :df=/usr/local/libexec/psdf: Ï êáôÜëïãïò spool êáèïñßæåôáé óôçí éêáíüôçôá sd. Èá èÝóïõìå ôñßá megabytes (éóïäõíáìåß ìå 6144 disk blocks) ùò ôï ìÝãåèïò ôïõ åëåýèåñïõ ÷þñïõ ðïõ ðñÝðåé íá õðÜñ÷åé óôï óýóôçìá áñ÷åßùí, þóôå ôï LPD íá äÝ÷åôáé áðïìáêñõóìÝíåò åñãáóßåò: &prompt.root; echo 6144 > /var/spool/lpd/bamboo/minfree Ðåñéïñéóìïß ÷ñçóôþí Ìðïñåßôå íá åëÝã÷åôå ðïéüò áðïìáêñõóìÝíïò ÷ñÞóôçò ìðïñåß íá åêôõðþíåé óôïõò ôïðéêïýò åêôõðùôÝò ïñßæïíôáò ôçí éêáíüôçôá rs óôï /etc/printcap. ¼ôáí åìöáíßæåôáé ç rs óå ìéá êáôá÷þñéóç êÜðïéïõ ôïðéêÜ óõíäåäåìÝíïõ åêôõðùôÞ, ôï LPD èá äå÷èåß åñãáóßåò áðü áðïìáêñõóìÝíïõò õðïëïãéóôÝò áí ï ÷ñÞóôçò ðïõ áðïóôÝëëåé ôçí åñãáóßá Ý÷åé ëïãáñéáóìü óôïí ôïðéêü õðïëïãéóôÞ êáé ìå ôï ßäéï üíïìá ÷ñÞóôç. ÄéáöïñåôéêÜ, ôï LPD èá áðïññßøåé ôçí åñãáóßá. ÁõôÞ ç éêáíüôçôá åßíáé éäéáßôåñá ÷ñÞóéìç óå ðåñéâÜëëïíôá üðïõ õðÜñ÷ïõí (ãéá ðáñÜäåéãìá) äéáöïñåôéêÜ åðé÷åéñçóéáêÜ ôìÞìáôá ðïõ ìïéñÜæïíôáé ôï äßêôõï, êáé êÜðïéïé ÷ñÞóôåò ðñÝðåé íá õðåñâáßíïõí ôá óýíïñá ôïõ ôìÞìáôïò. Äçìéïõñãþíôáò ëïãáñéáóìïýò óôá óõóôÞìáôá óáò, èá ìðïñïýí íá ÷ñçóéìïðïéïýí ôïõò åêôõðùôÝò óáò áðü ôï äéêü ôïõò ôìÞìá ôçò åðé÷åßñçóçò. Áí åðéèõìåßôå íá ôïõò åðéôñÝðåôå íá ÷ñçóéìïðïéïýí ìüíï ôïõò åêôõðùôÝò êáé ü÷é ôá ìç÷áíÞìáôá óáò, ôüôå ìðïñåßôå íá äçìéïõñãÞóåôå ëïãáñéáóìïýò token, äß÷ùò ðñïóùðéêïýò êáôáëüãïõò êáé ìå êÝëõöïò ðïõ äåí ìðïñåß íá ÷ñçóéìïðïéçèåß, üðùò ôï /usr/bin/false. ÊáôáìÝôñçóç ×ñÞóçò Åêôõðùôþí êáôáìÝôñçóç åêôõðùôÞò Áðïöáóßóáôå üôé ÷ñåéÜæåôáé íá ÷ñåþíåôå ãéá ôéò åêôõðþóåéò óáò. Êáé ãéáôß ü÷é; Ôï ÷áñôß êáé ôï ìåëÜíé êïóôßæïõí ÷ñÞìáôá. Êáé åðéðëÝïí õðÜñ÷åé êüóôïò óõíôÞñçóçò — ïé åêôõðùôÝò áðïôåëïýíôáé áðü êéíçôÜ ìÝñç êáé Ý÷ïõí ôçí ôÜóç íá ÷áëÜíå. ¸÷åôå åîåôÜóåé ôïõò åêôõðùôÝò óáò, ôïí ôñüðï ðïõ ÷ñçóéìïðïéïýíôáé, êáé ôï êüóôïò óõíôÞñçóçò êáé Ý÷åôå õðïëïãßóåé ìéá ÷ñÝùóç áíÜ óåëßäá (Þ áíÜ ìÝôñï, áíÜ ðüäé, Þ Üëëç ìïíÜäá ìÝôñçóçò). Ôï èÝìá åßíáé ôþñá ðùò ìðïñåßôå ðñáãìáôéêÜ íá îåêéíÞóåôå íá êáôáìåôñÜôå ôéò åêôõðþóåéò óáò. Ôá Üó÷çìá íÝá åßíáé ðùò ôï óýóôçìá ðáñï÷Ýôåõóçò ôïõ LPD äåí ðáñÝ÷åé ðïëý âïÞèåéá óå áõôüí ôïí ôïìÝá. Ç êáôáìÝôñçóç åîáñôÜôáé óå ìåãÜëï âáèìü áðü ôïí ôýðï ôïõ åêôõðùôÞ ðïõ ÷ñçóéìïðïéåßôå, ôïõò ôýðïõò áñ÷åßùí ðïõ åêôõðþíåôå, êáé ôéò äéêÝò óáò áðáéôÞóåéò ãéá ôçí ÷ñÝùóç ôùí åêôõðþóåùí. Ãéá ôçí êáôáìÝôñçóç, èá ðñÝðåé íá ìåôáôñÝøåôå ôï ößëôñï êåéìÝíïõ (ãéá ôç ÷ñÝùóç åñãáóéþí áðëïý êåéìÝíïõ) ôïõ åêôõðùôÞ êáé ôá ößëôñá ìåôáôñïðÞò (ãéá ôç ÷ñÝùóç üëùí ôùí Üëëùí ôýðùí áñ÷åßùí) þóôå íá ìåôñïýí óåëßäåò Þ íá æçôïýí íá ìÜèïõí áðü ôïí åêôõðùôÞ ôïí áñéèìü ôùí åêôõðùìÝíùí óåëßäùí. Äåí èá óáò âïçèÞóåé éäéáßôåñá ç ÷ñÞóç ößëôñïõ åîüäïõ, áðü ôç óôéãìÞ ðïõ äåí ìðïñåß íá êÜíåé êáôáìÝôñçóç. Äåßôå ôçí åíüôçôá Ößëôñá. ÃåíéêÜ, õðÜñ÷ïõí äýï ôñüðïé ãéá íá êÜíåôå êáôáìÝôñçóç: Ç ÐåñéïäéêÞ êáôáìÝôñçóç åßíáé ï ðéï óõíçèéóìÝíïò ôñüðïò, ðéèáíþò ãéáôß åßíáé ï åõêïëüôåñïò. ÊÜèå öïñÜ ðïõ êÜðïéïò åêôõðþíåé ìéá åñãáóßá, ôï ößëôñï äçìéïõñãåß Ýíá áñ÷åßï êáôáãñáöÞò üðïõ áíáöÝñåé ôïí ÷ñÞóôç, ôïí õðïëïãéóôÞ, êáé ôïí áñéèìü ôùí óåëßäùí. ÊÜèå ìÞíá, åîÜìçíï, ÷ñüíï, Þ Üëëç ÷ñïíéêÞ ðåñßïäï ôçò áñåóêåßáò óáò, óõëëÝãåôå ôá áñ÷åßá êáôáãñáöÞò ãéá ôïõò äéÜöïñïõò åêôõðùôÝò, ëïãáñéÜæåôå ôéò óåëßäåò ðïõ áíáëïãïýí óôïõò ÷ñÞóôåò, êáé ÷ñåþíåôå áíáëüãùò. ¸ðåéôá óâÞíåôå ôá óôïé÷åßá áðü ôá áñ÷åßá êáôáãñáöÞò, îåêéíþíôáò áðü êáèáñÞ êáôÜóôáóç ãéá ôçí åðüìåíç ðåñßïäï. Ç ÊáôáìÝôñçóç êáôÜ ôç ÷ñÞóç åßíáé ëéãüôåñï ãíùóôÞ, ßóùò åðåéäÞ åßíáé ðéï äýóêïëïò ôñüðïò. Óå áõôÞ ôç ìÝèïäï ôá ößëôñá ÷ñåþíïõí ôïõò ÷ñÞóôåò ãéá ôéò åêôõðþóåéò ôïõò áìÝóùò ìüëéò áõôÝò ðñáãìáôïðïéçèïýí. ¼ðùò êáé ìå ôçí êáôáãñáöÞ ÷ñÞóçò äßóêïõ (disk quotas), ç êáôáìÝôñçóç åßíáé Üìåóç. Ìðïñåßôå íá ðñïëáìâÜíåôå ôçí ÷ñÞóç åêôõðùôþí áðü ÷ñÞóôåò ðïõ Ý÷ïõí ÷ôõðÞóåé êüêêéíï, êáé ìðïñåßôå íá ðáñÝ÷åôå óôïõò ÷ñÞóôåò Ýíá ôñüðï ãéá íá åëÝã÷ïõí êáé íá ñõèìßæïõí ôïí üãêï åêôõðþóåùí (print quotas). ÁëëÜ áõôÞ ç ìÝèïäïò ðñïûðïèÝôåé ëßãï êþäéêá âÜóåùí äåäïìÝíùí ãéá ôçí êáôáãñáöÞ ÷ñçóôþí êáé ôùí åí ëüãù ìåãåèþí. Ôï óýóôçìá ðáñï÷Ýôåõóçò LPD õðïóôçñßæåé åýêïëá êáé ôéò äýï ìåèüäïõò: áðü ôç óôéãìÞ ðïõ ðñÝðåé åóåßò íá ðáñÝ÷åôå ôá ößëôñá (ôéò ðåñéóóüôåñåò öïñÝò), èá ðñÝðåé åðßóçò íá ðáñÝ÷åôå êáé ôïí êþäéêá êáôáìÝôñçóçò. ÁëëÜ õðÜñ÷åé êáé Ýíá êáëü óå áõôÞ ôçí õðüèåóç: Ý÷åôå áðåñéüñéóôç åõåëéîßá óôéò ìåèüäïõò êáôáìÝôñçóçò. Ãéá ðáñÜäåéãìá, ìðïñåßôå íá åðéëÝîåôå ðåñéïäéêÞ Þ êáôÜ ôç ÷ñÞóç êáôáìÝôñçóç. Ìðïñåßôå íá åðéëÝîåôå ôéò ðëçñïöïñßåò ðïõ èá êáôáãñÜöïíôáé: ïíüìáôá ÷ñçóôþí, ïíüìáôá õðïëïãéóôþí, ôýðïõò åñãáóéþí, ôõðùìÝíåò óåëßäåò, ôåôñáãùíéêÜ ìÝôñá ÷áñôéïý ðïõ ÷ñçóéìïðïéÞèçêå, ðüóïò ÷ñüíïò ÷ñåéÜóôçêå ãéá íá ãßíåé ç åêôýðùóç, êáé ðïëëÜ áêüìá. Êáé üëá áõôÜ ãßíïíôáé ìåôáôñÝðïíôáò ôá ößëôñá ãéá íá áðïèçêåýïõí áõôÝò ôéò ðëçñïöïñßåò. ÃñÞãïñç êáé Ðñü÷åéñç ÊáôáìÝôñçóç Åêôõðþóåùí Ôï &os; äéáôßèåôáé ìå äýï ðñïãñÜììáôá ðïõ ìðïñïýí íá ðáñÝ÷ïõí Üìåóá áðëÞ ðåñéïäéêÞ êáôáìÝôñçóç. Åßíáé ôï ößëôñï êåéìÝíïõ lpf, ðïõ ðåñéãñÜöåôáé óôçí åíüôçôá lpf: Ýíá Ößëôñï ÊåéìÝíïõ, êáé ôï &man.pac.8;, Ýíá ðñüãñáììá ðïõ óõëëÝãåé êáé áèñïßæåé êáôá÷ùñßóåéò áðü áñ÷åßá êáôáìåôñÞóåùí. ¼ðùò áíáöÝñáìå óôçí åíüôçôá ôùí ößëôñùí (Ößëôñá), ôï LPD îåêéíÜ ôá ößëôñá êåéìÝíïõ êáé ìåôáôñïðÞò ðåñíþíôáò óôçí ãñáììÞ åíôïëþí ôïõ ößëôñïõ êáé ôï üíïìá ôïõ áñ÷åßïõ êáôáãñáöÞò. Ôá ößëôñá ìðïñïýí íá ÷ñçóéìïðïéÞóïõí áõôÞ ôçí ðáñÜìåôñï ãéá íá îÝñïõí ðïõ íá ãñÜöïõí ôéò êáôá÷ùñßóåéò êáôáìÝôñçóçò. Ôï üíïìá ôïõ áñ÷åßïõ êáôáìÝôñçóçò öáßíåôáé óôçí éêáíüôçôá af óôï /etc/printcap, êáé áí äåí ïñßæåôáé ç ðëÞñçò äéáäñïìÞ ôïõ, ÷ñçóéìïðïéåßôáé ç ó÷åôéêÞ äéáäñïìÞ ùò ðñïò ôïí êáôÜëïãï spool. Ôï LPD îåêéíÜ ôï lpf ìå ðáñáìÝôñïõò ðëÜôïõò êáé ìÞêïõò óåëßäáò (áðü ôéò éêáíüôçôåò pw êáé pl). Ôï lpf ÷ñçóéìïðïéåß áõôÝò ôéò ðáñáìÝôñïõò ãéá íá ðñïóäéïñßóåé ôçí ðïóüôçôá ÷áñôéïý ðïõ ÷ñçóéìïðïéÞèçêå. ÌåôÜ ôçí áðïóôïëÞ ôïõ áñ÷åßïõ óôïí åêôõðùôÞ, ãñÜöåé ìéá êáôá÷þñéóç êáôáìÝôñçóçò óôï áñ÷åßï êáôáãñáöÞò. Ïé êáôá÷ùñßóåéò ìïéÜæïõí ìå ôéò ðáñáêÜôù: 2.00 rose:andy 3.00 rose:kelly 3.00 orchid:mary 5.00 orchid:mary 2.00 orchid:zhang Èá ðñÝðåé íá ÷ñçóéìïðïéåßôå îå÷ùñéóôü áñ÷åßï êáôáãñáöÞò ãéá êÜèå åêôõðùôÞ, áöïý ôï lpf äåí Ý÷åé åíóùìáôùìÝíç äõíáôüôçôá êëåéäþìáôïò áñ÷åßïõ (file locking), êáé äýï lpf ìðïñïýí íá êáôáóôñÝøïõí ôï Ýíá ôçí êáôá÷þñéóç ôïõ Üëëïõ áí ðñüêåéôáé íá ãñÜøïõí ôáõôü÷ñïíá óôï ßäéï áñ÷åßï. ¸íáò åýêïëïò ôñüðïò ãéá íá âåâáéþóåôå ôçí ìïíáäéêüôçôá áñ÷åßïõ êáôáãñáöÞò áíÜ åêôõðùôÞ åßíáé íá ÷ñçóéìïðïéÞóåôå ôçí éêáíüôçôá af=acct óôï /etc/printcap. ¸ôóé, êÜèå áñ÷åßï êáôáãñáöÞò èá âñßóêåôáé óôïí êáôÜëïãï spool ôïõ áíôßóôïé÷ïõ åêôõðùôÞ, óå Ýíá áñ÷åßï ìå üíïìá acct. ¼ôáí åßóôå Ýôïéìïé íá ÷ñåþóåôå ôïõò ÷ñÞóôåò ãéá ôéò åêôõðþóåéò, åêôåëÝóôå ôï ðñüãñáììá &man.pac.8;. ÁðëÜ ìåôáâåßôå óôïí êáôÜëïãï spool ãéá ôïí åêôõðùôÞ ðïõ êÜíåôå êáôáìÝôñçóç êáé ðëçêôñïëïãÞóôå pac. Èá åìöáíéóôåß Ýíáò áðïëïãéóìüò ìå ÷ñåþóåéò óå äïëÜñéá, üðùò âëÝðåôå óôç óõíÝ÷åéá: Login pages/feet runs price orchid:kelly 5.00 1 $ 0.10 orchid:mary 31.00 3 $ 0.62 orchid:zhang 9.00 1 $ 0.18 rose:andy 2.00 1 $ 0.04 rose:kelly 177.00 104 $ 3.54 rose:mary 87.00 32 $ 1.74 rose:root 26.00 12 $ 0.52 total 337.00 154 $ 6.74 ÐáñáêÜôù åßíáé ïé ðáñÜìåôñïé ðïõ äÝ÷åôáé ôï &man.pac.8;: Ãéá ðïéü printer íá êÜíåé áðïëïãéóìü. ÁõôÞ ç åðéëïãÞ äïõëåýåé ìüíï áí õðÜñ÷åé ç ðëÞñçò äéáäñïìÞ óôçí éêáíüôçôá af óôï /etc/printcap. Ôáîéíïìåß ôï áðïôÝëåóìá áíÜ êüóôïò áíôß ôçò áëöáâçôéêÞò ôáîéíüìçóçò ôùí ÷ñçóôþí. Áãíïåß ôï üíïìá ôïõ õðïëïãéóôÞ óôá áñ÷åßá êáôáãñáöÞò. Ìå áõôÞ ôçí åðéëïãÞ, ï ÷ñÞóôçò smith óôïí õðïëïãéóôÞ alpha åßíáé ï ßäéïò ÷ñÞóôçò ìå ôïí smith óôïí õðïëïãéóôÞ gamma. ×ùñßò ôçí åðéëïãÞ áõôÞ, åßíáé äéáöïñåôéêïß ÷ñÞóôåò. Õðïëïãßæåé ôéò ÷ñåþóåéò ìå price (ôéìÞ) óå äïëÜñéá áíÜ óåëßäá Þ áíÜ ðüäé áíôß ãéá ôçí ôéìÞ áðü ôçí éêáíüôçôá pc óôï /etc/printcap, Þ áëëéþò äýï óåíôò (áðü ðñïåðéëïãÞ). Ìðïñåßôå íá ïñßóåôå ùò price ìéá ôéìÞ ìå äåêáäéêÜ øçößá (floating point). ÁíôéóôñÝöåé ôçí óåéñÜ ôáîéíüìçóçò. Äçìéïõñãåß Ýíá áñ÷åßï áðïëïãéóìïý ôùí êáôáìåôñÞóåùí êáé êáèáñßæåé ôá ðåñéå÷üìåíá ôùí áñ÷åßùí êáôáãñáöÞò. name Ôõðþíåé ðëçñïöïñßåò áíáöïñÜò ìüíï ãéá ôá óõãêåêñéìÝíá name (ïíüìáôá) ÷ñçóôþí. Óôïí ðñïåðéëåãìÝíï áðïëïãéóìü ðïõ ðáñÜãåé ôï &man.pac.8;, âëÝðåôå ôùí áñéèìü ôùí ôõðùìÝíùí óåëßäùí áíÜ ÷ñÞóôç áðü ôïõò äéÜöïñïõò õðïëïãéóôÝò. Áí, óôï ÷þñï óáò, ï õðïëïãéóôÞò äåí Ý÷åé óçìáóßá (ãéáôß ïé ÷ñÞóôåò ìðïñïýí íá ÷ñçóéìïðïéÞóïõí ïðïéïíäÞðïôå èÝëïõí), åêôåëÝóôå ôçí åíôïëÞ pac , ãéá íá äçìéïõñãÞóåôå ôïí áêüëïõèï áðïëïãéóìü: Login pages/feet runs price andy 2.00 1 $ 0.04 kelly 182.00 105 $ 3.64 mary 118.00 35 $ 2.36 root 26.00 12 $ 0.52 zhang 9.00 1 $ 0.18 total 337.00 154 $ 6.74 Ãéá ôïí ïñéóìü ðïóïóôïý ÷ñÝùóçò óå äïëÜñéá, ôï &man.pac.8; ÷ñçóéìïðïéåß ôçí éêáíüôçôá pc óôï áñ÷åßï /etc/printcap (ðñïåðéëåãìÝíç ôéìÞ 200, Þ 2 óåíôò áíÜ óåëßäá). Ðñïóäéïñßóôå óå áõôÞí ôçí éêáíüôçôá, óå åêáôïóôÜ ôïõ óåíô, ôçí ôéìÞ áíÜ óåëßäá Þ áíÜ ðüäé ðïõ èÝëåôå íá ÷ñåþíåôå ãéá ôéò åêôõðþóåéò. Ìðïñåßôå íá ðñïóðåñÜóåôå áõôÞ ôçí ôéìÞ üôáí ôñÝ÷åôå ôï &man.pac.8; ìå ôçí åðéëïãÞ . H ìïíÜäá ìÝôñçóçò ãéá ôçí åðéëïãÞ åßíáé óå äïëÜñéá, ü÷é óå åêáôïóôÜ ôïõ óåíô. Ãéá ðáñÜäåéãìá, &prompt.root; pac ïñßæåé êüóôïò êÜèå óåëßäáò Ýíá äïëÜñéï êáé ðåíÞíôá óåíôò. Ìðïñåßôå ðñáãìáôéêÜ íá Ý÷åôå ðïëëÜ Ýóïäá ÷ñçóéìïðïéþíôáò áõôÝò ôéò ÷ñåþóåéò. ÔÝëïò, åêôåëþíôáò pac èá áðïèçêåýóåôå ôéò ðëçñïöïñßåò ôïõ áðïëïãéóìïý óå Ýíá áñ÷åßï êáôáãñáöÞò áðïëïãéóìïý, ðïõ èá Ý÷åé ôï ßäéï üíïìá ìå ôï áñ÷åßï êáôáãñáöÞò ôïõ åêôõðùôÞ, áëëÜ ìå êáôÜëçîç _sum. ¸ðåéôá êáèáñßæåôáé ôï áñ÷åßï êáôáãñáöÞò. ¼ôáí åêôåëÝóåôå ðÜëé ôï &man.pac.8;, èá îáíáäéáâÜóåé ôï áñ÷åßï áðïëïãéóìïý, ãéá íá ðÜñåé ôá áñ÷éêÜ óýíïëá, êáé èá ðñïóèÝóåé ôéò ðëçñïöïñßåò áðü ôï êáíïíéêü áñ÷åßï êáôáãñáöÞò. Ðùò Ìðïñåßôå íá ÌåôñÞóåôå ôéò ÔõðùìÝíåò Óåëßäåò; Ãéá íá ìåôñÞóåôå ôéò ôõðùìÝíåò óåëßäåò ìå Ýóôù óôïé÷åéþäç ëåðôïìÝñåéá, èá ðñÝðåé íá ðñïóäéïñßóåôå ðüóï ÷áñôß ÷ñåéÜæåôáé ìéá åñãáóßá. Áõôü åßíáé ôï ïõóéáóôéêüôåñï ðñüâëçìá óôçí êáôáìÝôñçóç åêôõðþóåùí. Ãéá åñãáóßåò áðëïý êåéìÝíïõ, ôï ðñüâëçìá äåí åßíáé äýóêïëï íá ëõèåß: ÌåôñÜôå ðüóåò ãñáììÝò õðÜñ÷ïõí óå ìéá åñãáóßá êáé ôéò óõãêñßíåôå ìå ðüóåò ãñáììÝò ìðïñåß íá ôõðþóåé ï åêôõðùôÞò óáò óå ìéá óåëßäá. Ìçí îå÷Üóåôå íá óõìðåñéëÜâåôå ôá backspaces ðïõ ðñïêáëïýí õðåñôýðùóç, Þ åðéìÞêçò ëïãéêÝò ãñáììÝò ðïõ áíáäéðëþíïíôáé óå ðåñéóóüôåñåò áðü ìßá öõóéêÝò ãñáììÝò. Ôï ößëôñï êåéìÝíïõ lpf (ðïõ ðáñïõóéÜóáìå óôï lpf: Ýíá Ößëôñï ÊåéìÝíïõ) ëáìâÜíåé õðüøéí ôïõ áõôÜ ôá óôïé÷åßá üôáí êÜíåé êáôáìÝôñçóç. Áí ãñÜöåôå êÜðïéï ößëôñï êåéìÝíïõ ðïõ ÷ñåéÜæåôáé íá êÜíåé êáôáìÝôñçóç, ßóùò íá èÝëåôå íá åëÝãîåôå ôïí ðçãáßï êþäéêá ôïõ lpf. Ðùò ÷åéñßæåóôå üìùò ôïõò õðüëïéðïõò ôýðïõò áñ÷åßùí; Ãéá ôéò ìåôáôñïðÝò áðü DVI-óå-LaserJet Þ áðü DVI-óå-&postscript;, ìðïñåßôå íá êÜíåôå ôï ößëôñï óáò íá áíáëýåé ôçí Ýîïäï ôïõ dvilj Þ ôïõ dvips êáé íá åëÝã÷åé ðüóåò óåëßäåò äçìéïõñãÞèçêáí áðü ôç ìåôáôñïðÞ. ºóùò ìðïñÝóåôå íá êÜíåôå êÜôé ðáñüìïéï êáé ìå äéáöïñåôéêïýò ôýðïõò áñ÷åßùí êáé ðñïãñÜììáôá ìåôáôñïðÞò Ùóôüóï, üëåò áõôÝò ïé ìÝèïäïé Ý÷ïõí ôï ìåéïíÝêôçìá ðùò ï åêôõðùôÞò ðéèáíþò óôçí ðñáãìáôéêüôçôá íá ìçí åêôõðþóåé üëåò ôéò óåëßäåò. Ãéá ðáñÜäåéãìá, èá ìðïñïýóå íá ìðëïêáñéóôåß ôï ÷áñôß, Þ íá ôåëåéþóåé ôï ôüíåñ, Þ áêüìç íá óõìâåß êáé Ýêñçîç —åíþ ï ÷ñÞóôçò èá óõíå÷ßóåé íá ÷ñåþíåôáé. Ôé èá ìðïñïýóáôå íá êÜíåôå; ÕðÜñ÷åé ìüíï Ýíáò óßãïõñïò ôñüðïò ãéá íá êÜíåôå êáôáìÝôñçóç áêñéâåßáò. Íá ðÜñåôå Ýíáí åêôõðùôÞ ðïõ íá ìðïñåß íá óáò ðåé ðüóï ÷áñôß ÷ñçóéìïðïéåß, êáé íá ôïí óõíäÝóåôå ìÝóù óåéñéáêÞò èýñáò Þ ìÝóù äéêôýïõ. Ó÷åäüí üëïé ïé åêôõðùôÝò &postscript; õðïóôçñßæïõí áõôÞ ôçí äõíáôüôçôá. Èá âñåßôå êáé Üëëïõò ôýðïõò êáé êáôáóêåõáóôÝò ðïõ êÜíïõí åðßóçò ôï ßäéï (ãéá ðáñÜäåéãìá, ïé laser åêôõðùôÝò äéêôýïõ ôçò Imagen). ÌåôáôñÝøôå ôá ößëôñá ãéá áõôïýò ôïõò åêôõðùôÝò þóôå íá êáôáãñÜöïõí ôéò ôõðùìÝíåò óåëßäåò ìåôÜ ôçí ïëïêëÞñùóç ôçò åêÜóôïôå åñãáóßáò åêôýðùóçò, êáé ñõèìßóôå ôïõò íá êñáôïýí áñ÷åßá êáôáãñáöÞò ìå ìüíï áõôÞ ôçí ðëçñïöïñßá. Äåí ÷ñåéÜæåôáé êáôáìÝôñçóç ãñáììþí ïýôå áíáöïñÜ óöáëìÜôùí. ÖõóéêÜ, ðÜíôá Ý÷åôå ôç äõíáôüôçôá íá öáíåßôå ãåííáéüäùñïò êáé íá ðáñÝ÷åôå ôéò åêôõðþóåéò óáò äùñåÜí. ×ñÞóç Åêôõðùôþí printers usage ÁõôÞ ç åíüôçôá ðåñéãñÜöåé ðùò íá ÷ñçóéìïðïéåßôå ôïõò åêôõðùôÝò ðïõ Ý÷åôå åãêáôáóôÞóåé óôï &os;. Ïé âáóéêÝò åíôïëÝò ãéá ôïí ôåëéêü ÷ñÞóôç åßíáé ïé áêüëïõèåò: &man.lpr.1; Åêôýðùóç åñãáóéþí &man.lpq.1; ¸ëåã÷ïò ïõñÜò áíáìïíÞò (print queue) ôïõ åêôõðùôÞ &man.lprm.1; ÄéáãñáöÞ åñãáóéþí áðü ôçí ïõñÜ áíáìïíÞò ÕðÜñ÷åé åðßóçò ìéá åíôïëÞ ãéá ôïõò äéá÷åéñéóôÝò, ç &man.lpc.8;, ðïõ ðåñéãñÜöåôáé óôçí åíüôçôá Äéá÷åßñéóç Åêôõðùôþí, êáé ÷ñçóéìïðïéåßôáé ãéá íá åëÝã÷åé ôïõò åêôõðùôÝò êáé ôéò ïõñÝò áíáìïíÞò. Êáé ïé ôñåéò åíôïëÝò &man.lpr.1;, &man.lprm.1;, êáé &man.lpq.1; äÝ÷ïíôáé ôçí åðéëïãÞ ìå ôçí ïðïßá êáèïñßæåôáé óå ðïéïí åêôõðùôÞ Þ ïõñÜ áíáìïíÞò èá åíåñãÞóïõí, üðùò áíáöÝñåôáé óôï áñ÷åßï /etc/printcap. Áõôü óáò åðéôñÝðåé íá áðïóôåßëåôå, íá äéáãñÜøåôå, êáé íá åëÝãîåôå åñãáóßåò óå äéÜöïñïõò åêôõðùôÝò. Áí äåí ÷ñçóéìïðïéåßôå ôçí åðéëïãÞ , ôüôå ïé åíôïëÝò ÷ñçóéìïðïéïýí ôïí åêôõðùôÞ ðïõ áíáöÝñåôáé óôç ìåôáâëçôÞ ðåñéâÜëëïíôïò PRINTER. ÔÝëïò, áí äåí Ý÷åôå èÝóåé ìéá ìåôáâëçôÞ ðåñéâÜëëïíôïò PRINTER, ïé åíôïëÝò åêôåëïýíôáé ìå ôïí ðñïåðéëåãìÝíï åêôõðùôÞ ðïõ ïíïìÜæåôáé lp. Áðü äù êáé óôï åîÞò, ìå ôçí ïñïëïãßá ðñïåðéëåãìÝíïò åêôõðùôÞò èá åííïïýìå ôïí åêôõðùôÞ ðïõ áíáöÝñåôáé óôçí ìåôáâëçôÞ ðåñéâÜëëïíôïò PRINTER, Þ áí äåí õðÜñ÷åé, ôïí åêôõðùôÞ ìå ôï üíïìá lp. Åêôýðùóç Åñãáóéþí Ãéá íá åêôõðþóåôå áñ÷åßá, ðëçêôñïëïãÞóôå: &prompt.user; lpr filename ... printing Èá åêôõðùèïýí üëá ôá áíáöåñüìåíá áñ÷åßá óôïí ðñïåðéëåãìÝíï åêôõðùôÞ. Áí äåí áíáöÝñåôå áñ÷åßá, ôï &man.lpr.1; äéáâÜæåé äåäïìÝíá áðü ôï standard input. Ãéá ðáñÜäåéãìá, áõôÞ ç åíôïëÞ èá åêôõðþóåé ìåñéêÜ óçìáíôéêÜ áñ÷åßá ôïõ óõóôÞìáôïò: &prompt.user; lpr /etc/host.conf /etc/hosts.equiv Ãéá íá åðéëÝîåôå Ýíá óõãêåêñéìÝíï åêôõðùôÞ, ðëçêôñïëïãÞóôå: &prompt.user; lpr printer-name filename ... Óôï ðáñÜäåéãìá ìáò èá åêôõðùèåß ìéá ìåãÜëç ëßóôá áñ÷åßùí ôïõ ôñÝ÷ïíôïò êáôáëüãïõ óôïí åêôõðùôÞ ðïõ ïíïìÜæåôáé rattan: &prompt.user; ls | lpr rattan Áöïý äåí áíáöÝñïíôáé ïíüìáôá áñ÷åßùí óôçí åíôïëÞ &man.lpr.1;, ôï lpr äéáâÜæåé ôá äåäïìÝíá ðïõ èá åêôõðþóåé áðü ôï standard input, ôá ïðïßá åßíáé ç Ýîïäïò ôçò åíôïëÞò ls . Ç åíôïëÞ &man.lpr.1; ìðïñåß íá äå÷èåß Ýíá ìåãÜëï áñéèìü åðéëïãþí ãéá íá åëÝã÷åé ôçí ìïñöïðïßçóç, íá ìåôáôñÝðåé áñ÷åßá, íá äçìéïõñãåß ðïëëáðëÜ áíôßãñáöá, ê.ë.ð. Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò, äåßôå ôçí åíüôçôá ÅðéëïãÝò Åêôýðùóçò. ¸ëåã÷ïò Åñãáóéþí åêôýðùóç åñãáóéþí ¼ôáí åêôõðþíåôå ìå ôï &man.lpr.1;, ôá äåäïìÝíá ðïõ èÝëåôå íá åêôõðþóåôå ôïðïèåôïýíôáé óå Ýíá ðáêÝôï (package) ðïõ ïíïìÜæåôáé åñãáóßá åêôýðùóçò (print job), ç ïðïßá áðïóôÝëëåôáé óôï óýóôçìá ðáñï÷Ýôåõóçò LPD. ÊÜèå åêôõðùôÞò Ý÷åé ìéá ïõñÜ áíáìïíÞò åñãáóéþí, êáé ç åñãáóßá óáò áíáìÝíåé ìáæß ìå Üëëåò äéêÝò óáò êáé Üëëùí ÷ñçóôþí. Ï åêôõðùôÞò ôéò åêôõðþíåé ìå ôçí óåéñÜ Üöéîçò óôçí ïõñÜ áíáìïíÞò. Ãéá íá åìöáíßóåôå ôçí ïõñÜ áíáìïíÞò ãéá ôïí ðñïåðéëåãìÝíï åêôõðùôÞ, ðëçêôñïëïãÞóôå &man.lpq.1;. Ãéá êÜðïéïí óõãêåêñéìÝíï åêôõðùôÞ, ÷ñçóéìïðïéÞóôå ôçí åðéëïãÞ . Ãéá ðáñÜäåéãìá, ç åíôïëÞ: &prompt.user; lpq bamboo åìöáíßæåé ôçí ïõñÜ áíáìïíÞò ãéá ôïí åêôõðùôÞ ìå ôï üíïìá bamboo. Áêïëïõèåß Ýíá ðáñÜäåéãìá åîüäïõ ôçò åíôïëÞò lpq: bamboo is ready and printing Rank Owner Job Files Total Size active kelly 9 /etc/host.conf, /etc/hosts.equiv 88 bytes 2nd kelly 10 (standard input) 1635 bytes 3rd mary 11 ... 78519 bytes Åìöáíßæïíôáé ôñåéò åñãáóßåò óôç ëßóôá áíáìïíÞò ãéá ôïí bamboo. Óôçí ðñþôç åñãáóßá, ðïõ Ý÷åé óôáëåß áðü ôïí ÷ñÞóôç kelly, Ý÷åé áðïäïèåß ï áñéèìüò åñãáóßáò (job number) 9. ÊÜèå åñãáóßá åíüò åêôõðùôÞ ÷áñáêôçñßæåôáé áðü Ýíá ìïíáäéêü ôÝôïéï áñéèìü. Ôéò ðåñéóóüôåñåò öïñÝò ìðïñåßôå íá ôïí áãíïÞóåôå, áëëÜ èá ôïí ÷ñåéáóôåßôå áí èÝëåôå íá äéáãñÜøåôå êÜðïéá åñãáóßá. Äåßôå ôçí åíüôçôá ÄéáãñáöÞ Åñãáóéþí ãéá ðåñéóóüôåñåò ðëçñïöïñßåò. Ç åñãáóßá ìå ôï íïýìåñï åííÝá áðïôåëåßôáé áðü äýï áñ÷åßá. Ôá ðïëëáðëÜ áñ÷åßá ðïõ äüèçêáí óôç ãñáììÞ åíôïëþí ôïõ &man.lpr.1; èåùñïýíôáé ìÝñïò ìßáò ìüíï åñãáóßáò. ÁõôÞ åßíáé êáé ç ôñÝ÷ïõóá åíåñãÞ åñãáóßá (ðáñáôçñÞóôå ôç ëÝîç active ôçò óôÞëçò Rank), ðïõ óçìáßíåé ðùò ç åñãáóßá åêôõðþíåôáé áõôÞ ôç óôéãìÞ. Ç äåýôåñç åñãáóßá áðïôåëåßôáé áðü äåäïìÝíá ðïõ Ý÷ïõí ðåñÜóåé óôçí standard input ôçò åíôïëÞò &man.lpr.1;. Ç ôñßôç åñãáóßá ðñïÝñ÷åôáé áðü ôïí ÷ñÞóôç mary, êáé ðñüêåéôáé ãéá ìéá ðïëý ïãêþäç åñãáóßá. Ôï üíïìá äéáäñïìÞò ôïõ áñ÷åßïõ ðïõ ðñüêåéôáé íá åêôõðùèåß åßíáé ðïëý ìåãÜëï ãéá íá ÷ùñÝóåé óôç óôÞëç, êáé ãéá áõôü ç åíôïëÞ &man.lpq.1; áðëÜ ôï óõìâïëßæåé ìå ôñåéò ôåëåßåò. Ç ðñþôç ãñáììÞ ôçò åîüäïõ áðü ôçí &man.lpq.1; åßíáé åðßóçò ðïëý ÷ñÞóéìç: ìáò åíçìåñþíåé ãéá ôï ôé êÜíåé ôçí ðáñïýóá óôéãìÞ ï åêôõðùôÞò (Þ ôïõëÜ÷éóôïí ãéá ôï ôé ðéóôåýåé ôï LPD ðùò êÜíåé ï åêôõðùôÞò áõôÞ ôç óôéãìÞ). Ç åíôïëÞ &man.lpq.1; åðßóçò õðïóôçñßæåé ôçí åðéëïãÞ ãéá íá äçìéïõñãÞóåé ìéá ìåãÜëç, ëåðôïìåñÞ ëßóôá. Áêïëïõèåß Ýíá ðáñÜäåéãìá ôïõ lpq : waiting for bamboo to become ready (offline ?) kelly: 1st [job 009rose] /etc/host.conf 73 bytes /etc/hosts.equiv 15 bytes kelly: 2nd [job 010rose] (standard input) 1635 bytes mary: 3rd [job 011rose] /home/orchid/mary/research/venus/alpha-regio/mapping 78519 bytes Áöáßñåóç Åñãáóéþí Áí áëëÜîåôå ãíþìç ãéá ìéá åñãáóßá ðïõ åß÷áôå áðïóôåßëåé ðñïò åêôýðùóç, ìðïñåßôå íá ôçí áöáéñÝóåôå áðü ôçí ëßóôá áíáìïíÞò ìå ôçí åíôïëÞ &man.lprm.1;. Ìðïñåßôå áêüìç íá ÷ñçóéìïðïéÞóåôå ôçí &man.lprm.1; ãéá íá áöáéñÝóåôå ìéá åíåñãÞ åñãáóßá, áëëÜ ðéèáíüí êÜðïéï ìÝñïò ôçò íá åêôõðùèåß Ýôóé êáé áëëéþò. Ãéá íá áöáéñÝóåôå ìéá åñãáóßá áðü ôïí ðñïåðéëåãìÝíï åêôõðùôÞ, ÷ñçóéìïðïéÞóôå ðñþôá ôçí &man.lpq.1; ãéá íá âñåßôå ôïí áñéèìü ôçò. ¸ðåéôá ðëçêôñïëïãÞóôå: &prompt.user; lprm job-number Ãéá íá áöáéñÝóåôå ìéá åñãáóßá áðü êÜðïéïí óõãêåêñéìÝíï åêôõðùôÞ, ðñïóèÝóôå ôçí åðéëïãÞ . Ç áêüëïõèç åíôïëÞ áöáéñåß ôçí åñãáóßá ìå áñéèìü 10 áðü ôçí ïõñÜ áíáìïíÞò ãéá ôïí åêôõðùôÞ bamboo: &prompt.user; lprm bamboo 10 Ç åíôïëÞ &man.lprm.1; Ý÷åé ìåñéêÝò óõíôïìåýóåéò: lprm - Áöáéñåß üëåò ôéò åñãáóßåò (ãéá ôïí ðñïåðéëåãìÝíï åêôõðùôÞ) ðïõ áíÞêïõí óå åóÜò. lprm user Áöáéñåß üëåò ôéò åñãáóßåò (ãéá ôïí ðñïåðéëåãìÝíï åêôõðùôÞ) ðïõ áíÞêïõí óôïí ÷ñÞóôç (user). Ï õðåñ÷ñÞóôçò (superuser) ìðïñåß íá áöáéñÝóåé åñãáóßåò Üëëùí ÷ñçóôþí, åóåßò ìðïñåßôå íá áöáéñÝóåôå ìüíï ôéò äéêÝò óáò. lprm Ç åíôïëÞ &man.lprm.1; ÷ùñßò áñéèìü åñãáóßáò, üíïìá ÷ñÞóôç, Þ ðïõ åìöáíßæåôáé óôçí ãñáììÞ åíôïëþí, áöáéñåß ôçí ôñÝ÷ïõóá åíåñãÞ åñãáóßá óôïí ðñïåðéëåãìÝíï åêôõðùôÞ, áí áíÞêåé óå óÜò. Ï õðåñ÷ñÞóôçò (superuser) ìðïñåß íá áöáéñÝóåé ïðïéáäÞðïôå åíåñãÞ åñãáóßá. Ãéá íá äïõëÝøåôå óå êÜðïéïí óõãêåêñéìÝíï åêôõðùôÞ áíôß ôïõ ðñïåðéëåãìÝíïõ, áðëÜ ÷ñçóéìïðïéÞóôå ôçí åðéëïãÞ ìå ôéò ðáñáðÜíù óõíôïìåýóåéò. Ãéá ðáñÜäåéãìá, ç áêüëïõèç åíôïëÞ áöáéñåß üëåò ôéò åñãáóßåò ôïõ ôñÝ÷ïíôïò ÷ñÞóôç áðü ôçí ïõñÜ áíáìïíÞò ôïõ åêôõðùôÞ rattan: &prompt.user; lprm rattan - Áí åñãÜæåóôå óå ðåñéâÜëëïí äéêôýïõ, ç &man.lprm.1; èá óáò åðéôñÝøåé íá áöáéñÝóåôå åñãáóßåò ìüíï áðü ôïí õðïëïãéóôÞ ðïõ ôéò Ý÷åôå óôåßëåé, áíåîÜñôçôá áí ï åêôõðùôÞò åßíáé ðñïóâÜóéìïò êáé áðü Üëëïõò õðïëïãéóôÝò. Ç áêüëïõèç åíôïëÞ åðéäåéêíýåé áêñéâþò áõôü ôï ÷áñáêôçñéóôéêü: &prompt.user; lpr rattan myfile &prompt.user; rlogin orchid &prompt.user; lpq rattan Rank Owner Job Files Total Size active seeyan 12 ... 49123 bytes 2nd kelly 13 myfile 12 bytes &prompt.user; lprm rattan 13 rose: Permission denied &prompt.user; logout &prompt.user; lprm rattan 13 dfA013rose dequeued cfA013rose dequeued ÐÝñá áðü ôï Áðëü Êåßìåíï: Ðåñéóóüôåñåò ÅðéëïãÝò Åêôýðùóçò Ç åíôïëÞ &man.lpr.1; õðïóôçñßæåé ìéá ãêÜìá åðéëïãþí ãéá ôïí Ýëåã÷ï ìïñöïðïßçóçò êåéìÝíïõ, ìåôáôñïðÞò ãñáöéêþí êáé Üëëùí ìïñöþí áñ÷åßùí, ðáñáãùãÞò ðïëëáðëþí áíôéãñÜöùí, ÷åéñéóìïý åñãáóéþí, êáé Üëëá. Ïé åðéëïãÝò áõôÝò ðåñéãñÜöïíôáé óôçí ðáñïýóá åíüôçôá. ÅðéëïãÝò Ìïñöïðïßçóçò êáé ÌåôáôñïðÞò Ïé áêüëïõèåò åðéëïãÝò ôçò &man.lpr.1; åëÝã÷ïõí ôçí ìïñöïðïßçóç ôùí áñ÷åßùí ôçò åñãáóßáò åêôýðùóçò. ×ñçóéìïðïéÞóôå ôéò áí ç åñãáóßá óáò äåí ðåñéÝ÷åé áðëü êåßìåíï Þ áí åðéèõìåßôå íá ìïñöïðïéÞóåôå áðëü êåßìåíï äéáìÝóïõ ôïõ åñãáëåßïõ &man.pr.1;. &tex; Ãéá ðáñÜäåéãìá, ç áêüëïõèç åíôïëÞ ôõðþíåé Ýíá áñ÷åßï DVI (áðü ôï óýóôçìá óôïé÷åéïèåóßáò &tex;) ìå üíïìá fish-report.dvi óôïí åêôõðùôÞ ìå üíïìá bamboo: &prompt.user; lpr bamboo fish-report.dvi ÁõôÝò ïé åðéëïãÝò åöáñìüæïíôáé óå êÜèå áñ÷åßï ôçò åñãáóßáò, êáé Ýôóé äåí ìðïñåßôå íá áíáìßîåôå (áò ðïýìå) áñ÷åßá DVI êáé ditroff ìáæß óôçí ßäéá åñãáóßá. Áðëþò óôåßëôå ôá áñ÷åßá óáí äéáöïñåôéêÝò åñãáóßåò, ÷ñçóéìïðïéþíôáò äéáöïñåôéêÝò åðéëïãÝò ìåôáôñïðÞò ãéá êÜèå åñãáóßá. ¼ëåò áõôÝò ïé åðéëïãÝò åêôüò ôçò êáé ôçò áðáéôïýí åãêáôåóôçìÝíá ößëôñá ìåôáôñïðÞò ãéá ôïí åêôõðùôÞ ðñïïñéóìïý. Ãéá ðáñÜäåéãìá, ç åðéëïãÞ áðáéôåß ôï ößëôñï ìåôáôñïðÞò DVI. Ç åíüôçôá Ößëôñá ÌåôáôñïðÞò äßíåé ðåñéóóüôåñåò ëåðôïìÝñåéåò. Åêôõðþíåé áñ÷åßá cifplot. Åêôõðþíåé áñ÷åßá DVI. Åêôõðþíåé áñ÷åßá êåéìÝíïõ FORTRAN. Åêôõðþíåé äåäïìÝíá ó÷åäßáóçò (plot). Åêôõðþíåé ôçí Ýîïäï ìå åóï÷Þ number óôçëþí. Áí ðáñáëåßøåôå ôï number, ç åóï÷Þ èá åßíáé 8 óôÞëåò. ÁõôÞ ç åðéëïãÞ äïõëåýåé ìüíï ìå ïñéóìÝíá ößëôñá ìåôáôñïðÞò. Ìçí ôïðïèåôåßôå êåíü äéÜóôçìá ìåôáîý ôïõ êáé ôïõ áñéèìïý. Åêôõðþíåé äåäïìÝíá êåéìÝíïõ êáôÜ ãñÜììá (literal), óõìðåñéëáìâÜíïíôáò êáé ôïõò ÷áñáêôÞñåò åëÝã÷ïõ. Åêôõðþíåé äåäïìÝíá ditroff (äåäïìÝíá troff áíåîÜñôçôá áðü ôç óõóêåõÞ). -p Ìïñöïðïéåß ôï áðëü êåßìåíï ìå ôçí &man.pr.1; ðñéí íá ôï åêôõðþóåé. Äåßôå ôçí &man.pr.1; ãéá ðåñéóóüôåñåò ðëçñïöïñßåò. ×ñçóéìïðïéåß ôï title óôçí êåöáëßäá ôïõ &man.pr.1; áíôß ãéá ôï üíïìá áñ÷åßïõ. ÁõôÞ ç åðéëïãÞ åðéäñÜ ìüíï üôáí ÷ñçóéìïðïéåßôáé ìå ôçí åðéëïãÞ Åêôõðþíåé äåäïìÝíá troff. Åêôõðþíåé äåäïìÝíá ñÜóôåñ. Åäþ åßíáé Ýíá ðáñÜäåéãìá: áõôÞ ç åíôïëÞ åêôõðþíåé ìéá êïìøÜ ìïñöïðïéçìÝíç Ýêäïóç ôçò óåëßäáò âïçèåßáò &man.ls.1; óôïí ðñïåðéëåãìÝíï åêôõðùôÞ: &prompt.user; zcat /usr/share/man/man1/ls.1.gz | troff -man | lpr Ç åíôïëÞ &man.zcat.1; áðïóõìðéÝæåé ôïí ðçãáßï êþäéêá ôçò óåëßäáò âïçèåßáò &man.ls.1; êáé ôïí ðåñíÜåé óôçí åíôïëÞ &man.troff.1;, ç ïðïßá ôïí ìïñöïðïéåß êáé äçìéïõñãåß óôçí Ýîïäï ôçò äåäïìÝíá GNU troff, ôá áðïóôÝëëåé óôçí &man.lpr.1;, ç ïðïßá ìå ôç óåéñÜ ôçò áðïóôÝëëåé ôçí åñãáóßá óôï LPD. ÅðåéäÞ ÷ñçóéìïðïéÞóáìå ôçí åðéëïãÞ óôï &man.lpr.1;, ï spooler, êáôÜ ôç äéÜñêåéá ôçò åêôýðùóçò, èá ìåôáôñÝøåé ôçí Ýîïäï GNU troff óå Ýíá ôýðï äåäïìÝíùí êáôáíïçôü áðü ôïí ðñïåðéëåãìÝíï åêôõðùôÞ. ÅðéëïãÝò ×åéñéóìïý Åñãáóéþí Ïé áêüëïõèåò åðéëïãÝò ôïõ &man.lpr.1; ïäçãïýí ôï LPD íá ÷åéñéóôåß ôéò åñãáóßåò ìå åéäéêü ôñüðï: -# copies Äçìéïõñãåß Ýíáí áñéèìü copies (áíôéãñÜöùí) ãéá êÜèå áñ÷åßï ôçò åñãáóßáò áíôß ãéá Ýíá ìüíï áíôßãñáöï. Ï äéá÷åéñéóôÞò ìðïñåß íá áðåíåñãïðïéÞóåé áõôÞ ôçí åðéëïãÞ ãéá íá ìåéþóåé ôçí êáôáðüíçóç ôùí åêôõðùôþí êáé íá åíèáññýíåé ôçí ÷ñÞóç öùôïôõðéêþí ìç÷áíçìÜôùí. Äåßôå ôçí åíüôçôá Ðåñéïñéóìüò Åêôýðùóçò Ðïëëáðëþí ÁíôéãñÜöùí. Óå áõôü ôï ðáñÜäåéãìá, åêôõðþíïõìå óôïí ðñïåðéëåãìÝíï åêôõðùôÞ ôñßá áíôßãñáöá ôïõ parser.c êáé ôñßá áíôßãñáöá ôïõ parser.h: &prompt.user; lpr parser.c parser.h -m ÁðïóôïëÞ mail ìåôÜ ôçí ïëïêëÞñùóç åêôýðùóçò ôçò åñãáóßáò. Ìå áõôÞ ôçí åðéëïãÞ, ôï óýóôçìá LPD óôÝëíåé mail óôï ëïãáñéáóìü óáò ìüëéò ïëïêëçñùèåß ï ÷åéñéóìüò åêôýðùóçò ôçò åñãáóßáò óáò. Óôï ìÞíõìá ôïõ, èá óáò åíçìåñþóåé áí ç åñãáóßá ïëïêëçñþèçêå åðéôõ÷þò Þ áí ðáñïõóéÜóôçêå óöÜëìá êáé (óõ÷íÜ) ðïéü Þôáí ôï óöÜëìá. -s Äåí áíôéãñÜöåé ôá áñ÷åßá óôïí êáôÜëïãï spool, áëëÜ áíôß ãéá áõôü, äçìéïõñãåß óõìâïëéêÝò óõíôïìåýóåéò (symbolic links) ðñïò áõôÜ. Áí åêôõðþíåôå ìéá ìåãÜëç åñãáóßá, ßóùò èÝëåôå íá ÷ñçóéìïðïéÞóåôå áõôÞ ôçí åðéëïãÞ. Èá óáò ãëõôþóåé ÷þñï óôïí êáôÜëïãï spool (ßóùò ç åñãáóßá óáò íá õðåñâáßíåé ôïí åëåýèåñï ÷þñï ôïõ óõóôÞìáôïò áñ÷åßùí ðïõ ðåñéÝ÷åé ôïí êáôÜëïãï spool). Åðßóçò èá êåñäßóåôå ÷ñüíï áöïý ôï LPD äåí èá ÷ñåéáóôåß íá áíôéãñÜøåé üëç ôçí åñãáóßá óáò óôïí êáôÜëïãï spool. Áõôü, ùóôüóï, Ý÷åé êáé Ýíá ìåéïíÝêôçìá: áðü ôç óôéãìÞ ðïõ ôï LPD èá êÜíåé áíáöïñÜ êáôåõèåßáí óôï ðñùôüôõðï áñ÷åßï, äåí èá Ý÷åôå äõíáôüôçôá íá ìåôáôñÝøåôå Þ íá äéáãñÜøåôå ôï áñ÷åßï Ýùò üôïõ åêôõðùèåß. Áí åêôõðþíåôå óå Ýíá áðïìáêñõóìÝíï åêôõðùôÞ, ôï LPD ðéèáíþò èá ÷ñåéáóôåß ôåëéêÜ íá áíôéãñÜøåé ôá áñ÷åßá áðü ôïí ôïðéêü õðïëïãéóôÞ óôïí áðïìáêñõóìÝíï, åðïìÝíùò ç åðéëïãÞ óå áõôÞ ôçí ðåñßðôùóç åîïéêïíïìåß ÷þñï óôïí ôïðéêü êáôÜëïãï spool, áëëÜ ü÷é óôïí áðïìáêñõóìÝíï. Åîáêïëïõèåß ùóôüóï íá åßíáé éäéáßôåñá ÷ñÞóéìç. -r Áðïìáêñýíåé ôá áñ÷åßá ôçò åñãáóßáò ìåôÜ ôçí áíôéãñáöÞ ôïõò óôïí êáôÜëïãï spool, Þ ìåôÜ ôçí åêôýðùóç ôïõò ìå ôçí åðéëïãÞ . Íá åßóôå ðñïóåêôéêïß ìå áõôÞ ôçí åðéëïãÞ! ÅðéëïãÝò Óåëßäùí Êåöáëßäáò ÁõôÝò ïé åðéëïãÝò ôïõ &man.lpr.1; ñõèìßæïõí ôï êåßìåíï ðïõ êáíïíéêÜ åìöáíßæåôáé óôçí óåëßäá êåöáëßäáò ôçò åñãáóßáò. Áí ïé óåëßäåò êåöáëßäáò ðáñåìðïäßæïíôáé ãéá ôïí óõãêåêñéìÝíï åêôõðùôÞ, áõôÝò ïé åðéëïãÝò äåí Ý÷ïõí êáìßá åðßäñáóç. Äåßôå ôçí åíüôçôá Óåëßäåò Êåöáëßäáò ãéá ðëçñïöïñßåò ó÷åôéêÜ ìå ôéò ñõèìßóåéò ôùí óåëßäùí êåöáëßäáò. -C text ÁíôéêáèéóôÜ ôï üíïìá õðïëïãéóôÞ óôç óåëßäá êåöáëßäáò ìå text. Ôï üíïìá õðïëïãéóôÞ ðïõ åìöáíßæåôáé åßíáé, áðü ðñïåðéëïãÞ, ôï üíïìá ôïõ õðïëïãéóôÞ áðü ôïí ïðïßï Ýãéíå ç áðïóôïëÞ ôçò åñãáóßáò. -J text ÁíôéêáèéóôÜ ôï üíïìá åñãáóßáò óôç óåëßäá êåöáëßäáò ìå text. Ôï üíïìá åñãáóßáò ðïõ åìöáíßæåôáé áðü ðñïåðéëïãÞ, åßíáé ôï üíïìá ôïõ ðñþôïõ áñ÷åßïõ ôçò åñãáóßáò, Þ stdin áí ç åêôýðùóç ãßíåôáé áðü ôï standard input. -h Äåí åêôõðþíåé óåëßäá êåöáëßäáò. ÁíÜëïãá ìå ôéò ñõèìßóåéò, áõôÞ ç åðéëïãÞ ßóùò íá ìçí Ý÷åé åðßäñáóç ëüãù ôïõ ôñüðïõ ìå ôïí ïðïßï äçìéïõñãïýíôáé ïé óåëßäåò êåöáëßäáò. Ãéá ðåñéóóüôåñåò ëåðôïìÝñåéåò, äåßôå ôçí åíüôçôá Óåëßäåò Êåöáëßäáò. Äéá÷åßñéóç Åêôõðùôþí Ùò äéá÷åéñéóôÞò, ÷ñåéÜóôçêå íá åãêáôáóôÞóåôå, íá ñõèìßóåôå êáé íá äïêéìÜóåôå ôïõò åêôõðùôÝò óáò. ×ñçóéìïðïéþíôáò ôçí åíôïëÞ &man.lpc.8;, ìðïñåßôå íá åðéêïéíùíÞóåôå ìå ôïõò åêôõðùôÝò óáò ìå áêüìç ðåñéóóüôåñïõò ôñüðïõò. Ìå ôçí &man.lpc.8;, ìðïñåßôå: Íá åêêéíåßôå êáé íá óôáìáôÜôå ôïõò åêôõðùôÝò Íá åíåñãïðïéåßôå êáé íá áðåíåñãïðïéåßôå ôéò ïõñÝò áíáìïíÞò Íá áíáêáôáôÜóóåôå ôçí óåéñÜ åñãáóéþí óå êÜèå ïõñÜ áíáìïíÞò. Êáôáñ÷Þí, ìßá óçìåßùóç ó÷åôéêÜ ìå ôçí ïñïëïãßá: áí Ýíáò åêôõðùôÞò åßíáé óôáìáôçìÝíïò (stopped), äåí èá åêôõðþóåé ôßðïôå áðü ôçí ïõñÜ áíáìïíÞò åñãáóéþí. Ïé ÷ñÞóôåò ìðïñïýí áêüìç íá óôÝëíïõí åñãáóßåò, ïé ïðïßåò ìðáßíïõí óôçí ïõñÜ áíáìïíÞò Ýùò üôïõ ï åêôõðùôÞò îåêéíÞóåé Þ êáèáñéóôåß ç ïõñÜ áíáìïíÞò. Áí Ý÷åé áðåíåñãïðïéçèåß ç ïõñÜ áíáìïíÞò, êáíåßò ÷ñÞóôçò (åêôüò ôïõ root) äåí ìðïñåß íá áðïóôåßëåé åñãáóßåò óôïí åêôõðùôÞ. Ìéá åíåñãÞ ïõñÜ áíáìïíÞò åðéôñÝðåé íá áðïóôáëïýí åñãáóßåò óôïí åêôõðùôÞ. ¸íáò åêôõðùôÞò ìðïñåß íá îåêéíÞóåé ìå ïõñÜ áíáìïíÞò áðåíåñãïðïéçìÝíç, êáé óå áõôÞ ôçí ðåñßðôùóç èá óõíå÷ßóåé íá åêôõðþíåé ôéò åñãáóßåò ôçò ïõñÜò Ýùò üôïõ áõôÞ áäåéÜóåé. ÃåíéêÜ, ðñÝðåé íá Ý÷åôå ðñïíüìéá root ãéá íá ÷ñçóéìïðïéÞóåôå ôçí åíôïëÞ &man.lpc.8;. Ïé êáíïíéêïß ÷ñÞóôåò ìðïñïýí íá ÷ñçóéìïðïéïýí ôçí åíôïëÞ &man.lpc.8; ìüíï ãéá íá âëÝðïõí ôçí êáôÜóôáóç ôïõ åêôõðùôÞ êáé íá åðáíåêêéíïýí ôïí åêôõðùôÞ óå ðåñßðôùóç ìðëïêáñßóìáôïò. ÐáñáêÜôù èá âñåßôå ìéá ëßóôá åíôïëþí ôïõ &man.lpc.8;. Ïé ðåñéóóüôåñåò áðü ôéò åíôïëÝò ðáßñíïõí ùò ðáñÜìåôñï ôï printer-name ãéá ôç ñýèìéóç ôïõ óõãêåêñéìÝíïõ åêôõðùôÞ. Ìðïñåßôå íá ÷ñçóéìïðïéåßôå all óôç èÝóç ôïõ printer-name ãéá íá áíáöåñèåßôå óå üëïõò ôïõò åêôõðùôÝò ðïõ åßíáé êáôá÷ùñéóìÝíïé óôï /etc/printcap. abort printer-name ÄéáãñÜöåé ôçí ôñÝ÷ïõóá åñãáóßá êáé óôáìáôÜåé ôïí åêôõðùôÞ. Ïé ÷ñÞóôåò ìðïñïýí áêüìç íá áðïóôåßëïõí åñãáóßåò áí ç ïõñÜ áíáìïíÞò åßíáé áêüìç åíåñãÞ. clean printer-name ÄéáãñÜöåé ôá ðáëéÜ áñ÷åßá áðü ôïí êáôÜëïãï spool ôïõ åêôõðùôÞ. Óå êÜðïéåò ðåñéðôþóåéò, ôá áñ÷åßá áðü ôá ïðïßá áðïôåëåßôáé êÜðïéá åñãáóßá äåí áöáéñïýíôáé êáíïíéêÜ áðü ôï LPD, åéäéêÜ áí õðÞñîáí óöÜëìáôá êáôÜ ôçí åêôýðùóç Þ êÜðïéåò åíÝñãåéåò áðü ôïí äéá÷åéñéóôÞ. ÁõôÞ ç åíôïëÞ âñßóêåé áñ÷åßá ðïõ äåí áíÞêïõí óôïí êáôÜëïãï spool êáé ôá áöáéñåß. disable printer-name Áðåíåñãïðïéåß ôçí ïõñÜ áíáìïíÞò ãéá íÝåò åñãáóßåò. Áí ï åêôõðùôÞò äïõëåýåé, èá óõíå÷ßóåé íá åêôõðþíåé ôéò åíáðïìåßíáíôåò åñãáóßåò óôçí ïõñÜ áíáìïíÞò. Ï superuser (root) ìðïñåß ðÜíôá íá óôÝëíåé åñãáóßåò, áêüìç êáé óå áðåíåñãïðïéçìÝíç óåéñÜ áíáìïíÞò. ÁõôÞ ç åíôïëÞ åßíáé ÷ñÞóéìç, üôáí åëÝã÷åôå Ýíá íÝï åêôõðùôÞ Þ üôáí åãêáèéóôÜôå Ýíá ößëôñï: áðåíåñãïðïéÞóôå ôçí ïõñÜ áíáìïíÞò êáé óôåßëôå åñãáóßåò óáí root. Ïé õðüëïéðïé ÷ñÞóôåò äåí èá Ý÷ïõí äõíáôüôçôá íá áðïóôåßëïõí åñãáóßåò Ýùò üôïõ ïëïêëçñþóåôå ôïõò åëÝã÷ïõò óáò êáé åðáíåíåñãïðïéÞóåôå ôçí ïõñÜ áíáìïíÞò ìå ôçí åíôïëÞ enable. down printer-name message Ïäçãåß ôïí åêôõðùôÞ óå "êáôÝâáóìá" (down). Åßíáé éóïäýíáìï ìå ôï disable áêïëïõèïýìåíï áðü Ýíá stop. Ôï message (ìÞíõìá) åìöáíßæåôáé üôáí êÜðïéïò ÷ñÞóôçò åëÝã÷åé ôçí óåéñÜ áíáìïíÞò ìå &man.lpq.1; Þ ôçí êáôÜóôáóç ôïõ åêôõðùôÞ ìå lpc status. enable printer-name Åíåñãïðïßçóç ôçò ïõñÜò áíáìïíÞò ôïõ åêôõðùôÞ. Ïé ÷ñÞóôåò ìðïñïýí íá áðïóôåßëïõí åñãáóßåò áëëÜ ï åêôõðùôÞò äåí èá ôõðþóåé Ýùò üôïõ îåêéíÞóåé. help command-name Ôõðþíåé óåëßäåò âïçèåßáò ãéá ôçí åíôïëÞ command-name. Äß÷ùò ôï command-name, åêôõðþíåé ìéá ðåñßëçøç üëùí ôùí äéáèÝóéìùí åíôïëþí. restart printer-name ÎåêéíÜ ôïí åêôõðùôÞ. Ïé êáíïíéêïß ÷ñÞóôåò ìðïñïýí íá ÷ñçóéìïðïéÞóïõí áõôÞ ôçí åíôïëÞ ìüíï óå êÜðïéá åéäéêÞ ðåñßðôùóç ðïõ ôï LPD äåí áðïêñßíåôáé, áëëÜ äåí ìðïñïýí íá îåêéíÞóïõí Ýíá åêôõðùôÞ ðïõ Ý÷åé óôáìáôÞóåé åîáéôßáò ôùí åíôïëþí stop Þ down. Ç åíôïëÞ restart åßíáé éóïäýíáìç ìå ôçí abort áêïëïõèïýìåíç áðü ôç start. start printer-name ÎåêéíÜ ôïí åêôõðùôÞ. Ï åêôõðùôÞò èá ôõðþóåé åñãáóßåò áðü ôçí ïõñÜ áíáìïíÞò ôïõ. stop printer-name ÓôáìáôÜåé ôïí åêôõðùôÞ. Ï åêôõðùôÞò èá ïëïêëçñþóåé ôçí ôñÝ÷ïõóá åñãáóßá ôïõ êáé äåí èá ôõðþóåé êáìßá Üëëç åñãáóßá áðü ôçí ïõñÜ áíáìïíÞò ôïõ. Áêüìç êáé áí ï åêôõðùôÞò åßíáé óôáìáôçìÝíïò, ïé ÷ñÞóôåò ìðïñïýí áêüìç íá óôÝëíïõí åñãáóßåò áí åßíáé åíåñãïðïéçìÝíç ç ïõñÜ áíáìïíÞò. topq printer-name job-or-username ÁíáêáôÜôáîç ôçò ïõñÜò áíáìïíÞò ãéá ôïí printer-name. Ôïðïèåôïýíôáé ðñþôåò ïé åñãáóßåò ìå áñéèìü áíáöïñÜò job Þ áõôÝò ðïõ áíÞêïõí óôï ÷ñÞóôç username. Ãéá áõôÞ ôçí åíôïëÞ, äåí ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå all óôçí èÝóç ôïõ printer-name. up printer-name Ïäçãåß ôïí åêôõðùôÞ óå "áíÝâáóìá" (up). Ôï áíôßèåôï ôçò åíôïëÞò down. Éóïäõíáìåß ìå ôçí start áêïëïõèïýìåíç áðü ôçí åíôïëÞ enable. Ôï &man.lpc.8; äÝ÷åôáé ôéò ðáñáðÜíù åíôïëÝò óôçí ãñáììÞ åíôïëþí. Áí äåí åéóÜãåôå êáìßá åíôïëÞ, ôï &man.lpc.8; ìðáßíåé óå êáôÜóôáóç áëëçëåðßäñáóçò (interactive), üðïõ ìðïñåßôå íá ðëçêôñïëïãåßôå åíôïëÝò ìÝ÷ñé íá äþóåôå exit, quit, Þ end-of-file. ÅíáëëáêôéêÝò Ëýóåéò ãéá ôïí ÓôÜíôáñ Spooler Áí Ý÷åôå ìåëåôÞóåé ðéóôÜ üëï ôï êåöÜëáéï ìÝ÷ñé åäþ, èá Ý÷åôå ìÜèåé ó÷åäüí ôá ðÜíôá ó÷åôéêÜ ìå ôï óýóôçìá ðáñï÷Ýôåõóçò LPD ðïõ äéáôßèåôáé ìå ôï &os;. Èá Ý÷åôå êáôáíïÞóåé êáé ðïëëÝò áðü ôéò åëëåßøåéò ôïõ, ðïõ öõóéêÜ ãåííïýí ôï åñþôçìá: Ðïéá Üëëá óõóôÞìáôá ðáñï÷Ýôåõóçò (ðïõ íá ëåéôïõñãïýí óôï &os;) õðÜñ÷ïõí äéáèÝóéìá; LPRng - LPRng - - Ôï LPRng, ôï ïðïßï óêüðéìá + Ôï LPRngLPRng, ôï ïðïßï óêüðéìá óçìáßíåé LPR: the Next Generation (ç Åðüìåíç ÃåíéÜ) åßíáé ìéá áðü ôçí áñ÷Þ õëïðïßçóç ôïõ PLP. Ï Patrick Powell êáé ï Justin Mason (êýñéïò óõíôçñçôÞò ôïõ PLP) óõíåñãÜóôçêáí ãéá íá öôéÜîïõí ôï LPRng. Ç êýñéá ôïðïèåóßá ôïõ LPRng åßíáé ç . CUPS - CUPS - - Ôï CUPS, Þ áëëéþò Common UNIX + Ôï CUPSCUPS, Þ áëëéþò Common UNIX Printing System, ðáñÝ÷åé ìéá öïñçôÞ ðëáôöüñìá åêôõðþóåùí ãéá ëåéôïõñãéêÜ óõóôÞìáôá âáóéóìÝíá óôï &unix;. Áíáðôý÷èçêå áðü ôçí Easy Software Products ãéá íá ðñïùèÞóåé ìéá óôÜíôáñ ëýóç åêôõðþóåùí ãéá üëïõò ôïõò ÷ñÞóôåò êáé êáôáóêåõáóôÝò &unix;. Ôï CUPS ÷ñçóéìïðïéåß ôï ðñùôüêïëëï Internet Printing Protocol (IPP) ùò âÜóç ôïõ ãéá ôç äéá÷åßñéóç åñãáóéþí åêôýðùóçò êáé ïõñþí áíáìïíÞò. Õðïóôçñßæïíôáé åðßóçò, áëëÜ ìå ìåéùìÝíç ëåéôïõñãéêüôçôá, ôá ðñùôüêïëëá Line Printer Daemon (LPD), Server Message Block (SMB), êáé AppSocket (ãíùóôü ùò JetDirect). Ôï CUPS ðñïóèÝôåé äõíáôüôçôåò áíß÷íåõóçò äéêôõáêþí åêôõðùôþí, åíþ ìÝóù ôùí åðéëïãþí PostScript Printer Description (PPD) ãßíåôáé åöéêôÞ ç õðïóôÞñéîç óýã÷ñïíùí åêôõðùôþí óôïí êüóìï ôïõ &unix;. Ç êýñéá ôïðïèåóßá ôïõ CUPS åßíáé ç . HPLIP - HPLIP - - Ôï HPLIP, Þ Óýóôçìá Áðåéêüíéóçò + Ôï HPLIPHPLIP, Þ Óýóôçìá Áðåéêüíéóçò êáé Åêôýðùóçò ôçò HP ãéá &linux;, åßíáé ìéá óïõßôá åöáñìïãþí ãéá óõóêåõÝò ôçò HP, ðïõ õðïóôçñßæåé ëåéôïõñãßåò üðùò ç åêôýðùóç, ç óÜñùóç êáé ç áðïóôïëÞ / ëÞøç öáî. Ç óïõßôá áõôÞ ÷ñçóéìïðïéåß ôï CUPS ùò backend ãéá êÜðïéåò áðü ôéò ëåéôïõñãßåò åêôýðùóçò ðïõ ðáñÝ÷åé. Ç êýñéá äéêôõáêÞ ôïðïèåóßá ôçò åöáñìïãÞò HPLIP åßíáé . Åíôïðéóìüò Âëáâþí ÌåôÜ ôçí åêôÝëåóç ôïõ áðëïý ôåóô ìå ôï &man.lptest.1;, áíôß ôçò êáíïíéêÞò åêôýðùóçò, ìðïñåß íá Ý÷åôå ëÜâåé ùò áðïôÝëåóìá ìßá áðü ôéò áêüëïõèåò êáôáóôÜóåéò: Ï åêôõðùôÞò êáèõóôÝñçóå íá îåêéíÞóåé Þ äåí åêôýðùóå ïëüêëçñç ôç óåëßäá. Ï åêôõðùôÞò ôýðùóå ôï ôåóô, áëëÜ äåí îåêßíçóå áìÝóùò. ºóùò ÷ñåéÜóôçêå íá ðéÝóåôå ôï ðëÞêôñï PRINT REMAINING Þ ôï FORM FEED ôïõ åêôõðùôÞ óáò ãéá íá åìöáíéóôåß ôï åðéèõìçôü áðïôÝëåóìá. ÅÜí åßíáé üíôùò áõôÞ ç ðåñßðôùóç óáò, ï åêôõðùôÞò ðéèáíþò íá Þôáí óå áíáìïíÞ ãéá íá åîáêñéâþóåé áí õðÞñ÷áí ðñüóèåôá äåäïìÝíá óôçí åñãáóßá åêôýðùóçò ðñéí îåêéíÞóåé íá åêôõðþíåé ïôéäÞðïôå. Ãéá íá äéïñèþóåôå ôï ðñüâëçìá, ìðïñåßôå íá èÝóåôå ôï ößëôñï êåéìÝíïõ íá óôÝëíåé Ýíá ÷áñáêôÞñá FORM FEED (Þ Üëëï êáôÜëëçëï) óôïí åêôõðùôÞ. Áõôü óõíÞèùò åßíáé áñêåôü ãéá íá ìðïñåßôå íá åêôõðþíåôå êáôåõèåßáí ïðïéïäÞðïôå êåßìåíï áðïìÝíåé óå áíáìïíÞ óôçí åóùôåñéêÞ ìíÞìç (buffer) ôïõ åêôõðùôÞ. Åßíáé åðßóçò ÷ñÞóéìï íá ñõèìßæåôå ôéò åêôõðþóåéò óáò þóôå íá ôåëåéþíïõí ìå ãåìÜôç ôçí ôåëåõôáßá óåëßäá, þóôå ç åðüìåíç åñãáóßá íá ìçí áñ÷ßæåé áðü ôá ìéóÜ ôïõ ðñïçãïýìåíïõ öýëëïõ. Ç áêüëïõèç ôñïðïðïßçóç óôï shell script /usr/local/libexec/if-simple åêôõðþíåé Ýíá form feed ìåôÜ ôçí áðïóôïëÞ ôçò åñãáóßáò óôïí åêôõðùôÞ: #!/bin/sh # # if-simple - Simple text input filter for lpd # Installed in /usr/local/libexec/if-simple # # Simply copies stdin to stdout. Ignores all filter arguments. # Writes a form feed character (\f) after printing job. /bin/cat && printf "\f" && exit 0 exit 2 Ç åêôýðùóç ðáñïõóéÜæåé öáéíüìåíï óêÜëáò (staircase effect). Óôçí åêôýðùóç óáò öáßíåôáé ôï áêüëïõèï: !"#$%&'()*+,-./01234 "#$%&'()*+,-./012345 #$%&'()*+,-./0123456 MS-DOS OS/2 ASCII Ãßíáôå Ýíá áêüìá èýìá ôïõ öáéíïìÝíïõ óêÜëáò, ðïõ ðñïêëÞèçêå áðü áíôéöáôéêÝò åñìçíåßåò ôùí ÷áñáêôÞñùí ìå ôïõò ïðïßïõò äçëþíåôáé ç ôñïöïäïóßá íÝáò ãñáììÞò. Ôá ëåéôïõñãéêÜ óõóôÞìáôá ôýðïõ &unix; ÷ñçóéìïðïéïýí Ýíáí ìüíï ÷áñáêôÞñá ASCII ìå êùäéêü 10, ôïí line feed (ôñïöïäïóßá ãñáììÞò, LF). Ôï &ms-dos;, ôï &os2;, êáé äéÜöïñá Üëëá, ÷ñçóéìïðïéïýí Ýíá æåýãïò ÷áñáêôÞñùí ASCII êùäéêïý 10 êáé ASCII êùäéêïý 13 (ôïí carriage return Þ áëëéþò CR). Ðïëëïß åêôõðùôÝò ÷ñçóéìïðïéïýí ôçí óýìâáóç ôïõ &ms-dos; ãéá ôçí áëëáãÞ ãñáììÞò. ¼ôáí åêôõðþíåôå ìå ôï &os;, ôï êåßìåíï óáò áðëÜ ÷ñçóéìïðïéåß ôïí ÷áñáêôÞñá ôñïöïäïóßáò ãñáììÞò (line feed). Ï åêôõðùôÞò, ìüëéò áíôéëçöèåß ôïí ÷áñáêôÞñá line feed, ðñïùèåß ôï ÷áñôß êáôÜ ìßá ãñáììÞ, áëëÜ êñáôÜåé ôçí ßäéá èÝóç ïñéæüíôéá êáèþò êáëåßôáé íá åêôõðþóåé ôïí åðüìåíï ÷áñáêôÞñá. Óå áõôü ôï óçìåßï ÷ñçóéìïðïéåßôáé ôï CR (carriage return): ìåôáêéíåß äçëáäÞ ôçí èÝóç åñãáóßáò ãéá ôïí åðüìåíï ÷áñáêôÞñá ðïõ ðñüêåéôáé íá åêôõðùèåß óôï áñéóôåñü Üêñï ôïõ ÷áñôéïý. Ôï &os; åðéèõìåß ï åêôõðùôÞò íá ìðïñåß íá åíåñãåß ùò åîÞò: ¼ôáí ï åêôõðùôÞò ëáìâÜíåé CR Íá åêôõðþíåé CR ¼ôáí ï åêôõðùôÞò ëáìâÜíåé LF Íá åêôõðþíåé CR + LF ÕðÜñ÷ïõí äéÜöïñïé ôñüðïé ãéá íá åðéôåõ÷èåß áõôü: ×ñçóéìïðïéÞóôå ôá ðëÞêôñá ñýèìéóçò ôïõ åêôõðùôÞ Þ ôïí ðßíáêá åëÝã÷ïõ ãéá íá áëëÜîåôå ôïí ôñüðï ìå ôïí ïðïßï åñìçíåýåé áõôïýò ôïõò ÷áñáêôÞñåò ï åêôõðùôÞò óáò. Óõìâïõëåõôåßôå ôï åã÷åéñßäéï ÷ñÞóçò ôïõ ãéá íá äåßôå ðùò ìðïñåß íá ãßíåé áõôü. Áí Ý÷åôå êáé Üëëá ëåéôïõñãéêÜ óôï óýóôçìá óáò åêôüò áðü ôï &os;, ðéèáíüí íá ÷ñåéáóôåß, üôáí ôá ÷ñçóéìïðïéåßôå, íá åðáíáñõèìßóåôå ôïí åêôõðùôÞ óáò þóôå íá åñìçíåýåé äéáöïñåôéêÜ ôïõò ÷áñáêôÞñåò CR êáé LF. Óôçí ðåñßðôùóç áõôÞ, ßóùò åßíáé êáëýôåñï íá ðñïôéìÞóåôå êÜðïéá áðü ôéò ëýóåéò ðïõ áêïëïõèïýí. Ï ïäçãüò (driver) ôçò óåéñéáêÞò ãñáììÞò ôïõ &os; ìðïñåß íá ìåôáôñÝðåé áõôüìáôá áðü LF óå CR+LF. ÖõóéêÜ, áõôü äïõëåýåé ìüíï óå óåéñéáêÝò èýñåò. Ãéá íá åíåñãïðïéÞóåôå áõôÞ ôçí ëåéôïõñãßá, ÷ñçóéìïðïéÞóôå ôçí éêáíüôçôá ms# êáé ïñßóôå ôçí êáôÜóôáóç ëåéôïõñãßáò onlcr óôï áñ÷åßï /etc/printcap ãéá ôïí åêôõðùôÞ. Óôåßëôå Ýíá êùäéêü äéáöõãÞò (escape code) óôïí åêôõðùôÞ þóôå íá ÷åéñßæåôáé ðñïóùñéíÜ ôïõò ÷áñáêôÞñåò LF ìå äéáöïñåôéêü ôñüðï. Óõìâïõëåõôåßôå ôï åã÷åéñßäéï ÷ñÞóçò ôïõ åêôõðùôÞ óáò ãéá ôïõò êþäéêåò äéáöõãÞò ðïõ õðïóôçñßæïíôáé. ¼ôáí áíáêáëýøåôå ôïí êáôÜëëçëï, ìåôáôñÝøôå ôï ößëôñï êåéìÝíïõ þóôå íá óôÝëíåé ðñþôá ôïí êùäéêü, êáé Ýðåéôá ôçí åñãáóßá óôïí åêôõðùôÞ. PCL Åäþ åßíáé Ýíá ðáñÜäåéãìá ößëôñïõ êåéìÝíïõ ãéá åêôõðùôÝò ðïõ êáôáëáâáßíïõí ôïõò êùäéêïýò äéáöõãÞò PCL ôçò Hewlett-Packard. Áõôü ôï ößëôñï êÜíåé ôïí åêôõðùôÞ íá ÷åéñßæåôáé ôïõò ÷áñáêôÞñåò LF ùò LF êáé CR. ¸ðåéôá áðïóôÝëëåé ôçí åñãáóßá, óôÝëíïíôáò óôï ôÝëïò ôçò Ýíá ÷áñáêôÞñá áëëáãÞò óåëßäáò (form feed) þóôå íá ãßíåé óùóôÞ åîáãùãÞ ôçò ôåëåõôáßáò óåëßäáò. Ôï ößëôñï áõôü èá ðñÝðåé íá äïõëåýåé ìå ó÷åäüí üëïõò ôïõò åêôõðùôÝò ôçò Hewlett Packard. #!/bin/sh # # hpif - Simple text input filter for lpd for HP-PCL based printers # Installed in /usr/local/libexec/hpif # # Simply copies stdin to stdout. Ignores all filter arguments. # Tells printer to treat LF as CR+LF. Ejects the page when done. printf "\033&k2G" && cat && printf "\033&l0H" && exit 0 exit 2 Åäþ åßíáé Ýíá ðáñÜäåéãìá ãéá ôï /etc/printcap åíüò õðïëïãéóôÞ ìå üíïìá orchid. ¸÷åé Ýíá ìüíï åêôõðùôÞ óôçí ðñþôç ðáñÜëëçëç èýñá ôïõ, Ýíá Hewlett Packard LaserJet 3Si ìå üíïìá teak. ×ñçóéìïðïéåß ôï ðáñáðÜíù script ùò ößëôñï êåéìÝíïõ: # # /etc/printcap for host orchid # teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\ :if=/usr/local/libexec/hpif: Åêôõðþíåôáé ç ìßá ãñáììÞ ðÜíù óôçí Üëëç. Ï åêôõðùôÞò äåí ðñïùèåß êáèüëïõ ôï ÷áñôß êáé üëåò ïé ãñáììÝò êåéìÝíïõ ôõðþíïíôáé ç ìßá ðÜíù áðü ôçí Üëëç, óå ìßá ãñáììÞ. Áõôü ôï ðñüâëçìá åßíáé ôï áíôßóôñïöï ôïõ öáéíüìåíïõ óêÜëáò, ðïõ ðåñéãñÜøáìå ðñïçãïõìÝíùò, êáé åßíáé ðïëý óðÜíéï. Óå êÜðïéï óçìåßï, ïé ÷áñáêôÞñåò LF ðïõ ÷ñçóéìïðïéåß ôï &os; ãéá íá ôåñìáôßóåé ôçí ãñáììÞ, åñìçíåýïíôáé ùò ÷áñáêôÞñåò CR ïé ïðïßïé åðéóôñÝöïõí ôçí êåöáëÞ óôï áñéóôåñü Üêñï ôïõ ÷áñôéïý, áëëÜ äß÷ùò íá ðñïùèÞóïõí ôï ÷áñôß ìßá ãñáììÞ ðñïò ôá êÜôù. ×ñçóéìïðïéÞóôå ôïõò äéáêüðôåò ñõèìßóåùí ôïõ åêôõðùôÞ Þ ôïí ðßíáêá åëÝã÷ïõ ãéá íá èÝóåôå ôéò áêüëïõèåò åðéëïãÝò ãéá ôá LF êáé CR characters: Ï åêôõðùôÞò ëáìâÜíåé Ï åêôõðùôÞò ôõðþíåé CR CR LF CR + LF Ï åêôõðùôÞò äåí åêôõðþíåé (÷Üíåé) êÜðïéïõò ÷áñáêôÞñåò. Ï åêôõðùôÞò, åíþ åßíáé óå ëåéôïõñãßá åêôýðùóçò, äåí åêôõðþíåé êÜðïéïõò ÷áñáêôÞñåò óå üëåò ôéò ãñáììÝò. Ôï ðñüâëçìá ðéèáíþò íá ãßíåôáé åíôïíüôåñï êáèþò ç åêôýðùóç åîåëßóóåôáé, ÷Üíïíôáò áêüìç ðåñéóóüôåñïõò ÷áñáêôÞñåò. Ôï ðñüâëçìá åßíáé ðùò ï åêôõðùôÞò, êáèþò åêôõðþíåé, äåí ðñïëáâáßíåé íá áêïëïõèÞóåé ôçí ôá÷ýôçôá ìå ôçí ïðïßá ï õðïëïãéóôÞò óôÝëíåé äåäïìÝíá ìÝóù ôçò óåéñéáêÞò äéáóýíäåóçò (áõôü ôï ðñüâëçìá äåí ðñÝðåé êáíïíéêÜ íá óõìâáßíåé óå åêôõðùôÝò óõíäåìÝíïõò óå ðáñÜëëçëåò èýñåò). ÕðÜñ÷ïõí äýï ôñüðïé ãéá íá îåðåñáóôåß áõôü ôï ðñüâëçìá: ÅÜí ï åêôõðùôÞò õðïóôçñßæåé Ýëåã÷ï ñïÞò XON/XOFF, ñõèìßóôå ôï &os; íá ôïí ÷ñçóéìïðïéÞóåé ïñßæïíôáò ôçí êáôÜóôáóç ëåéôïõñãßáò ixon ìå ôçí éêáíüôçôá ms#. ÅÜí ï åêôõðùôÞò õðïóôçñßæåé Ýëåã÷ï ñïÞò ôýðïõ Request to Send / Clear to Send (hardware handshake, ãíùóôü êáé ìå ôçí ïíïìáóßá RTS/CTS), ðñÝðåé íá ïñéóôåß ç êáôÜóôáóç ëåéôïõñãßáò crtscts óôçí éêáíüôçôá ms#. Âåâáéùèåßôå ðùò ôï êáëþäéï ðïõ óõíäÝåé ôïí åêôõðùôÞ ìå ôïí õðïëïãéóôÞ åßíáé óùóôÜ öôéáãìÝíï ãéá ÷ñÞóç áõôïý ôïõ åëÝã÷ïõ ñïÞò. Ï åêôõðùôÞò ôõðþíåé óêïõðßäéá. Ï åêôõðùôÞò ôýðùóå êÜôé ðïõ áðïêáëïýìå ôõ÷áßá óêïõðßäéá, åííïþíôáò ïôéäÞðïôå åêôüò ôïõ åðéèõìçôïý êåéìÝíïõ. Áõôü åßíáé óõíÞèùò Ýíá áêüìá óýìðôùìá ëáíèáóìÝíùí ðáñáìÝôñùí óåéñéáêÞò åðéêïéíùíßáò ìå ôïí åêôõðùôÞ. ÅëÝãîôå îáíÜ ôçí ôéìÞ bps rate óôçí éêáíüôçôá br, êáé ôçí ñýèìéóç parity óôçí éêáíüôçôá ms#. Âåâáéùèåßôå ðùò ï åêôõðùôÞò ÷ñçóéìïðïéåß ôéò ßäéåò ñõèìßóåéò ðïõ Ý÷ïõí êáèïñéóôåß óôï áñ÷åßï /etc/printcap. Äåí óõíÝâç ôßðïôå, ï åêôõðùôÞò äåí îåêßíçóå êáí. Áí äåí óõíÝâç ôßðïôå, ôï ðñüâëçìá ðéèáíüí íá ïöåßëåôáé óôï &os; êáé ü÷é óôï hardware. ÐñïóèÝóôå ôçí éêáíüôçôá áñ÷åßïõ êáôáãñáöÞò (log file, lf) óôï áñ÷åßï /etc/printcap, óôçí êáôá÷þñéóç ôïõ åêôõðùôÞ ðïõ Ý÷åé ôï ðñüâëçìá. Ãéá ðáñÜäåéãìá, åäþ åßíáé ç êáôá÷þñéóç ãéá ôïí rattan, ìå ôçí éêáíüôçôá lf: rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple:\ :lf=/var/log/rattan.log ¸ðåéôá, ðñïóðáèÞóôå íá îáíáåêôõðþóåôå. ÅëÝãîôå ôï áñ÷åßï êáôáãñáöÞò (log) (óôï ðáñÜäåéãìá ìáò, /var/log/rattan.log) ãéá íá âñåßôå ðéèáíÝò áíáöïñÝò óöáëìÜôùí. Ìå âÜóç ôá ìçíýìáôá ðïõ âëÝðåôå, ðñïóðáèÞóôå íá äéïñèþóåôå ôï ðñüâëçìá. Áí äåí êáèïñßóåôå ôçí éêáíüôçôá lf, ôï LPD ÷ñçóéìïðïéåß áðü ðñïåðéëïãÞ ôï /dev/console. diff --git a/es_ES.ISO8859-1/books/handbook/mail/chapter.xml b/es_ES.ISO8859-1/books/handbook/mail/chapter.xml index 24959b566d..10a3d5f76c 100755 --- a/es_ES.ISO8859-1/books/handbook/mail/chapter.xml +++ b/es_ES.ISO8859-1/books/handbook/mail/chapter.xml @@ -1,2568 +1,2567 @@ Bill Lloyd Escrito por Jim Mock Reescrito por Correo Electrónico Sinopsis email correo electónico El Correo Electrónico, o email, es una de las formas de comunicación más usadas hoy en dia. Este capítulo es una introducción básica de cómo poner en marcha un servidor de correo en FreeBSD, aunque no es una guía completa y se han omitido muchos conceptos importantes. Si se necesita información exhaustiva sobre el tema puede recurrirse a los libros listados en . Después de leer este capítulo usted sabrá: Qué software está involucrado en el envío y recepción de correo electrónico. Dónde se encuentran en FreeBSD los ficheros básicos de configuración de sendmail. Cómo bloquear a los spammers y evitar el uso no autorizado de su servidor de correo. Cómo instalar y configurar agentes de transferencia de correo (MTA) en su sistema, para reemplazar sendmail. Cómo resolver problemas comunes en servidores de correo. Cómo usar SMTP con UUCP. Cómo usar correo con una conexión dialup. Cómo configurar SMTP con autentificación para más seguridad. Antes de leer este capítulo debería usted: Configurar apropiadamente su conexión de red (). Configurar apropiadamente la información de DNS de su servidor de correo (). Saber como instalar software adicional (). Utilización del correo electrónico POP IMAP DNS Existen varios elementos relacionados con el intercambio de correo electrónico. A saber: El agente de usuario (Mail User Agent o MUA), El agente de transporte de correo (Mail Transport Agent o MTA), El DNS, Las carpetas de correo (Mailboxes), y por supuesto, la máquina servidora de correo (mail host). El Agente de Usuario Entre las opciones más conocidas tenemos: mutt, pine, elm, y mail, junto con programas con interfaz gráfica del estilo de balsa o xfmail por nombrar unos pocos. También existen lectores de correo basados en navegadores web. Los programas de correo basados en navegadores web actúan de pasarela para las transacciones de correo electrónico, entregando dichas transacciones al servidor de correo local, llamando a uno de los agentes de transporte de correo disponibles en la máquina local, o entregando dichas transacciones a un agente de transporte remoto utilizando el protocolo TCP. Agente de Transporte de Correo transporte sendmail transporte postfix transporte qmail transporte exim &os; viene con sendmail por defecto, pero también se soportan otros dæmones, entre los cuales se encuentran: exim; postfix; qmail. El agente de transporte de correo normalmente posee dos funcionalidades, por un lado se responsabiliza de la recepción y por otro se encarga de entregar el correo de salida. No es responsable de la recolección automática de correo mediante la utilización de protocolos como POP o IMAP, ni se utiliza para que el usuario pueda acceder a las carpetas de correo locales. Para realizar estas otras tareas, se necesitan dæmons adicionales. Versiones antiguas de sendmail poseen varios problemas de seguridad que pueden facilitar a un atacante el acceso local o remoto a la máquina que ejecuta sendmail. Para evitar dichos problemas de seguridad se recomienda utilizar una versión actualizada de sendmail. Tiene más opciones a la hora de elegir MTA en los Ports de &os;. Correo electrónico y DNS El Sistema de Nombres de Dominio (en inglés DNS) y su correspondiente dæmon (llamado named) constituyen una parte fundamental del procedimiento de entrega de correo electrónico. Para entregar el correo electrónico al destinatario adecuado el dæmon servidor de correo busca el sitio remoto dentro del sistema de DNS. registro MX El DNS es la entidad responsable de asociar nombres con direcciones IP, pero además se encarga de almacenar información específica relacionada con la entrega de correo mediante registros de tipo MX. Los registros MX (Mail eXchanger) especifican qué máquina o máquinas están encargadas de recibir correo electrónico para un determinado nombre de dominio. En caso de no existir ningún registro MX para el dominio del destinatario, se busca información almacenada en registros de tipo A para enviar el correo al destino final. Se pueden consultar los registros MX para cualquier dominio utilizando el comando &man.host.1;, como se puede observar en el siguiente ejemplo: &prompt.user; host -t mx FreeBSD.org FreeBSD.org mail is handled (pri=10) by mx1.FreeBSD.org Recepción de correo correo recepción La recepción de correo electrónico para su dominio se realiza mediante lo que se conoce como la máquina de correo (mail host). Ésta máquina recoge todo el correo dirigido a su dominio y lo almacena en mbox (el método por defecto para el almacenamiento de correo) o en formato Maildir, dependiendo de la configuración de la máquina. Una vez que el correo ha sido almacenado con éxito se puede leer en local utilizando aplicaciones como &man.mail.1; o como mutt, o de forma remota mediante un conjunto de protocolos tales como POP o IMAP. Esto significa que si usted va a leer el correo de forma local no necesita instalar ningún servidor de POP o IMAP. Acceso a carpetas de correo remotas mediante <acronym>POP</acronym> e <acronym>IMAP</acronym> POP IMAP Para poder acceder a carpetas de correo de forma remota se necesita tener acceso a un servidor de POP o IMAP. Éstos protocolos permiten a los usuarios conectarse a sus carpetas de correo desde ubicaciones remotas de una forma sencilla. Aunque ambos, POP y IMAP, permiten este acceso remoto IMAP ofrece algunas ventajas añadidas, algunas de las cuales son: El acceso mediante IMAP permite almacenar los correos en el servidor remoto sin necesidad de extraerlos y tener que almacenarlos en local. IMAP soporta actualizaciones concurrentes. IMAP resulta ser extremadamente útil bajo enlaces de baja velocidad puesto que permite a los usuarios recuperar la estructura de los mensajes sin necesidad de bajarse todo el contenido. Además puede realizar tareas tales como búsquedas directas en el servidor con el fin de minimizar la utilización de la red. Para instalar un servidor de POP o de IMAP se deben dar los siguientes pasos: Seleccionar el servidor IMAP o POP que mejor cumpla a sus necesidades. Los siguientes servidores POP e IMAP son bien conocidos y son firmes candidatos para ello: qpopper; teapop; imap-uw; courier-imap; Instalar el dæmon POP o IMAP de su elección desde el árbol de ports. Modifique donde sea necesario /etc/inetd.conf para que el servidor POP o IMAP se ejecute automáticamente. Tenga en cuenta que tanto POP como IMAP transmiten información, en especial el usuario y la contraseña, en texto plano. Eso significa que si se desea seguridad en la transmisión de la información a través de la red se deben considerar mecanismos adicionales como por ejemplo el encapsulado de la sesión mediante &man.ssh.1;. El encapsulado de sesiones se explica en . Acceso a carpetas de correo locales Las carpetas de correo pueden abrirse de forma local utilizando un agente de correo de usuario (MUA) en el servidor donde reside la carpeta. Se suelen usar los programas mutt or &man.mail.1;. El Servidor de Correo (Mail Host) servidor de correo El servidor de correo es el nombre que se usa para identificar a la máquina responsable de la entrega y recepción de correo electrónico dentro de una organización. Ésta máquina puede recibir correo de varios usuarios dentro de su dominio. Christopher Shumway Contribuido por Configuración de <application>sendmail</application> sendmail &man.sendmail.8; es el agente de transporte de correo (MTA) por defecto de FreeBSD. La responsabilidad de sendmail consiste en aceptar correo de agentes de correo de usuario (MUA) y en entregar dichos correos al agente de transporte de correo apropiado, según se especifique en su archivo de configuración. Sendmail también acepta conexiones de red provinientes de otros agentes de transporte y puede depositar el correo recibido en carpetas locales o o entregarlo a otros programas. sendmail utiliza los siguientes ficheros de configuración: /etc/mail/access /etc/mail/aliases /etc/mail/local-host-names /etc/mail/mailer.conf /etc/mail/mailertable /etc/mail/sendmail.cf /etc/mail/virtusertable Filename Function /etc/mail/access Base de datos de accesos de sendmail /etc/mail/aliases Carpeta de alias /etc/mail/local-host-names Listados de máquinas para las que sendmailacepta correo /etc/mail/mailer.conf Configuración del programa de correo /etc/mail/mailertable Tabla de entregas de correo /etc/mail/sendmail.cf Archivo de configuración principal de sendmail /etc/mail/virtusertable Usuarios virtuales y tablas de dominio <filename>/etc/mail/access</filename> La base de datos de accesos define qué máquinas o direcciones IP pueden acceder al servidor de correo y quée clase de acceso tienen permitido. Las máquinas se listan junto con las opciones , , o simplemente junto con un mensaje de error que se entrega a la rutina de gestión de excepciones de sendmail. Las máquinas que se listan junto con la opción , que es el valor por defecto, tienen permiso para enviar correo a la máquina servidora siempre y cuando la dirección de correo de destino sea la máquina servidora de correo. Las máquinas listadas junto con la opción tienen el acceso prohibido a conexiones de correo electrónico con el servidor. Por último las máquinas que poseen la etiqueta para sus nombres tienen permitido enviar correo para cualquier destino a través de la máquina servidora de correo. Configuración de la base de datos de acceso de <application>sendmail</application> cyberspammer.com 550 We don't accept mail from spammers FUENTE.DE.CORREO.INDISCRIMINADO@ 550 We don't accept mail from spammers otra.fuente.de.spam REJECT okay.cyberspammer.com OK 128.32 RELAY En el ejemplo se pueden observar cinco entradas. Los generadores de correo que coinciden con la parte izquierda de la tabla se ven afectados por la parte acción especificada en la parte derecha. Los primeros dos ejemplos emiten un código de error para la rutina de excepciones de sendmail. El mensaje de error se transmite a la máquina remota cuando se recibe un correo que coincide con la parte izquierda de la tabla. La siguiente entrada rechaza correo de una determinada máquina de internet, otra.fuente.de.spam. La siguiente entrada acepta conexiones de correo de la máquina okay.cyberspammer.com, lo cual es más exacto que la línea de arriba de cyberspammer.com. Las coincidencias más completas tienen precedencia sobre las menos específicas. La última entrada permite actuar como relay o pasarela de correo electrónico para aquellas máquinas que posean una dirección IP que comience por 128.32. Éstas máquinas podrían enviar correo destinado a otros servidores de correo utilizando el nuestro. Cuando se actualiza este fichero se debe ejecutar make dentro de /etc/mail/ para que se actualice la base de datos. <filename>/etc/mail/aliases</filename> La base de datos de alias contiene una lista de directorios virtuales que son traducidas a otros usuarios, ficheros, programas o incluso otros alias. A continuación se muestran unos pocos ejemplos de la sintáxis que se puede utilizar dentro del fichero /etc/mail/aliases: Mail Aliases root: usuariolocal ftp-bugs: joe,eric,paul bit.bucket: /dev/null procmail: "|/usr/local/bin/procmail" El formato del fichero es sencillo; el nombre de la carpeta de correo que aparece a la izquierda de los dos puntos se traduce al/los destinos de la derecha. El primer ejemplo simplemente traduce la carpeta root a la carpeta usuariolocal, la cual se examina de nuevo utilizando la misma base de datos de alias, y si no existe ninguna otra coincidencia el mensaje se entrega al usuario local usuariolocal. En el ejemplo siguiente se muestra una lista de correo. Todo correo que se envía a la carpeta ftp-bugs se traduce en un envío para tres carpetas locales diferentes: joe, eric y paul. Es importante señalar que también se pueden especificar carpetas remotas mediante la forma usuario@ejemplo.com. El siguiente ejemplo muestra la escritura del correo a un fichero, en este caso en /dev/null. El último ejemplo muestra el envió de correo a un programa; en este caso el mensaje de correo se escribe en la entrada estándar del programa /usr/local/bin/procmail utilizando una tubería (o pipe) de &unix;. Cuando se actualiza este fichero se debe ejecutar make dentro de /etc/mail/ para actualizar la base de datos. <filename>/etc/mail/local-host-names</filename> Este archivo es una lista de nombres de máquinas que &man.sendmail.8; acepta como nombres locales. Se suele utilizar para escribir aquellos dominios o máquinas de los cuales sendmail va a recibir correo. Por ejemplo, si nuestro servidor de correo va a aceptar correo proveniente del dominio ejemplo.com y también de la máquina mail.ejemplo.com nuestro local-host-names debería ser algo así: ejemplo.com mail.ejemplo.com Cuando se actualiza este fichero &man.sendmail.8; necesita ser reiniciado para que tenga en cuenta los cambios. <filename>/etc/mail/sendmail.cf</filename> Archivo de configuración principal de sendmail, controla el comportamiento global de sendmail, incluyendo cualquier tarea desde la reescritura de direcciones de correo electrónico hasta la devolución de mensajes de error a los servidores de correo remotos. Es evidente que con un abanico tan diverso el fichero de configuración acaba por ser bastante complejo y sus detalles quedan fuera de los objetivos de esta sección. Afortunadamente este fichero raras veces necesita ser modificado, al menos en lo que respecta a servidores de correo estándar. El fichero de configuración principal de sendmail se puede construir a partir de &man.m4.1;, es decir, macros que se utilizan para definir características y comportamientos específicos de sendmail. Se ruega al lector consultar /usr/src/contrib/sendmail/cf/README para obtener más detalles acerca de las distintas macros que se pueden utilizar. Cuando se realizan cambios a este fichero sendmail debe ser reiniciado para que los cambios surtan efecto. <filename>/etc/mail/virtusertable</filename> El fichero virtusertable asocia direcciones de correo pertenecientes a dominios y carpetas virtuales con carpetas reales. Estas carpetas pueden ser locales, remotas, alias definidos en /etc/mail/aliases o incluso ficheros. Ejemplo de asociación de correo de dominio virtual root@ejemplo.com root postmaster@ejemplo.com postmaster@noc.ejemplo.net @ejemplo.com joe En el ejemplo superior se observa una asociación para el dominio ejemplo.com. Este fichero se procesa de arriba a abajo buscando la primera coincidencia. La primera entrada asocia root@ejemplo.com con la carpeta de correo local denominada root. La siguiente entrada asocia postmaster@ejemplo.com con la carpeta postmaster situada en la máquina noc.ejemplo.net. Por último, si no se ha encontrado ninguna coincidencia para ejemplo.com se le asigna la última asociación, la cual asocia cualquier mensaje de correo proveniente de ejemplo.com con la carpeta de correo local denominada joe. Andrew Boothman Escrito por Gregory Neil Shapiro Información obtenida de correos escritos por Sustitución del Agente de Transferencia de Correo email cambio de mta Como ya se ha comentado FreeBSD viene con sendmail ya instalado como agente de transferencia de correo por defecto. De esta forma sendmail se encarga de gestionar el correo entrante y saliente. No obstante, debido a distintas razones algunos administradores de sistemas prefieren utilizar otro MTA. Estas razones varían desde simplemente querer probar otros programas de transferencia de correo, hasta la necesidad de utilizar un determinado programa que hace uso de una función específica de un agente determinado. Por suerte cualesquiera que sean estas razones FreeBSD posee un sencillo procedimiento para sustituir a sendmail. Instalación de un nuevo MTA Existen una amplia gama de MTA alternativos a sendmail. Un buen punto de partida es el Sistema de Ports de FreeBSD, donde se pueden localizar varios. Por supuesto el usuario tiene libertad para utilizar cualquier MTA, siempre y cuando se pueda ejecutar en FreeBSD sin problemas. Lo primero es instalar el nuevo MTA. Una vez que está instalado normalmente se tiene la oportunidad para decidir si realmente cubre las necesidades y también se tiene la oportunidad de configurar el nuevo software antes de sustituir a sendmail. El usuario debe tener en cuenta que el nuevo MTA puede sobreescribir algunos binarios del sistema como por ejemplo /usr/bin/sendmail. En cualquier caso el nuevo software de correo suele entrar en funcionamiento con una configuración por defecto. Por favor, recuerde que se recomienda leer la documentación del MTA seleccionado para obtener más información. Desactivación de la aplicación <application> sendmail</application> El procedimiento utilizado para ejecutar sendmail cambió significativamente entre las releases 4.5-RELEASE y 4.6-RELEASE. De esta forma el procedimiento utilizado para la desactivación hoy en día es sutílmente distinto al utilizado en dichas distribuciones. FreeBSD 4.5-STABLE antes de 2002/4/4 y anteriores (Incluyendo 4.5-RELEASE y anteriores) Introducir: sendmail_enable="NO" dentro de /etc/rc.conf. Esta variable desactiva el servicio de recepción de correo de sendmail, pero salvo que se modifique (ver más adelante) el fichero /etc/mail/mailer.conf sendmail todavía será la aplicación elegida para enviar correo electrónico. FreeBSD 4.5-STABLE desde de 2002/4/4 (Incluyendo 4.6-RELEASE y posteriores) Para poder desactivar completamente sendmail haga lo siguiente: sendmail_enable="NONE" dentro del fichero /etc/rc.conf. Se desactiva el servicio de correo de salida de sendmail. Es importanque que se reemplace con un sistema de entrega de correo alternativo que sea totalmente funcional. En caso contrario funciones del sistema FreeBSD tales como &man.periodic.8; no podrán entregar sus resultados por correo eletrónico tal y como normalmente hacen. Varias partes del sistema FreeBSD esperan disponer de un sistema de correo funcional compatible con sendmail. Si las aplicaciones continúan utilizando los binarios de sendmail para realizar envíos de correo después de su desactivación el correo podría ser almacenado en una cola inactiva de sendmail, en cuyo caso nunca se entregaría. Si sólo se quiere desactivar el servicio de correo de entrada de sendmail, basta con establecer la variable: sendmail_enable="NO" dentro de /etc/rc.conf. En &man.rc.sendmail.8; tiene más información sobre las opciones de arranque de sendmail. Ejecución del nuevo MTA en el arranque Existen dos métodos alternativos para ejecutar el nuevo MTA en el arranque, dependiendo de la versión de FreeBSD que se esté ejecutando. FreeBSD 4.5-STABLE antes de 2002/4/11 (Incluyendo 4.5-RELEASE y anteriores) Se debe añadir un script en /usr/local/etc/rc.d/ cuyo nombre termine en .sh y que sea ejecutable por root. El script debe aceptar los parámetros start y stop. Cuando el sistema &os; se está inicializando, los scripts de arranque ejecutarán el siguiente comando: /usr/local/etc/rc.d/supermailer.sh start La misma orden se puede utilizar también para ejecutar el servidor de forma manual. Cuando el sistema se está reiniciando los scripts del sistema ejecutan los ficheros ubicados en /usr/local/etc/rc.d/ utilizando la opción stop, en nuestro caso: /usr/local/etc/rc.d/supermailer.sh stop Dicho comando tambíen se puede utilizar para detener el servidor de correo de forma manual cuando el sistema FreeBSD se ejecuta con normalidad. FreeBSD 4.5-STABLE después de 2002/4/11 (Incluyendo 4.6-RELEASE y posteriores) Con las últimas versiones de FreeBSD se puede utilizar el método anterior pero también se puede especificar mta_start_script="nombre_de_fichero" dentro de /etc/rc.conf, donde nombre_de_fichero es el nombre de algún script que se ejecuta en tiempo de arranque para inicializar el nuevo MTA. Sustitución de <application>sendmail</application> como el agente de transporte de correo predeterminado. El programa sendmail es tan imprescindible y es utilizado por tal multitud de programas en los sistemas &unix; que algunos programas simplemente asumen que sendmail se encuentra instalado y configurado dentro del sistema. Por esta razón varios MTAs alternativos proporcionan su propia implementación de la interfaz de línea de comandos que posée sendmail; esto facilita que se puedan utilizar como sustitutos de sendmail sin mayores dificultades. Por lo tanto si desea utilizar un agente de transporte de correo alternativo debe asegurarse de que todo software que intente ejecutar binario de sendmail estándar, /usr/bin/sendmail, realmente ejecute el nuevo MTA en su lugar. Por fortuna FreeBSD proporciona un sistema llamado &man.mailwrapper.8; que realiza precisamente esta tarea. Cuando sendmail está funcionando se debe localizar algo como lo siguiente dentro del fichero /etc/mail/mailer.conf: sendmail /usr/libexec/sendmail/sendmail send-mail /usr/libexec/sendmail/sendmail mailq /usr/libexec/sendmail/sendmail newaliases /usr/libexec/sendmail/sendmail hoststat /usr/libexec/sendmail/sendmail purgestat /usr/libexec/sendmail/sendmail Esto significa que cuando cualquiera de estos comandos (por ejemplo sendmail mísmamente) se ejecutan el sistema ejecutará en su lugar una copia del el sistema ejecuta en su lugar una copia del mailwrapper denominada sendmail que chequea el fichero mailer.conf y ejecuta /usr/libexec/sendmail/sendmail. Este sistema permite cambiar de una forma sencilla los binarios que se ejecutan realmente cuando se invocan las funciones de sendmail. Si se quiere que ejecutar /usr/local/supermailer/bin/sendmail-compat en lugar de sendmail se puede cambiar el fichero /etc/mail/mailer.conf para que contenga lo siguiente: sendmail /usr/local/supermailer/bin/sendmail-compat send-mail /usr/local/supermailer/bin/sendmail-compat mailq /usr/local/supermailer/bin/mailq-compat newaliases /usr/local/supermailer/bin/newaliases-compat hoststat /usr/local/supermailer/bin/hoststat-compat purgestat /usr/local/supermailer/bin/purgestat-compat Últimos Pasos Una vez que todo estáconfigurado a su gusto hay que matar los procesos de sendmail que ya no se necesitan y ejecutar los procesos pertenecientes al nuevo software de MTA, o utilizar la opción más sencilla: reiniciar la máquina. Reinicar la máquina nos brinda la oportunidad de comprobar que se ha configurado correctamente el arranque del sistema para que ejecute de forma automática el nuevo MTA. Depuración de Problemas email Depuración de problemas ?Por qué tengo que utilizar el FQDN para las máquinas de mi organización? Probablemente se deba a que la máquina de correo se encuentra en un dominio diferente; si por ejemplo la máquina de correo se encuentra en foo.bar.edu y se desea alcanzar una máquina llamada mumble en el dominio bar.edu se tiene que referir a ella mediante un nombre de dominio completo (fully-quailified domain name o FQDN), en éste caso mumble.bar.edu en lugar de referirse a ella simplemente como mumble. Tradicionalmente, la referencia incompleta era posible utilizando resolvers de BSD BIND BIND. No obstante la versión de BIND que en la actualidad se ofrece con FreeBSD ya no permite por defecto el uso de dichas abreviaturas salvo para aquellas máquinas que pertenecen al dominio al que su sistema pertenezca. Una máquina como mumble será buscada como mumble.foo.bar.edu o la búsqueda será redireccionada al servidor de dominio raíz del DNS. Esto es distinto a lo que ocurría en versiones anteriores de BIND, donde la búsqueda se producía a través de mumble.bar.edu y de mumble.edu. Se recomienda consultar a la RFC 1535 para conocer el motivo que se considerara una práctica errónea o incluso un agujero de seguridad. Una buena solución a este problema puede ser incluír la siguiente línea search foo.bar.edu bar.edu en lugar de domain foo.bar.edu dentro del fichero /etc/resolv.conf. No obstante se debe asegurar de que el orden de búsqueda no se expande más allá del límite entre la administración local y la administración pública, tal y como se le denomina en la RFC 1535. sendmail dice mail loops back to myself (el correo vuelve a mis manos) Esta pregunta se responde en las FAQ de sendmail de la siguiente forma: Estoy obteniendo los siguientes mensajes de error: 553 MX list for domain.net points back to relay.domain.net 554 <user@domain.net>... Local configuration error ¿Cómo puedo solucionar esto? Usted ha especificado que el correo para el dominio (por ejemplo, para el dominio dominio.net) sea reenviado a una máquina determinada (en este caso relay.dominio.net), para lo que se utiliza un registro de DNS de tipo MXMX record, pero la máquina que actúa de relay no se reconoce a sí misma como perteneciente al dominio dominio.net. Se debe añadir dominio.net al fichero /etc/mail/local-host-names, que recibe el nombre de /etc/sendmail.cw en versiones de sendmail previas a la 8.10. Se puede utilizar la macro FEATURE(use_cw_file) para indicar dónde se encuentra el fichero local-host-names; también se puede añadir Cw dominio.net directamente al fichero /etc/mail/sendmail.cf Las FAQ de sendmail se pueden encontrar en y son de lectura obligada si se quiere depurar el comportamiento y la configuración de sendmail. ?Cómo puedo ejecutar un servidor de correo utilizando una máquina que se conecta a internet mediante modem analógico (dial-up) ? Se quiere conectar una máquina FreeBSD dentro de una LAN a Internet. La máquina FreeBSD será una pasarela de correo para dicha LAN. La conexión mediante PPP PPP no es dedicada. Existen al menos dos formas distintas de hacerlo. Una de ellas consiste en utilizar UUCPUUCP . Otra forma consiste en hacerse con un servidor de internet a tiempo completo para proporcionar servicios de agente de transporte secundario para nuestro dominio. Si por ejemplo el dominio de nuestra compañía es ejemplo.com, nuestro proveedor de acceso a internet puede instalar lo siguiente en el DNS: ejemplo.com. MX 10 ejemplo.com. MX 20 ejemplo.net. Nótese que el agente de correo primario es nuestro dominio, ejemplo.com, y además se encuentra configurado un agente de transporte secundario en la máquina ejemplo.net. En este caso sólamente se debe especificar una máquina como receptor final de correo (añadiendo Cw ejemplo.com) al fichero /etc/mail/sendmail.cf de la máquina example.com) Cuando el sendmail que está enviando el correo trata de entregar dicho correo primero intentará conectarse con nosotros (ejemplo.com) utilizando el enlace de modem. Lo más probable es que la operación termine después de un tiempo de espera debido a que el enlace modem esté caído. La aplicación sendmail automáticamente entregará el correo al servidor especificado como agente de transporte de correo secundario (segundo registro MX)MX record , es decir, entregará el correo a nuestro proveedor de servicios de internet (ejemplo.net). El sitio MX secundario tratará de conectarse con nuestra máquina de una forma periódica con el objeto de entregar el correo a la máquina que actúa como agente servidor de correo primario (ejemplo.com). Puede ser de mucha utilidad un script de login como el que se muestra a continuación: #!/bin/sh # Ponme en /usr/local/bin/pppmiconexion ( sleep 60 ; /usr/sbin/sendmail -q ) & /usr/sbin/ppp -direct pppmiconexion Si vamos a crear un script de login separado para un usuario determinado se puede utilizar sendmail -qRejemplo.com en lugar del script anterior. Esto obliga a que se procesen de forma inmediata todos los correos que se encuentren en la cola de ejemplo.com. Vamos a dar una vuelta más de tuerca a la situación: Mensaje robado a la &a.isp;. > Nosotros proporcionamos servicio de MX secundario a un cliente nuestro. > El cliente se conecta a nuestro servidor varias veces al día > de forma automática para recoger sus correos para almacenarlos en > su servidor MX primario (nosotros no llamamos a su organización > justo cuando nos llega un correo suyo). > Nuestro sendmail envía la cola de correos cada 30 minutos. En > estos momentos nuestro cliente tiene que estar al menos 30 minutos > conectado para asegurarnos de que todo su correo ha sido enviado al > servidor MX primario. > > ?Existe algún comando que permita indicar a sendmail que > envíe todos los correos de la cola cuando quiera el cliente? > El cliente no tiene permisos de superusuario en la máquina que > alberga nuestro agente de transporte, por supuesto. En la sección de privacy flags del fichero sendmail.cf existe una definición como ésta: Opgoaway,restrictqrun Basta con eliminar restrictqrun para permitir que usuarios sin permisos de superusuario arranquen el procesamiento de la cola. Sería conveniente además que reordenaran los registros MX. Nosotros somos el primer MX para nuestros clientes. Además de esto hay que especificar: # Si somos el mejor MX para una determinada máquina, intenta # utilizarnos directamente en vez de generar un error de # configuración local. OwTrue en el archivo de configuración de sendmail. Mediante la configuración anterior, una organización remota entregará sus correos directamente a usted, sin necesidad de intentar conectarse primero a través de la conexión del cliente. La etiqueta "OwTrue" se necesita para evitar que sendmail genere un mensaje de error. A continuación ustedes se encargan de entregar el correo a su(s) respectivo(s) cliente(s) tal como vienen haciendo. Esta configuración sólo funciona para máquinas individuales, de tal forma que se necesita que el cliente especifique su servidor de correo mediante entradas de tipo A en el DNS. En concreto se necesita una entrada de tipo A en el DNS para el dominio del cliente (cliente.com). ?Por qué me siguen saliendo mensajes de error del tipo Relaying Denied cuando se trata de enviar correo proveniente de otras máquinas? En las instalaciones del sistema FreeBSD por defecto sendmail se configura para enviar correo sólamente desde la máquina en la cual se está ejecutando. Por ejemplo si un servidor POP está disponible los usuarios serán capaces de consultar su correo desde la universidad, el trabajo u otras localizaciones remotas, pero dichos usuarios podrán enviar correo desde dichas ubicaciones. Es habitual que unos instantes después del envío del correo dichos usuarios reciban un mensaje proveniente del MAILER-DAEMON con un error como 5.7 Relaying Denied. Existen varias formas de solventar este problema. La más sencilla consiste en escribir la dirección IP de su proveedor de servicios dentro del fichero /etc/mail/relay-domains. Una forma rápida de hacerlo sería: &prompt.root; echo "un.isp.ficticio.com" > /etc/mail/relay-domains Después de crear o editar dicho fichero se debe reiniciar sendmail. Esto funciona perfectamente si usted es el administrador del servidor y no desea enviar correo localmente o si prefiere utilizar un cliente de correo o cualquier otro sistema en otra máquina distinta a la que alberga el servidor de correo. Es muy útil sobre todo cuando sólamente se tienen una o dos direcciones de correo eletrónico. Si hay en liza un gran número de direcciones de correo, edite el fichero anterior con su editor de texto favorito y añada uno a uno los correspondientes dominios. un.isp.ficticio.com otro.isp.ficticio.net y.otro.isp.ficticio.org www.ejemplo.org Ahora, cualquier correo enviado a través de su sistema por cualquier máquina que se encuentre en este fichero (siempre y cuando el usuario tenga una cuenta en nuestro sistema) podrá ser enviado con éxito. Es una manera elegante de permitir a los usuarios enviar correo eletrónico desde nuestro servidor de correo sin permitir al resto del mundo que haga lo mismo (lo que se conoce como SPAM). Conceptos Avanzados La siguiente sección trata conceptos más específicos relacionados con la configuración del correo y la implantación del servicio de correo en una organización. Configuración Básica email configuration Por defecto debemos ser capaces de enviar correo a máquinas externas, siempre y cuando tengamos nuestro /etc/resolv.conf bien configurado o ejecutemos nuestro propio servidor de nombres. Si queremos que el correo para nuestra máquina se nos entregue en nuestra propia máquina, es decir, a nuestro propio sendmail, en lugar de tener que ir a recogerlo al servidor de correo de nuestra organización, podemos usar dos métodos: Ejecutar nuestro propio servidor de nombres y comprar nuestro propio dominio. Por ejemplo FreeBSD.org Conseguir la entrega de correo directa hacia nuestra máquina. Esto se logra entregando el correo a la dirección IP que se asocia al nombre de DNS de nuestra máquina. Por ejemplo ejemplo.FreeBSD.org. SMTP Independientemente de la opción elegida para tener entrega directa en nuestra máquina debemos poseer una dirección IP estática (a diferencia de las direcciones dinámicas, que son utilizadas en configuraciones donde se utiliza el protocolo PPP). Si nos encontramos detrás de un cortafuegos se debe permitir el tráfico SMTP (puerto 25) hacia nuestra máquina. Si además queremos recibir correo directamente en nuestra máquina se deben cumplir los siguientes requisitos: - MX record - Asegurar que el registro MX de menor numeración de + Asegurar que el registro MXMX record de menor numeración de nuestro DNS apunta a la dirección IP de nuestra máquina. Asegurar que no existe ninguna entrada MX en nuestro DNS para nuestra máquina. Es decir, mientras que el registro MX del punto anterior hace referencia al dominio administrativo que gestionamos con nuestro servidor de nombres, en este apartado se quiere destacar que no debe existir ningún registro MX específico para el nombre concreto de nuestra máquina. Cumpliendo las dos puntualizaciones anteriores podemos recibir correo electrónico mediante entrega directa en nuestra máquina. Por ejemplo: &prompt.root; hostname ejemplo.FreeBSD.org &prompt.root; host ejemplo.FreeBSD.org ejemplo.FreeBSD.org has address 204.216.27.XX Si se observa esta configuración la entrega directa de correo para su_login@ejemplo.FreeBSD.org debería funcionar sin problemas (suponiendo que sendmail se está ejecutando correctamente en ejemplo.FreeBSD.org). Si en lugar de lo anterior ve algo como esto: &prompt.root; host ejemplo.FreeBSD.org ejemplo.FreeBSD.org has address 204.216.27.XX ejemplo.FreeBSD.org mail is handled (pri=10) by hub.FreeBSD.org Todos los correos enviados a nuestro host (ejemplo.FreeBSD.org) serán recogidos por hub bajo el mismo nombre de usuario en lugar de ser enviados directamente a nuestra máquina. La información anterior se gestiona utilizando el servidor de DNS. El registro de DNS que transporta la información de encaminamiento de correo eletrónico es el registro Mail eXchange. Si no existe ningún registro MX el correo se entregará a la dirección IP que se obtenga de resolver el nombre de dominio que se encuentre a continuación del nombre de usuario en la dirección de correo de destino (esto es, (después de la @). En un cierto momento la entrada MX para freefall.FreeBSD.org tenía este aspecto: freefall MX 30 mail.crl.net freefall MX 40 agora.rdrop.com freefall MX 10 freefall.FreeBSD.org freefall MX 20 who.cdrom.com Como se puede observar, freefall tenía varias entradas MX. El número de MX más bajo es la máquina que recibe correo directamente si se encuentra disponible; si dicha máquina no está accesible por algún motivo las otras máquinas (llamadas también MXs de backup) aceptarán los mensajes temporalmente, y los transmitirán de nuevo cuando alguna máquina perteneciente a alguna entrada MX de numeración más baja se encuentre disponible y el proceso se repetirá hasta que se alcance la máquina que tenga el registro MX más bajo. Las organizaciones donde residen los servidores (MX) de backup deberían poseer acceso a internet de una forma independiente para minimizar el riesgo de pérdida de conectividad. Nuestro ISP o cualquier otra organización independiente debería poder proporcionarnos este servicio sin problemas. Correo para Nuestro Dominio Para establecer un mailhost (servidor de correo) en nuestra organización debemos ser capaces de redirigir el correo destinado a cualquier máquina de nuestra organización hacia nuestro servidor de correo. Básicamente queremos reclamar como nuestro cualquier correo destinado a cualquier máquina de nuestro dominio (en este caso *.FreeBSD.org) y desviarlo a nuestro servidor de tal forma que los usuario lean su correo utilizando nuestra máquina servidora. DNS Para hacer las cosas lo más sencillas posible se debe crear una cuenta de usuario (con el mismo nombre de usuario) tanto en el servidor de correo como en la máquina del usuario o destinatario final del correo. &man.adduser.8; puede usarse para ello. El servidor de correo debe funcionar como el agente de transporte predeterminado para todas las máquinas de nuestra organización. Esto se realiza mediante la siguiente configuración del DNS: ejemplo.FreeBSD.org A 204.216.27.XX ; Workstation MX 10 hub.FreeBSD.org ; Mailhost Esta configuración redirigirá el correo para cualquier estación de trabajo hacia nuestro servidor de correo sin que tengan importancia las direcciones IP asignadas mediante el registro de tipo A. Recordemos que el correo siempre se encamina utilizando primero los registros de tipo MX. Normalmente no podremos realizar esta configuración salvo que estemos ejecutando nuestro propio servidor de DNS para nuestro dominio. Si no es el caso y no es posible ejecutar nuestro propio servidor de DNS debemos comunicarnos con nuestro proveedor de servicios o con quien pueda proporcionarnos servicio de DNS y solicitarle una modificación como la anterior. Si además ofrecemos servicios de alojamiento virtual de correo la siguiente información puede resultar útil. Asumiremos que tenemos un cliente con su propio dominio, por ejemplo cliente1.org y queremos que todo el correo enviado a cliente1.org sea redirigido hasta nuestro servidor de correo, mail.nuestroservidor.com. La entrada necesaria en el DNS debería ser la siguiente: cliente1.org MX 10 mail.nuestroservidor.com No necesitamos ningún registro de tipo A para cliente1.org si sólamente queremos gestionar el correo para ese dominio. Tenga en cuenta que un ping a cliente1.org no funcionará a menos que exista un registro de tipo A para dicha máquina. La última cosa que debemos realizar en nuestro servidor de correo es comunicar a sendmail para qué dominios y/o máquinas debe aceptar correo. Existen varias formas en las que se puede realizar esta tarea. Cualquiera de las siguiente funcionará: Añadir las máquinas deseadas al fichero /etc/mail/local-host-names si se está utlizando la macro FEATURE(use_cw_file). Si se está utilizando una versión de sendmail anterior a la 8.10 el fichero que se debe utilizar es /etc/sendmail.cw. Añadir la línea Cwsu.servidor.com al fichero /etc/sendmail.cf o /etc/mail/sendmail.cf si se está utilizando una versión de sendmail posterior a la versión 8.10. SMTP con UUCP La configuración de sendmail que se proporciona con la distribución de FreeBSD está diseñada para organizaciones que se conectan directamente a internet. Las organizaciones que deseén enviar y recibir sus correos utilizando UUCP deben instalar otro fichero de configuración para sendmail. El ajuste de forma manual del archivo /etc/mail/sendmail.cf es un tema para expertos. La versión 8 de sendmail genera ficheros de configuración mediante el preprocesador &man.m4.1;, gracias al que las opciones de configuración se pueden escribir utilizando un nivel de abstracción mayor. Los archivos de configuración de &man.m4.1; se pueden encontrar en /usr/src/usr.sbin/sendmail/cf. Si no se instaló el sistema base con todas las fuentes el conjunto de ficheros de configuración de sendmail se puede obtener a partir de un paquete de fuentes determinado. Suponiendo que tengamos el CDROM con el código fuente de FreeBSD montado se puede ejecutar: &prompt.root; cd /cdrom/src &prompt.root; cat scontrib.?? | tar xzf - -C /usr/src/contrib/sendmail Este comando extrae sólamente unos pocos cientos de kilobytes. El fichero README que hay en el directorio cf puede servirle como una introducción básica a la configuración mediante &man.m4.1;. La mejor forma de soportar la entrega de correo mediante UUCP es utilizando la característica mailertable. Esta característica crea una base de datos que sendmail utiliza para tomar decisiones de encaminamiento. En primer lugar creamon el fichero .mc. El directorio /usr/src/usr.sbin/sendmail/cf/cf alberga varios ejemplos del mismo. Suponiendo que nuestro fichero configuración se llama foo.mc para convertir dicho archivo en un fichero sendmail.cf válido basta con ejecutar lo siguiente: &prompt.root; cd /usr/src/usr.sbin/sendmail/cf/cf &prompt.root; make foo.cf &prompt.root; cp foo.cf /etc/mail/sendmail.cf Un fichero .mc suele tener este aspecto: VERSIONID(`Su número de versión') OSTYPE(bsd4.4) FEATURE(accept_unresolvable_domains) FEATURE(nocanonify) FEATURE(mailertable, `hash -o /etc/mail/mailertable') define(`UUCP_RELAY', su.relay.uucp) define(`UUCP_MAX_SIZE', 200000) define(`confDONT_PROBE_INTERFACES') MAILER(local) MAILER(smtp) MAILER(uucp) Cw alias.de.su.servidor Cw nombredesunodouucp.UUCP Las líneas que contienen accept_unresolvable_domains, nocanonify, y confDONT_PROBE_INTERFACES prohíben la utilización del DNS durante la entrega de correo. La cláusula UUCP_RELAY es necesaria para soportar entrega mediante UUCP. Lo único que hay que hacer es escribir un nombre de máquina en ese punto. Dicha máquina debe ser capaz de gestionar las direcciones del pseudo-dominio .UUCP; en la mayoría de los casos se escribe en este punto el nombre de la máquina perteneciente al proveedor de servicios que hace de relay. Una vez que tenemos esto configurado se necesita un fichero /etc/mail/mailertable. Si solamente tenemos un enlace con el exterior, que usamos para todos nuestro correos, basta una configuración como la que se muestra a continuación: # # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable . uucp-dom:su.relay.uucp Un ejemplo más complejo puede parecerse al siguiente: # # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable # horus.interface-business.de uucp-dom:horus .interface-business.de uucp-dom:if-bus interface-business.de uucp-dom:if-bus .heep.sax.de smtp8:%1 horus.UUCP uucp-dom:horus if-bus.UUCP uucp-dom:if-bus . uucp-dom: Las primeras tres líneas se encargan de manejar casos especiales en los que el correo dirigido directamente al dominio no se envía a la ruta por defecto sino a algún vecino UUCP para acortar el número de saltos involucrados en la entrega de dichos correos. La siguiente línea gestiona el correo para el dominio ethernet local, el cual puede ser entregado utilizando SMTP. Finalmente los vecinos UUCP se mencionan en la notación de pseudo-dominio .UUCP para permitir que un vecino UUCP receptor de correo pueda sobreescribir las reglas por defecto. La última línea siempre es un punto; se asocia con cualquier otra cosa que no ha sido tratada en reglas anteriores y donde se realiza entrega UUCP a un vecino UUCP que sirve como pasarela de correo universal para todo el mundo. Todos los nombres de máquinas bajo la clave uucp-dom: deben ser vecinos UUCP válidos, lo cual se puede verificar utilizando el comando uuname. Recuerde que este fichero debe convertirse en una base de datos DBM antes de que usarse. El comando que se utiliza para realizar esta tarea se suele especificar como un comentario al principio del fichero mailertable. Cada vez que se modifique el fichero mailertable se debe ejecutar dicho comando. Un consejo final: si dudamos sobre una determinada ruta de encaminamiento de correo se puede ejecutar sendmail con el parámetro . Este parámetro ejecuta sendmail en modo prueba de direcciones; simplemente basta con escribir 3,0 seguido por la dirección de correo de la que queremos comprobar su correcto encaminamiento. La última línea nos dice el agente de correo interno que se utiliza, la máquina de destino con que el agente será invocado y la dirección (posiblemente traducida) de correo. Se puede abandonar este modo de funcionamiento escribiendo CtrlD. &prompt.user; sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 3,0 prueba@ejemplo.com canonify input: foo @ example . com ... parse returns: $# uucp-dom $@ su.relay.uucp $: prueba < @ ejemplo . com . > > ^D Bill Moran Escrito por Configuración para sólamente enviar correo Existen multitud de casos en los que puede bastarnos con enviar nuestro correo a través de una pasarela o relay. He aquí algunos de ellos: Nuestra computadora es una máquina de escritorio, pero queremos ser capaces de utilizar programas como &man.send-pr.1;. Para ello se debería utilizar el relay de nuestro ISP. Nuestra computadora es un servidor que no gestiona correo de forma local, si no que necesita pasar todos los correos recibidos una pasarela que se encarga de su procesamiento y entrega final. Casi cualquier MTA es capaz de actuar como pasarela o relay. Por desgracia configurar un MTA para que sólo gestione correo saliente puede ser muy complicado. Programas del estilo de sendmail y postfix son demasiado pesados para realizar sólamente esta tarea. Si además estamos utilizando un servicio de acceso a internet típico nuestro contrato puede prohibir explícitamente la ejecución de un servidor de correo (o los puertos pueden estar filtrados). La forma más sencilla de utilizar un servicio de pasarela es mediante la instalación del port mail/ssmtp. Basta con ejecutar el siguiente comando como root: &prompt.root; cd /usr/ports/mail/ssmtp &prompt.root; make install replace clean Una vez que ha sido instalado mail/ssmtp podemos configurarlo mediante un fichero de sólo cuatro líneas ubicado en /usr/local/etc/ssmtp/ssmtp.conf: root=sudireccionrealdecorreo@ejemplo.com mailhub=mail.ejemplo.com rewriteDomain=ejemplo.com hostname=_HOSTNAME_ Debemos asegurarnos de que se utiliza una dirección de correo real para root. Se debe introducir nuestra pasarela de correo en lugar de mail.ejemplo.com (algunos ISP llaman a la pasarela servidor de correo saliente o simplemente servidor SMTP). Debemos asegurarnos de que se desactiva sendmail mediante sendmail_enable="NONE" en /etc/rc.conf. mail/ssmtp acepta algunas otras opciones. Consulte el fichero de ejemplo que encontrará en /usr/local/etc/ssmtp; consulte también la página de manual de ssmtp, en la que hay más ejemplos e información al respecto. Ejecutar ssmtp de esta forma permite que cualquier software de nuestra computadora que necesite enviar correo funcione sin problemas y a la vez poder cumplir con las normas estipuladas en el contrato con nuestro ISP. Al mismo tiempo evitamos el uso de nuestro servidor de correo por parte de spammers. Utilización del correo con una conexión mediante módem analógico (dial-up) Si se dispone de una dirección IP privada no es necesario realizar ningún ajuste a partir de la configuración por defecto. Basta con asignar como nombre de nuestra máquina el nombre que tenemos registrado en el DNS y sendmail se encargará del resto. Por otra parte si utilizamos una conexión temporal a internet mediante PPP y se nos asigna una dirección IP de forma dinámica, lo más normal es tener nuestras carpetas de correo alojadas en el servidor de correo de nuestro proveedor de servicios. Supongamos que el dominio de nuestro ISP es ejemplo.net y que nuestro nombre de usuario es usuario; además hemos llamado a nuestra user, además, hemos llamado a nuestra máquina bsd.home, y nuestro ISP nos ha comunicado que debemos utilizar como pasarela la máquina relay.ejemplo.net. Para recuperar correo de nuestra carpeta de correo se debe instalar un agente de recuperación automática de correo. fetchmail es una buena elección puesto que permite utilizar varios protocolos. Este programa está disponible como un paquete y también desde la colección de ports (mail/fetchmail). Normalmente nuestro ISP proporciona POP POP. Si utilizamos ppp a nivel de usuario se puede recuperar automáticamente el correo cuando se establece la conexión ppp utilizando el fichero /etc/ppp/ppp.linkup: MYADDR: !bg su user -c fetchmail Si utilizamos sendmail (como se muestra más adelante) para entregar correo a cuentas remotas probablemente queramos que sendmail procese nuestras colas de correo tan pronto como nuestra conexión de internet se establezca. Para ello escriba el siguiente comando tras el comando de fetchmail que hemos escrito antes en el fichero /etc/ppp/ppp.linkup: !bg su user -c "sendmail -q" Asumiendo que tenemos una cuenta para el usuario usuario en bsd.home. En el directorio home del usuario usuario en la máquina bsd.home debemos crear un fichero .fetchmailrc con el siguiente contenido: poll ejemplo.net protocol pop3 fetchall pass Secr3To Este fichero debe tener permisos de lectura sólo para el propio dueño ya que contiene la contraseña de acceso a nuestra cuenta de POP en nuestro ISP ( Secr3To). Para poder enviar correo con la cabecera from: correcta, debemos decir a sendmail que utilice usuario@ejemplo.net en vez de usuario@bsd.home. Siguiendo con nuestro ejemplo es necesario decirle a sendmail que envíe todo el correo a través de la pasarela relay.ejemplo.net. El siguiente fichero de configuración .mc debe ser suficiente para cumplir con las anteriores tareas: VERSIONID(`bsd.home.mc version 1.0') OSTYPE(bsd4.4)dnl FEATURE(nouucp)dnl MAILER(local)dnl MAILER(smtp)dnl Cwlocalhost Cwbsd.home MASQUERADE_AS(`ejemplo.net')dnl FEATURE(allmasquerade)dnl FEATURE(masquerade_envelope)dnl FEATURE(nocanonify)dnl FEATURE(nodns)dnl define(`SMART_HOST', `relay.ejemplo.net') Dmbsd.home define(`confDOMAIN_NAME',`bsd.home')dnl define(`confDELIVERY_MODE',`deferred')dnl En la sección anterior se explica cómo convertir este fichero .mc en un fichero de configuración para sendmail, sendmail.cf. No debemos olvidar reiniciar sendmail después de mofidificar el fichero sendmail.cf. James Gorham Escrito por Autentificación utilizando SMTP La autentificación mediante SMTP puede proporcionarnos diversas ventajas. Añade una capa adicional de seguridad a a sendmail y además proporciona a los usuarios móviles (usuarios que cambian de máquina) la posibilidad de mantener el mismo servidor de correo sin necesidad de reconfigurar sus agentes de usuario de correo cada vez que se trasladan. Instalar security/cyrus-sasl desde los ports. Se puede encontrar dicho port en security/cyrus-sasl. security/cyrus-sasl posée varias opciones en tiempo de compilación pero para el método en particular que se va a explicar en esta sección basta con asegurarse de seleccionar la opción . Después de instalar security/cyrus-sasl, edite /usr/local/lib/sasl/Sendmail.conf (o créelo si no existe) y añada la siguiente línea: pwcheck_method: passwd Este método activa la autentificación de sendmail contra nuestra base de datos de FreeBSD, passwd. Esto nos evita el problema de tener que crear un nuevo conjunto de usuarios y contraseñas para cada usuario que necesite validarse mediante SMTP y además nos permite mantener el mismo login y contraseña que los usuarios utilizan para acceder a sus cuentas para el acceso al correo electrónico. Editar/etc/make.conf y añadir las siguientes líneas: SENDMAIL_CFLAGS=-I/usr/local/include/sasl1 -DSASL SENDMAIL_LDFLAGS=-L/usr/local/lib SENDMAIL_LDADD=-lsasl Estas líneas proporcionan a sendmail las opciones de configuración necesarias para enlazar con cyrus-sasl en tiempo de compilación. Debemos asegurarnos de que cyrus-sasl ha sido instalado correctamente recompilar sendmail. Recompile sendmail utilizando el siguiente comando: &prompt.root; cd /usr/src/usr.sbin/sendmail &prompt.root; make cleandir &prompt.root; make obj &prompt.root; make &prompt.root; make install La compilación de sendmail no debería dar problemas siempre y cuando /usr/src no haya cambiado sustancialmente y siempre y cuando las bibliotecas compartidas necesarias se encuentren disponibles. Una vez que sendmail se ha compilado y reinstalado con correctamente debemos editar el fichero /etc/mail/freebsd.mc (o el fichero que se utilice como .mc de referencia. Hay administradores que escogen utilizar la salida de &man.hostname.1; como el nombre del fichero .mc que se utiliza para la configuración de sendmail por motivos de uniformidad ). Añada las siguientes líneas a dicho fichero: dnl set SASL options TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl define(`confDEF_AUTH_INFO', `/etc/mail/auth-info')dnl Estas opciones configuran los distintos métodos de que dispone sendmail para validar a los usuarios de correo. Si se desea utilizar otro método distinto a pwcheck por favor consulte la documentación. Para terminar ejecutamos &man.make.1; mientras nos encontramos dentro de /etc/mail. Este comando trata el fichero .mc y crea el fichero .cf correspondiente (con el mismo nombre que el anterior pero terminado en .cf). A continuación se utiliza el comando make install restart, el cual copia el fichero .cf recién generado al fichero sendmail.cf y a continuación reinicia sendmail. Para más información sobre este proceso puede consultarse el contenido de /etc/mail/Makefile. Si todo lo anteriormente comentado ha funcionado correctamente deberíamos ser capaces de introducir la información de nuestro login en nuestro cliente de correo y enviar un mensaje de prueba. Para investigar más a fondo estos temas se puede habilitar la opción de sendmail al valor 13 y observar detenidamente el archivo /var/log/maillog en busca de posibles mensajes de error. Puede ser necesario añadir las siguientes líneas al fichero /etc/rc.conf de modo que el servicio explicado en esta sección se encuentre disponible automáticamente desde el arranque: sasl_pwcheck_enable="YES" sasl_pwcheck_program="/usr/local/sbin/pwcheck" Esto permite que la inicialización de SMTP_AUTH se produzca durante el arranque del sistema. Para más información por favor visite la página autentificación SMTP de sendmail· Marc Silver Escrito por Agente de Correo de Usuario Agentes de Correo de Usuario Un agente de correo de usuario (MUA en inglés Mail User Agent) es una aplicación que se utiliza para enviar y recibir correo. Coomo el correo electrónico está en constante evolución y cada vez se vuelve más complejo y con más opciones, los MUAs son cada vez más complejos y potentes. Esto permite a los usuarios disponer de mayor flexibilidad y funcionalidad. &os; admite para muchísimos agentes de correo de usuario, todos los cuales pueden instalarse desde los Ports. Los usuarios pueden elegir entre lientes de correo con interfaz gráfica como evolution o balsa o entre clientes basados en consola como mutt, pine o mail, e incluso utilizar interfaces web. mail &man.mail.1; es el agente de correo de usuario (MUA) que viene por defecto con &os;. Es un MUA de consola que ofrece toda la funcionalidad básica necesaria para enviar y recibir correos, aunque resulta limitado limitado en su capacidad para manejar adjuntos y sólamente soporta carpetas de correo locales. Aunque mail no soporta de forma nativa la interacción con servidores de correo mediante POP o IMAP estas carpetas de correo remotas pueden descargarse a un fichero mbox local utilizando una aplicación de descarga como fetchmail, que se describe en este mismo capítulo en (). Para enviar y recibir correo eletrónico basta con ejecutar el comando mail. Veamos un ejemplo: &prompt.user; mail El contenido de la carpeta de usuario en el directorio /var/mail se leen automáticamente. Si la carpeta se encuentra vacía la aplicación termina su ejecución con un mensaje que indica que no ha podido encontrar correo. Una vez que la carpeta ha sido leída la interfaz de la aplicación entra en funcionamiento y se muestra por pantalla un listado de los mensajes recuperados. Los mensajes se numeran automáticamente y pueden leerse como se observa en el siguiente ejemplo: Mail version 8.1 6/6/93. Type ? for help. "/var/mail/marcs": 3 messages 3 new >N 1 root@localhost Mon Mar 8 14:05 14/510 "test" N 2 root@localhost Mon Mar 8 14:05 14/509 "user account" N 3 root@localhost Mon Mar 8 14:05 14/509 "sample" Los mensajes se pueden leer utilizando el comando t de mail escribiendo a continuación el número del mensaje que queremos leer. En este ejemplo vamos a leer el primer correo: &prompt.user; t 1 Message 1: From root@localhost Mon Mar 8 14:05:52 2004 X-Original-To: marcs@localhost Delivered-To: marcs@localhost To: marcs@localhost Subject: test Date: Mon, 8 Mar 2004 14:05:52 +0200 (SAST) From: root@localhost (Charlie Root) This is a test message, please reply if you receive it. Como podemos observar en el ejemplo anterior el comando t muestra el contenido del correo eletrónico con todas sus cabeceras. Para mostrar el listado con todos los correos de nuevo, se debe utilizar la tecla h. Si el correo eletrónico requiere una contestación se puede utilizar la aplicación mail para responder utilizando la tecla R o r. La tecla R indica a mail que conteste sólo al origen (remitente) del correo, mientras que la tecla r tanto al remitente a los otros usuarios receptores del mensaje original. Además ambos comandos se pueden ejecutar escribiendo a continuación el número que identifica al mensaje que se quiere responder. Tras esto la respuesta puede redactarse , y se debe indicar el final del mensaje mediante un punto (.) a continuación de un salto de línea. Veamos un ejemplo: &prompt.user; R 1 To: root@localhost Subject: Re: test Thank you, I did get your email. . EOT Para enviar nuevos correos eletrónicos se debe utilizar la tecla m seguida de la dirección de de correo del destinatario. Se pueden especificar varios destinatarios de correo separando cada dirección de correo con una coma ( , ). El asunto del mensaje de correo se puede escribir a continuación seguido por el cuerpo del mensaje. El final del mensaje se especifica como en el caso anterior, utilizando un . tras un saldo de línea y pulsando la tecla enter. &prompt.user; mail root@localhost Subject: I mastered mail Now I can send and receive email using mail ... :) . EOT Mientras nos encontremos dentro de la mail el comando ? puede utilizarse para mostrar la ayuda en línea aunque la principal fuente de información detallda sobre esta aplicación es la página man &man.mail.1;. Tal y como se ha dicho ya la aplicación &man.mail.1; no fue diseñada originalmente para gestionar adjuntos, por lo que su forma de gestionarlos resulta ser extremadamente mala. MUA más modernos como mutt gestionan los adjuntos de correo de una forma mucho más inteligente. Si se desea utilizar el comando mail el port converters/mpack le puede resultar bastante útil. mutt mutt es un agente de correo de usuario pequeño pero muy potente, funcional y con excelentes características; veamos algunas: La habilidad de agrupar mensajes en hilos. Soporte de PGP para cifradon y firma digital de correos eletrónicos. Soporte de tipos MIME. Soporte de gestión de correo en formato Maildir. Altamente configurable por el usuario. Toda estas características hacen de mutt uno de los agentes de correo más avanzados del momento. Consulte para más información sobre mutt. La versión estable de mutt se puede instalar usando el port mail/mutt mientras que la versión de desarrollo está en mail/mutt-devel. Una vez que se ha instalado el port, mutt puede ejecutarse mediante el siguiente comando: &prompt.user; mutt mutt lee automáticamente el contenido de la carpeta de correo del usuario dentro del directorio /var/mail y muestra por pantalla su contenido. Si el directorio está vacío mutt quedará a la espera de los comandos que pueda pasarle el usuario. En el ejemplo que se muestra a continuación puede verse cómo mutt facilita la lista de mensajes al usuario: Para leer un correo basta con seleccionarlo usando las teclas de cursor, y presionando la tecla Enter. Veamos cómo muestra mutt un correo electrónico: Al igual que ocurre con &man.mail.1; mutt permite que los usuarios contesten al remitente de cualquier mensaje así como a los demás receptores. Para responder sólo al remitente se puede utilizar la tecla r. Para responder a un grupo, es decir a todos los receptores y al remitente del correo eletrónico pulse g. mutt tiene &man.vi.1; como editor por defecto para crear y responder a los mensajes de correo eletrónico. Si prefiere emplear otro editor modifique el valor de la variable editor en .muttrc. Para escribir un mensaje de correo presione la tecla m. Después de escribir el asunto mutt ejecuta &man.vi.1; y el cuerpo del mensaje puede escribirse. Una vez escrito el correo salga de vi y mutt se ejecutará de nuevo mostrando por pantalla un resumen del correo que está a punto de ser enviado. Para enviar ese correo hay que pulsar y. Este es un ejemplo de uno de esos resúmenes: mutt también contiene una amplia ayuda a la que se accede desde la mayoría de los menús pulsando la tecla ?. La primera lína de la pantalla también muestra las teclas de método abreviado cuando es posible utilizarlas. pine pine es una aplicación de correo enfocada a los usuarios principiantes o inexpertos pero también incluye algunas características avanzadas. Se han descubierto en pine varias vulnerabilidades que pueden explotarse de forma remota. Esas vulnerabilidades permiten que atacantes remotos puedan ejecutar código como si fueran usuarios locales del sistema mediante el envío de correos con un formato determinado. Todos los problemas conocidos se han resuelto pero el código de pine está escrito de una forma insegura y el Security Officer de &os; opina que es probable que existan todavía vulnerabilidades sin descubrir. Si decide instalar pine debe asumir los riesgos que ello puede implicar. La versión actual de pine se puede instalar utilizando el port mail/pine4. Una vez que se ha instalado pine se puede ejecutar mediante el siguiente comando: &prompt.user; pine La primera vez que se ejecuta pine se muestra un mensaje de bienvenida con una pequeña introducción a la herramienta junto con una petición del equipo de desarrollo de pine en la que se solicita que se envíe un correo de forma anónima un correo de forma anónima para que puedan hacerse una idea s de cuántos usuarios están utilizando la herramienta. Para enviar dicho correo hay que presionar la tecla Enter, o bien puede pulsar la tecla E para salir de la ventana de bienvenida sin enviar dicho correo. A continuación se muestra un ejemplo de la página de bienvenida: Los usuarios disponen de un menú principal, que puede navegarse utilizando las flechas. Este menú proporciona atajos para la composición de nuevos correos, para navegar a través de las carpetas de correo, e incluso para la administración de la libreta de direcciones. Justo debajo del menú principal, se muestran las teclas de método abreviado (atajos) que pueden utilizarse en cada momento. El directorio por defecto que pine intenta abrir es inbox. Para ver el índice de todos los mensajes recibidos pulse la tecla I o seleccione la opción de menú denominada MESSAGE INDEX como se muestra a continuación: El índice muestra los mensajes en el directorio actual y puede navegarse en él utilizando las teclas del cursor. El mensaje seleccionado se puede leer presionando la tecla Enter. En la captura de pantalla que se muestra a continuación se muestra un mensaje de ejemplo. Las teclas de atajo se muestran como referencia en la parte baja de la pantalla. Un ejemplo de dichas teclas de método abreviado es la tecla r que permite responder al mensaje que se muestra en dicho momento. La contestación a un mensaje de correo eletrónico en pine se realiza mediante el editor pico, que se instala por defecto junto con pine. pico permite navegar de forma sencilla por los distintos mensajes de correo y es ligeramente más sencilla de manejar que &man.vi.1;, sobre todo para los usuarios noveles. Una vez que se ha escrito la réplica al correo se envía pulsando la tecla CtrlX . pine pedirá confirmación antes de enviarlo. pine puede configurarse utilizando la entrada SETUP del menú principal. Se ruega consultar para obtener más información. Marc Silver Escrito por Manejo de fetchmail Uso de fetchmail fetchmail es un cliente de IMAP y POP que permite a los usuarios descargar automáticamente el correo de cuentas remotas en servidores IMAP y POP y almacenarlos en carpetas de correo locales; una vez en local, se puede acceder a los correos de una forma más sencilla y utilizando multitud de programas cliente. fetchmail se puede instalar a partir del port mail/fetchmail. Veamos algunas de sus características más útiles: Suporte de POP3, APOP, KPOP, IMAP, ETRN y ODMR. Puede reenviar correo utilizando SMTP lo que permite que las reglas de filtrado, reenvío y aliasing funcionen correctamente. Se puede ejecutar en modo dæmon comprobar periódicamente el correo entrante. Puede recuperar correo de múltiples carpetas y reenviarlos, en función de la configuración establecida, a varios usuarios locales. Queda fuera del objetivo de este documento explicar todas las características de fetchmail pero algunas de ellas se exponen a ontinuación. fetchmail usa un fichero de configuración denominado .fetchmailrc. Este fichero incluye información sobre el servidor de correo remoto y los datos necesarios para poder hacer login en él. Debido a la naturaleza sensible de la información que se almacena en dicho fichero se recomienda modificar los permisos para que sea de sólo sea legible por su propietario. Lo conseguirá mediante el siguiente comando: &prompt.user; chmod 600 .fetchmailrc El siguiente ejemplo muestra un fichero de configuración .fetchmailrc. Este ejemplo sirve para automatizar la descarga del correo de un determinado usuario mediante POP. El fichero de configuración hace que fetchmail se conecte a ejemplo.com utilizando como nombre de usuario joesoap y como contraseña XXX. En el ejemplo se asume que el usuario joesoap también es un usuario válido en el sistema local. poll ejemplo.com protocol pop3 username "joesoap" password "XXX" El siguiente ejemplo permite a fetchmail conectarse a múltiples servidores POP e IMAP y redirige los correos a diferentes usuarios locales en función de la configuración establecida: poll ejemplo.com proto pop3: user "joesoap", with password "XXX", is "jsoap" here; user "andrea", with password "XXXX"; poll ejemplo.net proto imap: user "john", with password "XXXXX", is "myth" here; fetchmail se puede ejecutar en modo dæmon mediante el parámetro seguido seguido por un intervalo de tiempo (expresado en segundos) que indica cada cuánto tiempo debe fetchmail interrogar a los distintos servidores listados en .fetchmailrc. El siguiente ejemplo hace que fetchmail interroge cada 60 segundos: &prompt.user; fetchmail -d 60 Se puede encontrar más información sobre fetchmail en . Marc Silver Escrito por Uso de procmail Uso de procmail procmail es una aplicación increíblemente potente que se utiliza para filtrar el correo de entrada. Permite a los usuarios definir reglas que se asocian con correos entrantes y que realizan funciones concretas, como reencaminar el correo a carpetas o direciones alternativas. procmail se puede instalar utilizando el port mail/procmail. Una vez instalado, se puede integrar directamente en la mayoría de los MTAs; por favor, consulte la documentación del MTA que utilice para saber más sobre la integración entre ambos. Por otro lado procmail se puede integrar con el MTA que prefiera de una forma sencilla añadiendo la siguiente línea al fichero .forward dentro del directorio home del usuario que desée usar procmail: "|exec /usr/local/bin/procmail || exit 75" La siguiente sección muestra algunas reglas básicas de procmail, junto con una breve descripción de las acciones que realizan. Estas reglas, y muchas otras se deben insertar dentro del fichero .procmailrc ubicado en el directorio home del usuario. En la página man de procmailex se explica la mayoría de estas reglas. Reenvío de todo el correo proveniente de usuario@ejemplo.com hacia la dirección externa correodefiar@ejemplo.com: :0 * ^From.*usuario@ejemplo.com ! correodefiar@ejemplo.com Reenvío de todos los correos que ocupen menos de 1000 bytes a la dirección corredefiar@ejemplo2.com: :0 * < 1000 ! correodefiar@ejemplo2.com Envío de todos los correos dirigidos a opcional@ejemplo.com hacia una carpeta de correo llamada opcional: :0 * ^TOopcional@ejemplo.com opcional Envío de todos los correos con un asunto que contenga la palabra Spam al dispositivo /dev/null: :0 ^Subject:.*Spam /dev/null Una útil receta para examinar mensajes de correo provenientes de listas de distribución de &os;.org y poner cada mensaje en el directorio apropiado en función del origen del mensaje: :0 * ^Sender:.owner-freebsd-\/[^@]+@FreeBSD.ORG { LISTNAME=${MATCH} :0 * LISTNAME??^\/[^@]+ FreeBSD-${MATCH} } diff --git a/fr_FR.ISO8859-1/books/handbook/boot/chapter.xml b/fr_FR.ISO8859-1/books/handbook/boot/chapter.xml index 68cd24ce49..1c9b73cd72 100644 --- a/fr_FR.ISO8859-1/books/handbook/boot/chapter.xml +++ b/fr_FR.ISO8859-1/books/handbook/boot/chapter.xml @@ -1,942 +1,938 @@ Processus de démarrage de FreeBSD &trans.a.fonvieille; Synopsis démarrage bootstrap L'action de démarrer un ordinateur et de charger le système d'exploitation est désignée sous le nom de “processus de bootstrap”, ou simplement démarrage. Le processus de démarrage de FreeBSD fournit une grande flexibilité en adaptant ce qui se passe quand vous démarrez le système, vous permettant de choisir parmi les différents systèmes d'exploitation installés sur l'ordinateur, ou même parmi les différentes versions du même système d'exploitation ou du noyau installées. Ce chapitre détaille les options de configuration que vous pouvez paramétrer et comment personnaliser le processus de démarrage de FreeBSD. Cela inclut tout ce qui se produit jusqu'au démarrage du noyau FreeBSD, la détection des périphériques, et le démarrage d'&man.init.8;. Si vous n'êtes pas tout à fait sûr du moment auquel cela arrive, cela se produit à l'instant où la couleur du texte passe d'un blanc lumineux au gris. Après la lecture de ce chapitre, vous connaîtrez: Quels sont les composants du système de démarrage de FreeBSD, et comment ils agissent les uns sur les autres. Les options que vous pouvez passer aux composants du système de démarrage de FreeBSD pour contrôler le processus. Les bases du système &man.device.hints.5;. x86 seulement Ce chapitre ne décrit que le processus de démarrage de FreeBSD pour les systèmes Intel x86. Le problème du démarrage Allumer un ordinateur et démarrer le système d'exploitation pose un intéressant dilemme. Par définition, l'ordinateur ne sait rien faire jusqu'à ce que le système d'exploitation soit lancé. Ceci inclut l'exécution des programmes à partir du disque. Donc si l'ordinateur ne peut pas exécuter de programme à partir du disque sans le système d'exploitation, et que les programmes du système d'exploitation sont sur le disque, comment le système d'exploitation est-il démarré? On peut faire le parallèle avec un événement du livre Les aventures du Baron Munchausen. Le personnage tombe dans une bouche d'égout avec une partie du corps hors de la bouche, et il s'en sort en attrapant les fixations de ses bottes (“bootstraps”), et en se soulevant ainsi. Dans les premiers jours de l'informatique le terme bootstrap fut appliqué au mécanisme utilisé pour charger le système d'exploitation, terme qui a été raccourci en “booting” (que l'on traduit par démarrage en Français). BIOS Basic Input/Output System BIOS Sur l'architecture x86 c'est le BIOS (“Basic Input/Output System”) qui est responsable du chargement du système d'exploitation. Pour effectuer cela, le BIOS recherche sur le disque dur le “Master Boot Record” - Secteur Principal de Démarrage (MBR), qui doit être placé à un endroit bien précis sur le disque. Le BIOS dispose de suffisamment de connaissances pour charger et exécuter le MBR, et suppose que le MBR peut alors effectuer le reste des tâches impliquées dans le chargement du système d'exploitation, probablement avec l'aide du BIOS. Master Boot Record (MBR) Gestionnaire de démarrage Boot Loader Pour parler du code contenu dans le MBR, on fait souvent référence aux termes de gestionnaire de démarrage gestionnaire d'amorce, tout particulièrement quand il y a intéraction avec l'utilisateur. Dans ce cas le code de ce gestionnaire occupe un espace plus important sur la première piste du disque ou du système de fichier du système d'exploitation (le gestionnaire de démarrage est parfois également appelé gestionnaire de chargement ou chargeur, boot loader, sous &os; ce terme est utilisé pour une étape ultérieur du démarrage). Parmi les gestionnaire de démarrage populaire, se trouvent boot0 (également connu sous le nom de Boot Easy, le gestionnaire de démarrage standard de &os;), Grub, GAG, et LILO (seul boot0 peut tenir entièrement dans l'espace du MBR.). Si vous n'avez qu'un seul système d'exploitation installé sur vos disques alors le MBR PC standard sera suffisant. Ce MBR recherche la première tranche (“slice”) amorçable (souvent appelée active) sur le disque, et puis exécute le code sur cette tranche pour charger le reste du système d'exploitation. Le MBR installé par &man.fdisk.8; par défaut se comporte de cette manière. Il est basé sur /boot/mbr. Si vous avez installé plusieurs systèmes d'exploitation sur vos disques alors vous pouvez installer un gestionnaire d'amorce différent, qui permet d'afficher une liste des différents systèmes d'exploitation, et vous permet de sélectionner celui à partir duquel démarrer. Ceci est abordé dans la sous-section suivante. Le reste du système de démarrage de FreeBSD est divisé en trois étapes. La première étape est exécutée par le MBR, qui en sait juste assez pour mettre l'ordinateur dans un état spécifique et lancer la deuxième étape. La seconde étape peut en faire un peu plus, avant de lancer la troisième étape. La troisième étape termine la tâche de chargement du système d'exploitation. La tâche a été séparée en trois étapes parce que le standard PC impose des limites sur la taille des programmes qui peuvent être exécutés aux étapes une et deux. L'enchaînement des tâches permet à FreeBSD de fournir un chargeur plus flexible. noyau init Le noyau est ensuite démarré et commence à sonder le système à la recherche de périphériques et les initialise. Une fois le processus de démarrage du noyau achevé, le noyau passe la main au processus &man.init.8;, qui alors vérifie que les disques sont utilisables. &man.init.8; commence ensuite la configuration des ressources au niveau utilisateur, monte les systèmes de fichiers, initialise les cartes réseaux pour communiquer sur le réseau, et lance tous les processus qui sont habituellement exécutés au démarrage d'un système FreeBSD. Le gestionnaire de démarrage et les étapes de démarrage Gestionnaire de démarrage Le gestionnaire de démarrage Master Boot Record (MBR) Le code contenu dans le MBR ou gestionnaire de démarrage ou d'amorce est parfois appelé étape zéro du processus de démarrage. Cette section discute de deux gestionnaires de démarrage précédemment mentionnés: boot0 et LILO. Le gestionnaire d'amorce <application>boot0</application>: Le MBR installé par l'installateur &os; ou par &man.boot0cfg.8; est basé sur /boot/boot0. (boot0 est très simple, puisque le programme dans le MBR ne peut pas occuper plus de 446 octets en raison de la table de partition principale et l'identifiant 0x55AA à la fin du MBR). Si vous avez installé boot0 et plusieurs systèmes d'exploitation sur vos disques durs alors vous verrez un affichage semblable à celui-ci au démarrage: Ecran de <filename>boot0</filename> F1 DOS F2 FreeBSD F3 Linux F4 ?? F5 Drive 1 Default: F2 D'autres systèmes d'exploitation, en particulier &windows;, sont connus pour écraser le MBR existant avec le leur. Si cela vous arrive, ou que vous désirez remplacer le MBR existant avec le MBR de FreeBSD alors utilisez la commande suivante: &prompt.root; fdisk -B -b /boot/boot0 device device est le périphérique à partir duquel vous démarrez, comme ad0 pour le premier disque IDE, ad2 pour le premier disque IDE sur le second contrôleur IDE, da0 pour le premier disque SCSI, et ainsi de suite. Ou, si vous voulez une configuration sur mesure du MBR, employez &man.boot0cfg.8;. Le gestionnaire de démarrage LILO: Pour installer ce gestionnaire de manière à ce qu'il amorce également &os;, démarrez tout d'abord Linux et ajoutez ce qui suit au fichier de configuration /etc/lilo.conf: other=/dev/hdXY table=/dev/hdX loader=/boot/chain.b label=FreeBSD Dans ce qui précède, précisez la partition primaire et le disque &os; en utilisant les paramètres propres à Linux, en remplaçant X avec la lettre correspondant au disque Linux et Y avec le numéro de la partition primaire Linux. Si vous utilisez un disque SCSI, vous changerez /dev/hd pour quelque chose de semblable à /dev/sd. La ligne peut être omise si vous avez les deux systèmes d'exploitation sur le même disque. Lancez maintenant la commande /sbin/lilo -v pour entériner vos modifications; des messages de contrôle devraient s'afficher, vérifiant ces modifications. Etape une, <filename>/boot/boot1</filename>, et étape deux, <filename>/boot/boot2</filename> Conceptuellement la première et la seconde étapes font partie du même programme, sur le même emplacement du disque. Mais en raison de contraintes d'espace elles ont été divisées en deux, mais vous les installerez toujours de paire. Elles sont copiées, à partir du fichier combiné /boot/boot, par l'installateur ou bsdlabel (voir plus bas). On les trouve en dehors des systèmes de fichiers, sur la première piste de la tranche de démarrage, à partir du premier secteur. C'est l'endroit où boot0, ou tout autre gestionnaire de démarrage s'attend à trouver le code à exécuter pour continuer le processus de démarrage. Le nombre de secteurs utilisés est facilement déterminé à partir de la taille du fichier /boot/boot. boot1 est très simple, puisqu'il est limité à 512 octets, et en sait juste assez du bsdlabel de FreeBSD, qui contient l'information sur la tranche, pour trouver et lancer boot2. boot2 est légèrement plus sophistiqué, et en connaît assez sur le système de fichiers de FreeBSD pour y trouver des fichiers, et il peut également fournir une interface simple pour sélectionner un noyau ou un chargeur à exécuter. Comme le chargeur est beaucoup plus sophistiqué, et dispose d'une interface de configuration du démarrage facile d'emploi, boot2 l'exécute habituellement, bien que précédemment, c'est lui qui lançait directement le noyau. Ecran de <filename>boot2</filename> >> FreeBSD/i386 BOOT Default: 0:ad(0,a)/boot/loader boot: Si vous avez un jour besoin de remplacer boot1 et boot2, utilisez &man.bsdlabel.8;: &prompt.root; bsdlabel -B diskslice diskslice est le disque et la tranche à partir de laquelle vous démarrez, comme ad0s1 pour la première tranche sur le premier disque IDE. Mode dangereusement dédié Si vous utilisez juste le nom du disque, comme ad0, dans la commande &man.bsdlabel.8; vous créerez un disque dangereusement dédié, sans tranches. Ce n'est presque certainement pas ce que vous voulez faire, donc vérifiez à deux fois la commande &man.bsdlabel.8; avant d'appuyer sur Entrée. Etape trois, <filename>/boot/loader</filename> boot-loader Le chargeur est la dernière étape du processus de démarrage en trois temps, et il réside sur le système de fichiers, c'est habituellement le fichier /boot/loader. Le chargeur a pour objet de fournir une méthode de configuration conviviale, en utilisant un jeu de commandes faciles d'emploi, doublé d'un interpréteur plus puissant, avec un ensemble de commandes plus complexes. Déroulement des opérations du chargeur A l'initialisation, le chargeur recherchera la console et les disques, et déterminera à partir de quel disque démarrer. Il positionnera les variables en conséquence, et un interpréteur sera lancé pour lequel l'utilisateur pourra passer des commandes par l'intermédiaire d'une procédure ou de façon interactive. chargeur configuration du chargeur Le chargeur lira ensuite /boot/loader.rc, qui lui ira lire dans /boot/defaults/loader.conf les valeurs par défaut des variables à positionner et dans /boot/loader.conf les variantes locales de ces dernières. loader.rc se sert de ces variables pour charger les modules et le noyau sélectionnés. Finalement, par défaut, le chargeur attend 10 secondes l'appui sur une ou plusieurs touches, et démarre le noyau s'il n'est pas interrompu. S'il est interrompu, une invite est alors affichée à l'utilisateur, un jeu de commandes simples permet à l'utilisateur de modifier des variables, charger ou décharger des modules, et enfin démarrer ou redémarrer. Commandes intégrées au chargeur Voici les commandes du chargeur les plus utilisées. Pour une information complète sur toutes les commandes disponibles, veuillez consulter la page &man.loader.8;. autoboot secondes Démarre le noyau si elle n'est pas interrompue dans le laps de temps donné en secondes. Elle affiche un compte à rebours, et le délai par défaut est de 10 secondes. boot -options nom_du_noyau Démarre immédiatement le noyau dont le nom est indiqué, avec les options données, s'il y en a. boot-conf Passe par la même configuration automatique des modules basée sur des variables comme ce qui se produit au démarrage. Cela n'a de sens que si vous utilisez unload en premier, et modifiez certaines variables, généralement kernel. help sujet Affiche les messages d'aide contenus dans /boot/loader.help. Si le sujet donné est index, alors c'est la liste de tous les sujets existants qui est donnée. include nom_du_fichier Traite le fichier dont le nom est donné. Le fichier est lu, et interprété ligne par ligne. Une erreur stoppe immédiatement le traitement. load type nom_du_fichier Charge le noyau, le module, ou le fichier du type donné, dont le nom est passé en paramètre. Les arguments qui suivent le nom du fichier sont passés au fichier. ls chemin_d_accès Affiche la liste des fichiers du répertoire donné, ou du répertoire racine, si le chemin d'accès n'est pas précisé. Si l'option est utilisée, les tailles des fichiers seront également listées. lsdev Liste tous les périphériques depuis lesquels il sera possible de charger des modules. Si l'option est utilisée, plus de détails seront donnés. lsmod Affiche la liste des modules chargés. Si l'option est utilisée, plus de détails seront donnés. more nom_du_fichier Affiche les fichiers indiqués, avec une pause toutes LINES lignes. reboot Redémarre immédiatement le système. set variable set variable=value Positionne les variables d'environnement du chargeur. unload Retire de la mémoire tous les modules chargés. Exemples d'utilisation du chargeur Voici quelques exemples pratiques d'utilisation du chargeur: - mode mono-utilisateur Pour simplement démarrer votre noyau habituel, - mais en mode mono-utilisateur: + mais en mode mono-utilisateur:mode mono-utilisateur boot -s Pour décharger votre noyau et modules habituels, puis charger votre ancien (ou un autre) noyau: - - kernel.old - unload load kernel.old Vous pouvez utiliser kernel.GENERIC pour faire référence au noyau générique du disque d'installation, ou - kernel.old pour désigner votre noyau + kernel.oldkernel.old pour désigner votre noyau précédent (quand vous avez mis à jour ou configuré votre propre noyau, par exemple). Utilisez ce qui suit pour charger vos modules habituels avec un autre noyau: unload set kernel="kernel.old" boot-conf Pour charger une procédure de configuration du noyau (une procédure qui automatise ce que vous faites normalement avec l'outil de configuration du noyau au démarrage): load -t userconfig_script /boot/kernel.conf Interaction avec le noyau au démarrage noyau interaction au démarrage Une fois que le noyau est chargé, soit par le chargeur (habituellement) soit par boot2 (en court-circuitant le chargeur), il examine les options de démarrage s'il y en a, et adapte son comportement en conséquence. Options de démarrage du noyau noyau options de démarrage Voici les options de démarrage les plus courantes: A l'initialisation du noyau, demande quel est le périphérique où se trouve le système de fichiers racine. Démarre depuis le CDROM. Exécute UserConfig, l'outil de configuration du noyau au démarrage. Démarre en mode mono-utilisateur. Donne plus de détails lors du lancement du noyau. Il existe d'autres options de démarrage, lisez la page de manuel &man.boot.8; pour plus d'informations. Tom Rhodes Contribution de “Device Hints”—Paramétrage des périphériques device.hints C'est une caractéristique de FreeBSD 5.0 et des versions suivantes qui n'existe pas dans les versions précédentes. Lors du démarrage du système, le chargeur (&man.loader.8;) lira le fichier &man.device.hints.5;. Ce fichier stocke les informations de démarrage du noyau connues sous le nom de variables, et parfois appelées “device hints”. Ces “device hints” sont utilisés par les pilotes de périphérique pour la configuration des périphériques. Les “device hints” peuvent être spécifiés à l'invite du chargeur. Des variables peuvent être ajoutées en utilisant la commande set, retirées avec la commande unset, et affichées avec la commande show. Les variables positionnées dans le fichier /boot/device.hints peuvent être écrasées à cet endroit. Les “device hints” entrés au niveau du chargeur ne sont pas permanents et seront oubliés au prochain redémarrage. Une fois le système démarré, la commande &man.kenv.1; peut être utilisée pour afficher toutes les variables. La syntaxe du fichier /boot/device.hints est d'une variable par ligne, en utilisant le caractère “#” comme signe de mise en commentaire. Les lignes sont présentées comme suit: hint.pilote.unité.motclé="valeur" La syntaxe à utiliser avec le chargeur est: set hint.pilote.unité.motclé=valeur pilote est le pilote de périphérique, unité est le numéro de l'unité et motclé est le mot-clé correspondant à la variable. Le mot-clé pourra être une des options suivantes: at: spécifie le bus auquel le périphérique est attaché. port: spécifie l'adresse de départ de l'E/S à utiliser. irq: spécifie le numéro de la requête d'interruption à utiliser. drq: spécifie le numéro du canal DMA. maddr: spécifie l'adresse mémoire physique occupée par le périphérique. flags: fixe les bits des indicateurs pour le périphérique. disabled: si positionnée à 1 le périphérique est désactivé. Les pilotes de périphérique pourront accepter (ou nécessiter) plus de variables non listées ici, il est recommandé de lire leur page de manuel. Pour plus d'information, consultez les pages de manuel &man.device.hints.5;, &man.kenv.1;, &man.loader.conf.5;, et &man.loader.8;. Init: Initialisation de la gestion des processus init Une fois que le noyau a démarré, il passe le contrôle au processus utilisateur &man.init.8;, qui se trouve dans /sbin/init, ou au programme défini dans la variable d'environnement init_path du chargeur. Séquence de redémarrage automatique La séquence de redémarrage automatique vérifie que les systèmes de fichiers sont cohérents. S'ils ne le sont pas, et que &man.fsck.8; ne peut pas corriger les incohérences, &man.init.8; place le système dans le mode mono-utilisateur pour que l'administrateur système règle directement le problème. Mode mono-utilisateur mode mono-utilisateur console Ce mode peut être atteint depuis la séquence de redémarrage automatique, ou quand l'utilisateur démarre avec l'option ou en positionnant la variable boot_single du chargeur. On peut également y parvenir en appelant la commande &man.shutdown.8; sans les options de redémarrage () ou d'arrêt (), à partir du mode multi-utilisateur. Si la console système est positionnée dans le mode insecure dans le fichier /etc/ttys, alors le système demande le mot de passe de root avant de passer en mode mono-utilisateur. Une console non sécurisée dans <filename>/etc/ttys</filename> # name getty type status comments # # If console is marked "insecure", then init will ask for the root password # when going to single-user mode. console none unknown off insecure Une console insecure (non sécurisée) signifie que vous considérez que la console n'est pas sécurisée, et vous désirez que seul quelqu'un connaissant le mot passe de root puisse utiliser le mode mono-utilisateur, et cela ne signifie pas que vous utilisez une console sans sécurité. Donc, si vous voulez de la sécurité, choisissez insecure, et non secure. Mode multi-utilisateur mode multi-utilisateur Si &man.init.8; trouve vos systèmes de fichiers en état de marche, ou dès que l'utilisateur quitte le mode mono-utilisateur, le système entre dans le mode multi-utilisateur, dans lequel il commence la configuration de ses ressources. Configuration des ressources (rc) fichiers Le système de configuration des ressources lit les valeurs par défaut dans /etc/defaults/rc.conf, et les valeurs propres à la machine dans /etc/rc.conf, puis ensuite monte les systèmes de fichiers mentionnés dans /etc/fstab, démarre les services réseau, divers autres “démons” système, et enfin exécute les procédures de démarrage des logiciels installés localement. La page de manuel &man.rc.8; est une bonne référence au sujet du système de configuration des ressources, de même que la lecture des procédures de démarrage elles-mêmes. Séquence d'arrêt du système shutdown Lors de l'arrêt manuel du système, via &man.shutdown.8;, &man.init.8; tentera d'exécuter la procédure /etc/rc.shutdown, et ensuite enverra à tous les processus le signal TERM, suivi du signal KILL à tous ceux qui ne se terminent pas à temps. Pour éteindre une machine FreeBSD et cela sur des architectures ou des systèmes supportant la gestion par logiciel de l'énergie, utilisez simplement la commande shutdown -p now pour arrêter et couper l'alimentation de la machine. Pour juste redémarrer un système FreeBSD, utilisez shutdown -r now. Vous devez être super-utilisateur (root) ou un membre du groupe operator pour pouvoir exécuter &man.shutdown.8;. Les commandes &man.halt.8; et &man.reboot.8; peuvent également être utilisées, veuillez consulter leur page de manuel ainsi que celle de &man.shutdown.8; pour plus d'informations. La gestion de l'énergie nécessite d'avoir le support &man.acpi.4; dans son noyau ou chargé en tant que module. diff --git a/fr_FR.ISO8859-1/books/handbook/cutting-edge/chapter.xml b/fr_FR.ISO8859-1/books/handbook/cutting-edge/chapter.xml index 1b929066bf..e074f31258 100644 --- a/fr_FR.ISO8859-1/books/handbook/cutting-edge/chapter.xml +++ b/fr_FR.ISO8859-1/books/handbook/cutting-edge/chapter.xml @@ -1,2862 +1,2809 @@ Jim Mock Restructuré, réorganisé, et en partie mis à jour par Jordan Hubbard Travail original de Poul-Henning Kamp John Polstra Nik Clayton Mise à jour de &os; &trans.a.fonvieille; Synopsis &os; est en constant développement entre deux versions. Certains utilisateurs préfèrent utiliser les versions publiées officiellement alors que d'autres voudront rester à jour avec les tous derniers développements. Mêmes les versions officielles sont souvent mises à jour avec les correctifs de problèmes critiques et de sécurité. Indépendamment de la version utilisée, &os; fournit tous les outils nécessaires à la mise à jour de votre système, et permet également des mises à jour aisées entre versions. Ce chapitre vous aidera à décider si vous voulez suivre les développements, ou vous en tenir aux versions publiées. Les outils de base pour le maintien à jour de votre système seront également présentés. Après la lecture de ce chapitre, vous connaîtrez: Quels utilitaires peuvent être employés pour mettre à jour le système et le catalogue des logiciels portés. Comment maintenir votre système à jour avec freebsd-update, CVSup, CVS, ou CTM. Comment comparer l'état d'un système installé avec une copie de confiance. La différence entre les deux branches de développement: &os.stable; et &os.current;. Comment recompiler et réinstaller l'intégralité du système de base avec la commande make buildworld (etc.). Avant de lire ce chapitre, vous devrez: Correctement configurer votre connexion réseau (). Savoir comment installer des logiciels tiers (). Tout au long de ce chapitre, la commande cvsup sera utilisée pour récupérer et mettre à jour les sources de &os;. Pour l'utiliser, vous devrez installer un logiciel porté ou pré-compilé tel que net/cvsup-without-gui. Si vous utilisez &os; 6.2-RELEASE ou une version ultérieure, vous pouvez remplacer cette commande par &man.csup.1;, qui fait désormais partie du système de base. Tom Rhodes Ecrit par Colin Percival Basé sur des notes de Mise à jour de FreeBSD Mise à jour freebsd-update mise à jour Appliquer des correctifs de sécurité est une part importante de la maintenance de logiciels informatiques tout particulièrement dans le cas du système d'exploitation. Pendant très longtemps sous &os;, ce processus n'était pas aisé. Les correctifs devaient être appliqués au code source, le code ensuite recompilé sous forme de binaires, et enfin les binaires devaient être ré-installés. Ce processus n'est plus de mise comme &os; dispose désormais d'un utilitaire appelé simplement freebsd-update. Cet utilitaire fournit deux fonctions distinctes. Tout d'abord, il permet l'application de mises à jour de correction et de sécurité sur le système de base de &os; sans nécessiter une compilation et une ré-installation. En second lieu, l'utilitaire supporte les mises à jour mineures et majeures des versions publiées. Les mise à jour binaires sont disponibles pour toutes les architectures actuellement supportées par l'équipe de sécurité. Avant de mettre à jour vers une nouvelle version, les annonces concernant la version devront être passées en revue sachant qu'elles peuvent contenir des informations importantes au sujet de cette version. Ces annonces peuvent être consultées à l'adresse suivante: . S'il existe une table crontab utilisant freebsd-update, elle doit être désactivée avant de démarrer les opérations qui vont suivre. Le fichier de configuration Certains utilisateurs peuvent souhaiter adapter le fichier de configuration par défaut /etc/freebsd-update.conf, permettant un meilleur contrôle du processus. Les options sont très bien documentées, mais les suivantes demandent un peu plus d'explication: # Composants du système de base qui doivent être maintenus à jour. Components src world kernel Ce paramètre contrôle quelles sont les parties de &os; qui seront mises à jour. Par défaut on met à jour le code source, l'intégralité du système de base et le noyau. Les composants sont les mêmes que ceux disponibles durant l'installation, par exemple, ajouter world/games ici permettrait d'appliquer les correctifs relatifs aux jeux. Utiliser src/bin permettrait la mise à jour du code source du répertoire src/bin. La meilleure option est de laisser telle quelle la configuration par défaut car la modifier pour ajouter des éléments particuliers demandera à l'utilisateur de lister chaque élément qu'il désire mettre à jour. Cela pourrait avoir des conséquences désastreuses puisque le code source et les binaires peuvent à terme ne plus être en phase. # Les chemins d'accès commençant par quelque chose correspondant à une # entrée de type IgnorePaths seront ignorés. IgnorePaths Ajoute les chemins d'accès comme /bin ou /sbin pour préserver intacts ces répertoires durant le processus de mise à jour. Cette option peut être utilisée pour empêcher freebsd-update d'écraser des modifications locales. # Les chemins d'accès qui commencent par quelque chose correspondant à # une entrée de type UpdateIfUnmodified seront mis à jour que si le # contenu du fichier n'a pas été modifié par l'utilisateur (à moins # que les modifications ne soient fusionnées; voir plus bas). UpdateIfUnmodified /etc/ /var/ /root/ /.cshrc /.profile Met à jour les fichiers de configuration dans les répertoires désignés seulement s'ils n'ont pas été modifiés. Tout changement effectué par l'utilisateur invalidera automatiquement la mise à jour de ces fichiers. Il existe une autre option KeepModifiedMetadata qui indiquera à freebsd-update de sauvegarder les changements durant la fusion. # Quand on met à jour vers une nouvelle version de &os;, les fichiers # correspondant à une entrée de type MergeChanges verront leurs # différences locales fusionnées avec le fichier de la nouvelle # version de &os;. MergeChanges /etc/ /var/named/etc/ Liste des répertoires avec des fichiers de configuration que freebsd-update devrait tenter de fusionner. Le processus de fusion des fichiers est l'application d'une série de correctifs &man.diff.1; similaires à ceux de &man.mergemaster.8; avec cependant moins d'options, les fusions sont soit acceptées, ouvrant un éditeur, soit abandonnées par freebsd-update. En cas de doute, sauvegardez /etc et acceptez les fusions. Consultez la section sur pour plus d'information sur la commande mergemaster. # Répertoire dans lequel stocker les mise à jour téléchargées et les # fichiers temporaires utilisés par la mise à jour de &os;. # WorkDir /var/db/freebsd-update Ce répertoire est l'endroit où tous les correctifs et les fichiers temporaires seront placés. Dans les cas où l'utilisateur effectue une mise à jour de version, cet emplacement doit disposer d'au moins un gigaoctet d'espace disponible. # Lors de mises à jour entre versions de &os;, doit-on lire la liste # de composants de manière stricte (StrictComponents yes) # ou tout simplement comme une liste de composants qui *pourraient* # être installés et pour lesquels la mise à jour de &os; devrait # déterminer lesquels sont effectivement installés et les mettre à # jour (StrictComponents no)? # StrictComponents no Cette option fixée à yes, freebsd-update supposera que la liste de composants est complète et n'essaiera pas d'effectuer des modifications en dehors de cette liste. Concrètement, freebsd-update tentera de mettre à jour chaque fichier appartenant à la liste de composants. Correctifs de sécurité Les correctifs de sécurité sont stockés sur une machine distante et peuvent être téléchargés et installés en utilisant la commande suivante: &prompt.root; freebsd-update fetch &prompt.root; freebsd-update install Si des correctifs ont été appliqués au noyau le système devra être redémarré. Si tout c'est bien passé le système est corrigé et freebsd-update pourra être exécuté chaque nuit via un processus &man.cron.8;. Une entrée dans le fichier /etc/crontab devrait être suffisante pour accomplir cette tâche: @daily root freebsd-update cron Cette entrée indique qu'une fois par jour, l'utilitaire freebsd-update sera exécuté. De cette manière, en employant l'option , freebsd-update vérifiera seulement l'existence de mises à jour. Si des correctifs existent, il seront automatiquement téléchargés sur le disque local mais non-appliqués. L'utilisateur root sera contacté par courrier électronique, il pourra ainsi les installer manuellement. Si quelque s'est mal passé, freebsd-update a la capacité d'annuler le dernier ensemble de changements avec la commande suivante: &prompt.root; freebsd-update rollback Une fois la commande achevée, le système devra être redémarré si le noyau ou un de ses modules ont été modifiés. Cela permettra à &os; de charger en mémoire les nouveaux binaires. L'utilitaire freebsd-update peut mettre à jour uniquement et automatiquement le noyau GENERIC. Si un noyau personnalisé est utilisé, il devra être recompilé et réinstallé après que la commande freebsd-update ait achevé l'installation du reste des mises à jour. Cependant freebsd-update détectera et mettra à jour le noyau GENERIC dans /boot/GENERIC (s'il existe), et cela même si ce n'est pas le noyau actuel (qui tourne) du système. C'est toujours une bonne idée de conserver une copie du noyau GENERIC dans /boot/GENERIC. Cela sera utile pour diagnostiquer une variété de problèmes, et lors des mises à jour utilisant freebsd-update comme décrit dans la . A moins que la configuration par défaut présente dans /etc/freebsd-update.conf n'ait été modifiée, freebsd-update installera les sources du noyau mises à jour avec le reste des mises à jour. La recompilation et la réinstallation d'un noyau personnalisé peuvent effectuées de la manière classique. Les mises à jour distribuées via freebsd-update, n'impliquent pas toujours le noyau. Il ne sera pas nécessaire de recompiler votre noyau personnalisé si les sources du noyau n'ont pas été modifiées par l'exécution de freebsd-update install. Cependant freebsd-update met toujours à jour le fichier /usr/src/sys/conf/newvers.sh. Le niveau ou la version de correctifs (comme indiqué par le nombre -p rapporté par uname -r) est obtenu à partir de ce fichier. Recompiler votre noyau personnalisé, même si rien d'autre n'a changé, permettra à la commande &man.uname.1; de rapporter précisément le niveau de correctifs du système. C'est particulièrement utile quand on gère de multiples systèmes, car cela permet une évaluation rapide des mises à jour présentes sur chacun d'eux. Mises à jour mineures et majeures Ce processus supprimera les anciens fichiers objets et bibliothèques qui rendent inutilisables la plupart des applications tierce-partie. Il est recommandé que tous les logiciels portés soient supprimés et réinstallés ou mis à jour ultérieurement en utilisant l'outil ports-mgmt/portupgrade. La plupart des utilisateurs voudront lancer une compilation test à l'aide de la commande suivante: &prompt.root; portupgrade -af Cela garantira que tout sera réinstallé correctement. Notez que fixer la variable d'environnement BATCH à yes répondra yes à toute question lors de ce processus, supprimant ainsi la nécessité d'une intervention humaine durant le processus de compilation. Si un noyau personnalisé est utilisé, le processus de mise à jour est un peu plus complexe. Une copie du noyau GENERIC est nécessaire et devrait être placée dans le répertoire /boot/GENERIC. Si le noyau GENERIC n'est pas présent sur le système, il peut être obtenu en utilisant une des méthodes suivantes: Si un noyau personnalisé a déjà été compilé, le noyau présent dans /boot/kernel.old est en fait le noyau GENERIC. Renommer ce répertoire en /boot/GENERIC. En supposant qu'un accès physique à la machine est possible, une copie du noyau GENERIC peut être installé à partir d'un CD-ROM. Insérer votre disque d'installation et utiliser les commandes suivantes: &prompt.root; mount /cdrom &prompt.root; cd /cdrom/X.Y-RELEASE/kernels &prompt.root; ./install.sh GENERIC Remplacer X.Y-RELEASE avec la version que vous utilisez. Le noyau GENERIC sera installé par défaut dans /boot/GENERIC. En dehors de ce qui précède le noyau GENERIC peut être recompilé et installé à partir des sources: &prompt.root; cd /usr/src &prompt.root; env DESTDIR=/boot/GENERIC make kernel &prompt.root; mv /boot/GENERIC/boot/kernel/* /boot/GENERIC &prompt.root; rm -rf /boot/GENERIC/boot Pour que ce noyau soit pris en compte comme GENERIC par freebsd-update, le fichier de configuration GENERIC devra ne pas avoir été modifié. Il est également suggéré qu'il soit compilé sans aucune option particulière (de préférence avec un fichier /etc/make.conf vide). Redémarrer avec le noyau GENERIC n'est pas nécessaire à ce stade. Les mises à jour de versions majeures et mineures peuvent être effectuées en passant à la commande freebsd-update la version vers laquelle on désire mettre à jour, par exemple, la commande suivante effectuera la mise à jour vers &os; 8.1: &prompt.root; freebsd-update -r 8.1-RELEASE upgrade La commande freebsd-update analysera le fichier de configuration et le système afin de récupérer les informations nécessaires à la mise à jour du système. A l'écran s'affichera quels sont les composants détectés et quels sont ceux qui n'ont pas été détectés. Par exemple: Looking up update.FreeBSD.org mirrors... 1 mirrors found. Fetching metadata signature for 8.0-RELEASE from update1.FreeBSD.org... done. Fetching metadata index... done. Inspecting system... done. The following components of FreeBSD seem to be installed: kernel/smp src/base src/bin src/contrib src/crypto src/etc src/games src/gnu src/include src/krb5 src/lib src/libexec src/release src/rescue src/sbin src/secure src/share src/sys src/tools src/ubin src/usbin world/base world/info world/lib32 world/manpages The following components of FreeBSD do not seem to be installed: kernel/generic world/catpages world/dict world/doc world/games world/proflibs Does this look reasonable (y/n)? y A ce niveau freebsd-update tentera de télécharger tous les fichiers nécessaires à la mise à jour. Dans certains cas l'utilisateur sera interrogé sur ce qu'il faut installer ou sur comment procéder à certaines actions. Si un noyau personnalisé est utilisé, l'étape précédente produira un avertissement semblable au suivant: WARNING: This system is running a "MYKERNEL" kernel, which is not a kernel configuration distributed as part of FreeBSD 8.0-RELEASE. This kernel will not be updated: you MUST update the kernel manually before running "/usr/sbin/freebsd-update install" Cet avertissement peut sans risque être ignoré à ce niveau. Le noyau GENERIC mis à jour sera utilisé comme une étape intermédiaire dans le processus de mise à jour. Une fois l'ensemble des correctifs téléchargé sur le système local, ils seront appliqués. Ce processus peut prendre plus ou moins de temps en fonction de la vitesse et de la charge de la machine. Les fichiers de configuration seront fusionnés — cette partie du processus demande l'intervention de l'utilisateur car un fichier peut être automatiquement fusionné ou en cas de besoin un éditeur peut apparaître sur l'écran pour une fusion manuelle. Les résultats des fusions réussies seront affichés au fur et à mesure que se déroule l'opération. Un échec ou une fusion ignorée provoqueront l'arrêt du processus. Certains utilisateurs peuvent vouloir conserver une sauvegarde du répertoire /etc et fusionner plus tard à la main les fichiers importants comme master.passwd ou group. Le système n'a pas encore été réellement modifié, les fusions et l'application des correctifs ont lieu dans un autre répertoire. Quand tous les correctifs ont été appliqués avec succès, que tous les fichiers de configuration ont été fusionnés et que le processus s'est déroulé sans problème, les modifications devront être appliquées définitivement au système par l'utilisateur. Une fois les opérations précédentes achevées, la mise à jour peut être appliquée en utilisant la commande suivante: &prompt.root; freebsd-update install Le noyau et les modules seront corrigés les premiers. A ce moment la machine doit être obligatoirement redémarrée. Si le système utilisait un noyau personnalisé, utiliser la commande &man.nextboot.8; pour indiquer le noyau /boot/GENERIC (qui a été mis à jour) pour le prochain démarrage: &prompt.root; nextboot -k GENERIC Avant de redémarrer sur le noyau GENERIC, assurez-vous qu'il contient tous les pilotes nécessaires pour que votre système démarre correctement (et se connecte au réseau, si la mise à jour de la machine se fait à distance). En particulier, si le noyau précédemment utilisé contient des fonctions généralement fournies par des modules, faites en sorte de charger temporairement ces modules avec le noyau GENERIC à l'aide de /boot/loader.conf. Vous pouvez également avoir intérêt à désactiver les services non-indispensables, les montages réseaux ou disques, etc. avant que le processus de mise à jour ne soit achevé. La machine doit maintenant être redémarrée avec le noyau mis à jour: &prompt.root; shutdown -r now Une fois la machine de nouveau active, freebsd-update devra être lancée à nouveau. L'état du processus de mise à jour a été sauvegardé, et donc freebsd-update ne recommencera pas au début, mais supprimera les anciens fichiers objet et bibliothèques partagées. Afin de poursuivre les opérations, taper la commande suivante: &prompt.root; freebsd-update install En fonction d'un changement ou non de numérotation d'une ou plusieurs bibliothèques, il pourra y avoir deux phases d'installation au lieu de trois. Tous les logiciels tierce-partie doivent être maintenant recompilés et réinstallés. Cela est nécessaire comme certains logiciels peuvent dépendre de bibliothèques qui ont été supprimées lors du processus de mise à jour. La commande ports-mgmt/portupgrade peut être employée pour automatiser la chose. Les commandes suivantes peuvent être utilisées pour initier le processus: &prompt.root; portupgrade -f ruby &prompt.root; rm /var/db/pkg/pkgdb.db &prompt.root; portupgrade -f ruby18-bdb &prompt.root; rm /var/db/pkg/pkgdb.db /usr/ports/INDEX-*.db &prompt.root; portupgrade -af Une fois cela effectué, terminer le processus de mise à jour avec un dernier appel à freebsd-update. Taper la commande suivante pour régler les derniers détails: &prompt.root; freebsd-update install Si le noyau GENERIC a été utilisé temporairement, il est temps de compiler et d'installer un nouveau noyau personnalisé suivant la méthode habituelle. Redémarrer la machine avec la nouvelle version de &os;. Le processus de mise à jour est terminé. Comparaison de l'état du système L'utilitaire freebsd-update peut être utilisé pour comparer l'état du système &os; installé avec une copie de confiance. Cette fonctionnalité inspecte la version actuelle des utilitaires système, des bibliothèques et des fichiers de configuration. Pour lancer la comparaison, utiliser la commande suivante: &prompt.root; freebsd-update IDS >> outfile.ids Bien que le nom de la commande soit IDS, elle ne devrait en aucun cas être considérée comme un système de détection d'intrusion du type de security/snort. Etant donné que freebsd-update stocke des données sur le disque, le risque de modification des données est évident. Alors que cette possibilité peut être minimisée en utilisant le paramétrage kern.securelevel et en stockant les données freebsd-update sur un système de fichiers en lecture seule quand elles ne sont pas utilisées, une bien meilleure solution serait de comparer le système avec un disque sécurisé comme un DVD ou un disque USB conservé à l'extérieur. Le système sera analysé, et une liste de fichiers ainsi que la valeur de leur empreinte numérique &man.sha256.1;, celle de la version d'origine et celle de la version actuellement installée, seront affichés. C'est pour cela que cet affichage est copié dans le fichier outfile.ids. L'affichage défile trop rapidement une comparaison visuelle et remplira rapidement le tampon de la console. Ces lignes sont également très longues mais le format de sortie peut être facilement passé par une analyse syntaxique. Par exemple, pour obtenir une liste des fichiers qui diffèrent avec ceux de la version d'origine, utiliser la commande suivante: &prompt.root; cat outfile.ids | awk '{ print $1 }' | more /etc/master.passwd /etc/motd /etc/passwd /etc/pf.conf La sortie de cette commande a été tronquée, bien plus de fichiers sont concernés. Certains de ces fichiers sont naturellement modifiés, le fichier /etc/passwd a été modifié en raison de l'ajout d'utilisateurs au système. Dans certains cas, d'autres fichiers apparaîtrons, comme les modules du noyau, qui diffèrent puisque freebsd-update peut les avoir mis à jour. Pour exclure des fichiers ou des répertoires spécifiques, ajoutez-les au paramètre IDSIgnorePaths dans le fichier /etc/freebsd-update.conf. Ce système peut prendre part à une méthode de mise à jour élaboré, en dehors de ce qui a été présenté précédemment. Tom Rhodes Ecrit par Colin Percival Basé sur les notes de Portsnap: un outil de mise à jour du catalogue des logiciels portés Mise à jour Portsnap mise à jour Le système de base de &os; dispose également d'un utilitaire pour la mise à jour du catalogue des logiciels portés: &man.portsnap.8;. Lors de son exécution, il se connectera sur un site distant, contrôlera la clé de sécurité et téléchargera une nouvelle copie du catalogue des logiciels portés. La clé est utilisée pour vérifier l'intégrité de tous les fichiers téléchargés, s'assurant qu'ils n'ont pas été modifiés au vol. Pour récupérer les tout derniers fichiers du catalogue des logiciels portés, utiliser la commande suivante: &prompt.root; portsnap fetch Looking up portsnap.FreeBSD.org mirrors... 3 mirrors found. Fetching snapshot tag from portsnap1.FreeBSD.org... done. Fetching snapshot metadata... done. Updating from Wed Aug 6 18:00:22 EDT 2008 to Sat Aug 30 20:24:11 EDT 2008. Fetching 3 metadata patches.. done. Applying metadata patches... done. Fetching 3 metadata files... done. Fetching 90 patches.....10....20....30....40....50....60....70....80....90. done. Applying patches... done. Fetching 133 new ports or files... done. Cet exemple nous montre que &man.portsnap.8; a trouvé et contrôlé plusieurs mises à jour pour les données actuelles du catalogue. Est également indiqué si l'utilitaire a été précédemment exécuté, si cela avait été une première exécution, le catalogue aurait été tout simplement téléchargé. Lorsque &man.portsnap.8; termine avec succès une opération de récupération (fetch), le catalogue des logiciels portés et ses mises à jour sont présents sur le système. A la première exécution de portsnap vous devez utiliser la commande extract pour installer les fichiers téléchargés: &prompt.root; portsnap extract /usr/ports/.cvsignore /usr/ports/CHANGES /usr/ports/COPYRIGHT /usr/ports/GIDs /usr/ports/KNOBS /usr/ports/LEGAL /usr/ports/MOVED /usr/ports/Makefile /usr/ports/Mk/bsd.apache.mk /usr/ports/Mk/bsd.autotools.mk /usr/ports/Mk/bsd.cmake.mk ... Pour mettre à jour un catalogue des logiciels portés déjà installé utilisez la commande portsnap update: &prompt.root; portsnap update Le processus est maintenant terminé et les applications peuvent être installées ou mises à jour à l'aide du catalogue à jour. Les opérations fetch et extract ou update peuvent être exécutées à la suite comme montré dans l'exemple suivant: &prompt.root; portsnap fetch update Cette commande téléchargera la dernière version du catalogue des logiciels portés et mettra à jour votre version locale située dans /usr/ports. Suivre une branche de développement -CURRENT -STABLE Il existe deux branches de développement de FreeBSD: &os.current; et &os.stable;. Cette section détaillera un peu chacune d'elles et décrira comment garder à jour votre système avec chaque arborescence respective. &os.current; sera tout d'abord traité, suivit de &os.stable;. Se synchroniser avec la version -CURRENT de &os; En lisant ces lignes, gardez à l'esprit que &os.current; représente “les tout derniers” développement de &os;. On attend des utilisateurs de &os.current; un degré élevé de compétences techniques, et devraient être capables de résoudre des problèmes système compliqués par eux-mêmes. Si vous êtes nouveau à &os;, pensez à deux fois avant de l'installer. Qu'est-ce que &os.current;? instantané &os.current; est la toute dernière version des sources de &os; en cours de développement. Cela inclut des évolutions en cours, des modifications expérimentales, et des mécanismes de transition qui feront ou ne feront pas partie de la prochaine version officielle du logiciel. Bien que de nombreux développeurs de &os; compilent les sources de &os.current; quotidiennement, il arrive que celles-ci ne soient pas compilables pendant une certaine période de temps. Ces problèmes sont résolus aussi rapidement que possible, mais que &os.current; soit à l'origine d'un désastre ou de l'apport d'une nouvelle fonctionnalité attendue peut parfois dépendre que du moment auquel vous avez chargé le code source. Qui a besoin de &os.current;? &os.current; est mis à disposition pour 3 types de personnes: Les membres de la communauté &os; qui travaillent activement sur une partie de l'arborescence des sources et pour qui rester constamment à jour est une nécessité absolue. Les membres de la communauté &os; qui participent activement aux tests et sont disposés à passer du temps à résoudre les problèmes pour garantir que &os.current; reste aussi saine que possible. Il y a également ceux qui désirent faire des suggestions dans certains domaines sur les modifications à faire et la direction générale que prend &os;, et soumettent des correctifs pour les implémenter. Ceux qui veulent simplement garder un oeil sur les évolutions, ou utiliser les dernières sources comme référence (e.g. pour les lire, et non pour les utiliser). Ces personnes font parfois des remarques ou contribuent au code. Qu'est-ce que <emphasis>n'est pas</emphasis> &os.current;? Un raccourci pour se procurer des pré-versions parce que vous avez entendu dire qu'il y a de nouvelles fonctionnalités géniales et que vous voulez être le premier du coin à les avoir. Etre le premier à avoir la nouvelle fonctionnalité signifie être le premier à avoir les nouveaux bogues également. Une moyen rapide d'avoir des corrections de bogues. N'importe quelle version de &os.current; apportera probablement de nouveaux bogues comme elle corrigera ceux déjà présents. Nous ne le “supportons officiellement” en aucun cas. Nous faisons du mieux que nous pouvons pour aider les personnes qui font vraiment partie des trois groupes “légitimes” à qui s'adresse &os.current;, mais nous n'avons tout simplement “pas le temps” de fournir un support technique. Ce n'est pas parce que nous sommes des personnes détestables qui n'aiment pas aider les autres (nous ne ferions pas &os; si tel était le cas), nous ne pouvons simplement pas répondre à des centaines de messages par jour et travailler sur FreeBSD! Entre améliorer &os; et répondre à de nombreuses questions sur le code expérimental, les développeurs optent pour le premier choix. Utiliser &os.current; - - -CURRENT - utilisation - - Inscrivez-vous à la &a.current.name; et la &a.svn-src-head.name;. + Inscrivez-vous à la &a.current.name;-CURRENTutilisation et la &a.svn-src-head.name;. Ce n'est pas seulement une bonne idée, c'est indispensable. Si vous n'êtes pas sur la liste &a.current.name;, vous ne verrez pas les commentaires qui sont faits sur l'état courant du système et vous vous retrouverez probablement confrontés à de nombreux problèmes que d'autres ont déjà identifiés et résolus. Encore plus grave, vous manqueriez des bulletins importants potentiellement critiques pour la bonne santé de votre système. La liste &a.svn-src-head.name; vous permettra de voir les courriers de trace des soumissions de toutes les modifications dès qu'elles sont faites et des informations pertinentes sur les éventuels effets de bord. Pour vous inscrire à ces listes, ou à une autre, rendez vous à &a.mailman.lists.link; et cliquez sur la liste à laquelle vous désirez vous inscrire. Des instructions sur le reste de la procédure sont alors données. Si vous êtes intéressé par le suivi des modifications appliquées à l'ensemble de l'arborescence des sources, nous vous recommandons de vous inscrire à &a.svn-src-all.name;. Récupérez les sources sur un site miroir &os;. Vous pouvez le faire de deux manières: - - cvsup - - - cron - - - -CURRENT - Synchronisation avec CVSup - - - Utilisez le programme cvsup + Utilisez le programme cvsupcvsup avec le fichier supfile nommé standard-supfile disponible dans le répertoire /usr/share/examples/cvsup. C'est la méthode recommandée, puisqu'elle permet de récupérer la totalité des sources la première fois et par la suite uniquement ce qui a été modifié. De nombreuses personnes exécutent cvsup depuis - cron et maintiennent ainsi + croncron et maintiennent ainsi automatiquement à jour leurs sources. Vous devez personnaliser l'exemple de supfile précédent, et configurer - cvsup pour + cvsup-CURRENTSynchronisation avec CVSup pour votre environnement. Le fichier d'exemple standard-supfile est destiné au suivi d'une branche de sécurité &os; spécifique et non pas à celui de &os.current;. Vous devrez éditer ce fichier et remplacer la ligne suivante: *default release=cvs tag=RELENG_X_Y Par celle-ci: *default release=cvs tag=. Pour une explication détaillée des étiquettes utilisables, veuillez vous référer à la section Etiquettes CVS de ce manuel. - - -CURRENT - Synchroniser avec - CTM - - Utilisez CTM. Si vous + linkend="ctm">CTM-CURRENTSynchroniser avec CTM. Si vous disposez d'une mauvaise connexion (connexions chères ou seulement un accès au courrier électronique) CTM est une bonne solution. Cependant, c'est une source de problèmes et peut donner lieu à des fichiers endommagés. C'est pourquoi cette méthode est rarement utilisée, ce qui augmente les chances que cela ne fonctionne pas pendant d'assez longue périodes. Nous recommandons d'utiliser CVSup à tous ceux disposant d'un modem 9600 bps ou d'une connexion plus rapide. Si vous récupérez les sources pour compiler un système opérationnel, et pas simplement pour les lire, alors récupérez tout &os.current;, et pas uniquement certaines portions. La raison de cela est que diverses parties des sources dépendent de modifications effectuées ailleurs, et si vous essayez de compiler juste une partie des source, il est quasiment certain que vous aurez des problèmes. - - -CURRENT - compilation - - - Avant de compiler &os.current;, lisez attentivement + Avant de compiler &os.current;-CURRENTcompilation, lisez attentivement le Makefile dans /usr/src. Vous devriez au moins la première fois installer un nouveau noyau et recompiler le système, comme étape nécessaire à votre processus de mise à jour. La lecture de la &a.current; et du fichier /usr/src/UPDATING vous tiendra au courant des autres procédures de transition qui sont parfois nécessaires lorsque nous préparons la prochaine version. Participez! Si vous utilisez &os.current;, nous aimerions savoir ce que vous en pensez, tout particulièrement si vous avez des améliorations à nous suggérer ou des corrections de bogues à nous soumettre. Les suggestions accompagnées de code sont accueillies avec enthousiasme! Se synchroniser avec la version -STABLE de &os; Qu'est-ce que &os.stable;? -STABLE &os.stable; est notre branche de développement à partir de laquelle sont extraites les versions majeures. Les modifications sur cette branche se font à une allure différente, et en supposant généralement qu'elles ont été tout d'abord testées sur &os.current;. Cela reste cependant toujours une branche de développement, et cela signifie qu'à certains moments, les sources de &os.stable; pourront être ou pas utilisables pour une quelconque raison. C'est tout simplement une autre branche de mise au point, et non pas une ressource pour l'utilisateur final. Qui a besoin de &os.stable;? Si vous désirez suivre ou contribuer au processus de développement de FreeBSD, tout particulièrement si cela a rapport avec la prochaine version de FreeBSD, alors vous devriez penser à suivre &os.stable;. Bien qu'il soit vrai que les correctifs de sécurité vont également dans la branche &os.stable;, vous n'avez pas besoin de suivre &os.stable; pour cela. Chaque rapport de sécurité concernant FreeBSD explique comment corriger le problème sur les versions affectées Ceci n'est pas tout à fait vrai. Nous ne pouvons continuer à supporter les anciennes versions de FreeBSD éternellement, bien que nous les supportions pendant de nombreuses années. Pour une description complète de la politique de sécurité actuelle pour les anciennes versions de FreeBSD, veuillez consulter http://www.FreeBSD.org/security/. , et suivre intégralement une branche de développement juste pour des raisons de sécurité apportera également de nombreux changements non désirés. Bien que nous tentons de nous assurer que la branche &os.stable; soit compilable et constamment stable, cela ne peut être garanti. De plus, alors que le code est développé sous &os.current; avant de l'inclure dans &os.stable;, le nombre de personnes utilisant &os.stable; est plus nombreux que celui utilisant &os.current;, aussi il est inévitable que des bogues et des problèmes pourront parfois apparaître sous &os.stable; alors qu'ils n'existaient pas sous &os.current;. Pour ces raisons, nous ne recommandons pas de suivre aveuglément &os.stable;, et il est tout particulièrement important que vous ne mettiez pas à jour des serveurs de production sous &os.stable; sans avoir tout d'abord testé le code dans votre environnement de travail. Si vous ne disposez pas des ressources pour faire cela alors nous recommandons que vous utilisiez la version de FreeBSD la plus récente, et que vous utilisiez le mécanisme de mise à jour binaire pour passer d'une version à une autre. Utiliser &os.stable; - - -STABLE - utilisation - - Inscrivez-vous à à la liste &a.stable.name;. Vous serez tenu au courant des dépendances de compilation qui peuvent apparaître dans la - branche &os.stable; ou de tout autre problème + branche &os.stable;-STABLEutilisation ou de tout autre problème demandant une attention particulière. Les développeurs publieront également des annonces sur cette liste lorsqu'ils envisagent une correction ou modification controversée, offrant la possibilité aux utilisateurs de répondre s'ils ont des questions à soulever en rapport avec la modification proposée. Inscrivez-vous à la liste SVN correspondant à la branche que vous suivez. Par exemple, si vous suivez la branche 7-STABLE, inscrivez-vous à la liste &a.svn-src-stable-7.name;. Cela vous permettra de lire les courriers de trace des soumissions de toutes les modifications dès qu'elles sont faites et des informations pertinentes sur les éventuels effets de bord. Pour vous inscrire à ces listes, ou à une autre, rendez vous à &a.mailman.lists.link; et cliquez sur la liste à laquelle vous désirez vous inscrire. Des instructions sur le reste de la procédure sont alors données. Si vous êtes intéressé par le suivi des modifications appliquées à l'ensemble de l'arborescence des sources, nous vous recommandons de vous inscrire à &a.svn-src-all.name;. Si vous installez un nouveau système et vous voulez qu'il utilise le dernier instantané publié tous les mois à partir de la branche &os.stable;, consultez la page sur les instantanés pour plus d'information. D'autre part, vous pouvez installer la version &os.stable; la plus récente à partir des sites miroirs et suivre les instructions ci-dessous pour mettre à jour votre système avec les sources &os;stable; les plus récentes. Si vous faites tourner une version précédente de &os; et que vous désirez mettre à jour via les sources vous pouvez aisément le faire à partir d'un site miroir &os;. Cela peut être fait de deux manières: - - cvsup - - - cron - - - -STABLE - Synchronisation avec CVSup - - - Utilisez le programme cvsup + Utilisez le programme cvsupcvsup avec le fichier supfile nommé stable-supfile disponible dans le répertoire /usr/share/examples/cvsup. C'est la méthode recommandée, puisqu'elle permet de récupérer la totalité des sources la première fois et par la suite uniquement ce qui a été modifié. De nombreuses personnes exécutent cvsup depuis - cron et maintiennent ainsi + croncron et maintiennent ainsi automatiquement à jour leurs sources. Vous devez personnaliser l'exemple de supfile précédent, et configurer - cvsup pour + cvsup-STABLESynchronisation avec CVSup pour votre environnement. - - -STABLE - Synchroniser avec - CTM - - Utilisez CTM. Si vous + linkend="ctm">CTM-STABLESynchroniser avec CTM. Si vous ne disposez pas d'une connexion Internet rapide et peu coûteuse, c'est la méthode que vous devriez penser à utiliser. Avant tout, si vous avez besoin d'un accès rapide à la demande aux sources et que la bande passante n'est pas un problème, utilisez cvsup ou ftp. Sinon, utilisez CTM. - - -STABLE - compilation - - - Avant de compiler &os.stable;, lisez attentivement + Avant de compiler &os.stable;-STABLEcompilation, lisez attentivement le Makefile dans /usr/src. Vous devriez au moins la première fois installer un nouveau noyau et recompiler le système, comme étape nécessaire à votre processus de mise à jour. La lecture de la &a.stable; et du fichier /usr/src/UPDATING vous tiendra au courant des autres procédures de transition qui sont parfois nécessaires lorsque nous préparons la prochaine version. Synchroniser vos sources Il existe différentes façons d'utiliser une connexion Internet (ou le courrier électronique) pour garder à jour les sources de n'importe quelle partie, ou de l'ensemble, du projet &os;, selon ce qui vous intéresse. Les principaux services que nous fournissons sont le CVS anonyme, CVSup, et CTM. Alors qu'il est possible de mettre à jour seulement certaines parties de l'arbre des sources, la seule procédure de mise à jour supportée est celle consistant à mettre à jour l'intégralité de l'arborescence et de recompiler les sources des applicatifs de base—“userland” (i.e., tous les programmes qui tournent dans l'espace utilisateur, comme ceux des répertoires /bin et /sbin) et du noyau. Ne mettre à jour qu'une partie des sources, uniquement le noyau, ou seul le “userland” mènera souvent à des problèmes. Ces problèmes pourront aller d'erreurs de compilation à des paniques du noyau ou même des corruptions de données. CVS anonyme CVS anonyme et CVSup utilisent une méthode de mise à jour pilotée par le client—pull. Dans le cas de CVSup, l'utilisateur (ou une procédure cron) appelle le programme cvsup, qui interagit avec un serveur cvsupd distant, pour mettre à jour vos fichiers. Les mises à jour que vous recevez sont les plus récentes, et vous ne les recevez seulement lorsque vous le désirez. Vous pouvez aisément restreindre vos mises à jour aux fichiers ou répertoires particuliers qui vous intéressent. Les mises à jour sont générées à la volée par le serveur, en fonction de ce que vous avez déjà et de ce que vous voulez. CVS anonyme est plus simpliste que CVSup, car ce n'est qu'une extension de CVS qui permet de récupérer des modifications directement d'une archive CVS distante. Pour cela, CVSup est bien plus efficace mais CVS anonyme est plus facile à utiliser. CTM CTM, à l'inverse, ne compare pas interactivement les sources dont vous disposez avec celles qui sont sur l'archive de référence. Au lieu de cela, une procédure qui identifie les modifications intervenues depuis qu'elle a été exécutée pour la dernière fois, est lancée plusieurs fois par jour sur la machine CTM de référence (maître), les modifications détectées sont compressées, affectées d'un numéro de séquence et encodées pour pouvoir être envoyées par courrier électronique (en ASCII imprimable uniquement). Une fois reçus, ces “deltas CTM” peuvent être passés à l'utilitaire &man.ctm.rmail.1; qui décodera, contrôlera et appliquera automatiquement les modifications à l'exemplaire des sources de l'utilisateur. Cette méthode est beaucoup plus efficace que CVSup et consomme beaucoup moins de ressources sur notre serveur, parce que c'est un modèle piloté par le serveur—push plutôt que par l'utilisateur—pull. Il y a, bien sûr, quelques contreparties. Si vous effacez par inadvertance des parties de votre archive, CVSup s'en apercevra et vous reconstruira les parties endommagées. CTM ne le fera pas, et si vous effacez des parties de votre l'arborescence des sources (et que vous n'avez pas fait de sauvegarde) alors vous devrez repartir de zéro (à partir du plus récent “delta de base” CVS) et tout reconstituer avec CTM ou CVS anonyme, effacer les parties endommagées et resynchroniser. Recompiler le système recompiler le système Une fois que vous avez synchronisé votre arborescence des sources avec une version donnée de &os; (&os.stable;, &os.current;, et ainsi de suite) vous pouvez alors utiliser cette arborescence des sources pour recompiler le système. Faites une sauvegarde On n'insistera jamais assez sur l'importance de faire une sauvegarde de votre système avant tout autre chose. Bien qu'il soit facile de “refaire le monde” (recompiler FreeBSD), si vous suivez ces instructions, vous ferez inévitablement des erreurs à un moment ou un autre, ou d'autres feront des erreurs au niveau de l'arborescence des sources qui empêcheraient votre système de redémarrer. Assurez-vous que vous avez bien fait une sauvegarde. Ayez une disquette de maintenance, ou un CD démarrable à portée de la main. Vous ne l'utiliserez probablement pas, mais prudence est mère de sûreté! S'abonner à la bonne liste de diffusion liste de diffusion Les branches &os.stable; et &os.current; sont, par nature, en développement. Les personnes qui participent à &os; sont des humains, et des erreurs se produisent occasionnellement. Ces erreurs sont parfois bénignes, provocant simplement l'affichage d'un nouveau message d'avertissement par votre système. Elles peuvent aussi être catastrophiques, et empêcher votre système de redémarrer ou détruire vos systèmes de fichiers (ou pire). Quand de tels problèmes se produisent, un avertissement “heads up” est posté sur la liste de diffusion appropriée, décrivant la nature du problème et quels systèmes sont concernés. Un message “all clear” est posté quand le problème est résolu. Si vous tentez de suivre &os.stable; ou &os.current; et que vous ne lisez pas la &a.stable; ou la &a.current;, vous allez au devant d'ennuis. N'utilisez pas la commande <command>make world</command> De nombreuses anciennes documentations préconisent d'utiliser la commande make world. Cette commande n'effectue pas un certain nombre d'étapes importantes et ne devrait être utilisée que si vous êtes sûr de ce que vous faites. Dans presque tout les cas make world n'est pas une bonne chose à faire, et la procédure décrite dans la suite de ce document devrait être utilisée à la place. La méthode générique de mise à jour du système Pour mettre à jour votre système, vous devriez consulter /usr/src/UPDATING pour toute opération préliminaire nécessaire en fonction de la version de vos sources et ensuite utiliser la procédure suivante: &prompt.root; cd /usr/src &prompt.root; make buildworld &prompt.root; make buildkernel &prompt.root; make installkernel &prompt.root; shutdown -r now Dans quelques rares cas, il est nécessaire de lancer un mergemaster -p avant l'étape buildworld. Ces cas sont décrits dans le fichier UPDATING. Généralement, vous pouvez omettre cette opération si vous ne mettez pas à jour d'une version majeure de &os; à une autre. Une fois l'opération installkernel terminée avec succès, vous devrez démarrer en mode mono-utilisateur (en utilisant par exemple la commande boot -s à l'invite du chargeur). Exécutez ensuite: &prompt.root; mount -a -t ufs &prompt.root; mergemaster -p &prompt.root; cd /usr/src &prompt.root; make installworld &prompt.root; mergemaster &prompt.root; reboot Lisez les explications supplémentaires La séquence décrite ci-dessus n'est qu'un court résumé pour vous aider à démarrer. Vous devriez cependant lire les sections suivantes afin de comprendre clairement chaque étape, tout particulièrement si vous désirez utiliser une configuration du noyau personnalisée. Lire <filename>/usr/src/UPDATING</filename> Avant tout autre chose, lisez /usr/src/UPDATING (ou le fichier équivalent en fonction de l'endroit où se trouve vos sources). Ce fichier devrait contenir les informations importantes au sujet des problèmes que vous pourriez rencontrer, ou indique l'ordre dans lequel vous devriez exécuter certaines commandes. Si le fichier UPDATING contredit quelque chose d'écrit ici, UPDATING prime sur tout le reste. La lecture du fichier UPDATING n'est pas un substitut à l'abonnement à la liste de diffusion correcte, comme décrit précédemment. Ces deux prérequis sont complémentaires, et non pas exclusifs. Contrôler <filename>/etc/make.conf</filename> make.conf Contrôlez les fichiers /usr/share/examples/etc/make.conf et /etc/make.conf. Le premier contient des paramètres par défaut – la plupart étant placés en commentaires. Pour les utiliser quand vous recompilez votre système à partir des sources, rajoutés-les au fichier /etc/make.conf. Gardez à l'esprit que tout ce que vous ajoutez au fichier /etc/make.conf est utilisé chaque fois que vous invoquez la commande make, il est donc bon de s'assurer que les valeurs par défaut sont appropriées à votre système. Un utilisateur typique voudra probablement copier les lignes CFLAGS et NO_PROFILE se trouvant dans /usr/share/examples/etc/make.conf vers /etc/make.conf et les décommenter. Examinez les autres définitions (COPTFLAGS, NOPORTDOCS et ainsi de suite) et décidez si elles vous conviennent. Mettre à jour les fichiers dans <filename>/etc</filename> Le répertoire /etc contient la plupart des informations de configuration de votre système, ainsi que les procédures de démarrage. Certaines de ces procédures changent d'une version à l'autre de FreeBSD. Certains fichiers de configuration sont également utilisés en permanence par le système. En particulier /etc/group. Il est arrivé que la phase d'installation make installworld ait besoin que certains utilisateurs et groupes existent. Il y a de fortes chances qu'ils n'aient pas été définis avant la mise à jour. C'est une source de problèmes. Dans certains cas make buildworld contrôlera si ces utilisateurs ou groupes existent. Un exemple de cela fut l'addition de l'utilisateur smmsp. Le processus d'installation échouait quand mtree tentait de créer /var/spool/clientmqueue. La solution est d'exécuter &man.mergemaster.8; dans le mode pré-“buildworld” en ajoutant l'option . Cela effectuera la comparaison uniquement des fichiers essentiels pour le succès de la procédure buildworld ou installworld. Si votre vieille version de mergemaster ne supporte pas l'option , utilisez la nouvelle version présente dans l'arborescence des sources quand vous l'exécutez pour la première fois: &prompt.root; cd /usr/src/usr.sbin/mergemaster &prompt.root; ./mergemaster.sh -p Si vous êtes particulièrement paranoïaque, vous pouvez contrôler votre système afin de voir quels fichiers appartiennent au groupe que vous renommez ou effacez: &prompt.root; find / -group GID -print affichera les fichiers appartenant au groupe GID (qui peut être soit un nom de groupe ou un identifiant numérique de groupe). Passer en mode mono-utilisateur mode mono-utilisateur Il vaut mieux recompiler le système en mode mono-utilisateur. En dehors du fait que cela sera légèrement plus rapide, la réinstallation va modifier un grand nombre de fichiers systèmes importants, tous les binaires de base du système, les bibliothèques, les fichiers d'include et ainsi de suite. Les modifier sur un système en fonctionnement (en particulier s'il y a des utilisateurs connectés à ce moment là), c'est aller au devant de problèmes. mode multi-utilisateurs Une autre méthode consiste à compiler le système en mode multi-utilisateurs, et passer dans le mode mono-utilisateur pour l'installation. Si vous désirez utiliser cette méthode, conservez les étapes suivantes pour le moment où la compilation sera terminée. Vous pouvez reporter le passage en mode mono-utilisateur jusqu'à l'exécution de installkernel ou installworld. En tant que super-utilisateur, vous pouvez exécuter la commande: &prompt.root; shutdown now sur un système en fonctionnement, pour passer en mode mono-utilisateur. Ou bien, redémarrer le système, et à l'invite de démarrage, sélectionnez l'option single user. Le système démarrera alors en mode mono-utilisateur. A l'invite de l'interpréteur de commandes, exécutez alors: &prompt.root; fsck -p &prompt.root; mount -u / &prompt.root; mount -a -t ufs &prompt.root; swapon -a Cela effectue une vérification des systèmes de fichiers, remonte / en mode lecture/écriture, et monte tous les autres systèmes de fichiers UFS listés dans le fichier /etc/fstab, puis active la pagination. Si votre horloge CMOS est réglée sur l'heure locale et non pas sur le fuseau GMT (cela est vrai si la sortie de la commande date ne donne pas l'heure et le fuseau correct), vous aurez également peut-être besoin d'exécuter la commande suivante: &prompt.root; adjkerntz -i Cela permettra de s'assurer que vos paramètres de fuseaux horaires sont correctement configurés — sans cela, vous risquez de faire face, plus tard, à des problèmes. Effacer <filename>/usr/obj</filename> Au fur et à mesure que les différentes parties du système sont recompilées, elles sont placées dans des répertoires qui (par défaut) sont sous /usr/obj. Les répertoires sont agencés comme sous /usr/src. Vous pouvez accélérer le processus make buildworld, et également vous éviter d'éventuels problèmes de dépendances en effaçant ce répertoire. Certains fichiers dans /usr/obj peuvent avoir l'indicateur immuable positionné (consultez la page de manuel &man.chflags.1; pour plus d'informations) qui doit être retiré en premier. &prompt.root; cd /usr/obj &prompt.root; chflags -R noschg * &prompt.root; rm -rf * Recompiler le système de base Enregistrer la sortie C'est une bonne idée d'enregistrer la sortie de &man.make.1; dans un fichier. Si quelque chose se passe mal, vous aurez une trace des messages d'erreur. Même si cela ne vous aide pas à diagnostiquer ce qui n'a pas fonctionné, cela peut aider les autres si vous postez votre problème sur une des listes de diffusion de &os;. La méthode la plus aisée pour faire cela est d'utiliser la commande &man.script.1;, avec en paramètre le nom du fichier où enregistrer les résultats. Vous devez faire cela immédiatement juste avant de recompiler le système, et taper exit une fois que c'est terminé. &prompt.root; script /var/tmp/mw.out Script started, output file is /var/tmp/mw.out &prompt.root; make TARGET … compile, compile, compile … &prompt.root; exit Script done, … Si vous le faites, n'enregistrez pas le résultat dans /tmp. Ce répertoire peut être vidé au prochain redémarrage du système. Un meilleur endroit de sauvegarde est /var/tmp (comme dans l'exemple précédent) ou dans le répertoire utilisateur de root. Compiler le nouveau système Vous devez être dans le répertoire /usr/src: &prompt.root; cd /usr/src (à moins, bien sûr, que votre code source ne soit ailleurs, auquel cas vous devrez aller dans le répertoire correspondant). make Pour recompiler le système, on utilise la commande &man.make.1;. Cette commande lit ses instructions dans le fichier Makefile, qui décrit comment devraient être reconstruits les programmes qui constituent &os;, dans quel ordre, et ainsi de suite. Le format général de la ligne de commande que vous taperez sera la suivante: &prompt.root; make -x -DVARIABLE cible Dans cet exemple, est une option que vous passez à &man.make.1;. Reportez-vous à la page de manuel pour un exemple d'options que vous pouvez passer. transmet un variable au fichier Makefile. Le comportement du Makefile est défini par ces variables. Ce sont les mêmes variables que l'on trouve dans /etc/make.conf, et c'est un autre moyen de les positionner. &prompt.root; make -DNO_PROFILE cible est une autre manière de dire qu'il ne faut pas compiler les bibliothèques profilées et correspond à la ligne: NO_PROFILE= true # Avoid compiling profiled libraries dans /etc/make.conf. cible indique à &man.make.1; ce que vous voulez faire. Chaque Makefile définit un certain nombre de “cibles”, et votre choix de cible détermine ce qui se passe. Certaines cibles listées dans le fichier Makefile, ne doivent pas être employées. Ce sont des étapes intermédiaires utilisées par le processus de recompilation pour décomposer les étapes importantes de la recompilation du système en sous-étapes. La plupart du temps, vous n'aurez pas besoin de passer de paramètres à &man.make.1;, et votre commande ressemblera à ceci: &prompt.root; make cible cible sera une des nombreuses options de compilation. La première cible devrait toujours être buildworld. Comme leurs noms l'indiquent, buildworld reconstruit la nouvelle arborescence dans /usr/obj, et installworld, une autre cible, l'installe sur la machine. Disposer d'options séparées est très utile pour deux raisons. Tout d'abord cela vous permet de recompiler en toute sûreté en sachant qu'aucun composant du système actuel ne sera affecté. La compilation est “autonome”. En raison de cela vous pouvez exécuter buildworld sur une machine en mode multi-utilisateurs sans redouter d'effets fâcheux. Il est néanmoins recommandé de toujours exécuter l'étape installworld en mode mono-utilisateur. En second lieu, cela vous permet d'utiliser des systèmes montés par NFS pour mettre à jour plusieurs machines de votre réseau. Si vous avez trois machines A, B et C que vous voulez mettre à jour, exécutez make buildworld et make installworld sur A. B et C doivent ensuite monter par NFS /usr/src et /usr/obj depuis A, et vous pouvez alors exécuter make installworld pour installer le système recompilé sur B et C. Bien que la cible world existe toujours, vous êtes fortement encouragé à ne pas l'utiliser. Exécutez: &prompt.root; make buildworld Il est possible de passer l'option à &man.make.1; ce qui lui permettra d'exécuter plusieurs processus simultanément. C'est particulièrement utile sur une machine avec plusieurs processeurs. Cependant, comme la compilation est plus gourmande en E/S plutôt qu'en CPU, c'est également utile sur des machines mono-processeur. Typiquement sur une machine mono-processeur, vous exécuteriez: &prompt.root; make -j4 buildworld &man.make.1; pourra exécuter jusqu'à 4 processus simultanément. Des constatations empiriques postées sur les listes de diffusion montrent que c'est en général ce qui apporte le plus de gain en performances. Si vous avez une machine multi-processeurs et que vous avez configuré un noyau SMP, essayez des valeurs entre 6 et 19 et voyez quel bénéfice vous en tirez. Durée compilation du système durée De nombreux facteurs influencent la durée de compilation, mais les machines récentes devraient mettrent seulement de une à deux heures pour compiler l'arborescence &os.stable;, sans modification ni raccourcis durant le processus. Une arborescence &os.current; nécessitera un peu plus de temps. Compiler et installer un nouveau noyau noyau compilation Pour tirer pleinement parti de votre nouveau système, vous devrez recompiler le noyau. C'est pratiquement indispensable, parce que certaines structures mémoires peuvent avoir changées, et des programmes comme &man.ps.1; et &man.top.1; ne fonctionneront pas tant que le système et le noyau n'utilisent pas les mêmes versions de code source. La manière la plus simple et la plus sûre est de compiler et installer un noyau basé sur le noyau GENERIC. Alors que le noyau GENERIC peut ne pas comporter les pilotes de périphériques nécessaires pour votre système, il devrait contenir tout ce qui est nécessaire pour faire démarrer votre système en mode mono-utilisateur. C'est une bonne façon de tester le fonctionnement de votre nouveau système. Après avoir démarré à partir du noyau GENERIC et vérifié que votre système fonctionne vous pouvez alors compiler un nouveau noyau basé sur votre fichier de configuration normal du noyau. Sur &os;, il est important de recompiler le système avant de compiler un nouveau noyau. Si vous désirez compiler un noyau personnalisé, et que vous avez déjà un fichier de configuration, utilisez juste KERNCONF=MONNOYAU comme suit: &prompt.root; cd /usr/src &prompt.root; make buildkernel KERNCONF=MONNOYAU &prompt.root; make installkernel KERNCONF=MONNOYAU Notez que si vous avez augmenté la variable kern.securelevel à une valeur supérieure à 1 et que vous avez positionné l'indicateur noschg ou similaire sur votre noyau, il sera intéressant de passer en mode mono-utilisateur pour utiliser installkernel. Sinon vous devriez être en mesure d'exécuter ces commandes à partir du mode multi-utilisateur sans problèmes. Voir la page de manuel de &man.init.8; pour plus de détails à propos de kern.securelevel et la page &man.chflags.1; pour des informations sur les différents indicateurs de fichiers. Redémarrer en mode mono-utilisateur mode mono-utilisateur Vous devriez redémarrer en mode mono-utilisateur pour tester le fonctionnement du nouveau noyau. Pour cela suivez les instructions de . Installer les nouveaux binaires système Si vous avez compilé une version de &os; assez récente pour avoir utilisé make buildworld alors vous devriez utiliser maintenant installworld pour installer les nouveaux binaires système. Lancez: &prompt.root; cd /usr/src &prompt.root; make installworld Si vous spécifiez des variables sur la ligne de commande de make buildworld, vous devez utiliser les mêmes variables avec la commande make installworld. Cela ne reste pas forcément vrai pour d'autres options; par exemple, ne doit jamais être utilisée avec installworld. Par exemple, si vous exécutez: &prompt.root; make -DNO_PROFILE buildworld vous devrez ensuite installer les résultats avec: &prompt.root; make -DNO_PROFILE installworld sinon il essayera d'installer les bibliothèques profilées qui n'ont pas été recompilées à l'étape make buildworld. Mettre à jour les fichiers non modifiés par <command>make installworld</command> La recompilation du système ne mettra pas à jour certains répertoires (en particulier, /etc, /var et /usr) avec les fichiers nouveaux ou modifiés. La manière la plus simple de mettre à jour ces fichiers est d'utiliser &man.mergemaster.8;, bien qu'il soit possible de le faire manuellement si vous le désirez. Indépendamment de la manière que vous choisissez, assurez-vous de faire une sauvegarde du répertoire /etc au cas où quelque chose se passerait mal. Tom Rhodes Contribution de <command>mergemaster</command> mergemaster L'utilitaire &man.mergemaster.8; est une procédure Bourne qui vous aidera à déterminer les différences entre vos fichiers de configuration dans le répertoire /etc, et les fichiers de configuration dans l'arborescence des sources /usr/src/etc. C'est la solution recommandée pour maintenir à jour les fichiers de configuration du système avec ceux situés dans l'arborescence des sources. Pour commencer, tapez simplement mergemaster à l'invite, et observez-le travailler. mergemaster commencera à constituer une arborescence temporaire, à partir de /, et la remplira avec divers fichiers de configuration. Ces fichiers sont alors comparés avec ceux actuellement installés sur votre système. A ce point, les fichiers qui diffèrent seront affichés dans le format &man.diff.1;, avec le signe représentant les lignes modifiées ou ajoutées, et le représentant les lignes qui seront soit complètement supprimées, soit remplacées avec une nouvelle ligne. Voir la page de manuel &man.diff.1; pour plus d'informations au sujet de la syntaxe &man.diff.1; et comment sont affichées les différences. &man.mergemaster.8; vous affichera ensuite chaque fichier présentant des différences, et vous aurez à ce moment-là le choix de soit supprimer le nouveau fichier (le fichier temporaire), soit d'installer le fichier temporaire non modifié, soit de fusionner le fichier temporaire et le fichier actuellement installé, soit enfin de revoir les résultats de l'opération &man.diff.1;. Choisir de supprimer le fichier temporaire indiquera à &man.mergemaster.8; que nous désirons conserver notre fichier actuel intacte, et effacera la nouvelle version. Cette option n'est pas recommandée, à moins que vous ne voyez aucune raison de modifier le fichier actuel. Vous pouvez obtenir de l'aide à n'importe quel moment en tapant ? à l'invite de &man.mergemaster.8;. Si l'utilisateur choisit de passer un fichier, il sera présenté à nouveau une fois que tous les autres fichiers auront été traités. Choisir d'installer un fichier temporaire intact remplacera le fichier actuel avec le nouveau. Pour la plupart des fichiers non modifiées, c'est la meilleure option. Choisir de fusionner le fichier, vous affichera un éditeur de texte, et le contenu des deux fichiers. Vous pouvez maintenant les fusionner en les visionnant côte à côte sur l'écran, et en sélectionnant des parties des deux fichiers pour créer un fichier final. Quand les fichiers sont comparés côte à côte, la touche l sélectionnera le contenu de gauche et la touche r sélectionnera celui de droite. Le résultat final sera un fichier constitué des deux parties, qui peut alors être installé. Cette option est habituellement utilisée pour les fichiers où les des paramètres ont été modifiés par l'utilisateur. Choisir de revoir les résultats de l'opération &man.diff.1; vous affichera les différences entre fichiers tout comme la fait &man.mergemaster.8; avant de vous demander un choix. Après que &man.mergemaster.8; en ait terminé avec les fichiers système, il vous proposera de nouvelles opérations. &man.mergemaster.8; vous demandera si vous désirez reconstruire le fichier des mots de passe et terminera en vous proposant de supprimer les fichiers temporaires restants. Mise à jour manuelle Si vous désirez faire la mise à jour manuellement, vous ne pouvez cependant pas vous contenter de copier les fichiers de /usr/src/etc dans /etc pour que cela fonctionne. Certains de ces fichiers doivent d'abord être “installés”. En effet le répertoire /usr/src/etc “n'est pas” une copie de ce que devrait contenir votre répertoire /etc. De plus, il a des fichiers qui doivent être dans /etc et qui ne sont pas dans /usr/src/etc. Si vous utilisez &man.mergemaster.8; (comme recommandé), vous pouvez passer cette section et aller directement à la section suivante. La façon la plus simple de procéder est d'installer les fichiers dans un nouveau répertoire, puis de passer en revue les différences. Sauvegardez votre répertoire <filename>/etc</filename> actuel Bien qu'en principe rien ne sera modifié automatiquement dans ce répertoire, prudence est mère de sûreté. Copiez donc votre répertoire /etc dans un endroit sûr. Quelque chose du genre: &prompt.root; cp -Rp /etc /etc.old conviendra; l'option fait une copie récursive, préserve la date, les autorisations des fichiers et ainsi de suite. Vous devez créer un ensemble de répertoires provisoires pour y installer les fichiers du répertoire /etc et autres. /var/tmp/root est un bon choix, il y a un certain nombre de sous-répertoires à créer également: &prompt.root; mkdir /var/tmp/root &prompt.root; cd /usr/src/etc &prompt.root; make DESTDIR=/var/tmp/root distrib-dirs distribution Cela va créer l'arborescence nécessaire et y installera les fichiers. Un grand nombre des sous-répertoires créés dans /var/tmp/root sont vides et devront être supprimés. La façon la plus simple de le faire est: &prompt.root; cd /var/tmp/root &prompt.root; find -d . -type d | xargs rmdir 2>/dev/null Ceci supprimera tous les répertoires vides (la sortie d'erreur standard est redirigée vers /dev/null pour empêcher les avertissements à propos des répertoires non vides). /var/tmp/root contient maintenant tous les fichiers à installer à l'endroit requis sous /. Vous devez maintenant examiner chacun de ces fichiers pour déterminer en quoi ils diffèrent de vos propres fichiers. Notez que certains des fichiers qui seront installés dans /var/tmp/root commencent par un “.”. Au moment où sont écrites ces lignes, les seuls fichiers concernés sont les fichiers d'initialisation des interpréteurs de commandes dans /var/tmp/root/ et /var/tmp/root/root/, mais il pourrait y en avoir d'autres (cela dépend de quand vous lirez ces lignes). Assurez-vous d'utiliser la commande ls -a pour ne pas les oublier. La manière la plus simple de procéder est d'utiliser la commande &man.diff.1; pour comparer les deux fichiers: &prompt.root; diff /etc/shells /var/tmp/root/etc/shells Cela vous indiquera les différences entre votre fichier /etc/shells et le nouveau fichier /var/tmp/root//etc/shells. A partir de là, décidez si vous aller reporter les modifications que vous y avez apportée ou si vous allez simplement recopier le nouveau fichier. Donnez au nouveau répertoire racine (<filename>/var/tmp/root</filename>) un nom qui inclue une date, pour pouvoir facilement comparer les différentes versions Si vous recompilez fréquemment votre système, cela signifie que vous devez également souvent mettre à jour le répertoire /etc, ce qui peut rapidement devenir une corvée. Vous pouvez accélérer le processus en conservant une copie du dernier ensemble de fichiers modifiés que vous avez reportés dans /etc. La procédure suivante présente une façon de faire. Recompilez le système comme à l'accoutumé. Au moment de mettre à jour /etc et les autre répertoires, donnez au répertoire cible un nom basé sur la date du jour. Si vous faisiez cela le 14 février 1998, vous pourriez procéder comme suit: &prompt.root; mkdir /var/tmp/root-19980214 &prompt.root; cd /usr/src/etc &prompt.root; make DESTDIR=/var/tmp/root-19980214 \ distrib-dirs distribution Reporter les modifications depuis ce répertoire comme décrit plus haut. Ne supprimez pas le répertoire /var/tmp/root-19980214 quand vous aurez terminé. Quand vous récupérez la dernière version des sources et la recompilerez, suivez l'étape 1. Vous aurez alors un nouveau répertoire, qui pourrait s'appeler /var/tmp/root-19980221 (si vous faites une mise à jour chaque semaine). Vous pouvez maintenant voir les modifications intervenues d'une semaine à l'autre en utilisant &man.diff.1; pour afficher les différences entre tous les fichiers deux répertoires: &prompt.root; cd /var/tmp &prompt.root; diff -r root-19980214 root-19980221 Généralement, il y aura beaucoup moins de différences qu'entre /var/tmp/root-19980221/etc et /etc. Comme il y a beaucoup moins de différences, il est beaucoup plus facile de les reporter dans le répertoire /etc. Vous pouvez maintenant supprimer le plus ancien des deux répertoires /var/tmp/root-*: &prompt.root; rm -rf /var/tmp/root-19980214 Répétez l'opération chaque fois que vous devez reporter des modifications dans /etc. Vous pouvez utiliser &man.date.1; pour automatiser la génération des noms de répertoires: &prompt.root; mkdir /var/tmp/root-`date "+%Y%m%d"` Redémarrer Vous en avez terminé. Après avoir vérifié que tout semble être en place, vous pouvez alors redémarrez votre système. Un simple &man.shutdown.8; devrait suffire: &prompt.root; shutdown -r now C'est fini Vous devriez maintenant avoir mis à jour avec succès votre système &os;. Félicitations. Si les choses se sont légèrement mal passées, il est facile de recompiler un élément particulier du système. Par exemple, si vous avez accidentellement effacé /etc/magic lors de la mise à jour de /etc, la commande &man.file.1; ne fonctionnerait plus. Dans ce cas, la solution serait d'exécuter: &prompt.root; cd /usr/src/usr.bin/file &prompt.root; make all install Questions Dois-je refaire le monde à chaque évolution? Il n'y a pas de réponse toute faite à cette question, tout dépend de la nature des évolutions. Par exemple, si vous venez juste d'exécuter CVSup, et que les fichiers suivants on été mis à jour: src/games/cribbage/instr.c src/games/sail/pl_main.c src/release/sysinstall/config.c src/release/sysinstall/media.c src/share/mk/bsd.port.mk cela ne vaut probablement pas la peine de recompiler tout le système. Vous pouvez tout simplement aller dans les sous-répertoires appropriés, exécuter make all install, et c'est à peu près tout. Mais s'il y a des évolutions importantes, par exemple sur src/lib/libc/stdlib alors vous devrez soit refaire le monde, ou recompiler au moins toutes les parties du système qui sont liées statiquement (de même que tout ce vous pourriez avoir ajouté qui y serait lié statiquement). C'est à vous de voir. Vous préférerez peut-être recompiler votre système tous les quinze jours, et laisser les modifications s'empiler pendant quinze jours. Ou bien vous préférerez ne recompiler que ce qui a changé et vous faire confiance pour tout ce qui en dépend. Et, bien sûr, cela dépend de la fréquence avec laquelle vous voulez faire vos mises à jour, et de si vous suivez la branche &os.stable; ou &os.current;. Ma compilation échoue avec de nombreuses erreurs “signal 11” signal 11 (ou tout autre numéro de signal). Que s'est-il passé? Cela indique généralement un problème matériel. (Re)compiler le système est un bon moyen de mettre votre matériel sous pression, et mettra souvent en évidence des défaillances de la mémoire vive. Elles se manifestent normalement d'elles-mêmes, la compilation échouant lors de la réception de mystérieux signaux. Un bon indicateur de cet état de fait, est que vous pouvez relancer la compilation et qu'elle échouera en un endroit différent. Dans ce cas, vous ne pouvez guère faire autre chose que d'intervertir les différents composants de votre matériel pour déterminer lequel est en cause. Puis-je effacer /usr/obj après avoir fini? Une réponse courte est oui. /usr/obj contient tous les fichiers objets générés à la compilation. Normalement, une des premières étapes de make buildworld est de supprimer ce répertoire et de repartir à zéro. Dans ce cas, conserver le répertoire /usr/obj après avoir terminé ne sert pas à grand chose, alors que vous économiseriez pas mal d'espace disque (actuellement environ 340 MO). Cependant, si vous savez ce que vous faites, vous pouvez faire en sorte que make buildworld saute cette étape. Cela rendra les compilations ultérieures plus rapides, puisque la plupart des sources n'auront pas besoin d'être recompilées. Le revers de la médaille est que des problèmes subtils de dépendance peuvent se manifester, provoquant l'échec de votre compilation de manière étrange. Cela génère fréquemment du bruit sur les listes de diffusion de &os;, quand quelqu'un se plaint que sa mise à jour a échoué, sans réaliser que c'est parce qu'il a tenté de brûler les étapes. Une recompilation interrompue peut-elle être reprise? Tout dépend de jusqu'où vous êtes aller avant de rencontrer un problème. En général (et ceci n'est pas une règle absolue) make buildworld crée de nouveaux exemplaires des outils indispensables (comme &man.gcc.1; et &man.make.1;) et des bibliothèques système. Ces outils et bibliothèques sont ensuite installés. Puis ils sont utilisés pour se reconstruire eux-mêmes, et installés de nouveau. L'intégralité du système (y compris maintenant les programmes utilisateurs classiques, comme &man.ls.1; ou &man.grep.1;) est alors recompilé avec les nouveaux fichiers système. Si vous êtes à cette dernière étape, et que vous le savez (parce que vous avez consulté les résultats que vous avez enregistrés) alors vous pouvez (sans trop de risque) faire: … fix the problem … &prompt.root; cd /usr/src &prompt.root; make -DNO_CLEAN all Cela ne détruira pas les résultats du travail qu'à déjà effectué make buildworld. Si vous voyez le message: -------------------------------------------------------------- Building everything.. -------------------------------------------------------------- dans les comptes-rendus de make buildworld alors cette façon de procéder est probablement bonne. Si vous ne voyez pas ce message, ou que vous doutez de vous, alors prudence est mère de sûreté, et il vaut mieux tout reprendre depuis le début. Comment puis-je accélérer la compilation du système? Passez en mode mono-utilisateur. Mettez les répertoires /usr/src et /usr/obj sur des systèmes de fichiers et des disques différents. Si possible, installez ces disques sur des contrôleurs différents. Encore mieux, mettez ces systèmes de fichiers sur plusieurs disques utilisant le système &man.ccd.4; (pilote de disques concaténés). Ne compilez pas les bibliothèques profilées (mettez “NO_PROFILE=true” dans le fichier /etc/make.conf). Vous n'en avez certainement pas besoin. Egalement dans /etc/make.conf, positionnez CFLAGS à quelque chose comme . L'optimisation est bien plus lente, et la différence d'optimisation entre et est en général négligeable. demande au compilateur d'utiliser des tuyaux à la place de fichiers temporaires, ce qui économise des accès disque (mais utilise plus de mémoire). Passez l'option à &man.make.1; pour permettre l'exécution de plusieurs processus en parallèle. Cela améliore généralement les choses, que vous ayez une machine mono- ou multi-processeurs. Le système de fichiers qui contient /usr/src peut être monté (ou remonté) avec l'option . Cela empêche l'enregistrement des dates d'accès aux fichiers par le système de fichiers. Vous n'avez de toute façon probablement pas besoin de cette information. &prompt.root; mount -u -o noatime /usr/src Cet exemple suppose que /usr/src constitue à lui seul un système de fichiers. Si ce n'est pas le cas (s'il fait partie de /usr par exemple) vous devez alors indiquer le point de montage de ce système de fichiers, et non /usr/src. Le système de fichiers où se trouve /usr/obj peut être monté (ou remonté) avec l'option . Les écritures sur le disque se feront alors de façon asynchrone. En d'autres termes, le programme reprend immédiatement la main, et l'écriture des données sur le disque se fait quelques secondes plus tard. Cela permet le groupement des écritures sur le disque, et le gain en performance peut être spectaculaire. Gardez à l'esprit que cette option rend votre système de fichiers plus fragile. Avec cette option, les risques ne sont accrus qu'en cas de coupure d'alimentation, le système de fichiers soit irrécupérable quand la machine redémarrera. S'il n'y a que /usr/obj sur ce système de fichiers, ce n'est alors pas un problème. Si vous avez d'autres données importantes sur ce système de fichiers, assurez-vous que vos sauvegardes soient à jour avant d'activer cette option. &prompt.root; mount -u -o async /usr/obj Comme auparavant, si /usr/obj ne constitue pas un système de fichiers en soit, remplacez-le dans l'exemple par le nom du point de montage approprié. Que faire si quelque chose se passe mal? Soyez absolument sûr que votre environnement ne contient pas des restes de compilation précédentes. Cela est plutôt simple: &prompt.root; chflags -R noschg /usr/obj/usr &prompt.root; rm -rf /usr/obj/usr &prompt.root; cd /usr/src &prompt.root; make cleandir &prompt.root; make cleandir En effet, make cleandir doit vraiment être exécutée deux fois. Ensuite relancez l'ensemble du processus, en commençant avec make buildworld. Si vous avez toujours des problèmes, envoyez l'erreur et le résultat de la commande uname -a à la &a.questions;. Tenez-vous prêt à répondre à d'autres concernant votre configuration! Mike Meyer Contribution de Suivre les mises à jour pour plusieurs machines NFS installation de multiples machines Si vous avez plusieurs machines dont vous voulez maintenir à jour l'arborescence des sources, alors faire télécharger et recompiler à chacune d'entre elles les sources semble un gaspillage de ressources: espace disque, bande passante réseau, et cycles CPU. C'est en effet bien le cas, et la solution est d'avoir une machine qui fait la majeure partie du travail, pendant que le reste des machines montent ce travail par NFS. Cette section décrit une façon de le faire. Préliminaires Premièrement, identifiez un ensemble de machines qui va utiliser le même ensemble de binaires, que nous appellerons un ensemble de compilation. Chaque machine peut avoir un noyau personnalisé, mais elles exécuteront les mêmes binaires utilisateur du système de base. Dans cet ensemble de machine, choisissez une machine qui sera la machine de compilation. Cela sera la machine sur laquelle le monde et le noyau seront compilés. Idéalement, cela devrait être une machine rapide avec un CPU suffisamment disponible pour exécuter la commande make buildworld et make buildkernel. Vous voudrez également utiliser une machine de test, qui testera les mises à jour logicielles avant d'être utilisées en production. Cela doit être une machine que vous pouvez vous permettre d'avoir hors service pour une longue période. Cela peut être la machine de compilation, mais cela n'est pas obligatoire. Toutes les machines de cet ensemble de compilation doivent monter /usr/obj et /usr/src à partir de la même machine, et du même point de montage. Idéalement, ces derniers sont sur deux disques différents sur la machine de compilation, mais peuvent également être montés par NFS sur cette machine. Si vous avez plusieurs ensembles de compilation, /usr/src devrait être sur une machine de compilation, et monté par NFS sur les autres. Finalement assurez-vous que /etc/make.conf et /etc/src.conf sur toutes les machines de l'ensemble de compilation sont en accord avec la machine de compilation. Cela signifie que la machine de compilation doit compiler toutes les parties du système de base que toute machine de l'ensemble de compilation va installer. De plus, chaque machine de compilation devra avoir son nom de noyau défini avec KERNCONF dans /etc/make.conf, et la machine de compilation devrait tous les lister dans KERNCONF, en listant son noyau en premier. La machine de compilation doit avoir les fichiers de configuration des noyaux de chaque machine dans /usr/src/sys/arch/conf si elle va compiler leur noyau. Le système de base Maintenant que tout est configuré, vous êtes fin prêt pour tout compiler. Compilez le noyau et le monde sur la machine de compilation comme décrit dans la , mais n'installez rien. La compilation une fois terminée, allez sur la machine de test, et installez le noyau que vous venez juste de compiler. Si la machine monte /usr/src et /usr/obj via NFS, quand vous redémarrez en mode mono-utilisateur vous devrez activer le réseau et monter ces répertoires. La méthode la plus simple est de démarrer en mode multi-utilisateur, puis exécutez shutdown now pour passer en mode mono-utilisateur. Une fois à ce niveau, vous pouvez installer le nouveau noyau et monde puis exécuter mergemaster comme vous le feriez habituellement. Une fois cela effectué, redémarrez pour retourner en mode multi-utilisateur pour cette machine. Après que vous soyez certain que tout fonctionne correctement sur la machine de test, utilisez la même procédure pour installer le nouvel ensemble logiciel sur chacune des autres machines de l'ensemble de compilation. Les logiciels portés La même idée peut être utilisée pour le catalogue des logiciels portés. La première étape critique est de monter /usr/ports depuis la même machine vers toutes les machines de l'ensemble de compilation. Vous pouvez alors configurer correctement /etc/make.conf pour partager les archives. Vous devrez faire pointer DISTDIR sur un répertoire de partage commun dans lequel peut écrire n'importe quel utilisateur utilisé pour correspondance de l'utilisateur root par vos montages NFS. Chaque machine devrait faire pointer WRKDIRPREFIX sur une répertoire de compilation local. Et enfin, si vous projetez de compiler et distribuer des logiciels précompilés, vous devriez fixer PACKAGES sur un répertoire similaire à DISTDIR. diff --git a/fr_FR.ISO8859-1/books/handbook/mail/chapter.xml b/fr_FR.ISO8859-1/books/handbook/mail/chapter.xml index b922a4c770..0acce15f66 100644 --- a/fr_FR.ISO8859-1/books/handbook/mail/chapter.xml +++ b/fr_FR.ISO8859-1/books/handbook/mail/chapter.xml @@ -1,2657 +1,2656 @@ Bill Lloyd Contribution originale de Jim Mock Réécrit par Courrier électronique &trans.a.fonvieille; Synopsis email courrier électronique Le “courrier électronique”, plus connu sous le nom d'email, est une des formes de communication les plus utilisées aujourd'hui. Ce chapitre fournit une introduction sur comment faire fonctionner un serveur de courrier électronique sous FreeBSD, et comment envoyer et recevoir du courrier électronique sous &os;. Cependant, cela n'est pas un document de référence, en fait de nombreux éléments importants ont été omis. Pour une couverture plus complète du sujet, le lecteur doit se référer aux nombreux ouvrages excellents listés dans l'. Après la lecture de ce chapitre, vous connaîtrez: Quels composants logiciel sont impliqués dans l'envoi et la réception du courrier électronique. Où se trouvent sous FreeBSD les fichiers de configuration de base de sendmail. La différence entre boîtes aux lettres distantes et boîtes aux lettres locale. Comment empêcher les personnes à l'origine de courriers non sollicités (spam) d'utiliser votre serveur de courrier comme relais. Comment installer et configurer un agent de transfert de courrier alternatif sur votre système, en remplacement de sendmail. Comment dépanner les problèmes courants des serveurs de courrier électronique. Comment utiliser le protocole SMTP avec UUCP. Comment utiliser le courrier électronique avec une connexion temporaire. Comment configurer l'authentification SMTP pour une sécurité accrue. Comment installer et utiliser un client de messagerie, comme mutt pour envoyer et lire du courrier électronique. Comme récupérer votre courrier électronique à partir d'un serveur POP ou IMAP distant. Comment appliquer automatiquement des règles de filtrage au courrier entrant. Avant de lire ce chapitre, vous devrez: Configurer correctement votre connexion réseau (). Configurer correctement les informations DNS pour votre serveur de courrier (). Savoir comment installer des logiciels tiers (). Utilisation du courrier électronique POP IMAP DNS Il y a cinq éléments majeurs impliqués dans un échange de courrier. Ce sont: le programme utilisateur, le “daemon” serveur de courrier, le serveur DNS, une boîte aux lettres distante ou locale, et bien sûr le le serveur de courrier lui-même . Le programme utilisateur Cela inclut des programmes en ligne de commande comme mutt, pine, elm, et mail, et des programmes graphiques comme balsa, xfmail pour juste en nommer quelques-uns, ou quelque chose de plus sophisticated comme un navigateur WWW. Ces programmes transmettent simplement toutes les transactions concernant le courrier électronique au serveur de courrier local, soit en invoquant un des “daemons” serveurs (Agents de transfert de courrier) disponibles, soit via TCP. Le “daemon” serveur de courrier daemons serveurs de courrier sendmail daemons serveurs de courrier postfix daemons serveurs de courrier qmail daemons serveurs de courrier exim &os; est fourni par défaut avec sendmail, mais supporte également de nombreux autres “daemons” serveurs de courrier, parmi lesquels: exim; postfix; qmail. Le serveur a généralement deux fonctions—il est responsable de la réception du courrier comme celle de son envoi. Il n'est cependant pas responsable de la récupération du courrier électronique en utilisant des protocoles comme POP ou IMAP pour lire votre courrier, il ne vous permet pas non plus la connexion à des boîtes aux lettres locales de type mbox ou maildir. Vous avez besoin d'un “daemon” supplémentaire pour cela. Les anciennes version de sendmail ont de sérieux problèmes de sécurité qui peuvent avoir pour conséquence l'obtention d'un accès local et/ou à distance à votre machine pour une personne malveillante. Vérifiez que vous utilisez une version à jour pour éviter de tels problèmes. Vous avez cependant toujours la possibilité d'installer un autre MTA à partir du catalogue des logiciels portés de &os;. Courrier électronique et DNS Le système de noms de domaines (DNS) et son “daemon” named jouent un rôle important dans la transmission du courrier électronique. Afin de délivrer du courrier de votre site à un autre, le serveur recherchera le site distant dans la base de données DNS pour déterminer la machine qui recevra le courrier électronique pour le destinataire. Ce processus intervient également quand un courrier électronique est envoyé à partir d'une machine distante vers votre serveur de courrier. enregistrement MX Le DNS gère la correspondance entre nom de machine et adresse IP, et le stockage des informations spécifiques à la distribution du courrier électronique, connues sous le nom d'enregistrements MX. L'enregistrement MX (“Mail eXchanger”) définit la machine, ou les machines, qui recevra le courrier pour un domaine particulier. Si vous n'avez pas d'enregistrement MX pour votre machine ou votre domaine, le courrier sera directement envoyé à votre machine à condition que vous ayez un enregistrement A faisant correspondre à votre nom de machine votre adresse IP. Vous pouvez obtenir les enregistrements MX pour n'importe quel domaine en utilisant la commande &man.host.1; est présentée ci-dessous: &prompt.user; host -t mx FreeBSD.org FreeBSD.org mail is handled (pri=10) by mx1.FreeBSD.org Réception de courrier courrier électronique réception La réception du courrier pour votre domaine se fait par le serveur de courrier. Il collectera le courrier qui est envoyé à destination de votre domaine et le stockera soit sous le format mbox (la méthode par défaut de stockage du courrier électronique) ou le format Maildir, en fonction de votre configuration. Une fois le courrier stocké, il peut être lu localement en utilisant des applications comme &man.mail.1; ou mutt, ou lu à distance et récupéré en utilisant des protocoles tels que POP ou IMAP. Cela signifie que si vous désirez uniquement lire votre courrier électroniquement en local, vous n'avez pas besoin d'installer un serveur POP ou IMAP. Accès aux boîtes aux lettres distantes en utilisant <acronym>POP</acronym> et <acronym>IMAP</acronym> POP IMAP Pour accéder à des boîtes aux lettres distantes, vous devez avoir un accès à un serveur POP ou IMAP. Ces protocoles permettent aux utilisateurs de se connecter aisément à leurs boîtes aux lettres à partir de machines distantes. Bien que POP et IMAP permettent, tous les deux, l'accès aux boîtes aux lettres pour les utilisateurs, IMAP offre de nombreux avantages, parmi lesquels: IMAP peut stocker les messages sur un serveur distant et les récupérer. IMAP supporte les mises à jour concourantes. IMAP peut être extrêmement utile pour les connexions lentes car il permet aux utilisateurs de récupérer la structure des messages sans les télécharger. Il peut également effectuer des tâches comme la recherche sur le serveur pour réduire les transferts de données entre clients et serveurs. Pour installer un serveur POP ou IMAP, les étapes suivantes doivent être suivies: Choisissez un serveur IMAP ou POP correspondant à vos besoins. Les serveurs POP et IMAP suivants sont connus et sont de bons exemples: qpopper; teapop; imap-uw; courier-imap; Installez le “daemon” POP ou IMAP de votre choix à partir du catalogue des logiciels portés. Si cela est nécessaire, modifiez le fichier /etc/inetd.conf pour charger le serveur POP ou IMAP. Il doit être noté que POP et IMAP transmettent les données, y compris les noms d'utilisateurs et mot de passe d'authentification en clair. Cela signifie que si vous désirez sécuriser la transmission des données avec ces protocoles, vous devriez considérer l'utilisation de de tunnels &man.ssh.1;. L'utilisation de tels tunnels est décrite dans la . Accès aux boîtes aux lettres locales Les boîtes aux lettres peuvent être accessibles localement en utilisant un client de messagerie sur le serveur où se trouve la boîte. Cela peut être fait en employant des applications telles que mutt ou &man.mail.1;. Le serveur de courrier serveur de courrier Le serveur de courrier est le nom donné au serveur qui est responsable de la transmission et la réception du courrier pour votre machine, et probablement votre réseau. Christopher Shumway Contribution de Configuration de <application>sendmail</application> sendmail &man.sendmail.8; est l'agent de transfert de courrier (Mail Transfert Agent—MTA) par défaut sous FreeBSD. Le rôle de sendmail est d'accepter le courrier en provenance des agents de courrier utilisateur (Mail User Agents—MUA) et de délivrer le courrier aux programmes de gestion du courrier définis dans son fichier de configuration. sendmail peut également accepter les connexions réseau et délivrer le courrier dans des boîtes aux lettres locales ou le transmettre à un autre programme. sendmail utilise les fichiers de configuration suivants: /etc/mail/access /etc/mail/aliases /etc/mail/local-host-names /etc/mail/mailer.conf /etc/mail/mailertable /etc/mail/sendmail.cf /etc/mail/virtusertable Fichier Fonction /etc/mail/access Fichier de la base de données d'accès de sendmail /etc/mail/aliases Alias de boîte aux lettres /etc/mail/local-host-names Liste des machines pour lesquelles sendmail accepte du courrier /etc/mail/mailer.conf Configuration du programme de gestion du courrier /etc/mail/mailertable Table de livraison du courrier /etc/mail/sendmail.cf Fichier de configuration principal de sendmail /etc/mail/virtusertable Table des domaines et utilisateurs virtuels <filename>/etc/mail/access</filename> La base de données d'accès définit quelle(s) machine(s) ou adresses IP ont accès au serveur de courrier local et quel type d'accès ils ont. Les machines peuvent être listées avec , , ou simplement transférées à la routine de gestion des erreurs sendmail avec une erreur donnée. Les machines qui sont listées avec , qui est le comportement par défaut, sont autorisées à envoyer du courrier à cette machine dès que la destination finale du courrier est la machine locale. Les machines listées avec se verront rejeter pour toute connexion au serveur. Les machines présentes avec l'option sont autorisées à envoyer du courrier à n'importe quelle destination par l'intermédiaire de ce serveur de courrier. Configuration de la base de données d'accès de <application>sendmail</application> cyberspammer.com 550 We don't accept mail from spammers FREE.STEALTH.MAILER@ 550 We don't accept mail from spammers another.source.of.spam REJECT okay.cyberspammer.com OK 128.32 RELAY Dans cet exemple nous avons cinq entrées. Les émetteurs de courrier qui correspondent à la partie gauche de la table sont affectés par l'action donnée sur la partie droite de la table. Les deux premiers exemples donnent un code d'erreur à la routine de gestion d'erreur de sendmail. Le message est affiché sur la machine distante quand un courrier électronique correspond à la partie gauche de la table. L'entrée suivante rejette le courrier en provenance d'une machine précise de l'Internet, another.source.of.spam. L'entrée suivante accepte les connexions à partir de la machine okay.cyberspammer.com, qui est plus précis que le cyberspammer.com de la ligne précédente. Les correspondances plus spécifiques priment sur les moins précises. La dernière entrée autorise le relais du courrier électronique en provenance de machines avec une adresse IP qui commence par 128.32. Ces machines seront en mesure d'envoyer du courrier destiné à d'autres serveurs de courrier par l'intermédiaire de ce serveur de courrier. Quand ce fichier est mis à jour, vous devez exécuter la commande make dans /etc/mail/ pour mettre à jour la base de données. <filename>/etc/mail/aliases</filename> La base de données d'alias contient une liste de boîtes aux lettres virtuelles dont le contenu sera transmis à d'autres utilisateurs, fichiers, programmes ou d'autres alias. Voici quelques exemples qui peuvent être utilisés dans /etc/mail/aliases: Exemple de base de données d'alias root: localuser ftp-bugs: joe,eric,paul bit.bucket: /dev/null procmail: "|/usr/local/bin/procmail" Le format du fichier est simple; le nom de la boîte aux lettres à gauche et la cible sur la droite. Le premier exemple transfère la boîte aux lettres root vers la boîte aux lettres localuser, qui est ensuite recherchée dans la base de données d'alias. Si aucune correspondance n'est trouvée alors le message est délivré à l'utilisateur locale localuser. L'exemple suivant montre une liste de correspondance. Un courrier envoyé à la boîte aux lettres ftp-bugs sera délivré aux trois boites locales joe, eric, et paul. Notez qu'une boîte aux lettres distante comme user@exemple.com/procmail pourra être spécifiée. L'exemple suivant montre comment transférer le courrier dans un fichier, dans notre cas /dev/null. Le dernier exemple montre l'envoi du courrier à un programme, dans le cas présent le message est écrit sur l'entrée standard de /usr/local/bin/procmail par l'intermédiaire d'un tube &unix;. Quand ce fichier est mis à jour, vous devez exécuter la commande make dans /etc/mail/ pour mettre à jour la base de données. <filename>/etc/mail/local-host-names</filename> C'est la liste des machines pour lesquelles &man.sendmail.8; accepte du courrier comme s'il était destiné à la machine locale. Placez-y tous les domaines ou machines pour lesquels sendmail doit recevoir du courrier. Par exemple, si le serveur de courrier devait accepter du courrier pour le domaine exemple.com et la machine mail.exemple.com, sont local-host-names ressemblera à quelque chose comme ceci: exemple.com mail.exemple.com Quand ce fichier est mis à jour, &man.sendmail.8; doit être relancé pour lire les changements. <filename>/etc/mail/sendmail.cf</filename> Fichier principal de configuration de sendmail, sendmail.cf contrôle le comportement général de sendmail, y compris tout depuis la réécriture des adresses de courrier jusqu'à l'envoi de message de rejet aux serveurs de courrier distants. Naturellement, avec tant de différentes activités, ce fichier de configuration est relativement complexe et son étude détaillée n'est pas le but de cette section. Heureusement, ce fichier a rarement besoin d'être modifié pour les serveurs de courrier standards. Le fichier de configuration principal de sendmail peut être créé à partir de macros &man.m4.1; qui définissent les fonctions et le comportement de sendmail. Veuillez consulter /usr/src/contrib/sendmail/cf/README pour plus de détails. Quand des modifications à ce fichier sont apportées, sendmail doit être redémarré pour que les changements prennent effet. <filename>/etc/mail/virtusertable</filename> La table virtusertable fait correspondre les adresses de courrier électronique pour des domaines virtuels et les boîtes aux lettres avec des boîtes aux lettres réelles. Ces boîtes aux lettres peuvent être locales, distantes, des alias définis dans /etc/mail/aliases ou des fichiers. Exemple de correspondance de domaine virtuel de courrier root@exemple.com root postmaster@exemple.com postmaster@noc.exemple.net @exemple.com joe Dans l'exemple ci-dessus, nous avons une correspondance pour un domaine exemple.com. Ce fichier est traité jusqu'à trouver la première correspondance. Le premier élément fait correspondre root@exemple.com à la boîte aux lettres root locale. L'entrée suivante fait correspondre postmaster@exemple.com à la boîte aux lettres postmaster sur la machine noc.exemple.net. Et enfin, si un courrier en provenance de exemple.com n'a pas trouvé de correspondance, il correspondra à la dernière ligne, qui régira tous les autres messages adressés à quelqu'un du domaine exemple.com. La correspondance sera la boîte aux lettres locale joe. Andrew Boothman Ecrit par Gregory Neil Shapiro Information provenant de courriers électroniques écrit par Changer votre agent de transfert de courrier courrier électronique changer d'agent de transfert de courrier Comme mentionné précédemment, FreeBSD est fournit avec sendmail comme agent de transfert du courrier (MTA - Mail Transfert Agent). Il est donc par défaut en charge de votre courrier sortant et entrant. Cependant, pour une variété de raison, certains administrateurs système désirent changer le MTA de leur système. Ces raisons vont de la simple envie d'essayer un autre agent au besoin d'une fonction ou ensemble spécifique qui dépend d'un autre gestionnaire de courrier. Heureusement, quelle qu'en soit la raison, FreeBSD rend le changement aisé. Installer un nouveau MTA Vous avez un vaste choix d'agent disponible. Un bon point de départ est le catalogue des logiciels portés de FreeBSD où vous pourrez en trouver un grand nombre. Bien évidemment vous êtes libres d'utiliser n'importe quel agent de n'importe quelle origine, dès que vous pouvez le faire fonctionner sous FreeBSD. Commencez par installer votre nouvel agent. Une fois ce dernier installé, il vous donne une chance de décider s'il remplit vraiment vos besoins, et vous donne l'opportunité de configurer votre nouveau logiciel avant de remplacer sendmail. Quand vous faites cela, vous devez être sûr que l'installation du nouveau logiciel ne tentera pas de remplacer des binaires du système comme /usr/bin/sendmail. Sinon, votre nouveau logiciel sera mis en service avant d'avoir pu le configurer. Veuillez vous référer à la documentation de l'agent choisi pour de l'information sur comment configurer le logiciel que vous avez choisi. Désactiver <application>sendmail</application> La procédure utilisée pour lancer sendmail a changé de façon significative entre la 4.5-RELEASE et la 4.6-RELEASE. Par conséquent, la procédure utilisée pour la désactiver est légèrement différente. FreeBSD 4.5-STABLE d'avant le 2002/4/4 et plus ancienne (y compris 4.5-RELEASE et précédentes) Ajoutez: sendmail_enable="NO" dans /etc/rc.conf. Cela désactivera le service de courrier entrant de sendmail mais si /etc/mail/mailer.conf (voir plus bas) n'est pas modifié, sendmail sera toujours utilisé pour envoyer du courrier électronique. FreeBSD 4.5-STABLE d'après le 2002/4/4 (y compris 4.6-RELEASE et suivantes) Afin de complètement désactiver sendmail vous devez utiliser sendmail_enable="NONE" dans /etc/rc.conf. Si vous désactivez le service d'envoi de courrier de sendmail de cette manière, il est important que vous le remplaciez par un système de courrier alternatif fonctionnant parfaitement. Si vous choisissez de ne pas le faire, des fonctions du système comme &man.periodic.8; ne seront pas en mesure de délivrer leur résultat par courrier électronique comme elles s'attendent normalement à le faire. De nombreux composants de votre système s'attendent à avoir un système compatible à sendmail en fonctionnement. Si des applications continuent à utiliser les binaires de sendmail pour essayer d'envoyer du courrier électronique après la désactivation, le courrier pourra aller dans une file d'attente inactive, et pourra n'être jamais livré. Si vous voulez uniquement désactiver le service de réception de courrier de sendmail vous devriez fixer sendmail_enable="NO" dans /etc/rc.conf. Plus d'information sur les options de démarrage de sendmail est disponible à partir de la page de manuel de &man.rc.sendmail.8;. Lancement de votre nouvel agent au démarrage Vous pourrez avoir le choix entre deux méthodes pour lancer votre nouvel agent au démarrage, encore une fois en fonction de la version de FreeBSD dont vous disposez. FreeBSD 4.5-STABLE d'avant le 2002/4/11 (y compris 4.5-RELEASE et précédentes) Ajouter une procédure dans /usr/local/etc/rc.d/ qui se termine en .sh et qui est exécutable par root. La procédure devrait accepter les paramètres start et stop. Au moment du démarrage les procédures système exécuteront la commande /usr/local/etc/rc.d/supermailer.sh start que vous pouvez également utiliser pour démarrer le serveur. Au moment de l'arrêt du système, les procédures système utiliseront l'option stop en exécutant la commande /usr/local/etc/rc.d/supermailer.sh stop que vous pouvez également utiliser manuellement pour arrêter le serveur quand le système est en fonctionnement. FreeBSD 4.5-STABLE d'après le 2002/4/11 (y compris 4.6-RELEASE et suivantes) Avec les versions suivantes de FreeBSD, vous pouvez utiliser la méthode ci-dessus ou fixer mta_start_script="nomfichier" dans /etc/rc.conf, où nomfichier est le nom d'une procédure que vous voulez exécuter au démarrage pour lancer votre agent. Remplacer <application>sendmail</application> comme gestionnaire du courrier du système par défaut Le programme sendmail est tellement omniprésent comme logiciel standard sur les systèmes &unix; que certains programmes supposent qu'il est tout simplement déjà installé et configuré. Pour cette raison, de nombreux agents alternatifs fournissent leur propre implémentation compatible avec l'interface en ligne de commande de sendmail; cela facilite leur utilisation comme remplaçant pour sendmail. Donc, si vous utilisez un programme alternatif, vous devrez vérifier que le logiciel essayant d'exécuter les binaires standards de sendmail comme /usr/bin/sendmail exécute réellement l'agent que vous avez choisi à la place. Heureusement, FreeBSD fournit un système appelé &man.mailwrapper.8; qui remplit ce travail pour vous. Quand sendmail fonctionne tel qu'il a été installé, vous trouverez quelque chose comme ce qui suit dans /etc/mail/mailer.conf: sendmail /usr/libexec/sendmail/sendmail send-mail /usr/libexec/sendmail/sendmail mailq /usr/libexec/sendmail/sendmail newaliases /usr/libexec/sendmail/sendmail hoststat /usr/libexec/sendmail/sendmail purgestat /usr/libexec/sendmail/sendmail Cela signifie que lorsque l'une des commandes courantes (comme sendmail lui-même) est lancée, le système invoque en fait une copie de “mailwrapper” appelée sendmail, qui lit mailer.conf et exécute /usr/libexec/sendmail/sendmail à la place. Ce système rend aisé le changement des binaires qui sont réellement exécutés quand les fonctions de sendmail par défaut sont invoquées. Donc si vous avez voulu que /usr/local/supermailer/bin/sendmail-compat soit lancé en place de sendmail, vous pourrez modifier /etc/mail/mailer.conf de cette façon: sendmail /usr/local/supermailer/bin/sendmail-compat send-mail /usr/local/supermailer/bin/sendmail-compat mailq /usr/local/supermailer/bin/mailq-compat newaliases /usr/local/supermailer/bin/newaliases-compat hoststat /usr/local/supermailer/bin/hoststat-compat purgestat /usr/local/supermailer/bin/purgestat-compat Pour en terminer Une fois que vous avez tout configuré de la façon dont vous le désirez, vous devriez soit tuer les processus de sendmail dont vous n'avez plus besoin et lancer les processus appartenant à votre nouveau logiciel, ou tout simplement redémarrer. Le redémarrage vous donnera l'opportunité de vous assurer que vous avez correctement configuré votre système pour le lancement automatique de votre nouvel agent au démarrage. Dépannage courrier électronique dépannage Pourquoi faut-il que j'utilise le FQDN (“Fully Qualified Domain Name” - nom complet de machine) pour les machines de mon site? Vous vous rendrez probablement compte que la machine est en fait dans un domaine différent; par exemple, si vous êtes dans le domaine foo.bar.edu et que vous voulez atteindre la machine mumble du domaine bar.edu, vous devrez utiliser son nom de machine complet, mumble.bar.edu, au lieu de juste mumble. C'était traditionnellement autorisé par les résolveurs BIND BIND BSD. Néanmoins, la version de BIND qui est maintenant livrée avec FreeBSD ne sait pas compléter les noms de machines abrégés autrement qu'avec le nom de votre domaine. Donc le nom non qualifié mumble doit correspondre à mumble.foo.bar.edu, sans quoi il sera recherché dans le domaine racine. Cela diffère du comportement précédent, où la recherche se prolongeait à mumble.bar.edu, puis mumble.edu. Consultez la RFC 1535 pour savoir pourquoi cela était considéré comme une mauvaise pratique, voire même un trou de sécurité. Comme solution, vous pouvez mettre la ligne: search foo.bar.edu bar.edu à la place de: domain foo.bar.edu dans votre fichier /etc/resolv.conf. Cependant, assurez-vous que la recherche ne franchit pas la “limite entre l'administration locale et publique”, selon l'expression de la RFC 1535. sendmail affiche le message mail loops back to myself La réponse donnée dans la FAQ de sendmail est la suivante: J'obtiens les messages d'erreur suivant: 553 MX list for domain.net points back to relay.domain.net 554 <user@domain.net>... Local configuration error Comment puis-je résoudre ce problème? Vous avez demandé que le courrier pour un domaine (e.g., domain.net) soit transmis à une machine donnée (dans ce cas précis, relay.domain.net) en utilisant un enregistrement MXMX record , mais la machine relais ne se connaît pas elle-même comme domain.net. Ajoutez domain.net à /etc/mail/local-host-names [connu sous le nom /etc/sendmail.cw dans les versionsantérieure à 8.10] (si vous utilisez FEATURE(use_cw_file)) ou ajoutez “Cw domain.net” à /etc/mail/sendmail.cf. La FAQ de sendmail peut être trouvée à l'adresse et sa lecture est recommandée si vous voulez “bidouiller” votre configuration du courrier électronique. Comment puis-je faire tourner un serveur de courrier électronique avec une connexion téléphonique PPP PPP Vous voulez connecter une machine FreeBSD du réseau local à l'Internet. Cette machine servira de passerelle de courrier électronique pour le réseau local. La connexion PPP n'est pas dédiée. Il y a au moins deux façons de faire. L'une d'elle est d'utiliser UUCP UUCP. L'autre méthode étant d'obtenir un serveur Internet constamment connecté pour qu'il vous fournisse les services MX pour votre domaine. Par exemple, si le domaine de votre compagnie est exemple.com et votre fournisseur d'accès a configuré exemple.net pour fournir un MX secondaire pour votre domaine: exemple.com. MX 10 exemple.com. MX 20 exemple.net. Une seule machine devrait être spécifiée comme destinataire final (ajoutez Cw exemple.com au fichier /etc/mail/sendmail.cf de exemple.com). Quand le sendmail expéditeur tente de vous délivrer du courrier, il essaiera de se connecter à votre serveur (exemple.com) via votre liaison par modem. Ce qui échouera très probablement par dépassement de délai puisque vous n'êtes pas en ligne. Le programme sendmail enverra automatiquement le courrier au site MX secondaire MX record, i.e. votre fournisseur d'accès (exemple.net). Le site MX secondaire essayera périodiquement de se connecter à votre machine pour expédier le courrier au site MX primaire (exemple.com). Vous pourrez vouloir utiliser quelque chose comme ceci comme procédure de connexion: #!/bin/sh # Mettez-moi dans /usr/local/bin/pppmyisp ( sleep 60 ; /usr/sbin/sendmail -q ) & /usr/sbin/ppp -direct pppmyisp Si vous avez l'intention de définir une procédure de connexion particulière pour un utilisateur, vous pourrez utiliser sendmail -qRexemple.com à la place de la procédure ci-dessus. Cela forcera le traitement immédiat de tout le courrier dans votre file d'attente pour exemple.com. On peut encore affiner la configuration comme suit: Message emprunté à la &a.isp;. > Nous fournissons un MX secondaire à un client. Le client se connecte > à notre service automatiquement plusieurs fois par jour pour acheminer > le courrier sur son MX primaire (nous n'appelons pas son site lorsque > du courrier pour ses domaines arrive). Notre sendmail envoie le courrier de la > file d'attente toutes les demi-heures. Pour l'instant, il doit rester > une demi-heure en ligne pour être sûr que tout le courrier soit > arrivé au MX primaire. > > Y-a-t-il une commande qui permette de dire à sendmail d'envoyer > sur-le-champ tout le courrier? L'utilisateur n'a évidemment pas > les droits super-utilisateur sur la machine. Dans la section “privacy flags” (indicateurs de confidentialité) de sendmail.cf, il y a la définition Opgoaway,restrictqrun Supprimer restrictqrun permet à d'autres utilisateurs que le super-utilisateur de lancer le traitement de la file d'attente. Vous pouvez aussi redéfinir les MXs. Nous sommes le premier MX pour les utilisateurs de ce type, et nous avons défini: # Si nous sommes le meilleur MX pour une machine, essayer directement # au lieu d'émettre des messages d'erreur de configuration locale. OwTrue De cette façon, un site distant vous enverra directement le courrier, sans essayer de se connecter chez votre client. Vous le lui transmettez ensuite. Cela ne marche qu'avec les “machines”, votre client doit nommer son serveur de courrier “client.com” aussi bien que “machine.client.com” dans le DNS. Mettez seulement un enregistrement A pour “client.com”. Pourquoi j'obtiens le message d'erreur Relaying Denied à chaque fois que j'envoie du courrier à partir d'autres machines? Dans l'installation par défaut de FreeBSD, sendmail est configuré pour envoyer du courrier uniquement à partir de la machine sur laquelle il tourne. Par exemple, si un serveur POP est disponible, alors les utilisateurs pourront retirer leur courrier depuis l'école, le travail, ou toute autre machine distante mais ils ne seront toujours pas en mesure d'envoyer du courrier électronique à partir de machines extérieures. Généralement, quelques instants après une tentative, un courrier électronique sera envoyé par le MAILER-DAEMON avec un message 5.7 Relaying Denied. Il y a plusieurs façons d'y remédier. La solution la plus directe est de mettre l'adresse de votre fournisseur d'accès dans un fichier de domaine à relayer /etc/mail/relay-domains. Une façon rapide de le faire serait: &prompt.root; echo "votre.fai.exemple.com" > /etc/mail/relay-domains Après avoir créé ou édité ce fichier vous devez redémarrer sendmail. Cela fonctionne parfaitement si vous êtes l'administrateur d'un serveur et vous ne désirez pas envoyer de courrier localement, ou que vous désiriez utiliser un système ou un client “clic-bouton” sur une autre machine ou un autre FAI. C'est également très utile si vous avez uniquement qu'un ou deux comptes de courrier électronique configurés. S'il y a un grand nombre d'adresses à ajouter, vous pouvez tout simplement ouvrir ce fichier dans votre éditeur de texte favori et ensuite ajouter les domaines, un par ligne: votre.fai.exemple.com autre.fai.exemple.net utilisateurs-fai.exemple.org www.exemple.org Désormais tout courrier envoyé vers votre système, par n'importe quelle machine de cette liste (en supposant que l'utilisateur possède un compte sur votre système), sera accepté. C'est un bon moyen d'autoriser aux utilisateurs d'envoyer du courrier électronique à distance depuis votre système sans autoriser l'utilisation de votre système pour l'envoi de courrier électronique non sollicité (SPAM). Sujets avancés LA fonction suivante couvre des sujets plus avancés comme la configuration du courrier électronique pour l'intégralité de votre domaine. Basic Configuration courrier électronique configuration Sans aucune configuration, vous devrez être en mesure d'envoyer du courrier électronique à des machines extérieures à partir du moment où vous avez configuré /etc/resolv.conf ou que vous avez votre propre serveur de noms. Si vous désirez que le courrier pour votre machine soit délivré au serveur de courrier (e.g., sendmail) sur votre propre machine FreeBSD, il y a deux méthodes: Faites tourner votre propre serveur de noms et possédez votre propre domaine. Par exemple FreeBSD.org Faire délivrer le courrier directement sur votre machine. Cela est possible en délivrant directement le courrier à la machine sur lequel pointe le DNS pour le courrier qui vous est destiné. Par exemple exemple.FreeBSD.org. SMTP Indépendamment de la méthode que vous choisissez, afin d'avoir le courrier délivré directement à votre machine, elle doit avoir une adresse IP statique permanente (et non pas une adresse dynamique, comme avec la plupart des connexions PPP par modem). Si vous êtes derrière un coupe-feu, il doit autoriser le trafic SMTP en votre direction. Si vous voulez recevoir directement le courrier sur votre machine, vous devez être sûrs de l'une de ces deux choses: - enregistrement MX - Assurez-vous que l'enregistrement MX (le nombre le + Assurez-vous que l'enregistrement MXenregistrement MX (le nombre le plus bas) de votre DNS pointe sur l'adresse IP de votre machine. Assurez-vous qu'il n'y a pas d'entrée MX pour votre machine dans votre DNS. Une des deux conditions précédentes vous permettra de recevoir directement le courrier pour votre machine. Essayez: &prompt.root; hostname exemple.FreeBSD.org &prompt.root; host exemple.FreeBSD.org exemple.FreeBSD.org has address 204.216.27.XX Si c'est la réponse que vous obtenez, le courrier adressé à votreindentifiant@exemple.FreeBSD.org arrivera sans problème (en supposant que sendmail fonctionne correctement sur exemple.FreeBSD.org). Si au lieu de cela vous obtenez quelque chose de similaire à ceci: &prompt.root; host exemple.FreeBSD.org exemple.FreeBSD.org has address 204.216.27.XX exemple.FreeBSD.org mail is handled (pri=10) by hub.FreeBSD.org Tout le courrier adressé à votre machine (exemple.FreeBSD.org) arrivera sur hub adressé au même utilisateur au lieu d'être directement envoyé à votre machine. L'information précédente est gérée par votre serveur DNS. L'enregistrement du DNS qui contient l'information de routage de courrier est l'entrée MX (Mail eXchange). S'il n'y pas d'enregistrement MX, le courrier sera directement envoyé à la machine en utilisant son adresse IP. Voici ce que fut à un moment donné l'entrée MX pour freefall.FreeBSD.org: freefall MX 30 mail.crl.net freefall MX 40 agora.rdrop.com freefall MX 10 freefall.FreeBSD.org freefall MX 20 who.cdrom.com Comme vous pouvez le voir, freefall avait plusieurs entrées MX. L'entrée MX dont le numéro est le plus bas est la machine qui reçoit directement le courrier si elle est disponible; si elle n'est pas accessible pour diverses raisons, les autres (parfois appelées “MX de secours”) acceptent temporairement les messages, et les transmettent à une machine de numéro plus faible quand elle devient disponible, et par la suite à la machine de numéro le plus bas. Les sites MX alternatifs devraient avoir une connexion Internet séparée de la votre afin d'être les plus utiles. Votre fournisseur d'accès ou tout autre site amical ne devrait pas avoir de problème pour vous fournir ce service. Courrier pour votre domaine Pour configurer un serveur de courrier vous devez faire en sorte que tout le courrier à destination des diverses stations de travail lui soit envoyé. Concrètement, vous voulez “revendiquer” tout courrier pour n'importe quelle machine de votre domaine (dans ce cas *.FreeBSD.org) et le détourner vers votre serveur de courrier de sorte que vos utilisateurs puissent recevoir leur courrier sur le serveur de courrier principal. DNS Pour rendre les choses plus aisées, un compte utilisateur avec le même nom d'utilisateur devrait exister sur les deux machines. Utilisez &man.adduser.8; pour ce faire. Le serveur de courrier que vous utiliserez sera défini comme “mail exchanger” pour chaque station de travail du réseau. Cela est fait dans votre configuration de DNS de cette manière: exemple.FreeBSD.org A 204.216.27.XX ; Station de travail MX 10 hub.FreeBSD.org ; Serveur de courrier Cela redirigera le courrier pour votre station de travail au serveur de courrier quelque soit la machine sur laquelle pointe l'enregistrement A. Le courrier est envoyé sur la machine MX. Vous ne pouvez le faire vous-même que si vous gérez un serveur de noms. Si ce n'est pas le cas, ou que vous ne pouvez avoir votre propre serveur DNS, parlez-en à votre fournisseur d'accès ou à celui qui fournit votre DNS. Si vous faites de l'hébergement virtuel du courrier électronique, l'information suivante sera utile. Pour cet exemple, nous supposerons que vous avez un client qui possède son propre domaine, dans notre cas client1.org, et vous voulez que tout le courrier pour client1.org arrive sur votre serveur de courrier, mail.mamachine.com. L'entrée dans votre DNS devrait ressembler à ceci: client1.org MX 10 mail.mamachine.com Vous n'avez pas besoin d'un enregistrement A pour client1.org si vous ne voulez gérer que le courrier pour ce domaine. Soyez conscient que “pinger” client1.org ne fonctionnera pas à moins qu'un enregistrement A existe pour cette machine. La dernière chose que vous devez faire est d'indiquer à sendmail sur le serveur de courrier quels sont les domaines et/ou machines pour lesquels il devrait accepter du courrier. Il y a peu de façons différentes de le faire. L'une des deux méthodes suivantes devrait fonctionner: Ajoutez les machines à votre fichier /etc/mail/local-host-names si vous utilisez la fonction FEATURE(use_cw_file). Si vous utilisez une version de sendmail antérieure à la version 8.10, le fichier sera /etc/sendmail.cw. Ajoutez une ligne Cwyour.host.com à votre fichier /etc/sendmail.cf ou /etc/mail/sendmail.cf si vous utilisez sendmail 8.10 ou supérieur. SMTP avec UUCP La configuration de sendmail fournie avec &os; est conçue pour les sites directement connectés à l'Internet. Les sites désirant échanger leur courrier électronique par l'intermédiaire d'UUCP doivent installer un autre fichier de configuration pour sendmail. Modifier manuellement le fichier /etc/mail/sendmail.cf est un sujet réservé aux spécialistes. Dans version 8 de sendmail la génération des fichiers de configuration se fait par l'intermédiaire du processeur &man.m4.1;, où la configuration se fait à un haut niveau d'abstraction. Les fichiers de configuration &man.m4.1; se trouvent dans le répertoire /usr/src/usr.sbin/sendmail/cf. Si vous n'avez pas installé toutes les sources du système, l'ensemble des fichiers de configuration de sendmail a été regroupé dans une archive séparée des autres sources. En supposant que vous avez monté votre CDROM &os; contenant les sources, faites: &prompt.root; cd /cdrom/src &prompt.root; cat scontrib.?? | tar xzf - -C /usr/src/contrib/sendmail Cette extraction ne donne lieu qu'à une centaine de kilo-octets. Le fichier README dans le répertoire cf pourra faire office d'une introduction à la configuration &man.m4.1;. La meilleure façon d'ajouter le support UUCP est d'utiliser la fonctionnalité mailertable. Cela créé une base de données que sendmail utilise pour décider de la manière dont il va router le courrier électronique. Tout d'abord, vous devez créer votre fichier .mc. Le répertoire /usr/src/usr.sbin/sendmail/cf/cf contient quelques exemples. En supposant que vous avez appelé votre fichier foo.mc, tout ce dont vous avez besoin de faire pour le convertir en un fichier sendmail.cf valide est: &prompt.root; cd /usr/src/usr.sbin/sendmail/cf/cf &prompt.root; make foo.cf &prompt.root; cp foo.cf /etc/mail/sendmail.cf Un fichier .mc classique devrait ressembler à ceci: VERSIONID(`Votre numéro de version') OSTYPE(bsd4.4) FEATURE(accept_unresolvable_domains) FEATURE(nocanonify) FEATURE(mailertable, `hash -o /etc/mail/mailertable') define(`UUCP_RELAY', votre.relai.uucp) define(`UUCP_MAX_SIZE', 200000) define(`confDONT_PROBE_INTERFACES') MAILER(local) MAILER(smtp) MAILER(uucp) Cw alias.de.votre.nom.de.machine Cw votrenomdenoeuduucp.UUCP Les lignes contenant les directives accept_unresolvable_domains, nocanonify, et confDONT_PROBE_INTERFACES empêcheront l'utilisation du DNS lors de l'envoi du courrier électronique. La directive UUCP_RELAY est nécessaire pour le support de l'UUCP. Mettez juste un nom de machine Internet capable de gérer des adresses d'un pseudo-domaine .UUCP; la plupart du temps, vous mettrez le nom du serveur de messagerie de votre fournisseur d'accès. Après avoir défini tout ceci, vous avez besoin d'un fichier /etc/mail/mailertable. Si vous n'avez qu'un seul lien avec l'extérieur qui est utilisé pour votre courrier électronique, le fichier suivant devrait suffire: # # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable . uucp-dom:your.uucp.relay Un exemple plus complexe ressemblerait à ceci: # # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable # horus.interface-business.de uucp-dom:horus .interface-business.de uucp-dom:if-bus interface-business.de uucp-dom:if-bus .heep.sax.de smtp8:%1 horus.UUCP uucp-dom:horus if-bus.UUCP uucp-dom:if-bus . uucp-dom: Les trois premières lignes gèrent les cas spécifiques où les courriers électroniques pour l'extérieur ne devraient pas être envoyés au serveur par défaut, mais plutôt à des serveurs UUCP voisins afin de “raccourcir” le chemin à parcourir. La ligne suivante gère le courrier électronique destiné au domaine Ethernet local et qui peut être distribué en utilisant le protocole SMTP. Et enfin, les voisins UUCP sont mentionnés dans la notation de pseudo-domaine UUCP, pour permettre à un courrier du type voisin-uucp !destinataire de passer outre les règles par défaut. La dernière ligne doit toujours être un point, ce qui correspond à tout le reste, avec la distribution UUCP vers un voisin UUCP qui sert de passerelle universelle de courrier électronique vers le reste du monde. Tous les noms de noeuds placés après le mot clé uucp-dom: doivent être des noms valides de voisins UUCP, que vous pouvez vérifier en utilisant la commande uuname. Pour vous rappeler que ce fichier doit être converti en un fichier de base de données DBM avant d'être utilisable. La ligne de commande pour accomplir cette conversion est rappelée dans les commentaires au début du fichier mailertable. Vous devez lancer cette commande à chaque fois que vous modifiez votre fichier mailertable. Pour finir: si vous n'êtes pas certain du bon fonctionnement de certaines configurations de routage du courrier électronique, rappelez-vous de l'option de sendmail. Cela lance sendmail dans le mode test d'adresse; entrez simplement 3,0, suivi de l'adresse que vous désirez tester. La dernière ligne vous indiquera le type d'agent utilisé pour l'envoi, la machine de destination à laquelle l'agent doit envoyer le message, et l'adresse (peut-être traduite) à laquelle il l'enverra. Pour quitter ce mode tapez CtrlD. &prompt.user; sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 3,0 foo@example.com canonify input: foo @ example . com ... parse returns: $# uucp-dom $@ your.uucp.relay $: foo < @ example . com . > > ^D Bill Moran Contribution de Configuration pour l'envoi seul Il existe de nombreux cas où vous désirez être capable d'uniquement envoyer du courrier électronique par l'intermédiaire d'un relais. Quelques exemples: Votre ordinateur est une machine de bureau, mais vous voulez utilisez des programmes comme &man.send-pr.1;. Pour cela vous devez utiliser le relais de courrier électronique de votre FAI. L'ordinateur est un serveur qui ne gère pas le courrier électronique localement, mais a besoin de soumettre tout le courrier à un relais pour qu'il soit transmis. N'importe quel MTA est capable d'assurer cette fonction. Malheureusement, il peut être très compliqué de configurer correctement un MTA complet pour juste gérer le courrier sortant. Des logiciels comme sendmail et postfix sont largement surdimensionnés pour cette utilisation. De plus, si vous utilisez un accès Internet classique, votre contrat peut vous interdire de faire tourner un “serveur de courrier électronique”. La manière la plus simple pour répondre à ce besoin est d'installer le logiciel porté mail/ssmtp. Exécutez les commandes suivantes en tant que root: &prompt.root; cd /usr/ports/mail/ssmtp &prompt.root; make install replace clean Une fois installé, mail/ssmtp peut être configuré avec un fichier de quatre lignes, /usr/local/etc/ssmtp/ssmtp.conf: root=yourrealemail@example.com mailhub=mail.example.com rewriteDomain=example.com hostname=_HOSTNAME_ Assurez-vous d'employer votre adresse électronique réelle pour l'utilisateur root. Utilisez le relais de courrier électronique sortant de votre FAI à la place de mail.example.com (certains FAIs appellent cela le “serveur de courrier sortant” ou le “serveur SMTP”). Assurez-vous également d'avoir désactivé sendmail en fixant sendmail_enable="NONE" dans le fichier /etc/rc.conf. mail/ssmtp dispose d'autres options. Consultez le fichier de configuration d'exemple dans le répertoire /usr/local/etc/ssmtp ou la page de manuel de ssmtp pour quelques exemples et plus d'informations. Configurer ssmtp de cette manière permettra à toute application tournant sur votre ordinateur et ayant besoin d'envoyer un courrier électronique de fonctionner correctement, tout en n'outrepassant pas la politique de votre FAI ou en ne permettant pas l'utilisation de votre ordinateur comme base arrière pour “spammers”. Utiliser le courrier électronique avec une connexion temporaire Si vous disposez d'une adresse IP statique, vous ne devez rien changer du paramétrage par défaut. Définissez votre nom de machine pour qu'il corresponde à celui qui vous a été assigné pour l'Internet et sendmail s'occupera du reste. Si votre adresse IP vous est attribuée dynamiquement et que vous utilisez une connexion PPP par modem pour accèder à l'Internet, vous disposez probablement d'une boite aux lettres chez votre fournisseur d'accès. Supposons que le domaine de votre fournisseur d'accès soit example.net, que votre nom d'utilisateur soit user, que vous avez appelé votre machine bsd.home, et que votre fournisseur vous ait demandé d'utiliser la machine relay.example.net comme serveur relai de messagerie électronique. Pour pouvoir rapatrier votre courrier depuis votre boite aux lettres, vous devez installer un agent de rapatriement. L'utilitaire fetchmail est un bon choix car il supporte la plupart des protocoles de messagerie. Ce programme est disponible sous forme de paquetage ou à partir du catalogue des logiciels portés (mail/fetchmail). La plupart du temps, votre fournisseur d'accès fournit l'accès aux boites aux lettre à l'aide du protocole POP. Si vous utilisez PPP en mode utilisateur, vous pouvez automatiquement récupérer votre courrier quand une connexion Internet est établie avec l'entrée suivante dans le fichier /etc/ppp/ppp.linkup: MYADDR: !bg su user -c fetchmail Si vous utilisez sendmail (comme montré ci-dessous) pour distribuer le courrier aux comptes non-locaux, vous voudrez probablement que sendmail s'occupe de transmettre les messages en attente dès que votre connexion Internet est établie. Pour cela, ajoutez la commande suivante après la commande fetchmail dans le fichier /etc/ppp/ppp.linkup: !bg su user -c "sendmail -q" En supposant que vous avez un compte user sur bsd.home. Dans le répertoire de l'utilisateur user sur bsd.home, créez un fichier .fetchmailrc contenant: poll example.net protocol pop3 fetchall pass MySecret Ce fichier ne devrait être lisible que par l'utilisateur user car il contient le mot de passe MySecret. Afin de pouvoir envoyer du courrier avec l'entête from: correcte, vous devez configurer sendmail pour utiliser l'adresse user@example.net plutôt que user@bsd.home. Vous pouvez également dire à sendmail d'envoyer le courrier via le serveur relay.example.net, permettant une transmission du courrier plus rapide. Le fichier .mc suivant devrait suffire: VERSIONID(`bsd.home.mc version 1.0') OSTYPE(bsd4.4)dnl FEATURE(nouucp)dnl MAILER(local)dnl MAILER(smtp)dnl Cwlocalhost Cwbsd.home MASQUERADE_AS(`example.net')dnl FEATURE(allmasquerade)dnl FEATURE(masquerade_envelope)dnl FEATURE(nocanonify)dnl FEATURE(nodns)dnl define(`SMART_HOST', `relay.example.net') Dmbsd.home define(`confDOMAIN_NAME',`bsd.home')dnl define(`confDELIVERY_MODE',`deferred')dnl Référez-vous à la section précédente pour des détails sur la conversion de ce fichier .mc en un fichier sendmail.cf. N'oubliez pas également de redémarrer sendmail après la mise à jour du fichier sendmail.cf. James Gorham Ecrit par Authentification SMTP Disposer de l'authentification SMTP sur votre serveur de courrier présente un certain nombre d'avantages. L'authentification SMTP peut ajouter une autre couche de sécurité à sendmail, et a l'avantage de donner aux utilisateurs mobiles la possibilité d'utiliser le même serveur de courrier sans avoir besoin de reconfigurer les paramètres de leur client courrier à chaque déplacement. Installez security/cyrus-sasl à partir du catalogue des logiciels portés. Vous pouvez trouver ce logiciel porté dans security/cyrus-sasl. security/cyrus-sasl dispose de nombreuses options de compilation possibles, pour la méthode que nous allons utiliser ici, assurez-vous de sélectionner l'option . Après avoir installé security/cyrus-sasl, éditez /usr/local/lib/sasl/Sendmail.conf (ou créez-le s'il n'existe pas) et ajoutez la ligne suivante: pwcheck_method: passwd Cette méthode activera au niveau de sendmail l'authentification par l'intermédiaire de votre base de données FreeBSD passwd. Cela nous épargne le problème de la création d'un nouvel ensemble de nom d'utilisateur et de mot de passe pour chaque utilisateur ayant besoin de recourir à l'authentification SMTP, et conserve le même nom d'utilisateur et mot de passe pour le courrier. Maintenant éditez /etc/make.conf et ajoutez les lignes suivantes: SENDMAIL_CFLAGS=-I/usr/local/include/sasl1 -DSASL SENDMAIL_LDFLAGS=-L/usr/local/lib SENDMAIL_LDADD=-lsasl Ces lignes passeront à sendmail les bonnes options de configuration au moment de la compilation pour lier cyrus-sasl. Assurez-vous que cyrus-sasl a été installé avant de recompiler sendmail. Recompilez sendmail en lançant les commandes suivantes: &prompt.root; cd /usr/src/usr.sbin/sendmail &prompt.root; make cleandir &prompt.root; make obj &prompt.root; make &prompt.root; make install La compilation de sendmail ne devrait pas présenter de problèmes si le répertoire /usr/src n'a pas subi d'énormes changements et si les bibliothèques partagés nécessaires sont disponibles. Une fois que sendmail a été compilé et réinstallé, éditez votre fichier /etc/mail/freebsd.mc (ou tout autre fichier que vous utilisez comme fichier .mc. De nombreux administrateurs utilisent la sortie de &man.hostname.1; comme nom de fichier .mc par unicité). Ajoutez-y les lignes qui suivents: dnl set SASL options TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl define(`confDEF_AUTH_INFO', `/etc/mail/auth-info')dnl Ces options configurent les différentes méthodes disponibles pour sendmail pour l'authentification des utilisateurs. Si vous désirez utiliser une méthode autre que pwcheck, veuillez consulter la documentation fournie. Enfin, exécutez &man.make.1; quand vous êtes dans /etc/mail. Cela prendra votre nouveau fichier .mc et créera un fichier .cf appelé freebsd.cf (ou selon tout autre nom que vous avez utilisé pour votre fichier .mc). Ensuite utilisez la commande make install restart, qui copiera le fichier en sendmail.cf, et redémarrera proprement sendmail. Pour plus d'informations sur ce processus, vous devriez vous réferrer au fichier /etc/mail/Makefile. Si tout s'est bien passé, vous devriez être en mesure d'entrer votre identifiant dans votre programme de courrier et d'envoyer un message de test. Pour plus d'investigation, fixez le de sendmail à 13 et scrutez /var/log/maillog à la recherche d'une erreur. Vous pourrez rajouter les lignes suivantes au fichier /etc/rc.conf afin de rendre ce service disponible après chaque démarrage du système: sasl_pwcheck_enable="YES" sasl_pwcheck_program="/usr/local/sbin/pwcheck" Cela assurera l'initialisation de SMTP_AUTH, l'authentification SMTP, au démarrage du système. Pour plus d'informations, veuillez consulter la page de la documentation de sendmail concernant l'authentification SMTP. Marc Silver Contribution de Clients de messagerie Client de messagerie Un client de messagerie (“Mail User Agent”—MUA) est une application qui est utilisée pour envoyer et recevoir du courrier électronique. En outre, au fur et à mesure que le système du courrier électronique “évolue” et devient plus complexe, les MUA deviennent de plus en plus puissants, offrant aux utilisateurs plus de fonctionnalités et de flexibilité. &os; offre le support pour de nombreux clients de messagerie, ils peuvent tous être aisément installés à partir du catalogue des logiciels portés de &os;. Les utilisateurs pourront choisir entre des clients de messagerie graphiques comme evolution ou balsa, des clients en mode console tels que mutt, pine ou mail, ou encore les interfaces Web utilisées par certaines organisations importantes. mail &man.mail.1; est le client de messagerie (“Mail User Agent”—MUA) par défaut de &os;. C'est un MUA en mode console qui offre toutes les fonctionnalités de base nécessaires pour envoyer et lire son courrier électronique en mode texte, cependant il est limité en ce qui concerne les possibilités de pièces jointes et ne supporte que les boîtes aux lettres locales. Bien que mail ne supporte pas l'intéraction avec les serveurs POP ou IMAP, ces boîtes aux lettres peuvent être téléchargées vers un fichier mbox local en utilisant une application telle que fetchmail, qui sera abordée plus tard dans ce chapitre (). Afin d'envoyer et de recevoir du courrier électronique, invoquez simplement la commande mail comme le montre l'exemple suivant: &prompt.user; mail Le contenu de la boîte aux lettres de l'utilisateur dans /var/mail est automatiquement lu par l'utilitaire mail. Si la boîte est vide, l'utilitaire rend la main avec un message indiquant qu'aucun courrier électronique ne peut être trouvé. Une fois que la boîte aux lettres a été lue, l'interface de l'application est lancée, et une liste de messages sera affichée. Les messages sont automatiquement numérotés, comme on peut le voir dans l'exemple suivant: Mail version 8.1 6/6/93. Type ? for help. "/var/mail/marcs": 3 messages 3 new >N 1 root@localhost Mon Mar 8 14:05 14/510 "test" N 2 root@localhost Mon Mar 8 14:05 14/509 "user account" N 3 root@localhost Mon Mar 8 14:05 14/509 "sample" Les messages peuvent désormais être lus en utilisant la commande t de mail, suivie du numéro du message qui devra être affiché. Dans cet exemple, nous lirons le premier courrier électronique: &prompt.user; t 1 Message 1: From root@localhost Mon Mar 8 14:05:52 2004 X-Original-To: marcs@localhost Delivered-To: marcs@localhost To: marcs@localhost Subject: test Date: Mon, 8 Mar 2004 14:05:52 +0200 (SAST) From: root@localhost (Charlie Root) This is a test message, please reply if you receive it. Comme nous pouvons le constater dans l'exemple ci-dessus, l'appuie sur la touche t fera afficher le message avec les entêtes complètes. Pour afficher à nouveau la liste des messages, la touche h doit être utilisée. Si le message nécessite une réponse, vous pouvez utiliser mail pour cela, en entrant soit la touche R, soit la touche r. La touche R demande à mail de ne répondre qu'à l'expéditeur du message, alors que r répond à l'expéditeur mais également aux autres destinataires du message. Vous pouvez ajouter à la suite de ces commandes le numéro du courrier auquel vous désirez répondre. Une fois cela effectué, la réponse doit être tapée, et la fin du message doit être indiquée par un . sur une nouvelle ligne. Ci-dessous est présenté un exemple: &prompt.user; R 1 To: root@localhost Subject: Re: test Thank you, I did get your email. . EOT Afin d'envoyer un nouveau courrier électronique, la touche m doit être utilisée, suivie de l'adresse électronique du destinataire. Plusieurs destinataires peuvent également être spécifiés en séparant chaque adresse par une ,. Le sujet du message peut alors être entré, suivi du corps du message. La fin d'un message doit être indiquée en mettant un . seul sur une nouvelle ligne. &prompt.user; mail root@localhost Subject: I mastered mail Now I can send and receive email using mail ... :) . EOT Bien qu'à partir de l'utilitaire mail, la commande ? puisse être utilisée à tout instant pour afficher l'aide, la page de manuel &man.mail.1; devrait être consultée pour plus d'aide sur mail. Comme indiqué précédemment, la commande &man.mail.1; à l'origine n'a pas été conçue pour gérer les pièces jointes, et par conséquent ne s'en sort pas très bien à ce niveau. Les MUAs plus récents comme mutt gérent les pièces jointes de manière plus intelligente. Mais si vous souhaitez toujours utiliser mail, le logiciel porté converters/mpack vous sera d'une grande aide. mutt mutt est un client de messagerie léger mais très puissant, avec de nombreuses fonctionnalités, parmi lesquelles: la possibilité de gérer les fils (“threads”) de discussions; le support PGP pour la signature électronique et le chiffrage de courriers électroniques; le support MIME; le support du format maildir; application hautement configurable et personnalisable. Toutes ces caractéristiques font de mutt un des clients de messagerie les plus avancés. Consultez pour plus d'informations sur mutt. La version stable de mutt peut être installée en utilisant le logiciel porté mail/mutt, tandis que la version actuellement en développement peut être installée par l'intermédiaire du logiciel porté mail/mutt-devel. Une fois installé, mutt peut être lancé en tapant la commande suivante: &prompt.user; mutt mutt lira automatiquement le contenu de la boîte aux lettres de l'utilisateur dans /var/mail et en affiche le contenu le cas échéant. Si aucun message n'est trouvé dans cette boîte, alors mutt attendra une commande de l'utilisateur. L'exemple ci-dessous montre mutt affichant une liste de messages: Afin de lire un message, sélectionnez-le en utilisant les touches fléchées, et appuyez sur Entrée. Un exemple montrant mutt affichant le contenu d'un message est donné ci-dessous: Comme avec la commande &man.mail.1;, mutt permet aux utilisateurs de répondre uniquement à l'expéditeur du message comme également à l'ensemble de ses destinataires. Pour répondre uniquement à l'expéditeur du courrier électronique, utilisez le raccourci clavier r. Pour faire une réponse groupée, qui sera envoyée à l'expéditeur comme à tous les destinataires du message, utilisez la touche g. mutt emploie &man.vi.1; comme éditeur pour la création et la réponse aux courriers électronique. Cela peut être modifié par l'utilisateur en créant son propre fichier .muttrc dans leur répertoire personnel et en positionnant la variable editor. Pour rédiger un nouveau message, appuyez sur la touche m. Après avoir donné un sujet valide, mutt lancera &man.vi.1; et l'intégralité du message pourra être écrite. Une fois le courrier électronique rédigé, sauvegardez et quittez vi et mutt réapparaîtra affichant un écran résumant le courrier devant être envoyé. Pour envoyer le message, appuyez sur y. Un exemple de résumé peut être vu ci-dessous: mutt propose également une aide complète, qui peut être consultée à partir de la plupart des menus en appuyant sur la touche ?. La ligne située en haut de l'écran affiche également les raccourcis clavier appropriés. pine pine est destiné aux débutants, mais il dispose également de fonctions avancées. Plusieurs vulnérabilités exploitables à distance ont été découvertes dans le logiciel pine par le passé, autorisant à un agresseur distant d'exécuter un programme arbitraire en tant qu'utilisateur local du système, en envoyant un courrier électronique particulier. Tous les problèmes connus ont été corrigés, mais le code source de pine est écrit d'une manière assez peu sécurisée et l'officier de sécurité de &os; pense qu'il existe d'autres failles qui ne sont pas encore découvertes. Vous installez donc pine à vos propres risques. La version actuelle de pine peut être installée en utilisant le logiciel porté mail/pine4. Une fois installé, pine peut être lancé en tapant la commande suivante: &prompt.user; pine Lors du premier lancement de pine, ce dernier affiche une page de présentation avec une brève introduction, ainsi qu'un message de la part de l'équipe de développement de pine demandant l'envoi d'un courrier électronique anonyme pour leur permettre d'évaluer le nombre d'utilisateurs de leur client de messagerie. Pour envoyer ce courrier anonyme, appuyez sur Entrée, ou sinon appuyez sur E pour quitter la présentation sans envoyer de message anonyme. Un exemple de page de présentation peut être vu ci-dessous: Le menu principal est ensuite affiché, menu dans lequel il est aisé de naviguer avec les touches fléchées. Ce menu principal fournit les raccourcis pour la rédaction de nouveaux messages, la navigation dans les répertoires de messages, et même la gestion des entrées du carnet d'adresses. Sous le menu principal, les raccourcis clavier correspondants pour effectuer les différentes tâches sont donnés. Le répertoire ouvert par défaut par pine est inbox. Pour afficher l'index des messages, appuyez sur I, ou sélectionnez l'option MESSAGE INDEX comme montré ci-dessous: L'index des messages montre les messages dans le répertoire courant, on peut se déplacer dans l'index en utilisant les touches fléchées. Les messages en surbrillance peuvent être lus en appuyant sur la touche Enter. Dans la capture d'écran ci-dessous, un message d'exemple est affiché par pine. Les raccourcis clavier sont affichés au bas de l'écran. Un exemple de raccourci est la touche r, qui demande au programme de répondre au message actuellement à l'écran. La rédaction d'une réponse à un courrier électronique avec pine se fait en utilisant l'éditeur pico, qui est installé par défaut avec pine. L'utilitaire pico rend aisé les déplacements dans le message et est plus indulgent avec les novices que &man.vi.1; ou &man.mail.1;. Une fois la réponse rédigée, le message peut être envoyé en appuyant sur CtrlX. pine vous demandera de confirmer votre action. Le programme pine peut être personnalisé en utilisant l'option SETUP du menu principal. Consultez pour plus d'information. Marc Silver Contribution de Utiliser fetchmail Utiliser fetchmail fetchmail est un client IMAP et POP complet qui offre aux utilisateurs le téléchargement automatiquement de leur courrier électronique à partir de serveurs IMAP et POP distants et sa sauvegarde dans des boîtes aux lettres locales; ainsi, le courrier électronique pourra être consulté plus facilement. fetchmail peut être installé en utilisant le logiciel porté mail/fetchmail, et offre diverses fonctionnalités, dont: le support des protocoles POP3, APOP, KPOP, IMAP, ETRN et ODMR; la capacité de faire suivre le courrier électronique en utilisant SMTP, ce qui autorise le filtrage, le transfert, et la gestion des alias de fonctionner correctement; la possibilité de fonctionner en mode “daemon” pour contrôler périodiquement si il y a de nouveaux messages; la possibilité de récupérer le courrier de plusieurs boîtes aux lettres et de le transférer en fonction d'une configuration bien précise aux différents utilisateurs locaux. Bien qu'expliquer l'intégralité des fonctions de fetchmail dépasse le cadre de ce document, certaines fonctions de base seront abordées. L'utilitaire fetchmail nécessite un fichier de configuration nommé .fetchmailrc, afin de fonctionner correctement. Ce fichier comprend les informations concernant les serveurs ainsi que les accréditations d'accès. En raison du caractère sensible du contenu de ce fichier, il est recommandé de ne le rendre lisible que par l'utilisateur, avec la commande suivante: &prompt.user; chmod 600 .fetchmailrc Le fichier .fetchmailrc suivant sert d'exemple pour récupérer le courrier électronique pour un seul utilisateur à partir d'une boîte aux lettres utilisant le protocole POP. Il demande à fetchmail de se connecter à example.com en utilisant le nom d'utilisateur joesoap et le mot de passe XXX. Dans cet exemple on suppose que l'utilisateur joesoap est également un utilisateur sur le système local. poll example.com protocol pop3 username "joesoap" password "XXX" L'exemple suivant présente la connexion à plusieurs serveurs POP et IMAP et la redirection vers différents utilisateurs locaux quand c'est nécessaire: poll example.com proto pop3: user "joesoap", with password "XXX", is "jsoap" here; user "andrea", with password "XXXX"; poll example2.net proto imap: user "john", with password "XXXXX", is "myth" here; L'utilitaire fetchmail peut être exécuté en mode “daemon” en le lançant avec le paramètre , suivi par l'intervalle de temps (en secondes) que fetchmail doit respecter entre chaque consultation des serveurs listés dans le fichier .fetchmailrc. L'exemple suivant demandera à fetchmail de récupérer le courrier toutes les 60 secondes: &prompt.user; fetchmail -d 60 Plus d'informations concernant fetchmail peuvent être trouvées sur . Marc Silver Contribution de Utiliser procmail Utiliser procmail L'utilitaire procmail est une application extrêmement puissante utilisée pour filtrer le courrier électronique entrant. Il permet aux utilisateurs de définir des “règles” qui seront utilisées sur le courrier entrant pour effectuer des opérations particulières ou pour transférer le courrier vers d'autres boîtes aux lettres et/ou adresses électroniques. procmail peut être installé en utilisant le logiciel porté mail/procmail. Une fois installé, il peut être intégré dans la plupart des MTAs, consultez la documentation de votre MTA pour plus d'information. Alternativement, procmail peut être intégré en ajoutant la ligne suivante à un fichier .forward dans le répertoire personnel de l'utilisateur employant les fonctionnalités de procmail: "|exec /usr/local/bin/procmail || exit 75" La suite de cette section présentera quelques règles de base pour procmail, avec une brève description de ce qu'elles font. Ces règles, ainsi que d'autres, doivent être ajoutées dans le fichier .procmailrc, qui doit résider dans le répertoire personnel de l'utilisateur. La majorité de ces règles peut également être trouvée dans la page de manuel de &man.procmailex.5;. Transférer tout courrier en provenance de user@example.com vers l'adresse externe goodmail@example2.com: :0 * ^From.*user@example.com ! goodmail@example2.com Transférer tous les courriers d'une taille inférieure à 1000 octets vers l'adresse externe goodmail@example2.com: :0 * < 1000 ! goodmail@example2.com Mettre tout le courrier à destination de alternate@example.com dans une boîte aux lettres appelée alternate: :0 * ^TOalternate@example.com alternate Envoyer tous les courriers avec pour sujet “Spam” vers /dev/null: :0 ^Subject:.*Spam /dev/null Une recette utile pour trier les courriers en provenance des listes de diffusion &os;.org et placer chaque liste dans sa propre boîte aux lettres: :0 * ^Sender:.owner-freebsd-\/[^@]+@FreeBSD.ORG { LISTNAME=${MATCH} :0 * LISTNAME??^\/[^@]+ FreeBSD-${MATCH} }