diff options
author | Johann Kois <jkois@FreeBSD.org> | 2005-09-16 19:53:13 +0000 |
---|---|---|
committer | Johann Kois <jkois@FreeBSD.org> | 2005-09-16 19:53:13 +0000 |
commit | 5abe97444402b637d482daf0a416a30c1c87e8fa (patch) | |
tree | 51b4f11de3651f0b70523492c88573d93ec058dc /de_DE.ISO8859-1 | |
parent | 2a7d6d0549f7857b436edd71e2f02b26f14b861d (diff) | |
download | doc-5abe97444402b637d482daf0a416a30c1c87e8fa.tar.gz doc-5abe97444402b637d482daf0a416a30c1c87e8fa.zip |
MFbed: Update the German documentation set.
books/fdp-primer/sgml-markup/chapter.sgml 1.69 -> 1.73
books/fdp-primer/sgml-primer/chapter.sgml 1.42 -> 1.44
books/fdp-primer/translations/chapter.sgml 1.26 -> 1.29
books/fdp-primer/writing-style/chapter.sgml 1.47 -> 1.48
books/handbook/basics/chapter.sgml 1.138 -> 1.139
books/handbook/boot/chapter.sgml 1.59 -> 1.60
books/handbook/cutting-edge/chapter.sgml 1.217 -> 1.219 + fixes [X]
books/handbook/mail/chapter.sgml 1.129 -> 1.131
books/handbook/mirrors/chapter.sgml 1.386 -> 1.387
books/handbook/multimedia/chapter.sgml fixes only
books/handbook/pgpkeys/chapter.sgml 1.270 -> 1.272
books/handbook/preface/preface.sgml 1.29 -> 1.30
books/handbook/printing/chapter.sgml 1.93 -> 1.94 + translation finished
books/handbook/security/chapter.sgml fixes only
books/handbook/x11/chapter.sgml 1.166 -> 1.167
[X] - submitted by Fabian Keil (freebsd-listen at fabiankeil.de)
Obtained from: The FreeBSD German Documentation Project.
Notes
Notes:
svn path=/head/; revision=25665
Diffstat (limited to 'de_DE.ISO8859-1')
15 files changed, 3746 insertions, 294 deletions
diff --git a/de_DE.ISO8859-1/books/fdp-primer/sgml-markup/chapter.sgml b/de_DE.ISO8859-1/books/fdp-primer/sgml-markup/chapter.sgml index a136fe7115..1522c1c7a3 100644 --- a/de_DE.ISO8859-1/books/fdp-primer/sgml-markup/chapter.sgml +++ b/de_DE.ISO8859-1/books/fdp-primer/sgml-markup/chapter.sgml @@ -28,9 +28,9 @@ POSSIBILITY OF SUCH DAMAGE. $FreeBSD$ - $FreeBSDde: de-docproj/books/fdp-primer/sgml-markup/chapter.sgml,v 1.16 2005/08/15 15:39:19 jkois Exp $ + $FreeBSDde: de-docproj/books/fdp-primer/sgml-markup/chapter.sgml,v 1.19 2005/09/12 18:43:12 jkois Exp $ - basiert auf: 1.69 + basiert auf: 1.73 --> <chapter id="sgml-markup"> @@ -348,8 +348,7 @@ <dt>Dritter Begriff</dt> - <dd>Erster Absatz der Erklärung zum dritten Begriff. - Beachtenswert ist, daß <p> nicht notwendig ist.</dd> + <dd>Erster Absatz der Erklärung zum dritten Begriff.</dd> </dl>]]></programlisting> </example> </sect3> @@ -385,11 +384,23 @@ Es ist eine neue Version der Fibel für neue Mitarbeiter am FreeBSD-Dokumentationsprojekt verfügbar: - URL:http://people.FreeBSD.org/~nik/primer/index.html + <URL:http://people.FreeBSD.org/~nik/primer/index.html> Kommentare und Anmerkungen sind willkommen. N</pre>]]></programlisting> + + <para>Beachten Sie, dass <literal><</literal> und + <literal>&</literal> nach wie vor als Sonderzeichen + erkannt werden. Daher wird in diesem Beispiel auch + <literal>&lt;</literal> an Stelle von + <literal><</literal> verwendet. Aus dem gleichen + Grund wurde auch <literal>&gt;</literal> an Stelle + von <literal>></literal> verwendet. Achten Sie also + stets auf Sonderzeichen, wenn Sie normalen Text + aus E-Mails, Programmcode oder einer anderen Quelle + kopieren.</para> + </example> </sect3> @@ -689,7 +700,7 @@ während <i>dieses</i> kursiv dargestellt wird.</p>]]></programlisting> Tags <sgmltag>a</sgmltag> gesetzt werden, nur das anstelle von <sgmltag role="attribute">href</sgmltag> das Attribut <sgmltag role="attribute">name</sgmltag> gesetzt werden - muß.</para> + muss.</para> <example> <title>Anwendung von <literal><a name="..."></literal></title> @@ -699,7 +710,7 @@ während <i>dieses</i> kursiv dargestellt wird.</p>]]></programlisting> </example> <para>Um auf einen so gekennzeichneten Abschnitt zu verweisen, - muß die URL des Dokumentes um das Zeichen + muss die URL des Dokumentes um das Zeichen <literal>#</literal> und den Namen des Zielankers erweitert werden.</para> @@ -875,13 +886,13 @@ während <i>dieses</i> kursiv dargestellt wird.</p>]]></programlisting> <firstname><replaceable>Vorname</replaceable></firstname> <surname><replaceable>Nachname</replaceable></surname> <affiliation> - <address><email><replaceable>Emailadresse</replaceable></email></address> + <address><email><replaceable>E-Mail-Adresse</replaceable></email></address> </affiliation> </author> <copyright> <year><replaceable>1998</replaceable></year> - <holder role="mailto:<replaceable>Emailadresse</replaceable>"><replaceable>Vollständiger Name</replaceable></holder> + <holder role="mailto:<replaceable>E-Mail-Adresse</replaceable>"><replaceable>Vollständiger Name</replaceable></holder> </copyright> <releaseinfo>$FreeBSD$</releaseinfo> @@ -924,13 +935,13 @@ während <i>dieses</i> kursiv dargestellt wird.</p>]]></programlisting> <firstname><replaceable>Vorname</replaceable></firstname> <surname><replaceable>Nachname</replaceable></surname> <affiliation> - <address><email><replaceable>Emailadresse</replaceable></email></address> + <address><email><replaceable>E-Mail-Adresse</replaceable></email></address> </affiliation> </author> <copyright> <year><replaceable>1998</replaceable></year> - <holder role="mailto:<replaceable>Emailadresse</replaceable>"><replaceable>Vollständiger Name</replaceable></holder> + <holder role="mailto:<replaceable>E-Mail-Adresse</replaceable>"><replaceable>Vollständiger Name</replaceable></holder> </copyright> <releaseinfo>$FreeBSD$</releaseinfo> @@ -1274,7 +1285,7 @@ während <i>dieses</i> kursiv dargestellt wird.</p>]]></programlisting> <sgmltag>ol</sgmltag>. Beide Listenarten müssen mindestens ein Element <sgmltag>listitem</sgmltag> enthalten. Das <sgmltag>listitem</sgmltag> Element - muß mindestens ein weiteres Blockelement + muss mindestens ein weiteres Blockelement enthalten.</para> <para><sgmltag>procedure</sgmltag> unterscheidet sich ein @@ -1377,7 +1388,7 @@ während <i>dieses</i> kursiv dargestellt wird.</p>]]></programlisting> Aus diesem Grund ist es unter anderem wichtig, daß sich der öffende Tag in der selben Zeile wie der Anfang des darzustellenden Textes befindet. Gleiches gilt für - den schließenden Tag: Er muß sich am Ende der + den schließenden Tag: Er muss sich am Ende der letzten Zeile befinden. Wird das nicht beachtet, kann es sein, daß unerwartete Leerzeichen und Leerzeilen in der Ausgabe auftauchen.</para> @@ -1430,7 +1441,7 @@ main(void) <sgmltag>literallayout</sgmltag>, …) mit <sgmltag>co</sgmltag>-Elementen markiert werden, wobei jedes Element ein eindeutiges <literal>id</literal>-Attribut - besitzen muß. Anschließend sollte ein + besitzen muss. Anschließend sollte ein <sgmltag>calloutlist</sgmltag>-Element eingefügt werden, dessen Elemente sich auf die <sgmltag>co</sgmltag>-Elemente des Beispiels beziehen und die jeweiligen Anmerkungen @@ -1827,7 +1838,7 @@ This is the file called 'foo2'</screen> umgeschaltet werden.</para> <para>Um <command>vi</command> zu beenden, ohne die Änderungen zu - speichern, muß <keycombo action="seq"><keycap>Esc</keycap> + speichern, muss <keycombo action="seq"><keycap>Esc</keycap> <keycap>:</keycap><keycap>q</keycap><keycap>!</keycap> </keycombo> eingegeben werden.</para> @@ -1844,7 +1855,7 @@ This is the file called 'foo2'</screen> virtuelle Konsole umgeschaltet werden.</para> <para>Um <command>vi</command> zu beenden, ohne die - Änderungen zu speichern, muß <keycombo + Änderungen zu speichern, muss <keycombo action="seq"><keycap>Esc</keycap> <keycap>:</keycap><keycap>q</keycap><keycap>!</keycap> </keycombo> eingegeben werden.</para> @@ -1886,7 +1897,7 @@ This is the file called 'foo2'</screen> <para>Befehle können zusammen mit der betreffenden Hilfeseite über das DocBook-Element <sgmltag>citerefentry</sgmltag> ausgezeichnet werden. - <sgmltag>citerefentry</sgmltag> muß zwei weitere + <sgmltag>citerefentry</sgmltag> muss zwei weitere Elemente enthalten: <sgmltag>refentrytitle</sgmltag>, für den Befehlsnamen, und <sgmltag>manvolnum</sgmltag>, für die Kategorie der Hilfeseite.</para> @@ -2586,7 +2597,7 @@ This is the file called 'foo2'</screen> <itemizedlist> <listitem> <para>Wenn ein Dokument als HTML-Datei durch einem Browser - angezeigt wird. In diesem Falle muß jeder Grafik + angezeigt wird. In diesem Falle muss jeder Grafik ein Alternativtext zugeordnet werden, der dem Leser angezeigt werden kann. Meist ist das notwendig, wenn der Browser die Grafik noch nicht geladen hat oder wenn der @@ -2720,7 +2731,7 @@ IMAGES+= bild3.png <para>Soll beispielsweise die Datei <filename>kapitel1/bild1.png</filename> in das in <filename>kapitel1/kapitel.sgml</filename> enthaltene - Kapitel eingebunden werden, sollte die so erfolgen:</para> + Kapitel eingebunden werden, sollte dies so erfolgen:</para> <programlisting><mediaobject> <imageobject> @@ -2732,12 +2743,12 @@ IMAGES+= bild3.png <calloutlist> <callout arearefs="co-image-dir"> - <para><literal>fileref</literal> muß den + <para><literal>fileref</literal> muss den Datei- und den Verzeichnisnamen enthalten.</para> </callout> </calloutlist> - <para>Das <filename>Makefile</filename> muß dementsprechend + <para>Das <filename>Makefile</filename> muss dementsprechend die Zeile <programlisting>… @@ -2762,7 +2773,7 @@ IMAGES= kapitel1/bild1.png <title>Querverweise innerhalb eines Dokumentes</title> - <para>Um innerhalb eines Dokumentes Verweise anzulegen, muß + <para>Um innerhalb eines Dokumentes Verweise anzulegen, muss angegeben werden, von welcher Textstelle aus wohin verwiesen werden soll.</para> @@ -2952,7 +2963,7 @@ IMAGES= kapitel1/bild1.png wesentlich einfacher – solange die URL des zu referenzierenden Dokumentes bekannt ist. Um von einem bestimmten Textabschnitt auf das gewünschte externe - Dokument zu verweisen, muß die jeweilige Stelle mit + Dokument zu verweisen, muss die jeweilige Stelle mit dem Element <sgmltag>ulink</sgmltag> ausgezeichnet werden. Mittels des Attributes <literal>url</literal> kann die Adresse des Zieldokumentes angegeben werden. Bei der diff --git a/de_DE.ISO8859-1/books/fdp-primer/sgml-primer/chapter.sgml b/de_DE.ISO8859-1/books/fdp-primer/sgml-primer/chapter.sgml index 666b7069a2..1875a78fe0 100644 --- a/de_DE.ISO8859-1/books/fdp-primer/sgml-primer/chapter.sgml +++ b/de_DE.ISO8859-1/books/fdp-primer/sgml-primer/chapter.sgml @@ -28,8 +28,8 @@ POSSIBILITY OF SUCH DAMAGE. $FreeBSD$ - $FreeBSDde: de-docproj/books/fdp-primer/sgml-primer/chapter.sgml,v 1.15 2005/01/16 14:35:40 mheinen Exp $ - basiert auf: 1.42 + $FreeBSDde: de-docproj/books/fdp-primer/sgml-primer/chapter.sgml,v 1.17 2005/09/12 18:08:33 jkois Exp $ + basiert auf: 1.44 --> <!--? @@ -173,7 +173,7 @@ Oliver Fischer und Verschachtelung sowie weitere Informationen festgelegt.</para> - <!-- Der letzte Satz dieses Absatzes muß noch übersetzt werden. + <!-- Der letzte Satz dieses Absatzes muss noch übersetzt werden. Ich habe keine gute Übersetzung dafür bis jetzt gefunden. Oliver Fischer --> @@ -244,12 +244,12 @@ Oliver Fischer sprechen. Oliver Fischer --> <!--? - Hier muß die endlose Rekursion noch besser zum Ausdruck kommen. + Hier muss die endlose Rekursion noch besser zum Ausdruck kommen. --> <para>Von einem Dokument, unabhängig, ob es sich um eine einzelne Webseite oder ein langes Buch handelt, wird angenommen, dass es einen wie auch immer gearteten Inhalt hat. Dieser - läßt sich selbst wiederum in Teilelemente + lässt sich selbst wiederum in Teilelemente aufspalten, die ebenso zerlegbar sind. Durch die Aufnahme von Auszeichnungselementen in einen Text, werden diese einzelnen Elemente eindeutig benannt und voneinander abgegrenzt.</para> @@ -484,7 +484,7 @@ Oliver Fischer Variable <envar>SGML_CATALOG_FILES</envar> <footnote><simpara>Sofern man nicht an der deutschen Dokumentation arbeitet, müssen die - Verzeichnisangaben entsprechend anpaßt + Verzeichnisangaben entsprechend angepasst werden.</simpara> </footnote> gesetzt werden.</para> @@ -837,7 +837,7 @@ nsgmls:beispiel.sgml:6:8:E: end tag for "HEAD" which is not finished</screen> <!--? Vielleicht besser: Wie Namen registeriert werden? Oliver Fischer --> <!--? Mit der Übersetzung des letzten Satzes bin ich mir - nicht sicher.... Das muß irgendwie besser ausgedrückt + nicht sicher.... Das muss irgendwie besser ausgedrückt werden.... --> <para>Im ISO-Standard ISO 9070:1991 wurde festgelegt, wie @@ -1091,7 +1091,7 @@ nsgmls:beispiel.sgml:6:8:E: end tag for "HEAD" which is not finished</screen> und <emphasis>nicht</emphasis> nur einer benutzt werden. Die PostScript- und PDF-Versionen haben vielleicht beide Bindestriche zu einem längeren Strich, dem - <emphasis>em-dash</emphasis>, zusammengefaßt.</para> + <emphasis>em-dash</emphasis>, zusammengefasst.</para> <para>Die HTML-, nur-Text und RTF-Versionen dieses Dokuments sind nicht von diesem Problem betroffen.</para> @@ -1224,23 +1224,24 @@ nsgmls:beispiel.sgml:6:8:E: end tag for "HEAD" which is not finished</screen> Programms ist ¤t.version;.</para>]]></programlisting> <para>Wenn sich die Versionsnummer ändert, muss - nur die Entität angepaßt und anschließend + nur die Entität angepasst und anschließend das Dokument neu erzeugt werden.</para> <para>Eine weitere Einsatzmöglichkeit für Allgemeine Entitäten ist das Einbinden von Zeichen, die auf andere Weise nicht in ein SGML-Dokument eingefügt werden könnten. Ein Beispiel für solche Zeichen sind - < und &, die normalerweise nicht direkt in + <literal><</literal> und <literal>&</literal>, die + normalerweise nicht direkt in SGML-Dokumenten erlaubt sind. Stößt ein SGML-Parser - bei seiner Arbeit auf das Symbol <, nimmt er an, dass - der Anfang eines Start- oder Endtags gefunden wurde. Bei einem - & wird er annehmen, den Anfang einer Entität gefunden - zu haben.</para> + bei seiner Arbeit auf das Symbol <literal><</literal>, + nimmt er an, dass der Anfang eines Start- oder Endtags + gefunden wurde. Bei einem <literal>&</literal> wird er + annehmen, den Anfang einer Entität gefunden zu haben.</para> <para>Wenn eines der beiden Zeichen benötigt wird, werden - die allgemeinen Entitäten &lt; und &amp; - verwendet.</para> + daher die allgemeinen Entitäten <literal>&lt;</literal> + und <literal>&amp;</literal> verwendet.</para> <para>Allgemeine Entitäten können nur in einem SGML-Kontext definiert werden. Üblich ist es, dies direkt @@ -1726,7 +1727,8 @@ nsgmls:beispiel.sgml:6:8:E: end tag for "HEAD" which is not finished</screen> Parser auf dieses Inhaltsmodell, wird er annehmen, dass sich im zugehörigen Dokumentenbereich nur <quote>gewöhnliche</quote> Zeichen befinden. Das - bedeutet, dass < und & ihre besondere Bedeutung + bedeutet, dass <literal><</literal> und + <literal>&</literal> ihre besondere Bedeutung verlieren und als einfache Zeichen behandelt werden.</para> <para><literal>RCDATA</literal> steht für @@ -1736,19 +1738,24 @@ nsgmls:beispiel.sgml:6:8:E: end tag for "HEAD" which is not finished</screen> data</foreignphrase></para></footnote>. Für einen Bereich mit diesem Inhaltsmodell, wird ein Parser davon ausgehen, dass er sowohl Zeichen als auch - Enitätenreferenzen finden kann. < verliert hier zwar - auch seine besondere Bedeutung, doch & wird weiterhin - als Anfang einer Entität interpretiert.</para> + Enitätenreferenzen finden kann. <literal><</literal> + verliert hier zwar auch seine besondere Bedeutung, doch + <literal>&</literal> wird weiterhin als Anfang einer + Entität interpretiert.</para> <para>Nützlich ist das <literal>CDATA</literal>-Modell vor allem dann, wenn es darum geht Texte eins-zu-eins zu - übernehmen, in denen < und & gehäuft + übernehmen, in denen <literal><</literal> und + <literal>&</literal> gehäuft auftreten. Zwar kann man solche Texte überarbeiten und - jedes < durch ein &lt; und jedes & durch ein - &amp; ersetzen, doch es wird in den meisten Fällen + jedes <literal><</literal> durch ein + <literal>&lt;</literal> und jedes + <literal>&</literal> durch ein <literal>&amp;</literal> + ersetzen, doch es wird in den meisten Fällen einfacher sein, für den betreffenden Text <literal>CDATA</literal> als Inhaltsmodell festzulegen. Ein - SGML-Parser wird dann, sobald er auf < und & trifft, + SGML-Parser wird dann, sobald er auf + <literal><</literal> oder <literal>&</literal> trifft, diese als Zeichen in einem Text betrachten.</para> <note> @@ -1769,8 +1776,8 @@ nsgmls:beispiel.sgml:6:8:E: end tag for "HEAD" which is not finished</screen> <title>CDATA als Inhaltsmodell für markierte Bereiche</title> <programlisting><para>Das ist ein Beispiel, wie man einen Text, - der viele &lt; und &amp; Entitäten enthält, in ein - Dokument einbinden kann. + der viele <literal>&lt;</literal>- und <literal>&amp;</literal>- + Entitäten enthält, in ein Dokument einbinden kann. Das Beispiel selbst, das sich innerhalb des markierten Bereiches befindet, ist ein HTML-Fragment. Der diesen Text umschließende Tag, beginnend mit mit <sgmltag>para</sgmltag> und endend mit <sgmltag>/para</sgmltag>, stammt aus der DocBook DTD.</para> diff --git a/de_DE.ISO8859-1/books/fdp-primer/translations/chapter.sgml b/de_DE.ISO8859-1/books/fdp-primer/translations/chapter.sgml index 7d3360d89c..fefeea3caa 100644 --- a/de_DE.ISO8859-1/books/fdp-primer/translations/chapter.sgml +++ b/de_DE.ISO8859-1/books/fdp-primer/translations/chapter.sgml @@ -28,8 +28,8 @@ POSSIBILITY OF SUCH DAMAGE. $FreeBSD$ - $FreeBSDde: de-docproj/books/fdp-primer/translations/chapter.sgml,v 1.6 2004/10/31 11:40:16 jkois Exp $ - basiert auf: 1.26 + $FreeBSDde: de-docproj/books/fdp-primer/translations/chapter.sgml,v 1.7 2005/09/12 18:24:29 jkois Exp $ + basiert auf: 1.29 --> <chapter id="translations"> diff --git a/de_DE.ISO8859-1/books/fdp-primer/writing-style/chapter.sgml b/de_DE.ISO8859-1/books/fdp-primer/writing-style/chapter.sgml index e9f5b6a7e1..a5c2ed2803 100644 --- a/de_DE.ISO8859-1/books/fdp-primer/writing-style/chapter.sgml +++ b/de_DE.ISO8859-1/books/fdp-primer/writing-style/chapter.sgml @@ -28,8 +28,8 @@ POSSIBILITY OF SUCH DAMAGE. $FreeBSD$ - $FreeBSDde: de-docproj/books/fdp-primer/writing-style/chapter.sgml,v 1.7 2005/08/15 13:03:20 jkois Exp $ - basiert auf: 1.47 + $FreeBSDde: de-docproj/books/fdp-primer/writing-style/chapter.sgml,v 1.8 2005/09/12 18:28:54 jkois Exp $ + basiert auf: 1.48 --> <chapter id="writing-style"> diff --git a/de_DE.ISO8859-1/books/handbook/basics/chapter.sgml b/de_DE.ISO8859-1/books/handbook/basics/chapter.sgml index 43cadd3f75..b4b78a4316 100644 --- a/de_DE.ISO8859-1/books/handbook/basics/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/basics/chapter.sgml @@ -3,8 +3,8 @@ The FreeBSD German Documentation Project $FreeBSD$ - $FreeBSDde: de-docproj/books/handbook/basics/chapter.sgml,v 1.94 2005/09/01 18:06:55 jkois Exp $ - basiert auf: 1.138 + $FreeBSDde: de-docproj/books/handbook/basics/chapter.sgml,v 1.95 2005/09/16 14:24:33 jkois Exp $ + basiert auf: 1.139 --> <chapter id="basics"> @@ -669,13 +669,13 @@ total 530 <filename>/etc/fstab</filename> werden beim Booten automatisch durch das Skript &man.rc.8; gemountet, wenn die zugehörigen Einträge nicht mit der Option <option>noauto</option> - versehen sind. Weitere Informationen zu diesem Thema enthält - der Abschnitt <xref linkend="disks-fstab">.</para> + versehen sind. Weitere Informationen zu diesem Thema finden Sie + im <xref linkend="disks-fstab">.</para> <para>Eine vollständige Beschreibung der Dateisystem-Hierarchie finden Sie in &man.hier.7;. Als Beispiel sei eine kurze - Übersicht über die gebräuchlisten Verzeichnisse - gegeben:</para> + Übersicht über die am häufigsten verwendeten + Verzeichnisse gegeben:</para> <para> <informaltable frame="none" pgwide="1"> @@ -686,10 +686,10 @@ total 530 <entry>Beschreibung</entry> </row> </thead> - <tbody> + <tbody valign="top"> <row> <entry><filename class="directory">/</filename></entry> - <entry>Root-Verzeichnis des Dateisystems.</entry> + <entry>Wurzelverzeichnis des Dateisystems.</entry> </row> <row> @@ -787,16 +787,17 @@ total 530 laufen.</entry> </row> - <row> <entry><filename class="directory">/tmp/</filename></entry> <entry>Temporäre Dateien, die für gewöhnlich - nicht nach einem Reboot erhalten werden. Dies kann - ein speicherbasiertes Dateisystem, siehe &man.mfs.8;, - sein.</entry> + nicht nach einem Reboot erhalten werden. Häufig wird + ein speicherbasiertes Dateisystem unter + <filename class="directory">/tmp</filename> + eingehängt. Weitere Informationen finden Sie in den + Manualpages &man.mdmfs.8; sowie &man.mfs.8; (für + &os; 4.X).</entry> </row> - <row> <entry><filename class="directory">/usr/</filename></entry> <entry>Der Großteil der Benutzerprogramme und @@ -969,7 +970,7 @@ total 530 gibt es in &os; nicht.</para> <para>Stattdessen wird ein Dateisystem als Wurzeldateisystem - (<foreignphrase>Root-Filesystem</foreignphrase>) + (<foreignphrase>root file system</foreignphrase>) ausgewählt. Das Wurzelverzeichnis dieses Dateisystems wird <filename class="directory">/</filename> genannt. Jedes andere Dateisystem wird unter dem Wurzeldateisystem @@ -1238,7 +1239,7 @@ total 530 </row> </thead> - <tbody> + <tbody valign="top"> <row> <entry><literal>a</literal></entry> @@ -1468,7 +1469,7 @@ total 530 | | > referred to as ad0s2b | | | | | :-----------------: ==: | Partition c, no -| | | Partition e, used as /var > filesystem, all +| | | Partition e, used as /var > file system, all | | > referred to as ad0s2e | of FreeBSD slice, | | | | ad0s2c :-----------------: ==: | diff --git a/de_DE.ISO8859-1/books/handbook/boot/chapter.sgml b/de_DE.ISO8859-1/books/handbook/boot/chapter.sgml index c99f7f3862..bbdc6668a8 100644 --- a/de_DE.ISO8859-1/books/handbook/boot/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/boot/chapter.sgml @@ -3,8 +3,8 @@ The FreeBSD German Documentation Project $FreeBSD$ - $FreeBSDde: de-docproj/books/handbook/boot/chapter.sgml,v 1.49 2005/01/24 23:34:20 mheinen Exp $ - basiert auf: 1.59 + $FreeBSDde: de-docproj/books/handbook/boot/chapter.sgml,v 1.50 2005/09/12 16:35:42 jkois Exp $ + basiert auf: 1.60 --> <chapter id="boot"> @@ -154,15 +154,24 @@ <title>Der MBR, <filename>/boot/boot0</filename></title> <indexterm><primary>Master Boot Record (MBR)</primary></indexterm> - <para>Eine <emphasis>Kopie</emphasis> des Master Boot Records (MBR) - von FreeBSD befindet sich in <filename>/boot/boot0</filename>. - Der richtige MBR wird in einem nicht benutzbaren Teil des Laufwerks - gespeichert.</para> + <para>Der vom FreeBSD-Installationsprogramm und &man.boot0cfg.8; + installierte Master Boot Record (MBR) basiert auf + <filename>/boot/boot0</filename> und wird in den ersten Sektor + der Platte (also außerhalb der Slices) installiert. + (Der von &man.fdisk.8; installierte MBR basiert hingegen auf + <filename>/boot/mbr</filename> und ähnelt dem MBR von + PC-DOS. Die Aufgabe dieses MBRs ist das Booten der als + <emphasis>active</emphasis> markierten Slice. Im Gegensatz + zum FreeBSD-MBR erfolgt dies ohne Rückfrage.)</para> <para><filename>boot0</filename> ist ein ziemlich simples Programm, und zwar aus dem einfachen Grund, dass der MBR nur - 512 Bytes groß sein darf. Falls Sie den FreeBSD-MBR - installiert haben und sich mehrere Betriebssysteme auf Ihrer + 512 Bytes groß sein darf. (Tatsächlich + darf er nur 446 Bytes groß sein, da der restliche + Platz für die Partitionstabelle und den + 0x55AA-Identifier am Ende des MBRs benötigt wird.) + Falls Sie den FreeBSD-MBR installiert haben und sich mehrere + Betriebssysteme auf Ihrer Festplatte befinden, werden Sie beim Starten des Computers eine Anzeige sehen, ähnlich der Folgenden:</para> diff --git a/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.sgml b/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.sgml index 516b6739d1..757df8a390 100644 --- a/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.sgml @@ -3,8 +3,8 @@ The FreeBSD German Documentation Project $FreeBSD$ - $FreeBSDde: de-docproj/books/handbook/cutting-edge/chapter.sgml,v 1.74 2005/08/31 19:30:45 jkois Exp $ - basiert auf: 1.217 + $FreeBSDde: de-docproj/books/handbook/cutting-edge/chapter.sgml,v 1.76 2005/09/11 08:47:10 jkois Exp $ + basiert auf: 1.219 --> <chapter id="cutting-edge"> @@ -611,10 +611,10 @@ <para>Es kann nicht oft genug betont werden, wie wichtig es ist, Ihr System zu sichern, <emphasis>bevor</emphasis> Sie die nachfolgenden Schritte ausführen. Obwohl der Neubau des Systems eine - einfache Aufgabe ist, solange Sie sich an die folgende Anleitung - halten, ist es unvermeidlich, dass Sie Fehler machen, oder Ihr - System nicht mehr bootet, weil andere Fehler in den Quellbaum - eingeführt haben.</para> + 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.</para> <para>Stellen Sie sicher, dass Sie eine Sicherung erstellt haben und über eine Fixit-Floppy oder eine startfähige CD @@ -821,10 +821,10 @@ </sect2> <sect2 id="makeworld-singleuser"> - <title>Wechseln Sie in den Single-User Modus</title> - <indexterm><primary>Single-User Modus</primary></indexterm> + <title>Wechseln Sie in den Single-User-Modus</title> + <indexterm><primary>Single-User-Modus</primary></indexterm> - <para>Sie können das System im Single-User Modus + <para>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 @@ -835,19 +835,19 @@ <indexterm><primary>Mehrbenutzermodus</primary></indexterm> <para>Eine andere Methode übersetzt das System im - Mehrbenutzermodus und wechselt für die Installation den - Single-User Modus. Wenn Sie diese Methode benutzen wollen, warten + 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 <maketarget>installkernel</maketarget> oder <maketarget>installworld</maketarget> installieren wollen.</para> <para>Als Superuser können Sie mit dem folgenden Kommando ein - laufendes System in den Single-User Modus bringen:</para> + laufendes System in den Single-User-Modus bringen:</para> - <screen>&prompt.root; <userinput/shutdown now/</screen> + <screen>&prompt.root; <userinput>shutdown now</userinput></screen> <para>Alternativ können Sie das System mit der Option - <option>-s</option> in den Single-User Modus booten. Setzen Sie + <option>-s</option> in den Single-User-Modus booten. Setzen Sie dann die folgenden Kommandos ab:</para> <screen>&prompt.root; <userinput>fsck -p</userinput> @@ -1011,7 +1011,7 @@ Script done, …</screen> lässt sich im Mehrbenutzermodus ohne negative Seiteneffekte bauen. Die Installation mit <maketarget>installworld</maketarget> sollte aber immer noch im - Single-User Modus erfolgen.</para> + Single-User-Modus erfolgen.</para> <para>Zweitens können Sie NFS benutzen, um mehrere Maschinen in Ihrem Netzwerk zu aktualisieren. Wenn Sie die Maschinen @@ -1093,7 +1093,7 @@ Script done, …</screen> <filename>GENERIC</filename> Kernel. Obwohl der <filename>GENERIC</filename> 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 + 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 <filename>GENERIC</filename> gebootet und sichergestellt haben, @@ -1114,11 +1114,6 @@ Script done, …</screen> &prompt.root; <userinput>make buildkernel KERNCONF=<replaceable>MYKERNEL</replaceable></userinput> &prompt.root; <userinput>make installkernel KERNCONF=<replaceable>MYKERNEL</replaceable></userinput></screen> - <para>Wenn Sie FreeBSD 4.2 oder eine ältere Version - verwenden, ersetzen Sie <literal>KERNCONF=</literal> durch - <literal>KERNEL=</literal>. Ab der 4.2-STABLE Version vom - 2. Februar 2001 können Sie die Variable - <makevar>KERNCONF</makevar> verwenden.</para> </note> <para>Wenn <varname>kern.securelevel</varname> einen Wert @@ -1131,21 +1126,14 @@ Script done, …</screen> Informationen über <varname>kern.securelevel</varname> finden Sie in &man.init.8; und &man.chflags.1; erläutert Optionen, die Sie auf Dateien setzen können.</para> - - <para>Wenn Sie ein Update auf eine &os; Version vor 4.0 - durchführen, sollten Sie die <quote>herkömmliche</quote> - Methode benutzen. Es ist allerdings empfohlen, dazu die frisch - gebaute Version von &man.config.8; zu benutzen:</para> - - <screen>&prompt.root; <userinput>/usr/obj/usr/src/usr.sbin/config/config <replaceable>KERNELNAME</replaceable></userinput></screen> </sect2> <sect2> - <title>Booten Sie in den Single-User Modus</title> - <indexterm><primary>Single-User Modus</primary></indexterm> + <title>Booten Sie in den Single-User-Modus</title> + <indexterm><primary>Single-User-Modus</primary></indexterm> <para>Um zu prüfen, ob der neue Kernel funktioniert, sollten Sie - in den Single-User Modus booten. Folgen Sie dazu der Anleitung aus + in den Single-User-Modus booten. Folgen Sie dazu der Anleitung aus <xref linkend="makeworld-singleuser">.</para> </sect2> @@ -1221,11 +1209,6 @@ Script done, …</screen> <command>mergemaster</command> ist der empfohlene Weg, Ihre Systemkonfiguration mit dem Quellbaum abzugleichen.</para> - <para>Zwischen 3.3-RELEASE und 3.4-RELEASE wurde - <command>mergemaster</command> in das Basissystem integriert, so - dass es in allen -STABLE und -CURRENT Systemen seit der - Version 3.3 vorhanden ist.</para> - <para>Rufen Sie <command>mergemaster</command> einfach auf und schauen Sie zu. Ausgehend von <filename>/</filename> wird <command>mergemaster</command> einen virtuellen Root-Baum @@ -1744,7 +1727,7 @@ Building everything.. <answer> <itemizedlist> <listitem> - <para>Bauen Sie im Single-User Modus.</para> + <para>Bauen Sie im Single-User-Modus.</para> </listitem> <listitem> @@ -1957,10 +1940,10 @@ Building everything.. und installieren Sie den gerade gebauten Kernel. Wenn diese Maschine <filename>/usr/src</filename> und <filename>/usr/obj</filename> über NFS bekommt, müssen - Sie das Netzwerk im Single-User Modus aktivieren und die beiden + 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 - <command>shutdown now</command> in den Single-User Modus wechseln. + <command>shutdown now</command> in den Single-User-Modus wechseln. Sie können dann mit der normalen Prozedur den neuen Kernel und das System installieren und anschließend <command>mergemaster</command> laufen lassen. Wenn Sie damit diff --git a/de_DE.ISO8859-1/books/handbook/mail/chapter.sgml b/de_DE.ISO8859-1/books/handbook/mail/chapter.sgml index 15afc3456e..eceb5ac277 100644 --- a/de_DE.ISO8859-1/books/handbook/mail/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/mail/chapter.sgml @@ -5,8 +5,8 @@ Original Revision der ersten Uebersetzung: 1.20 $FreeBSD$ - $FreeBSDde: de-docproj/books/handbook/mail/chapter.sgml,v 1.57 2005/09/03 11:31:56 jkois Exp $ - basiert auf: 1.129 + $FreeBSDde: de-docproj/books/handbook/mail/chapter.sgml,v 1.59 2005/09/13 16:54:19 jkois Exp $ + basiert auf: 1.131 --> <!-- Ein paar Anmerkungen zur Uebersetzung bestimmter Begriffe @@ -789,13 +789,30 @@ postmaster@example.com postmaster@noc.example.net Dokumentation nach.</para> </sect2> - <sect2> + <sect2 id="mail-disable-sendmail"> <title>Ausschalten von <application>sendmail</application></title> <para>Die Prozedur des Startens von <application>sendmail</application> - hat sich zwischen 4.5-RELEASE und 4.6-RELEASE signifikant - verändert. Daher beinhaltet auch die Prozedur des Abschaltens - subtile Unterschiede.</para> + hat sich zwischen 4.5-RELEASE, 4.6-RELEASE sowie den folgenden + Versionen signifikant verändert. Daher beinhaltet auch die + Prozedur des Abschaltens subtile Unterschiede.</para> + + <warning> + <para>Wenn Sie die Sendefunktion von + <application>sendmail</application> deaktivieren, müssen + Sie für den E-Mail-Versand ein alternatives System + installieren. Tun Sie dies nicht, sind Systemfunktionen wie + &man.periodic.8; nicht mehr in der Lage, ihre Resulate und + Meldungen als E-Mail zu versenden. Aber auch viele andere + Teile Ihres Systems erwarten, dass Sie über ein + <application>sendmail</application>-kompatibles System + verfügen. Sind Programme auf (die von Ihnen + deaktivierten) + <application>sendmail</application>-Binärdateien + angewiesen, landen deren E-Mails ansonsten in einer inaktiven + <application>sendmail</application>-Warteschlange und + können nicht ausgeliefert werden.</para> + </warning> <sect3> <title>FreeBSD 4.5-STABLE vor dem 4.4.2002 (inklusive 4.5-RELEASE und @@ -817,40 +834,52 @@ postmaster@example.com postmaster@noc.example.net <title>FreeBSD 4.5-STABLE nach dem 4.4.2002 (inklusive 4.6-RELEASE und spätere Versionen)</title> - <para>Um <application>sendmail</application> komplett abzuschalten, - müssen Sie</para> + <para>Um <application>sendmail</application> komplett (also + inklusive der Funktion zum Versenden von E-Mails) + abzuschalten, müssen Sie den Eintrag</para> <programlisting>sendmail_enable="NONE"</programlisting> - <para>in Ihre <filename>/etc/rc.conf</filename> schreiben.</para> + <para>in Ihre <filename>/etc/rc.conf</filename> + aufnehmen.</para> - <warning> - <para>Wenn Sie <application>sendmail</application>s Dienst für - ausgehende E-Mails auf diesem Weg abschalten, ist es wichtig, - dass Sie es mit einem voll funktionsfähigen alternativen - E-Mail-Zustellungssystem ersetzen. Wenn Sie wählen das nicht - zu tun, werden System-Funktionen wie &man.periodic.8; nicht - fähig sein, Ihre Ergebnisse per E-Mail zuzustellen, wie sie - es normalerweise erwarten. Viele Teile Ihres Systems können - erwarten, ein funktionierendes - <application>sendmail</application>-kompatibles System zu haben. - Wenn Anwendungen weiterhin versuchen mit - <application>sendmail</application>s Programmdateien E-Mails zu - verschicken, nachdem Sie sie abgeschaltet haben, könnten - E-Mails in einer inaktiven - <application>sendmail</application>-Warteschlange landen, und - niemals geliefert werden.</para> - </warning> - - <para>Wenn Sie nur <application>sendmail</application>s Dienst - für eingehende E-Mail abschalten möchten, sollten Sie - </para> + <para>Wenn Sie lediglich die Funktion zum Empfang von E-Mails + durch <application>sendmail</application> deaktivieren + wollen, sollten Sie folgenden Eintrag in + <filename>/etc/rc.conf</filename> einfügen:</para> <programlisting>sendmail_enable="NO"</programlisting> - <para>in <filename>/etc/rc.conf</filename> setzen. Mehr - Informationen zu <application>sendmail</application>s Start-Optionen - sind vorhanden auf der &man.rc.sendmail.8; Manual Page.</para> + <para>In diesem Fall ist die lokale Zustellung von E-Mails + weiterhin möglich. Weitere Informationen zu den + Startoptionen von <application>sendmail</application> + finden Sie in der Manualpage &man.rc.sendmail.8;.</para> + </sect3> + + <sect3> + <title>FreeBSD 5.0-STABLE und neuer</title> + + <para>Um <application>sendmail</application> komplett zu + deaktivieren (also inklusive der Funktion zum Versand + von E-Mails), fügen Sie die Zeile</para> + + <programlisting>sendmail_enable="NO" +sendmail_submit_enable="NO" +sendmail_outbound_enable="NO" +sendmail_msp_queue_enable="NO"</programlisting> + + <para>in <filename>/etc/rc.conf</filename> ein.</para> + + <para>Wenn Sie lediglich die Funktion zum Empfang von E-Mails + durch <application>sendmail</application> deaktivieren + wollen, sollten Sie folgenden Eintrag in + <filename>/etc/rc.conf</filename> einfügen:</para> + + <programlisting>sendmail_enable="NO"</programlisting> + + <para>Weitere Informationen zu den Startoptionen von + <application>sendmail</application> finden Sie in der + Manualpage &man.rc.sendmail.8;.</para> </sect3> </sect2> diff --git a/de_DE.ISO8859-1/books/handbook/mirrors/chapter.sgml b/de_DE.ISO8859-1/books/handbook/mirrors/chapter.sgml index e6ce2913d8..4717b89809 100644 --- a/de_DE.ISO8859-1/books/handbook/mirrors/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/mirrors/chapter.sgml @@ -3,8 +3,8 @@ The FreeBSD German Documentation Project $FreeBSD$ - $FreeBSDde: de-docproj/books/handbook/mirrors/chapter.sgml,v 1.100 2005/09/03 12:10:07 jkois Exp $ - basiert auf: 1.386 + $FreeBSDde: de-docproj/books/handbook/mirrors/chapter.sgml,v 1.101 2005/09/11 08:50:12 jkois Exp $ + basiert auf: 1.387 --> <appendix id="mirrors"> @@ -615,13 +615,6 @@ Warning: Permanently added 'anoncvs.freebsd.org' (DSA) to the list of known host <filename>/usr/src/usr.sbin/ctm</filename>, wenn Sie eine Kopie der Quellen besitzen.</para> - <para>Wenn Sie eine frühere Version als FreeBSD 2.0 - besitzen, können Sie die aktuellen <application>CTM</application> - Quellen von der folgenden URL beziehen:</para> - - <para><ulink - url="http://www.FreeBSD.org/cgi/cvsweb.cgi/src/usr.sbin/ctm/"></ulink></para> - <para>Die Deltas, die <application>CTM</application> verarbeitet, können Sie über FTP oder E-Mail beziehen. Wenn Sie über einen FTP Zugang zum Internet verfügen, erhalten diff --git a/de_DE.ISO8859-1/books/handbook/multimedia/chapter.sgml b/de_DE.ISO8859-1/books/handbook/multimedia/chapter.sgml index f0971967b5..6895ce73c5 100644 --- a/de_DE.ISO8859-1/books/handbook/multimedia/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/multimedia/chapter.sgml @@ -3,7 +3,7 @@ The FreeBSD German Documentation Project $FreeBSD$ - $FreeBSDde: de-docproj/books/handbook/multimedia/chapter.sgml,v 1.72 2005/09/03 12:28:48 jkois Exp $ + $FreeBSDde: de-docproj/books/handbook/multimedia/chapter.sgml,v 1.73 2005/09/13 17:09:21 jkois Exp $ basiert auf: 1.110 --> @@ -1086,7 +1086,7 @@ no adaptors present</screen> </indexterm> <para>Dieser Abschnitt behandelt Anwendungen aus der - &os;-Ports-Collection, die Videos abspielen. An der + &os;-Ports-Sammlung, die Videos abspielen. An der Videowiedergabe wird derzeit aktiv gearbeitet, sodass der Funktionsumfang der Anwendungen von dem hier beschriebenen abweichen kann.</para> @@ -1154,7 +1154,7 @@ no adaptors present</screen> <listitem> <para>Die Anwendung hängt von anderen Anwendungen - ab, die sich noch nicht in der &os;-Ports-Collection + ab, die sich noch nicht in der &os;-Ports-Sammlung befinden.</para> </listitem> </orderedlist> @@ -1186,7 +1186,7 @@ no adaptors present</screen> </indexterm> <para><application>MPlayer</application> finden Sie in der - Ports-Collection unter + Ports-Sammlung unter <filename role="package">multimedia/mplayer</filename>. Der Bau von <application>MPlayer</application> berücksichtigt die vorhandene Harware und erzeugt @@ -1407,7 +1407,7 @@ zoom=yes</programlisting> <para>Zurzeit gibt es kein <application>xine</application>-Modul, das CSS-kodierte DVDs abspielen kann und sich in - der &os; Ports-Collection befindet.</para> + der &os; Ports-Sammlung befindet.</para> <para><application>xine</application> ist benutzerfreundlicher als <application>MPlayer</application>, bietet allerdings @@ -1676,7 +1676,7 @@ bktr0: Pinnacle/Miro TV, Philips SECAM tuner.</programlisting> </itemizedlist> <para>Weitere Anwendungen finden Sie in der &os; - Ports-Collection.</para> + Ports-Sammlung.</para> </sect2> <sect2> @@ -1715,7 +1715,7 @@ bktr0: Pinnacle/Miro TV, Philips SECAM tuner.</programlisting> <para>Unter &os; können Sie, wie unter jedem anderen modernen Betriebssystem, Scanner benutzen. Die Anwendung <application>SANE</application> (Scanner Access Now Easy) - aus der Ports-Collection stellt eine einheitliche Schnittstelle + aus der Ports-Sammlung stellt eine einheitliche Schnittstelle (<acronym role="Application Programming Interface">API</acronym>) für den Zugriff auf Scanner bereit. <application>SANE</application> greift auf Scanner diff --git a/de_DE.ISO8859-1/books/handbook/pgpkeys/chapter.sgml b/de_DE.ISO8859-1/books/handbook/pgpkeys/chapter.sgml index 2dd6b70f05..6897c26094 100644 --- a/de_DE.ISO8859-1/books/handbook/pgpkeys/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/pgpkeys/chapter.sgml @@ -3,8 +3,8 @@ The FreeBSD German Documentation Project $FreeBSD$ - $FreeBSDde: de-docproj/books/handbook/pgpkeys/chapter.sgml,v 1.35 2005/09/03 13:19:59 jkois Exp $ - basiert auf: 1.270 + $FreeBSDde: de-docproj/books/handbook/pgpkeys/chapter.sgml,v 1.37 2005/09/16 16:12:50 jkois Exp $ + basiert auf: 1.272 --> <appendix id="pgpkeys"> @@ -45,11 +45,6 @@ &pgpkey.kuriyama; </sect2> - <sect2 id="pgpkey-scottl"> - <title>&a.scottl;</title> - &pgpkey.scottl; - </sect2> - <sect2 id="pgpkey-imp"> <title>&a.imp;</title> &pgpkey.imp; @@ -329,6 +324,11 @@ &pgpkey.gioria; </sect2> + <sect2 id="pgpkey-mnag"> + <title>&a.mnag;</title> + &pgpkey.mnag; + </sect2> + <sect2 id="pgpkey-jmg"> <title>&a.jmg;</title> &pgpkey.jmg; @@ -564,6 +564,11 @@ &pgpkey.remko; </sect2> + <sect2 id="pgpkey-scottl"> + <title>&a.scottl;</title> + &pgpkey.scottl; + </sect2> + <sect2 id="pgpkey-pav"> <title>&a.pav;</title> &pgpkey.pav; diff --git a/de_DE.ISO8859-1/books/handbook/preface/preface.sgml b/de_DE.ISO8859-1/books/handbook/preface/preface.sgml index 10963fbbe4..66388e3b28 100644 --- a/de_DE.ISO8859-1/books/handbook/preface/preface.sgml +++ b/de_DE.ISO8859-1/books/handbook/preface/preface.sgml @@ -3,8 +3,8 @@ The FreeBSD German Documentation Project $FreeBSD$ - $FreeBSDde: de-docproj/books/handbook/preface/preface.sgml,v 1.23 2005/09/03 15:50:13 jkois Exp $ - basiert auf: 1.29 + $FreeBSDde: de-docproj/books/handbook/preface/preface.sgml,v 1.24 2005/09/07 16:53:42 jkois Exp $ + basiert auf: 1.30 --> <preface id="book-preface"> @@ -413,6 +413,15 @@ </varlistentry> <varlistentry> + <term><emphasis><xref linkend="geom">, GEOM</emphasis></term> + <listitem> + <para>Beschreibt das GEOM-Framework von FreeBSD sowie die + Konfiguration der verschiedenen unterstützten + RAID-Level.</para> + </listitem> + </varlistentry> + + <varlistentry> <term><emphasis><xref linkend="vinum-vinum">, Vinum</emphasis></term> <listitem> <para>Beschreibt den Vinum Volume Manager, der virtuelle Laufwerke, diff --git a/de_DE.ISO8859-1/books/handbook/printing/chapter.sgml b/de_DE.ISO8859-1/books/handbook/printing/chapter.sgml index 41e0e92b8a..eeacd56226 100644 --- a/de_DE.ISO8859-1/books/handbook/printing/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/printing/chapter.sgml @@ -2,8 +2,8 @@ The FreeBSD Documentation Project The FreeBSD German Documentation Project $FreeBSD$ - $FreeBSDde: de-docproj/books/handbook/printing/chapter.sgml,v 1.33 2005/09/03 15:57:31 jkois Exp $ - basiert auf: 1.93 + $FreeBSDde: de-docproj/books/handbook/printing/chapter.sgml,v 1.38 2005/09/16 19:02:57 jkois Exp $ + basiert auf: 1.94 --> <chapter id="printing"> @@ -58,7 +58,7 @@ Netzwerk entgegennimmt, seien es &windows;-, &macos;- oder andere FreeBSD-Computer. FreeBSD stellt sicher, dass die Druckaufträge in der richtigen Reihenfolge bearbeitet - werden und kann optional eine Titelseite mit dem Namen des + werden und kann optional ein Deckblatt mit dem Namen des Auftraggebers eines Druckauftrags aufgeben. FreeBSD kann auch Statistiken über die Computer und Benutzer führen, die Ausdrucke in Auftrag geben.</para> @@ -77,17 +77,17 @@ </listitem> <listitem> - <para>Druckaufträge mit einer Titelseite versehen + <para>Druckaufträge mit einem Deckblatt versehen können.</para> </listitem> <listitem> - <para>Auf einem Drucker drucken können, der an einen + <para>Mit einem Drucker drucken können, der an einen anderen Computer angeschlossen ist.</para> </listitem> <listitem> - <para>Auf einem Drucker drucken können, der direkt an das + <para>Mit einem Drucker drucken können, der direkt an das Netzwerk angeschlossen ist.</para> </listitem> @@ -124,19 +124,19 @@ <sect1 id="printing-intro-spooler"> <title>Einführung</title> - <para>Um einen Drucker mit FreeBSD zu benutzen, müssen Sie - das Berkeley Line Printer Spooling System, auch als - <application>LPD</application>-Drucksystem bekannt, - konfigurieren. Dieses System zur Verwaltung von + <para>Um einen Drucker mit FreeBSD zu benutzen, können Sie + das Berkeley Line Printer Spooling System, das auch als + <application>LPD</application>-Drucksystem oder nur als + <application>LPD</application> bekannt ist, + verwenden. Dieses System zur Verwaltung von Druckaufträgen ist das Standardsystem in FreeBSD. Dieses - Kapitel führt Sie in das - <application>LPD</application>-Drucksystem ein, und zeigt Ihnen - die Konfiguration.</para> + Kapitel führt Sie in <application>LPD</application> + und dessen Konfiguration ein.</para> <para>Wenn Sie bereits mit <application>LPD</application> oder einem anderen Drucksystem vertraut sind, können Sie direkt - im Abschnitt <link linkend="printing-intro-setup">Einrichten des - Drucksystems</link> weiterlesen.</para> + im Abschnitt <link linkend="printing-intro-setup">Einfache + Drucker-Konfiguration</link> weiterlesen.</para> <para><application>LPD</application> steuert alle Aspekte rund um die Drucker, die an den Computer angeschlossen sind. Es ist @@ -167,7 +167,7 @@ </listitem> <listitem> - <para>Den Druck von <emphasis>Titelseiten</emphasis> (auch als + <para>Den Druck von <emphasis>Deckblättern</emphasis> (auch als <emphasis>Banner-</emphasis> oder <emphasis>Burst-</emphasis>Seiten bezeichnet), damit Benutzer ihre Druckaufträge schnell innerhalb eines @@ -194,7 +194,7 @@ </listitem> <listitem> - <para>Die Erfassung von Abrechnungsdaten für + <para>Das Erfassen von Verrechnungsdaten für Druckaufträge.</para> </listitem> </itemizedlist> @@ -211,7 +211,7 @@ <para>Wenn Sie der einzige Benutzer sind, der mit Ihrem Computer arbeitet, fragen Sie sich vielleicht, warum Sie die Konfigurationsarbeit für das Drucksystem auf sich nehmen - sollten, wenn Sie Titelseiten, Abrechnunsdaten oder + sollten, wenn Sie Deckblätter, Abrechnungsdaten oder Zugriffskontrolle nicht benötigen. Obwohl Sie direkt auf den Drucker zugreifen können, bietet <application>LPD</application> eine Reihe von Vorteilen: @@ -273,9 +273,9 @@ <para>Abschnitt <link linkend="printing-advanced">Erweiterte Drucker-Konfiguration</link> beschreibt, wie Sie mit speziellen Dateiformaten umgehen können, wie Sie - Titelseiten drucken können, wie Sie den Zugriff auf + Deckblätter drucken können, wie Sie den Zugriff auf Drucker einschränken können, und wie Sie - Abrechnungsdaten aufzeichnen können.</para> + Verrechnungsdaten aufzeichnen können.</para> </listitem> </itemizedlist> @@ -315,8 +315,8 @@ heißt, ist die Konfiguration relativ komplex. Es ist vergleichsweise schwierig, einen Drucker mit Ihrem Computer und dem <application>LPD</application>-Drucksystem zu - verbinden. Die weiteren Optionen, wie Kopfzeile oder Titelseiten, - sind einfach zu konfigurieren, sobald die + verbinden. Die weiteren Optionen, wie Kopfzeilen oder + Deckblätter, sind einfach zu konfigurieren, sobald die Grund-Konfiguration erfolgreich abgeschlossen ist.</para> <sect3 id="printing-hardware"> @@ -350,7 +350,7 @@ <listitem> <para><emphasis>Seriell</emphasis> angeschlossene Drucker werden über eine serielle Schnittstelle - (auch RS232C-, RS232D- oder COM-Schnittstelle genannt) + (auch RS-232 oder COM-Schnittstelle genannt) mit Ihrem Computer verbunden. Diese Schnittstelle wird von vielen unterschiedlichen Systemen verwendet. Serielle Kabel sind leicht erhältlich und @@ -401,7 +401,8 @@ <listitem> <para>USB-Schnittstelle (Universal Serial Bus) bieten noch höhere Geschwindigkeiten als - parallele Schnittstellen oder serielle RS232-Schnittstellen. + parallele Schnittstellen oder serielle + RS-232-Schnittstellen. USB-Kabel sind einfach und billig. Zum Drucken ist die USB-Schnittstelle besser geeignet als serielle oder parallele Schnittstellen, auf @@ -460,8 +461,8 @@ Schnittstelle des Computers Sie den Drucker verbunden haben. Die meisten Computer haben lediglich eine parallele Schnittstelle. Der FreeBSD-Gerätename der ersten - Schnittstelle lautet <filename>/dev/ppc0</filename>, der - der zweiten <filename>/dev/ppc1</filename>, und so weiter. + Schnittstelle lautet <filename>ppc0</filename>, der + der zweiten <filename>ppc1</filename>, und so weiter. Der Gerätename für den Drucker an der ersten parallelen Schnittstelle folgt dem selben Schema und lautet <filename>/dev/lpt0</filename>, usw.</para> @@ -1165,15 +1166,15 @@ showpage</programlisting> </step> <indexterm> - <primary>Titelseite</primary> + <primary>Deckblätter</primary> </indexterm> <step> - <para>Schalten Sie den Druck von Titelseiten aus (dies ist - standardmäßig eingeschaltet), indem Sie das + <para>Schalten Sie den Druck von Deckblättern aus (dies + ist standardmäßig eingeschaltet), indem Sie das Attribut <literal>sh</literal> setzen. Abschnitt <link linkend="printing-no-header-pages">Den Druck von - Titelseiten ausschalten</link> erklärt, wie Sie + Deckblättern ausschalten</link> erklärt, wie Sie dies tun können.</para> </step> @@ -1292,23 +1293,23 @@ bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:</programlisting> </sect4> <sect4 id="printing-no-header-pages"> - <title>Keine Titelseiten drucken</title> + <title>Keine Deckblätter drucken</title> <indexterm> <primary>drucken</primary> - <secondary>Titelseite</secondary> + <secondary>Deckblatt</secondary> </indexterm> <para>Standardmäßig druckt das - <application>LPD</application>-System eine - <emphasis>Titelseite</emphasis> vor jedem Druckauftrag, + <application>LPD</application>-System ein + <emphasis>Deckblatt</emphasis> vor jedem Druckauftrag, die den Namen des Druckauftrags, den Benutzer und den Computer angibt. Während der Einrichtung des Systems - und beim Testen stört die Titelseite allerdings, + und beim Testen stört das Deckblatt allerdings, weshalb Sie sie zunächst deaktivieren sollten.</para> - <para>Um den Druck der Titelseite zu deaktivieren, + <para>Um den Druck von Deckblättern zu deaktivieren, fügen Sie das Attribut <literal>sh</literal> zur Druckerdefinition in <filename>/etc/printcap</filename> hinzu. Hier ein Beispiel:</para> @@ -1701,199 +1702,3603 @@ $%&'()*+,-./01234567 </sect1> <sect1 id="printing-advanced"> - <title>* Erweiterte Drucker-Konfiguration</title> - - <para>Dieser Abschnitt ist noch nicht übersetzt. Lesen Sie - bitte <ulink - url="&url.books.handbook.en;/printing-advanced.html"> - das Original in englischer Sprache</ulink>.</para> + <sect1info> + <authorgroup> + <author> + <firstname>Johann</firstname> + <surname>Kois</surname> + <contrib>Übersetzt von </contrib> + </author> + </authorgroup> + </sect1info> + + <title>Erweiterte Drucker-Konfiguration</title> + + <para>Dieser Abschnitt beschreibt den Einsatz von Filtern für + das Drucken speziell formatierter Seiten oder von + Deckblättern, das Drucken über ein Netzwerk sowie die + Beschränkung und Verrechnung der Druckernutzung.</para> <sect2 id="printing-advanced-filter-intro"> - <title>* Filter</title> + <title>Filter</title> + <indexterm> + <primary>Drucken</primary> + <secondary>Filter</secondary> + </indexterm> + + <para>Obwohl <application>LPD</application> Netzwerkprotokolle, + Warteschlangen, Zugriffskontrollen und andere für das + Drucken wichtige Aspekte prinzipiell unterstützt, passiert + ein Großteil der <emphasis>wirklichen</emphasis> Arbeit + in den sogenannten <emphasis>Filtern</emphasis>. Dabei handelt + es sich um Programme, die direkt mit einem Drucker + kommunizieren und deren Gerätespezifika und spezielle + Anforderungen erfüllen. Im einfachsten Fall + installiert man nur einen reinen Textfilter, der mit beinahe + allen Druckern funktionieren sollte. (Lesen Sie dazu auch den + Abschnitt <link linkend="printing-textfilter">Den Text-Filter + installieren</link>.)</para> + + <para>Um die erweiterten Fähigkeiten von Druckern auch + einsetzen zu können, sollten Sie verstehen, wie Filter + arbeiten, da diese für die Bereitstellung dieser Funktionen + zuständig sind. Die schlechte Nachricht ist, dass + <emphasis>Sie</emphasis> diese Filter bereitstellen müssen. + Die gute Nachricht ist allerdings, dass diese in der Regel + bereits vorhanden sind. Ist dies nicht der Fall, können + Sie einen Filter meist relativ einfach selbst erstellen.</para> + + <para>Der Filter <filename>/usr/libexec/lpr/lpf</filename> wird + bereits mit FreeBSD geliefert. Er kümmert sich um die + korrekte Behandlung von gelöschten Zeichen (das sogenannte + <foreignphrase>Backspacing</foreignphrase>), um im Text + enthaltene Tabulatoren, sowie um die Verrechnung von + Druckaufträgen. Das ist aber auch alles, was dieser + Filter kann. Zusätzliche Filter und für die Funktion + von Filtern nötige Komponenten finden sich aber in der + FreeBSD Ports-Sammlung.</para> + + <para>Dieser Abschnitt behandelt folgende Themen:</para> + + <itemizedlist> + <listitem> + <para>Der Abschnitt <link linkend="printing-advanced-filters"> + Die Funktionsweise von Filtern</link> versucht, einen + Überblick über die Rolle von Filtern innerhalb des + Druckprozesses zu geben. Sie sollten diesen Abschnitt lesen, + damit Sie verstehen, was <quote>unter der Haube</quote> + passiert, wenn <application>LPD</application> einen Filter + verwendet. Dieses Wissen wird Ihnen dabei helfen, Probleme, + die bei Installation von Filtern für verschiedene Drucker + entstehen können, vorauszusehen und zu beheben.</para> + </listitem> + + <listitem> + <para><application>LPD</application> geht davon aus, dass + jeder Drucker in der Lage ist, normalen Text zu drucken. + Für &postscript;- (oder andere sprachbasierte) Drucker + stellt dies allerdings ein Problem dar, da diese nicht in + der Lage sind, normalen Text direkt zu drucken. Der + Abschnitt <link + linkend="printing-advanced-if-conversion">Normalen Text auf + &postscript;-Druckern drucken</link> beschreibt, wie Sie + dieses Problem lösen können. Besitzen Sie einen + &postscript;-Drucker, sollten Sie diesen Abschnitt + lesen.</para> + </listitem> + + <listitem> + <para>&postscript; ist ein populäres Ausgabeformat, das + von vielen Programmen unterstützt wird. Es ist sogar + möglich, &postscript;-Code direkt zu schreiben. Leider + sind &postscript;-Drucker in der Regel relativ teuer. Der + Abschnitt <link linkend="printing-advanced-ps">&postscript; + auf Nicht-&postscript;-Druckern emulieren</link> beschreibt, + wie Sie einen Textfilter anpassen müssen, um + &postscript;-Daten auf einem + <emphasis>nicht-&postscript;-fähigen Drucker</emphasis> + auszugeben. Haben Sie keinen &postscript;-Drucker, sollten + Sie insbesondere diesen Abschnitt lesen.</para> + </listitem> + + <listitem> + <para>Der Abschnitt + <link linkend="printing-advanced-convfilters"> + Konvertierungsfilter</link> beschreibt eine Möglichkeit + zur automatischen Konvertierung verschiedener Dateiformate + in ein von Ihrem Drucker unterstütztes Format. Nachdem + Sie diesen Abschnitt gelesen haben, werden Sie in der Lage + sein, Ihren Drucker so zu konfigurieren, dass Sie durch die + Eingabe von <command>lpr -t</command> troff-Daten, von + <command>lpr -d</command> &tex;-DVI-Daten, oder von + <command>lpr -v</command> Rasterbilddaten drucken können. + Daher sollten Sie diesen Abschnitt auf jeden Fall lesen.</para> + </listitem> + + <listitem> + <para>Im Abschnitt <link linkend="printing-advanced-of"> + Ausgabefilter</link> wird eine nur selten genutzte + Eigenschaft von <application>LPD</application>, die + sogenannten Ausgabefilter, beschrieben. Wenn Sie keine + <link linkend="printing-advanced-header-pages"> + Deckblätter</link> drucken müssen, können + Sie diesen Abschnitt überspringen.</para> + </listitem> + + <listitem> + <para>Der Abschnitt <link linkend="printing-advanced-lpf">lpf: + Ein Textfilter</link> beschreibt <command>lpf</command>, + einen kompletten, wenn auch einfachen Textfilter für + Zeilendrucker (oder auch Laserdrucker, die sich analog + verhalten), der bereits mit FreeBSD geliefert wird. Wenn + Sie nur am Ausdruck von reinem Text interessiert sind, oder + wenn Ihr Drucker nur <quote>Schrott</quote> produziert, wenn + er auf Backspace-Zeichen trifft, sollten Sie sich + <command>lpf</command> näher ansehen.</para> + </listitem> + </itemizedlist> + + <note> + <para>Eine Kopie der verschiedenen Skripte finden Sie im + Verzeichnis <filename + class="directory">/usr/share/examples/printing</filename>.</para> + </note> <sect3 id="printing-advanced-filters"> - <title>* Funktionsweise der Filter</title> + <title>Die Funktionsweise von Filtern</title> + + <para>Bei einem Filter handelt es sich um ein ausführbares + Programm, das von <application>LPD</application> gestartet + wird, um den geräteabhängigen Teil der Kommunikation + mit einem Drucker zu übernehmen.</para> + + <para>Wenn <application>LPD</application> eine Datei über + einen Druckauftrag drucken will, startet es ein Filterprogramm. + Danach setzt es die Standardeingabe des Filters auf die zu + druckende Datei, die Standardausgabe auf den Drucker und die + Standardfehlerausgabe auf <filename>/dev/console</filename> + (Voreinstellung) oder auf die über die Option + <literal>lf</literal> in <filename>/etc/printcap</filename> + festgelegte Datei.</para> - <para></para> + <indexterm> + <primary><command>troff</command></primary> + </indexterm> + + <para>Welcher Filter von <application>LPD</application> mit + welchen Argumenten geladen wird, wird in der Datei + <filename>/etc/printcap</filename> oder durch die Argumente, + die der Anwender &man.lpr.1; auf der Kommandozeile + übergibt, festgelegt. Gibt der Anwender beispielsweise + <command>lpr -t</command> ein, startet + <application>LPD</application> über die + <literal>tf</literal>-Fähigkeit den troff-Filter für + den gewünschten Drucker. Wollen Sie hingegen normalen + Text drucken, wird der <literal>if</literal>-Filter gestartet. + (Für Ausnahmen von diesem Vorgehen lesen Sie bitte den + Abschnitt <link linkend="printing-advanced-of"> + Ausgabefilter</link>.)</para> + + <para>Es gibt drei Arten von Filtern, die Sie in + <filename>/etc/printcap</filename> angeben können:</para> + + <itemizedlist> + <listitem> + <para><emphasis>Textfilter</emphasis> (die in der + <application>LPD</application>-Dokumentation als + <emphasis>input filter</emphasis> bezeichnet werden) sind + für den Druck von normalem Text zuständig. + Es handelt sich dabei um eine Art Standardfilter, da + <application>LPD</application> von jedem Drucker erwartet, + dass er normalen Text drucken kann. Aufgabe des + Textfilters ist es, sicherzustellen, dass gelöschte + Zeichen (<foreignphrase>Backspaces</foreignphrase>), + Tabulatoren und andere Sonderzeichen Ihren Drucker nicht + verwirren. Falls Sie für die Nutzung eines Druckers + bezahlen müssen, kann der Textfilter über die + Anzahl der gedruckten Zeilen auch die Anzahl der von Ihnen + gedruckten Seiten ermitteln. Der Textfilter wird mit + folgenden Argumenten gestartet:</para> + + <cmdsynopsis> + <command>filter-name</command> + <arg>-c</arg> + <arg choice="plain">-w<replaceable>width</replaceable></arg> + <arg choice="plain">-l<replaceable>length</replaceable></arg> + <arg choice="plain">-i<replaceable>indent</replaceable></arg> + <arg choice="plain">-n <replaceable>login</replaceable></arg> + <arg choice="plain">-h <replaceable>host</replaceable></arg> + <arg choice="plain"><replaceable>acct-file</replaceable></arg> + </cmdsynopsis> + + <para>Die einzelnen Argumente haben folgende Bedeutung:</para> + + <variablelist> + <varlistentry> + <term><option>-c</option></term> + + <listitem> + <para>Notwendig, wenn <command>lpr -l</command> + verwendet wird.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable>width</replaceable></term> + + <listitem> + <para>Der Wert der in + <filename>/etc/printcap</filename> festgelegten + Option <literal>pw</literal> (<foreignphrase>page + width</foreignphrase>). In der Voreinstellung + ist dieser Wert auf 132 gesetzt.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable>length</replaceable></term> + + <listitem> + <para>Der Wert der + <literal>pl</literal>-Fähigkeit + (<foreignphrase>page length</foreignphrase>), + Voreinstellung 66.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable>indent</replaceable></term> + + <listitem> + <para>Der durch <command>lpr -i</command> + festgelegte Einzug, Voreinstellung 0.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable>login</replaceable></term> + + <listitem> + <para>Der Name des Benutzers, der die Datei + druckt.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable>host</replaceable></term> + + <listitem> + <para>Der Rechner, auf dem der Druckauftrag + gestartet wurde.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable>acct-file</replaceable></term> + + <listitem> + <para>Der Name der Verrechnungsdatei, in der die + Ergebnisse der + <literal>af</literal>-Fähigkeit gespeichert + werden.</para> + </listitem> + </varlistentry> + </variablelist> + </listitem> + + <indexterm> + <primary>Drucken</primary> + <secondary>Filter</secondary> + </indexterm> + + <listitem> + <para>Ein <emphasis>Konvertierungsfilter</emphasis> + konvertiert verschiedene Dateiformate in ein Format, das + Ihr Drucker auf Papier ausgeben kann. So kann etwa der + ditroff-Schriftsatz nicht direkt gedruckt werden, daher + müssen Sie einen Konvertierungsfilter installieren, + um diese Daten in ein Format zu bringen, das Ihr Drucker + verarbeiten und drucken kann. Der Abschnitt <link + linkend="printing-advanced-convfilters"> + Konvertierungsfilter</link> enthält ausführliche + Informationen zu diesen Filtern. Konvertierungsfilter + können auch zur Verrechnung verwendet werden. Sie + werden mit folgenden Argumenten gestartet:</para> + + <cmdsynopsis> + <command>filter-name</command> + <arg + choice="plain">-x<replaceable>pixel-width</replaceable></arg> + <arg choice="plain">-y<replaceable>pixel-height</replaceable></arg> + <arg choice="plain">-n <replaceable>login</replaceable></arg> + <arg choice="plain">-h <replaceable>host</replaceable></arg> + <arg choice="plain"><replaceable>acct-file</replaceable></arg> + </cmdsynopsis> + + <para><replaceable>pixel-width</replaceable> ist der Wert + der <literal>px</literal>-Fähigkeit + (Voreinstellung 0), während + <replaceable>pixel-height</replaceable> dem Wert der + <literal>py</literal>-Fähigkeit (Voreinstellung + ebenfalls 0) entspricht.</para> + </listitem> + + <listitem> + <para><emphasis>Ausgabefilter</emphasis> werden nur + verwendet, wenn keine Textfilter vorhanden sind oder wenn + Deckblätter benötigt werden. Der Abschnitt + <link linkend="printing-advanced-of">Ausgabefilter</link> + enthält weitere Informationen. Ausgabefilter + unterstützen nur zwei Argumente:</para> + + <cmdsynopsis> + <command>filter-name</command> + <arg choice="plain">-w<replaceable>width</replaceable></arg> + <arg choice="plain">-l<replaceable>length</replaceable></arg> + </cmdsynopsis> + + <para>Beide Argumente entsprechen den Optionen + <option>-w</option> und <option>-l</option> der + Textfilter.</para> + </listitem> + </itemizedlist> + + <para>Alle Filter sollten mit folgenden Rückgabewerten + (Exitcodes) <emphasis>beendet</emphasis> werden:</para> + + <variablelist> + <varlistentry> + <term>exit 0</term> + + <listitem> + <para>Der Filter hat die Datei erfolgreich gedruckt.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>exit 1</term> + + <listitem> + <para>Der Filter war nicht in der Lage, die Datei zu + drucken und meldet diesen Exitcode an + <application>LPD</application>, um die Datei erneut + zu drucken. <application>LPD</application> startet + daraufhin den Filter erneut.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>exit 2</term> + + <listitem> + <para>Der Filter war nicht in der Lage, die Datei zu + drucken. Bei diesem Exitcode soll + <application>LPD</application> aber nicht versuchen, + die Datei erneut zu drucken, sondern den Druckauftrag + verwerfen.</para> + </listitem> + </varlistentry> + </variablelist> + + <para><filename>/usr/libexec/lpr/lpf</filename>, der mit FreeBSD + gelieferte Textfilter, nutzt die Argumente <foreignphrase>page + width</foreignphrase> und <foreignphrase>page + length</foreignphrase>, um festzulegen, wann ein Seitenumbruch + (<foreignphrase>form feed</foreignphrase>) gesendet werden + soll sowie zur Verrechnung von Druckaufträgen. Dazu werden + der Benutzername, der für den Druckauftrag verwendete + Rechner sowie die Verrechnungsdatei ausgewertet, um die + entsprechenden Einträge zu erstellen.</para> + + <para>Wenn Sie auf der Suche nach Filtern sind, achten Sie + darauf, dass diese LPD-kompatibel sind. Dazu müssen + diese die oben beschriebenen Argumente unterstützen. + Wenn Sie planen, Ihre Filter selbst zu erstellen, müssen + diese ebenfalls die gleichen Argumente und Exitcodes + unterstützen.</para> </sect3> <sect3 id="printing-advanced-if-conversion"> - <title>* Drucken von reinen Textdateien auf einem - &postscript;-Drucker</title> + <title>Normalen Text auf &postscript;-Druckern drucken</title> + + <indexterm><primary>Druckjob</primary></indexterm> + + <para>Sie sind der alleinige Benutzer Ihres Computers und Ihres + &postscript;-Druckers und Sie sind sich sicher, dass Sie + niemals normalen Text an Ihren Drucker senden werden? + Außerdem werden Sie niemals ein Programm verwenden, + um normalen Text auszudrucken? Nur wenn dies alles zutrifft, + können Sie diesen Abschnitt überspringen.</para> + + <para>Wollen Sie allerdings sowohl &postscript; als auch + normalen Text drucken, müssen Sie Ihren Drucker zuvor + entsprechend konfigurieren. Dazu muss Ihr Textfilter in der + Lage sein, zu unterscheiden, ob es sich bei einem ankommenden + Druckauftrag um normalen Text oder um &postscript;-Daten + handelt. Jeder &postscript;-Druckauftrag muss mit den Zeichen + <literal>%!</literal> beginnen (sehen Sie in Ihrem + Druckerhandbuch nach, ob Ihr Drucker weitere Sprachen + unterstützt). Sind dies die beiden ersten Zeichen eines + Druckauftrages, so handelt es sich um &postscript;-Daten, die + direkt gedruckt werden können. Fehlen diese Zeichen + allerdings, muss der Textfilter den Inhalt der Datei nach + &postscript; konvertieren, bevor die Datei gedruckt werden + kann.</para> + + <para>Wie funktioniert diese Unterscheidung?</para> + + <indexterm> + <primary>Drucker</primary> + <secondary>seriell</secondary> + </indexterm> + + <para>Haben Sie einen seriellen Drucker, können Sie + <command>lprps</command> installieren. + <command>lprps</command> ist ein &postscript;-Druckerfilter, + der eine Zweiwegekommunikation mit einem Drucker + ermöglicht. Er aktualisiert die Druckerstatusdatei mit + Protokollinformationen des Druckers. Dadurch sind Anwender + und Administratoren in der Lage, den genauen Zustand des + Druckers zu prüfen (durch Meldungen wie <errorname>toner + low</errorname> oder <errorname>paper jam</errorname>). + Wichtiger ist allerdings, dass <command>lprps</command> + <command>psif</command> enthält, ein Programm, das + feststellen kann, ob ein ankommender Druckauftrag normalen + Text enthält. Ist dies der Fall, wird + <command>textps</command> (das ebenfalls mit + <command>lprps</command> geliefert wird) aufgerufen und die + Datei nach &postscript; konvertiert. Danach kann + <command>lprps</command> die Datei an den Drucker senden.</para> + + <para><command>lprps</command> ist in der FreeBSD + <link linkend="ports">Ports-Sammlung</link> enthalten. Nach + der Installation müssen Sie nur noch den Pfad zum + Programm <command>psif</command> angeben, das als Teil von + <command>lprps</command> installiert wird. Haben Sie + <command>lprps</command> über die Ports-Sammlung + installiert, fügen Sie folgende Zeile in den + Eintrag Ihres &postscript;-Druckers in + <filename>/etc/printcap</filename> ein:</para> + + <programlisting>:if=/usr/local/libexec/psif:</programlisting> + + <para>Zusätzlich sollten Sie die + <literal>rw</literal>-Fähigkeit aktivieren. Dadurch + wird <application>LPD</application> im Schreib- und Lesemodus + geöffnet.</para> + + <para>Haben Sie hingegen einen parallelen &postscript;-Drucker, + was eine Zweiwegekommunikation mit Ihrem Drucker (auf die + <command>lprps</command> angewiesen ist) unmöglich + macht, können Sie das folgende Shell-Skript verwenden:</para> + + <programlisting>#!/bin/sh +# +# psif - Drucke PostScript oder normalen Text auf einem PostScript-Drucker +# Script-Version; das ist NICHT die mit lprps gelieferte Version! +# Installiert unter: /usr/local/libexec/psif +# - <para></para> +IFS="" read -r first_line +first_two_chars=`expr "$first_line" : '\(..\)'` + +if [ "$first_two_chars" = "%!" ]; then + # + # PostScript - einfach drucken. + # + echo "$first_line" && cat && printf "\004" && exit 0 + exit 2 +else + # + # Normaler Text - zuerst konvertieren, dann drucken. + # + ( echo "$first_line"; cat ) | /usr/local/bin/textps && printf "\004" && exit 0 + exit 2 +fi </programlisting> + + <para>Für dieses Skript wurde <command>textps</command> + als seperates Programm installiert, um normalen Text nach + &postscript; zu konvertieren. Sie können aber auch jeden + anderen Text-nach-&postscript;-Konverter verwenden. Die + FreeBSD <link linkend="ports">Ports-Sammlung</link> + enthält mit <literal>a2ps</literal> ein umfangreiches + Programm zur Konvertierung von normalem Text nach + &postscript;.</para> </sect3> <sect3 id="printing-advanced-ps"> - <title>* Drucken von &postscript;-Dateien auf - nicht-&postscript;-Druckern</title> + <title>&postscript; auf Nicht-&postscript;-Druckern emulieren</title> + + <indexterm> + <primary>PostScript</primary> + <secondary>Emulation</secondary> + </indexterm> + <indexterm> + <primary>Ghostscript</primary></indexterm> + + <para>Bei &postscript; handelt es sich um den + <emphasis>de facto</emphasis>-Standard für hochwertigen + Schriftsatz und Druck. Leider ist &postscript; aber auch ein + <emphasis>teurer</emphasis> Standard. Glücklicherweise + hat Aladdin Enterprises daher eine freie + &postscript;-ähnliche Implementierung namens + <application>Ghostscript</application> entwickelt, die auch + unter FreeBSD lauffähig ist. Ghostscript kann fast jede + &postscript;-Datei lesen und auf den verschiedensten + Geräten ausgeben, darunter auch auf vielen + Nicht-&postscript;-Druckern. Durch die Installation von + Ghostscript und die Nutzung eines speziellen Textfilters + erreichen Sie, dass sich Ihr Nicht-&postscript;-Drucker + wie ein echter &postscript;-Drucker verhält.</para> + + <para>Ghostscript ist in der FreeBSD Ports-Sammlung enhalten + und kann daher einfach installiert werden.</para> + + <para>Um &postscript; zu emulieren, muss der Textfilter + erkennen, ob er eine &postscript;-Datei drucken soll. Ist + dies nicht der Fall, wird die Datei direkt an den Drucker + geschickt. Anderenfalls wird die Datei an Ghostscript + übergeben, das die Datei in ein Format konvertiert, + das Ihr Drucker versteht.</para> + + <para>Dazu ein Beispiel. Das folgende Skript ist ein Textfilter + für den Drucker DeskJet 500 von Hewlett Packard. Nutzen + Sie einen anderen Drucker, müssen Sie die Option + <option>-sDEVICE</option> beim Aufruf von <command>gs</command> + (Ghostscript) entsprechend anpassen. Eine Liste der von + Ghostscript unterstützten Geräte erhalten Sie durch + die Eingabe von <command>gs -h</command> auf der + Kommandozeile.</para> + + <programlisting>#!/bin/sh +# +# ifhp - Ghostscript-emuliertes PostScript auf einem HP DeskJet 500 drucken +# Installiert unter: /usr/local/libexec/ifhp + +# +# LF als CR+LF behandeln (um einen "Treppeneffekt" auf HP/PCL-Drucker +# zu vermeiden) +# +printf "\033&k2G" || exit 2 + +# +# Lies die ersten zwei Zeichen der Datei +# +IFS="" read -r first_line +first_two_chars=`expr "$first_line" : '\(..\)'` + +if [ "$first_two_chars" = "%!" ]; then + # + # Oh. Es ist PostScript; mit Ghostscript konvertieren, danach drucken. + # + /usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 \ + -sOutputFile=- - && exit 0 +else + # + # Normaler Text oder HP/PCL, einfach direkt drucken. Ans Ende setzen wir + # einen Seitenumbruch (also ein Form Feed), damit auch die letzte Seite + # ausgeworfen wird. + # + echo "$first_line" && cat && printf "\033&l0H" && +exit 0 +fi + +exit 2</programlisting> + + <para>Zuletzt müssen Sie <application>LPD</application> + noch durch die <literal>if</literal>-Fähigkeit über + den neuen Filter informieren:</para> + + <programlisting>:if=/usr/local/libexec/ifhp:</programlisting> - <para></para> + <para>Das ist alles. Ab sofort sollte sowohl ein + <command>lpr normaler.text</command> als auch ein + <command>lpr wasauchimmer.ps</command> funktionieren und beide + Dateien sollten problemlos gedruckt werden.</para> </sect3> <sect3 id="printing-advanced-convfilters"> - <title>* Konvertierungsfilter</title> + <title>Konvertierungsfilter</title> - <sect4 id="printing-advanced-autoconv"> - <title>* Automatische Konvertierung: eine Alternative zu - Konvertierungsfiltern Filters</title> + <para>Nachdem Sie Ihren Drucker wie unter <link + linkend="printing-simple">Einfache Drucker-Konfiguration</link> + eingerichtet haben, wollen Sie wahrscheinlich einige + Konvertierungsfilter installieren, damit Sie (abgesehen von + ASCII-Text) auch Ihre Lieblings-Dateiformate drucken + können.</para> + + <sect4> + <title>Warum sollte ich einen Konvertierungsfilter + installieren?</title> + + <indexterm> + <primary>&tex;</primary> + <secondary>DVI-Dateien drucken</secondary> + </indexterm> - <para></para> + <para>Konvertierungsfilter erleichtern das Drucken von + verschiedenen Dateiformaten. Nehmen wir beispielsweise an, + dass Sie sehr viel mit dem &tex;-Satzsystem arbeiten und + über einen &postscript;-Drucker verfügen. Eine + vom &tex;-System erzeugte DVI-Datei kann erst dann gedruckt + werden, nachdem diese nach &postscript; konvertiert wurde. + Dazu geben Sie Folgendes ein:</para> + + <screen>&prompt.user; <userinput>dvips seaweed-analysis.dvi</userinput> +&prompt.user; <userinput>lpr seaweed-analysis.ps</userinput></screen> + + <para>Haben Sie einen Konvertierungsfilter für + DVI-Dateien installiert, können Sie die manuelle + Konvertierung überspringen, da dies nun + <application>LPD</application> für Sie erledigt. + Wollen Sie eine DVI-Datei drucken, geben Sie nur noch den + folgenden Befehl ein:</para> + + <screen>&prompt.user; <userinput>lpr -d seaweed-analysis.dvi</userinput></screen> + + <para>Durch die Verwendung der Option <option>-d</option> + wurde <application>LPD</application> angewiesen, unsere + DVI-Datei vor dem Druck zu konvertieren. Der Abschnitt + <link linkend="printing-lpr-options-format">Formatierungs- + und Konvertierungsoptionen</link> beschreibt die dabei + möglichen Optionen.</para> + + <para>Für jede Konvertierungsoption, die Ihr Drucker + unterstützen soll, müssen Sie einen eigenen + <emphasis>Konvertierungsfilter</emphasis> installieren und + dessen Pfad in der Datei <filename>/etc/printcap</filename> + angeben. Ein Konvertierungsfilter verhält sich im + Prinzip wie ein Textfilter bei einer einfachen + Druckerkonfiguration (lesen Sie dazu auch den Abschnitt + <link linkend="printing-textfilter">Den Textfilter + installieren</link>), allerdings konvertiert er die Datei + in ein Format, das Ihr Drucker versteht, anstatt normalen + Text zu drucken.</para> </sect4> + + <sect4> + <title>Welche Konvertierungsfilter sollte ich installieren?</title> + + <para>Sie sollten nur Filter installieren, die Sie auch + benötigen. Wenn Sie sehr viele DVI-Dateien drucken, + sollten Sie auch einen DVI-Konvertierungsfilter installieren. + Müssen Sie viele troff-Daten drucken, ist ein + troff-Filter hilfreich.</para> + + <para>Die folgende Tabelle listet die von + <application>LPD</application> unterstützten Filter + sowie die Einträge in + <filename>/etc/printcap</filename> auf, mit denen Sie diese + Fähigkeiten aktivieren. Zusätzlich wird + angegeben, wie Sie <command>lpr</command> jeweils + aufrufen müssen:</para> + + <informaltable frame="none" pgwide="1"> + <tgroup cols="3"> + <thead> + <row> + <entry>Dateityp</entry> + <entry><filename>/etc/printcap</filename>-Fähigkeit</entry> + <entry><command>lpr</command>-Option</entry> + </row> + </thead> + + <tbody> + <row> + <entry>cifplot</entry> + <entry><literal>cf</literal></entry> + <entry><option>-c</option></entry> + </row> + + <row> + <entry>DVI</entry> + <entry><literal>df</literal></entry> + <entry><option>-d</option></entry> + </row> + + <row> + <entry>plot</entry> + <entry><literal>gf</literal></entry> + <entry><option>-g</option></entry> + </row> + + <row> + <entry>ditroff</entry> + <entry><literal>nf</literal></entry> + <entry><option>-n</option></entry> + </row> + + <row> + <entry>FORTRAN-Text</entry> + <entry><literal>rf</literal></entry> + <entry><option>-f</option></entry> + </row> + + <row> + <entry>troff</entry> + <entry><literal>tf</literal></entry> + <entry><option>-f</option></entry> + </row> + + <row> + <entry>Rasterdaten</entry> + <entry><literal>vf</literal></entry> + <entry><option>-v</option></entry> + </row> + + <row> + <entry>Normaler Text</entry> + <entry><literal>if</literal></entry> + <entry>keine, <option>-p</option>, or + <option>-l</option></entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Wollen Sie also <command>lpr -d</command> verwenden, + muss die <literal>df</literal>-Fähigkeit in + <filename>/etc/printcap</filename> aktiviert sein.</para> + + <indexterm><primary>FORTRAN</primary></indexterm> + + <para>Obwohl manche Leute etwas anderes behaupten, sind + Formate wie FORTRAN-Text und -Plot inzwischen nahezu + obsolet. Wenn Sie diese Formate dennoch benötigen, + installieren Sie einfach einen angepassten Filter. Wollen + Sie beispielsweise zwar Printerleaf-Dateien (also Dateien des + Desktop Publishing-Programms von Interleaf), aber keine + Plotdateien drucken, so können Sie einen + Printerleaf-Konvertierungsfilter installieren, der es durch + die Aktivierung der <literal>gf</literal>-Fähigkeit + erlaubt, diese Dateien direkt zu drucken. Nun müssen + Sie Ihren Mitarbeitern nur noch mitteilen, dass + <command>lpr -g</command> nun für <quote>drucke + Printerleaf-Dateien</quote> steht.</para> + </sect4> + + <sect4> + <title>Konvertierungsfilter installieren</title> + + <para>Da Konvertierungsfilter nicht zum Basissystem von FreeBSD + gehören, sollten diese unter + <filename>/usr/local</filename> installiert werden. + Häufig wird das Verzeichnis + <filename>/usr/local/libexec</filename> verwendet, da es + sich bei Konvertierungsfiltern um spezielle Programme + handelt, die nur von <application>LPD</application>, aber + nicht von einem normalen Benutzer gestartet werden.</para> + + <para>Um einen Konvertierungsfilter zu aktivieren, müssen + Sie dessen Pfad zusätzlich zur benötigten + Fähigkeit in der Datei + <filename>/etc/printcap</filename> eintragen.</para> + + <para>In unserem Beispiel wollen wir einen + DVI-Konvertierungsfilter für den Drucker + <literal>bamboo</literal> installieren. Unsere bereits + bekannte <filename>/etc/printcap</filename> wurde + allerdings um die <literal>df</literal>-Fähigkeit + für den Drucker <literal>bamboo</literal> + erweitert.</para> + + <programlisting># +# /etc/printcap des Rechners rose - neuer df-Filter für 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/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\ + :if=/usr/local/libexec/psif:\ + :df=/usr/local/libexec/psdf:</programlisting> + + <para>Beim DVI-Filter handelt es sich um ein Shell-Skript + namens <filename>/usr/local/libexec/psdf</filename>:</para> + + <programlisting>#!/bin/sh +# +# psdf - DVI-nach-PostScript Druckerfilter +# Installiert unter: /usr/local/libexec/psdf +# +# Wird von lpd aktiviert, wenn der Nutzer lpr -d eingibt. +# +exec /usr/local/bin/dvips -f | /usr/local/libexec/lprps "$@"</programlisting> + + <para>Dieses Skript startet <command>dvips</command> im + Filtermodus (durch das Argument <option>-f</option> wird der + Druckauftrag über die Standardeingabe entgegengenommen). + Danach wird der &postscript;-Druckerfilter + <command>lprps</command> (lesen Sie dazu auch den Abschnitt + <link linkend="printing-advanced-if-conversion">Drucken von + reinen Textdateien auf einem &postscript;-Drucker</link>) + mit den von <application>LPD</application> übergebenen + Argumenten gestartet. <command>lprps</command> wiederum + nutzt diese Argumente, um die gedruckten Seiten zu + verrechnen.</para> + </sect4> + + <sect4> + <title>Beispiele für Konvertierungsfilter</title> + + <para>Da es keine verbindliche Prozedur zur Installation eines + Druckerfilters gibt, folgen nun weitere Beispiele. + Verwenden Sie diese, um Ihre eigenen Filter zu erstellen. + Falls ein Filter Ihren Anforderungen bereits entspricht, + können Sie ihn auch direkt verwenden.</para> + + <para>Das erste Beispiel beschreibt einen + Konvertierungsfilter für GIF-Dateien für den + Drucker LaserJet III-Si von Hewlett Packard:</para> + + <programlisting>#!/bin/sh +# +# hpvf - Konvertiert GIF-Dateien nach HP/PCL, danach wird gedruckt. +# Installiert unter: /usr/local/libexec/hpvf + +PATH=/usr/X11R6/bin:$PATH; export PATH +giftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300 \ + && exit 0 \ + || exit 2</programlisting> + + <para>Dieser Filter konvertiert eine GIF-Datei in eine + portable Anymap, diese in ein portables Graustufenbild, + dieses wiederum in eine portable Bitmap, die + schließlich in ein LaserJet/PCL-kompatibles Format + umgewandelt wird.</para> + + <para><filename>/etc/printcap</filename> muss für einen + Drucker, der diesen Filter nutzen will, folgenden Eintrag + enthalten:</para> + + <programlisting># +# /etc/printcap des Rechners 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:</programlisting> + + <para>Das folgende Skript ist ein Konvertierungsfilter, der + das Drucken von troff-Daten des groff-Textsatzsystems + auf dem &postscript;-Drucker <literal>bamboo</literal> + ermöglicht:</para> + + <programlisting>#!/bin/sh +# +# pstf - Konvertiert groff's troff-Daten nach PS, dann wird gedruckt. +# Installiert unter: /usr/local/libexec/pstf +# +exec grops | /usr/local/libexec/lprps "$@"</programlisting> + + <para>Dieses Skript nutzt wiederum <command>lprps</command>, + um mit dem Drucker zu kommunizieren. Wäre der Drucker + an einem parallelen Port angeschlossen, würde das Skript + so aussehen:</para> + + <programlisting>#!/bin/sh +# +# pstf - Konvertiert groff's troff-Daten nach PS, danach wird gedruckt. +# Installiert unter: /usr/local/libexec/pstf +# +exec grops</programlisting> + + <para>Das ist alles. Um den Filter verwenden zu können, + müssen Sie ihn allerdings noch in + <filename>/etc/printcap</filename> aktivieren:</para> + + <programlisting>:tf=/usr/local/libexec/pstf:</programlisting> + + <para>Das nächste Skript ist ein FORTRAN-Textfilter + für jeden Drucker, der normalen Text direkt drucken + kann und der hier für den Drucker + <literal>teak</literal> installiert wird:</para> + + <programlisting>#!/bin/sh +# +# hprf - FORTRAN-Textfilter für den Drucker LaserJet 3si: +# Installiert unter: /usr/local/libexec/hprf +# + +printf "\033&k2G" && fpr && printf "\033&l0H" && + exit 0 +exit 2 </programlisting> + + <para>Zusätzlich benötigen wir wiederum einen + Eintrag in <filename>/etc/printcap</filename>, um diesen + Filter für den Drucker <literal>teak</literal> zu + aktivieren:</para> + + <programlisting>:rf=/usr/local/libexec/hprf:</programlisting> + + <para>Das letzte Beispiel ist etwas komplexer. Es soll ein + DVI-Filter für den bereits erwähnten + LaserJet-Drucker <literal>teak</literal> installiert werden. + Der erste Teil ist einfach: Sie müssen den Pfad des + DVI-Filters in <filename>/etc/printcap</filename> + eintragen:</para> + + <programlisting>:df=/usr/local/libexec/hpdf:</programlisting> + + <para>Nun kommt der schwierige Teil: Sie müssen den + Filter funktionsfähig machen. Dazu benötigen Sie + einen DVI-nach-LaserJet/PCL-Konverter. + Glücklicherweise enthält die FreeBSD + <link linkend="ports">Ports-Sammlung</link> mit + <command>dvi2xx</command> ein solches Programm. Nach der + Installation des Ports verfügen wir über das + Programm <command>dvilj2p</command>, das zur Konvertierung + von DVI-Daten in zu den Druckern LaserJet IIp, LaserJet III, + sowie LaserJet 2000 kompatible Codes benötigt wird.</para> + + <para>Durch den Einsatz von <command>dvilj2p</command> wird + der Filter <command>hpdf</command> relativ komplex, da + <command>dvilj2p</command> nicht von der Standardeingabe + lesen kann, sondern als Eingabe einen Dateinamen erwartet. + Zusätzlich muss der Dateiname auf + <filename>.dvi</filename> enden, daher ist die Verwendung + von <filename>/dev/fd/0</filename> als Standardeingabe + problematisch. Wir können diese Problem aber umgehen, + indem wir einen temporären Dateinamen symbolisch + nach <filename>/dev/fd/0</filename> linken. Dadurch wird + <command>dvilj2p</command> gezwungen, dennoch von der + Standardeingabe zu lesen.</para> + + <para>Das letzte Problem, das wir noch lösen müssen, + ist, dass wir <filename>/tmp</filename> nicht als + temporären Link verwenden können. Symbolische + Links gehören dem User sowie der Gruppe + <username>bin</username>. Der Filter läuft aber als + User <username>daemon</username>. Außerdem ist + <filename>/tmp</filename> durch ein Sticky-Bit gesichert. + Daher kann der Filter den Link zwar erzeugen, ein + Aufräumen ist aber nicht mehr möglich, weil sich + die Eigentümer des Filters und des temporären + Verzeichnisses unterscheiden.</para> + + <para>Daher legt der Filter den symbolischen Link im + Arbeitsverzeichnis an, das gleichzeitig als + Spooling-Verzeichnis dient (festgelegt durch die Aktivierung + der <literal>sd</literal>-Fähigkeit in + <filename>/etc/printcap</filename>). Das Arbeitsverzeichnis + ist ein idealer Ort für den Filter, insbesondere da + dieses (manchmal) sogar über mehr freien Speicherplatz + als <filename>/tmp</filename> verfügt.</para> + + <para>Mit diesen Informationen sind wir nun in der Lage, den + Filter zu entwickeln:</para> + + <programlisting>#!/bin/sh +# +# hpdf - DVI-Daten auf einen HP/PCL-Drucker drucken +# Installiert unter: /usr/local/libexec/hpdf + +PATH=/usr/local/bin:$PATH; export PATH + +# +# Eine Funktion zum Aufräumen unserer temporären Dateien. +# Diese finden sich im Arbeitsverzeichnis, das wir auch als +# Spooling-Verzeichnis für unseren Drucker verwenden werden. +# +cleanup() { + rm -f hpdf$$.dvi +} + +# +# Eine Funktion, um fatale Fehler zu behandeln. Dazu die Meldung +# ausgeben, danach ein exit 2. Dadurch weiß LPD, dass es +# den Auftrag nicht noch einmal drucken soll. +# +fatal() { + echo "$@" 1>&2 + cleanup + exit 2 +} + +# +# Wenn ein Anwender den Auftrag entfernt, sendet LPD ein SIGINT, daher +# wollen wir SIGINT und einige andere Signale abfangen (trappen), um +# nach der Konvertierung aufräumen zu können. +# +trap cleanup 1 2 15 + +# +# Bevor wir anfangen, räumen wir noch auf. Sicher ist sicher. +# +cleanup + +# +# Die DVI-Eingabedatei auf die Standardeingabe linken (die zu druckende +# Datei). +# +ln -s /dev/fd/0 hpdf$$.dvi || fatal "Konnte Symlink nicht anlegen!" + +# +# Umwandeln: LF = CR+LF +# +printf "\033&k2G" || fatal "Konnte Drucker nicht initialisieren!" + +# +# Konvertieren und drucken. Da der Rückgabewert von dvilj2p +# unzuverlässig ist, ignorieren wir ihn einfach. +# +dvilj2p -M1 -q -e- dfhp$$.dvi + +# +# Aufräumen und beenden. +# +cleanup +exit 0 </programlisting> + </sect4> + + <sect4 id="printing-advanced-autoconv"> + <title>Automatische Konvertierung: Eine Alternative zu + Konvertierungsfiltern</title> + + <para>Alle in diesem Abschnitt besprochenen + Konvertierungsfilter sind zwar sehr hilfreich, allerdings + müssen Sie nach wie vor bei jedem Aufruf von + &man.lpr.1; angeben, welchen Filter sie verwenden wollen, + was mit der Zeit sicher nervend wird. Schlimmer ist + allerdings, dass die Auswahl eines unpassenden Filters + dazu führen kann, dass Sie Hunderte Seiten Papier + ausdrucken.</para> + + <para>Statt also Konvertierungsfilter zu installieren, + könnten Sie den Textfilter (der ohnehin der + Standardfilter ist) verwenden, um den zu druckenden + Dateityp zu erkennen und anschließend den korrekten + Konvertierungsfilter auszuwählen. Um den Dateityp + zu bestimmen, können Sie beispielsweise + <command>file</command> verwenden. Leider ist es + bei <emphasis>einigen</emphasis> Dateitypen problematisch, + diese zu unterscheiden. Daher könnten Sie für + diese Dateitypen dennoch einen Konvertierungsfilter + installieren.</para> + + <indexterm><primary>apsfilter</primary></indexterm> + + <indexterm> + <primary>Drucken</primary> + <secondary>Filter</secondary> + <tertiary>apsfilter</tertiary> + </indexterm> + + <para>Die FreeBSD Ports-Sammlung enthält mit + <command>apsfilter</command> einen Textfilter, der diese + automatische Konvertierung durchführen kann. Er ist + in der Lage, normalen Text sowie &postscript;- und + DVI-Dateien zu erkennen, diese zu konvertieren und auf + Ihren Drucker auszugeben.</para> + </sect4> </sect3> <sect3 id="printing-advanced-of"> - <title>* Ausgabefilter</title> - - <para></para> + <title>Ausgabefilter</title> + + <para><application>LPD</application> unterstützt noch eine + weitere Filterart, die sogenannten Ausgabefilter. Diese sind + – analog zu einem Textfilter – + für den Druck von normalem Text ausgelegt, allerdings + verfügen sie im Vergleich zu diesen nur über + sehr eingeschränkte Fähigkeiten. Wenn Sie einen + Ausgabefilter (aber keinen Textfilter) verwenden, dann</para> + + <itemizedlist> + <listitem> + <para>startet <application>LPD</application> nur einen + Ausgabefilter für den kompletten Druckauftrag, statt + für jede Datei des Auftrags einen eigenen Filter zu + starten.</para> + </listitem> + + <listitem> + <para>kümmert sich <application>LPD</application> nicht + darum, den Beginn oder das Ende einer Datei innerhalb des + Druckauftrages zu finden.</para> + </listitem> + + <listitem> + <para>übergibt <application>LPD</application> weder + den Benutzer- noch den Rechnernamen desjenigen, der den + Druckauftrag erteilt hat, an den Ausgabefilter, was + eine Verrechnung von Druckaufträgen unmöglich + macht. Ausgabefilter unterstützen insgesamt nur + zwei Argumente:</para> + + <cmdsynopsis> + <command>filter-name</command> + <arg choice="plain">-w<replaceable>width</replaceable></arg> + <arg choice="plain">-l<replaceable>length</replaceable></arg> + </cmdsynopsis> + + <para><replaceable>width</replaceable> basiert auf der + <literal>pw</literal>-Fähigkeit, + <replaceable>length</replaceable> hingegen auf der + <literal>pl</literal>-Fähigkeit des gewählten + Druckers.</para> + </listitem> + </itemizedlist> + + <para>Lassen Sie sich von dieser angeblichen Einfachheit eines + Ausgabefilters nicht täuschen. Ausgabefilter sind + beispielsweise <emphasis>nicht dazu in der Lage</emphasis>, + jede Datei eines Druckauftrages auf einer neuen Seite zu + drucken. Dazu benötigen Sie einen Textfilter (die im + Abschnitt <link linkend="printing-textfilter">Den Textfilter + installieren</link> beschrieben werden). Außerdem + sind Ausgabefilter in Wirklichkeit + <emphasis>komplexer</emphasis>, da sie den gesendeten + Bytestrom nicht nur auf Sonderzeichen hin untersuchen + müssen, sondern auch die Übertragung von Signalen + für <application>LPD</application> übernehmen + müssen.</para> + + <para>Sie <emphasis>benötigen</emphasis> Ausgabefilter + aber dann, wenn Sie Deckblätter drucken wollen, da + dazu Escape-Sequenzen und Initialisierungsstrings + erforderlich sind. (Es ist allerdings <emphasis>nicht + möglich</emphasis>, den Druck dieser Deckblätter + zu verrechnen, da <application>LPD</application> + keine Benutzer- oder Rechnerinformationen an den + Ausgabefilter übergibt.)</para> + + <para><application>LPD</application> kann für den gleichen + Drucker sowohl Ausgabefilter als auch Textfilter verwenden. + In solchen Fällen verwendet <application>LPD</application> + den Ausgabefilter nur für den Druck von Deckblättern + (die im Abschnitt <link + linkend="printing-advanced-header-pages">Deckblätter</link> + näher beschrieben werden). Nach dem Druck des Deckblattes + erwartet <application>LPD</application>, dass sich der + Ausgabefilter <emphasis>selbst beendet</emphasis>. Dazu werden + zwei Bytes an den Ausgabefilter gesendet: ASCII 031, gefolgt + von ASCII 001. Wenn ein Ausgabefilter diese zwei Bytes + (031, 001) empfängt, sendet er das Signal + <literal>SIGSTOP</literal> an sich selbst. Nachdem + <application>LPD</application> den Rest des Druckauftrages + erledigt hat, wird der Ausgabefilter erneut gestartet, indem + ein <literal>SIGCONT</literal> an den Ausgabefilter + gesendet wird.</para> + + <para>Haben Sie nur einen Ausgabefilter, aber + <emphasis>keinen</emphasis> Textfilter installiert, dann + verwendet <application>LPD</application> den Ausgabefilter auch + für den Druck von normalem Text. Wie bereits erwähnt, + werden dabei allerdings alle Dateien des Druckauftrags unmittelbar + hintereinander gedruckt, Seitenumbrüche oder ein + zusätzlicher Papiervorschub sind also nicht möglich. + Da dieses Verhalten von Ihnen wahrscheinlich + <emphasis>nicht</emphasis> gewünscht wird, werden Sie in + fast allen Fällen einen zusätzlichen Textfilter + benötigen.</para> + + <para>Der weiter oben beschriebene Textfilter + <command>lpf</command> kann auch als Ausgabefilter verwendet + werden. Wenn Sie nur einen funktionierenden Ausgabefilter + benötigen, aber nicht den dafür benötigten + Code (zur Zeichenerkennung und zum Senden von Signalen) + schreiben wollen, sollten Sie sich <command>lpf</command> + näher ansehen. Sie können <command>lpf</command> + auch in ein Shell-Skript einbinden, um von Ihrem Drucker + benötigte Initialisierungscodes zu verarbeiten.</para> </sect3> <sect3 id="printing-advanced-lpf"> - <title>* <command>lpf</command>: Ein Textfilter</title> - - <para></para> + <title><command>lpf</command>: Ein Textfilter</title> + + <para>Der Textfilter (Eingabefilter) + <filename>/usr/libexec/lpr/lpf</filename> wird bereits mit + FreeBSD geliefert. Er erlaubt das Einrücken der + Ausgabe (über <command>lpr -i</command>), die + Übergabe von Zeichen-Literalen + (über <command>lpr -l</command>), das Anpassen der + Druckposition bei gelöschten Zeichen + (<foreignphrase>Backspaces</foreignphrase>) oder Tabulatoren, + sowie die Verrechnung gedruckter Seiten. Zusätzlich + kann dieser Textfilter auch als Ausgabefilter arbeiten.</para> + + <para><command>lpf</command> ist für viele verschiedene + Druckumgebungen geeignet. Zwar ist dieser Textfilter nicht + in der Lage, Initialisierungssequenzen an einen Drucker + zu senden, dieses Problem kann allerdings durch das Schreiben + und Ausführen eines Shell-Skripts (das diese Funktion + übernimmt) und das anschließende Aufrufen von + <command>lpf</command> gelöst werden.</para> + + <indexterm><primary>Seiten verrechnen</primary></indexterm> + <indexterm> + <primary>verrechnen</primary> + <secondary>Druckernutzung</secondary> + </indexterm> + + <para>Damit Sie <command>lpf</command> für die Verrechnung + von Druckaufträgen einsetzen können, müssen Sie + die korrekten Werte für die <literal>pw</literal>- und + <literal>pl</literal>-Fähigkeiten in + <filename>/etc/printcap</filename> eintragen. + <command>lpf</command> verwendet diese Werte, um festzustellen, + wieviel Text auf eine Seite passt und wieviele Seiten im + Druckauftrag enthalten sind. Weitere Informationen zur + Verrechnung der Druckernutzung enthält der Abschnitt + <link linkend="printing-advanced-acct">Die Druckernutzung + verrechnen</link>.</para> </sect3> </sect2> <sect2 id="printing-advanced-header-pages"> - <title>* Titelseiten</title> + <title>Deckblätter</title> + + <para>Wenn Sie <emphasis>viele</emphasis> Benutzer mit + verschiedenen Druckern verwalten müssen, sollten Sie + <emphasis>Deckblätter</emphasis> als notwendiges + Übel akzeptieren.</para> + + <indexterm> + <primary>Bannerseiten</primary> + <see>Deckblätter</see> + </indexterm> + + <indexterm><primary>Deckblätter</primary></indexterm> + + <para>Deckblätter (manchmal auch als + <emphasis>Bannerseiten</emphasis> oder + <emphasis>burst pages</emphasis> bezeichnet) geben an, wem + die Ausgabe eines Druckauftrags gehört. Sie werden + normalerweise in großen fetten Buchstaben gedruckt, + manchmal sogar mit zusätzlicher Umrandung, damit man + sie leichter von den tatsächlichen Seiten eines + Druckauftrages unterscheiden kann. Der Nachteil von + Deckblättern ist allerdings, dass es sich dabei um + eine zusätzliche zu druckende Seite handelt, die in + der Regel bereits nach wenigen Minuten wieder im Papierkorb + landet. Da aber für jeden Druckauftrag nur ein einziges + Deckblatt gedruckt wird, ist der Papierverbrauch in den + meisten Fällen tolerierbar.</para> + + <para>Das <application>LPD</application>-System kann + Deckblätter automatisch erzeugen, <emphasis>wenn</emphasis> + Ihr Drucker normalen Text direkt drucken kann. Haben Sie + hingegen einen &postscript;-Drucker, benötigen Sie ein + externes Programm, um die Deckblätter zu generieren + (Lesen Sie dazu auch den Abschnitt <link + linkend="printing-advanced-header-pages-ps">Deckblätter + auf &postscript;-Druckern erzeugen</link>.).</para> <sect3 id="printing-advanced-header-pages-enabling"> - <title>* Titelseiten aktivieren</title> + <title>Deckblätter aktivieren</title> + + <para>Im Abschnitt <link linkend="printing-simple">Einfache + Drucker-Konfiguration</link> haben wir die Ausgabe von + Deckblättern durch die die Angabe der Option + <literal>sh</literal> + (<foreignphrase>suppress header</foreignphrase>) in + <filename>/etc/printcap</filename> deaktiviert. Um die + Ausgabe von Deckblättern wieder zu aktivieren, + müssen Sie daher die <literal>sh</literal>-Fähigkeit + wieder entfernen.</para> + + <para>Das klingt zu einfach? Wo ist der Haken?</para> + + <para>Sie haben recht. Es ist <emphasis>möglich</emphasis>, + dass Sie einen Ausgabefilter verwenden müssen, um die + nötigen Initialisierungsstrings an den Drucker zu senden. + Das folgende Beispiel beschreibt einen Ausgabefilter für + PCL-kompatible Drucker von Hewlett Packard:</para> + + <programlisting>#!/bin/sh +# +# hpof - Ausgabefilter für PCL-kompatible Drucker von Hewlett Packard +# Installiert unter: /usr/local/libexec/hpof + +printf "\033&k2G" || exit 2 +exec /usr/libexec/lpr/lpf</programlisting> - <para></para> + <para>Geben Sie den Pfad des Ausgabefilters über die + <literal>of</literal>-Fähigkeit an. Weitere Informationen + finden Sie im Abschnitt <link + linkend="printing-advanced-of">Ausgabefilter</link>.</para> + + <para>Das nächste Beispiel beschreibt die Datei + <filename>/etc/printcap</filename> des bereits erwähnten + Druckers <literal>teak</literal>. Allerdings sind nun die + Ausgabe von Deckblättern sowie der vorhin beschriebene + Ausgabefilter enthalten:</para> + + <programlisting># +# /etc/printcap für den Rechner 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:</programlisting> + + <para>Wenn ein Anwender nun einen Druckauftrag an den Drucker + <literal>teak</literal> schickt, wird für jeden + Druckauftrag ein Deckblatt erstellt. Benötigt ein + Anwender keine Deckblätter, kann er die Ausgabe dieser + Seiten durch die Verwendung von <command>lpr -h</command> + unterdrücken. Weitere, für die Ausgabe von + Deckblättern interessante &man.lpr.1;-Optionen finden + Sie im Abschnitt <link + linkend="printing-lpr-options-misc">Deckblattoptionen</link>.</para> + + <note> + <para><application>LPD</application> verwendet ein + <foreignphrase>Form Feed</foreignphrase>, um das Deckblatt + abzuschließen. Wenn Ihr Drucker ein anderes Zeichen + verwendet, um eine Seite auszuwerfen, geben Sie dieses + über die <literal>ff</literal>-Fähigkeit in + <filename>/etc/printcap</filename> an.</para> + </note> </sect3> - <sect3 id="printing-advanced-header-pages-accounting"> - <title>* Abrechnung von Titelseiten</title> + <sect3 id="printing-advanced-header-pages-controlling"> + <title>Deckblätter kontrollieren</title> + + <para>Haben Sie die Ausgabe von Deckblättern aktiviert, + gibt <application>LPD</application> eine ganze Seite in + großen Buchstaben aus, die den Anwender, den + verwendeten Rechner sowie den Druckauftrag beschreiben. + Das folgende Beispiel ist ein Deckblatt für den + Druckauftrag outline, der von kelly auf dem Rechner + <hostid>rose</hostid> erstellt wurde:</para> + + <programlisting> 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 - <para></para> + + + + + + + Job: outline + Date: Sun Sep 17 11:04:58 1995</programlisting> + + <para><application>LPD</application> fügt ein + <foreignphrase>Form Feed</foreignphrase> an diesen Text an, + damit der eigentliche Druckauftrag auf einer neuen Seite + gestartet wird (es sei denn, Sie haben die + <literal>sf</literal>-Fähigkeit (<foreignphrase>suppress + form feeds</foreignphrase>) des jeweiligen Druckers in + <filename>/etc/printcap</filename> aktiviert).</para> + + <para>Wenn Sie dies wüschen, kann + <application>LPD</application> auch nur ein <emphasis>kurzes + Deckblatt</emphasis> ausgeben. Dazu verwenden Sie die + Option <literal>sb</literal> + (<foreignphrase>short banner</foreignphrase>) + in <filename>/etc/printcap</filename>. Dadurch erhalten Sie + ein Deckblatt ähnlich dem folgenden:</para> + + <programlisting>rose:kelly Job: outline Date: Sun Sep 17 11:07:51 1995</programlisting> + + <para>In der Voreinstellung druckt <application>LPD</application> + zuerst das Deckblatt und danach den eigentlichen Druckauftrag. + Um diese Reihenfolge umzukehren, geben Sie die Option + <literal>hl</literal> (<foreignphrase>header + last</foreignphrase>) in <filename>/etc/printcap</filename> + ans.</para> + </sect3> + + <sect3 id="printing-advanced-header-pages-accounting"> + <title>Deckblätter verrechnen</title> + + <para>Wenn Sie die in <application>LPD</application> eingebaute + Funktion zur Erstellung von Deckblättern verwenden, + werden Sie auf folgendes Paradigma stoßen: + Deckblätter müssen <emphasis>kostenlos</emphasis> + sein.</para> + + <para>Warum ist das so?</para> + + <para>Weil der Ausgabefilter das einzige externe Programm ist, + das zum Zeitpunkt der Erstellung des Deckblatts eine + Verrechnung durchführen könnte. Da Ausgabefilter + aber weder über <emphasis>Benutzer- noch über + Rechnerinformationen</emphasis> verfügen, ist es nicht + möglich, einen Druckauftrag einem bestimmten Benutzer + zuzuordnen. Da ein Benutzer die Ausgabe von Deckblättern + über <command>lpr -h</command> unterdrücken kann, + ist es auch nicht möglich, die Vorgabe <quote>verrechne + eine zusätzliche Seite</quote> in den Text- oder + Konvertierungsfilter (die über die zur Verrechnung + nötigen Benutzer- und Rechnerinformationen verfügen) + aufzunehmen, weil Benutzer sonst für Deckblätter + bezahlen müssten, die sie nicht gedruckt haben.</para> + + <para>Es ist <emphasis>ebenfalls nicht ausreichend</emphasis>, + jeden Filter eigene Deckblätter erzeugen zu lassen (und + sie dadurch verrechnen zu können). Wollte ein Benutzer + durch ein <command>lpr -h</command> die Ausgabe eines + Deckblattes unterdrücken, würde dieses nun trotzdem + verrechnet werden, da <application>LPD</application> keine + Informationen über die Verwendung der Option + <option>-h</option> an einen Filter weitergibt.</para> + + <para>Welche Möglichkeiten habe ich nun?</para> + + <para>Sie können:</para> + + <itemizedlist> + <listitem> + <para>Das Paradigma von <application>LPD</application> + einfach akzeptieren und die Deckblätter gratis + abgeben.</para> + </listitem> + + <listitem> + <para>Eine alternatives Drucksystem wie + <application>LPRng</application> installieren. Der + Abschnitt <link linkend="printing-lpd-alternatives"> + Alternativen zum Standard-Drucksystem</link> beschreibt + verschiedene Drucksysteme, die + <application>LPD</application> ersetzen können.</para> + </listitem> + + <listitem> + <para>Schreiben Sie einen <emphasis>intelligenten</emphasis> + Ausgabefilter. Normalerweise kümmert sich ein + Ausgabefilter nur um die Initialisierung des Druckers oder + um eine einfache Zeichenkonvertierung. Außerdem + eignet er sich für die Ausgabe von Deckblättern + und normalem Text, wenn Sie keinen Text- oder Eingabefilter + installiert haben. Haben Sie allerdings einen Textfilter + installiert, verwendet <application>LPD</application> + Ausgabefilter nur für die Ausgabe von Deckblättern. + Ein Ausgabefilter kann den Text des von + <application>LPD</application> erzeugten Deckblattes + untersuchen, um festzustellen, welcher Benutzer und welcher + Rechner den Druckauftrag gestartet hat. Leider weiß + der Ausgabefilter auch mit dieser Methode nicht, welche + Datei er zur Verrechnung verwenden soll (da der Name dieser + Datei durch die <literal>af</literal>-Fähigkeit + übergeben wird). Wenn Sie eine + Standard-Verrechnungsdatei verwenden, können Sie diese + in den Ausgabefilter einbauen. Um den Text des Deckblattes + zu untersuchen, verwenden Sie die + <literal>sh</literal>-Fähigkeit + (<foreignphrase>short header</foreignphrase>) in + <filename>/etc/printcap</filename>. Falls Ihnen das zuviel + Aufwand ist, freuen sich Ihre Benutzer sicher darüber, + wenn Sie ihnen den kostenlosen Druck von Deckblättern + erlauben.</para> + </listitem> + </itemizedlist> </sect3> <sect3 id="printing-advanced-header-pages-ps"> - <title>* Titelseiten auf &postscript;-Druckern</title> + <title>Deckblätter auf &postscript;-Druckern ausgeben</title> + + <para>In der Regel erzeugt + <application>LPD</application> ein Deckblatt mit normalem Text, + das für viele verschiedene Drucker geeignet ist. + Da &postscript;-Drucker normalen Text aber nicht drucken + können, ist die <application>LPD</application>-Funktion + zur Erstellung von Deckblättern auf diesen Drucker relativ + sinnlos.</para> + + <para>Es sei denn, jeder Text- und Konvertierungsfilter erzeugt + über den Benutzer- und Rechnernamen sein eigenes, für + den jeweiligen Drucker geeignetes Deckblatt. Das Problem + dieser Methode ist allerdings, dass ein Anwender auch dann ein + Deckblatt erhält, wenn er dies über + <command>lpr -h</command> verhindern wollte.</para> + + <para>Das folgende Skript benötigt drei Argumente (den + Loginnamen des Benutzers, den Rechnernamen und den Namen + des Druckauftrages), um daraus ein einfaches + &postscript;-Deckblatt zu erzeugen:</para> + + <programlisting>#!/bin/sh +# +# make-ps-header - ein PostScript-Deckblatt auf stdout ausgeben +# Installiert unter: /sr/local/libexec/make-ps-header +# + +# +# Die folgenden Werte sind PostScript-Einheiten (72 pro Zoll). +# Passen Sie diese Werte für A4 oder die von Ihnen verwendete +# Papiergröße an: +# +page_width=612 +page_height=792 +border=72 + +# +# Argumente prüfen +# +if [ $# -ne 3 ]; then + echo "Usage: `basename $0` <user> <host> <job>" 1>&2 + exit 1 +fi + +# +# Diese Werte in Variablen speichern, damit der PostScript-Code +# übersichtlicher wird. +# +user=$1 +host=$2 +job=$3 +date=`date` + +# +# Sende den PostScript-Code an stdout. +# +exec cat <<EOF +%!PS + +% +% Sicherstellen, dass es keine unerwünschten Wechselwirkungen mit +% dem folgenden Druckauftrag gibt. +% +save + +% +% Ziehe eine fette Umrandung. +% +$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 + +% +% Zeige den Benutzernamen groß und fett an. +% +/Helvetica-Bold findfont 64 scalefont setfont +$page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto +($user) show + +% +% Und nun zeige noch die Einzelheiten an. +% +/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 + +% +% Das wars. +% +restore +showpage +EOF </programlisting> + + <para>Nun kann jeder Konvertierungs- oder Textfilter dieses + Skript aufrufen, um zuerst das Deckblatt zu erzeugen und + danach den Druckauftrag zu drucken. Das nächste + Beispiel enthält den bereits beschriebenen + DVI-Konvertierungsfilter, der hier um die Funktion zur + Erzeugung eines Deckblatts erweitert wurde:</para> + + <programlisting>#!/bin/sh +# +# psdf - DVI-nach-PostScript - Druckerfilter +# Installiert unter: /usr/local/libexec/psdf +# +# Wird von lpd aufgerufen, wenn der Benutzer lpr -d verwendet. +# - <para></para> +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</programlisting> + + <para>Beachten Sie, dass der Filter die Liste der Argumente + überprüft, um den Benutzer- und den Rechnernamen + zu ermitteln. Dieser Vorgang ist prinzipiell für alle + Filter identisch. Der Textfilter benötigt allerdings + etwas andere Argumente, die im Abschnitt <link + linkend="printing-advanced-filters">Die Funktionsweise von + Filtern</link> beschrieben werden.</para> + + <para>Wie bereits erwähnt, deaktiviert diese Methode + leider die <quote>suppress header page</quote>-Option + (also die Option <option>-h</option>) von + <command>lpr</command>. Benutzer können danach den + Ausdruck eines Deckblattes nicht mehr verhindern, da der + angepasste Filter zu jedem Druckauftrag automatisch ein + Deckblatt erstellt.</para> + + <para>Damit ein Benutzer bei Bedarf den Ausdruck eines + Deckblatts dennoch unterbinden kann, müssen Sie + auch hier den im Abschnitt <link + linkend="printing-advanced-header-pages-accounting"> + Deckblätter verrechnen</link> beschriebenen + Trick einsetzen: Schreiben Sie einen Ausgabefilter, der + das von LPD erzeugte Deckblatt untersucht und daraus + eine &postscript;-Version erzeugt. Wenn der Benutzer + den Druckauftrag mit <command>lpr -h</command> verschickt, + erzeugt <application>LPD</application> kein Deckblatt, was + in weiterer Folge auch für Ihren Ausgabefilter gilt. + Soll hingegen ein Deckblatt erzeugt werden, liest der + Ausgabefilter den von <application>LPD</application> + übergebenen Text und erzeugt daraus ein für + Ihren &postscript;-Drucker geeignetes Deckblatt.</para> + + <para>Haben Sie Ihren &postscript;-Drucker über eine + serielle Verbindung angeschlossen, können Sie auch + <command>lprps</command> verwenden. In diesem Paket ist + mit <command>psof</command> auch ein Ausgabefilter + enthalten, der die eben beschriebenen Funktionen + übernehmen kann. Beachten Sie aber, dass Sie mit + <command>psof</command> keine Deckblätter verrechnen + können.</para> </sect3> </sect2> <sect2 id="printing-advanced-network-printers"> - <title>* Drucken im Netzwerk</title> + <title>Drucken über ein Netzwerk</title> + + <indexterm> + <primary>Drucker</primary> + <secondary>Netzwerk</secondary> + </indexterm> + + <indexterm><primary>Netzwerkdruck</primary></indexterm> + + <para>FreeBSD unterstützt das Drucken über ein + Netzwerk, also den Versand von Druckaufträgen an einen + entfernten Drucker. Man unterscheidet dabei zwei + Möglichkeiten:</para> + + <itemizedlist> + <listitem> + <para>Den Zugriff auf einen an einem entfernten Rechner + angeschlossenen Drucker. Sie konfigurieren dabei auf Ihrem + System einen Drucker, der über eine konventionelle + serielle oder parallele Verbindung an einem anderen Rechner + angeschlossen ist. Danach richten Sie + <application>LPD</application> auf dem entfernten System + so ein, dass andere Drucker über das Netzwerk auf + diesen Drucker zugreifen können. Der Abschnitt + <link linkend="printing-advanced-network-rm">Auf entfernten + Rechnern installierte Drucker</link> beschreibt, wie Sie + dazu vorgehen müssen.</para> + </listitem> + + <listitem> + <para>Den Zugriff auf einen direkt an ein Netzwerk + angeschlossenen Drucker. Ein solcher Drucker verfügt + anstelle (oder zusätzlich zu) einer parallelen oder + seriellen Schnittstelle über eine Netzwerkschnittstelle. + Ein solcher Drucker kann sich auf zwei Arten verhalten:</para> + + <itemizedlist> + <listitem> + <para>Er kann das <application>LPD</application>-Protokoll + direkt unterstützen und sogar Druckjobs von entfernten + Rechner verwalten. In diesem Fall verhält sich der + Drucker wie ein normaler Rechner, auf dem + <application>LPD</application> läuft. Lesen Sie den + Abschnitt <link linkend="printing-advanced-network-rm"> + Auf entfernten Rechnern installierte Drucker</link>, um + einen solchen Drucker einzurichten.</para> + </listitem> + + <listitem> + <para>Er könnte Verbindungen über ein + Netzwerk unterstützen. In diesem Fall + <quote>verbinden</quote> Sie den Drucker mit einem + Rechner Ihres Netzwerks, der danach für die + Verwaltung von Druckaufträgen sowie den + tatsächlichen Druck verantwortlich ist. Der + Abschnitt <link + linkend="printing-advanced-network-net-if">Drucker mit + direkter TCP-Schnittstelle</link> enthält + Hinweise zur Installation derartiger Drucker.</para> + </listitem> + </itemizedlist> + </listitem> + </itemizedlist> <sect3 id="printing-advanced-network-rm"> - <title>* Drucker, die an einen anderen Computer angeschlossen - sind</title> + <title>Auf entfernten Rechnern installierte Drucker</title> + + <para>Das <application>LPD</application>-Drucksystem + unterstützt den Versand von Druckaufträgen an + andere Rechner, auf denen entweder + <application>LPD</application> läuft oder die zu + <application>LPD</application> kompatibel sind. Dadurch + können Sie einen Drucker auf einem Rechner installieren + und von anderen Rechnern des Netzwerks darauf zugreifen. + Außerdem werden Drucker mit direkter TCP-Schnittstelle + unterstützt, wenn diese das + <application>LPD</application>-Protokoll + unterstützen.</para> + + <para>Um diese Art des Druckens über ein Netzwerk zu + aktivieren, installieren Sie zuerst Ihren Drucker auf einem + Rechner Ihres Netzwerks, dem sogenannten + <emphasis>printer host</emphasis>. Die dazu nötigen + Schritte werden im Abschnitt <link linkend="printing-simple"> + Einfache Drucker-Konfiguration</link> beschrieben. Falls + Sie eine erweiterte Druckerkonfiguration benötigen, + sollten Sie auch den Abschnitt <link + linkend="printing-advanced">Erweiterte + Drucker-Konfiguration</link> lesen. Danach testen Sie, ob + der Drucker alle von Ihnen aktivierten + <application>LPD</application>-Fähigkeiten + unterstützt. Stellen Sie auch sicher, dass Ihr + <emphasis>lokales System</emphasis> berechtigt ist, den + <application>LPD</application>-Dienst auf dem + <emphasis>entfernten System</emphasis> zu nutzen (lesen + Sie dazu den Abschnitt <link + linkend="printing-advanced-restricting-remote"> + Druckaufträge auf entfernten Druckern + beschränken</link>).</para> + + <indexterm> + <primary>Drucker</primary> + <secondary>Netzwerk</secondary> + </indexterm> + + <indexterm><primary>Netzwerkdrucker</primary></indexterm> + + <para>Wenn Sie einen Drucker mit einer zu + <application>LPD</application> kompatiblen + Netzwerkschnittstelle verwenden, handelt es sich beim + <emphasis>printer host</emphasis> um den Drucker selbst, + und der <emphasis>Druckername</emphasis> ist der von Ihnen + für diesen Drucker vorgegebene Name. Lesen Sie die + Dokumentation Ihres Druckers und/oder der Netzwerkschnittstelle + Ihres Druckers, um dies zu klären.</para> + + <tip> + <para>Wenn Sie einen Hewlett Packard Laserjet-Drucker + verwenden, sorgt der Druckername <literal>text</literal> + für eine automatische LF-zu-CRLF-Konvertierung. In + diesem Fall wird das <filename>hpif</filename>-Skript + nicht benötigt.</para> + </tip> + + <para>Danach müssen Sie auf jedem Rechner, der auf diesen + Drucker zugreifen soll, einen entsprechenden Eintrag in + deren <filename>/etc/printcap</filename> aufnehmen. Dazu + werden folgende Informationen benötigt:</para> + + <orderedlist> + <listitem> + <para>Der Name des Eintrags. Entspricht in der Regel dem + Eintrag auf dem <emphasis>printer host</emphasis>.</para> + </listitem> + + <listitem> + <para>Lassen Sie den Eintrag für die + <literal>lp</literal>-Fähigkeit leer, schreiben Sie + also <literal>:lp=:</literal>.</para> + </listitem> + + <listitem> + <para>Erzeugen Sie ein Spooling-Verzeichnis und geben Sie + dessen Pfad über die + <literal>sd</literal>-Fähigkeit an. + <application>LPD</application> speichert Ihre + Druckaufträge in diesem Verzeichnis, bevor sie an den + Drucker geschickt werden.</para> + </listitem> + + <listitem> + <para>Geben Sie den Namen des <emphasis>printer + hosts</emphasis> über die + <literal>rm</literal>-Fähigkeit an.</para> + </listitem> + + <listitem> + <para>Geben Sie den Namen des Druckers (auf dem + <emphasis>printer host</emphasis>) über die + <literal>rp</literal>-Fähigkeit an.</para> + </listitem> + </orderedlist> + + <para>Das ist alles. Sie benötigen weder + Konvertierungsfilter, noch Seitengrößen oder + sonstige Angaben in Ihrer lokalen + <filename>/etc/printcap</filename>.</para> + + <para>Dazu ein Beispiel. Der Rechner <hostid>rose</hostid> + verfügt über zwei Drucker, <literal>bamboo</literal> + und <literal>rattan</literal>. Wir wollen nun allen Benutzern + des Rechners <hostid>orchid</hostid> erlauben, diese Drucker + zu verwenden. Es folgt nun wieder die bereits aus dem Abschnitt + <link linkend="printing-advanced-header-pages-enabling"> + Deckblätter verwenden</link> bekannte + <filename>/etc/printcap</filename> für den Rechner + <hostid>orchid</hostid>. Diese enthielt bereits einen Eintrag + für den Drucker <literal>teak</literal>. Zusätzlich + tragen wir nun die zwei Drucker des Rechners + <hostid>rose</hostid> ein:</para> + + <programlisting># +# /etc/printcap für den Rechner orchid - mit zusätzlichen +# Einträgen für die (entfernten) Drucker auf dem Rechner rose +# - <para></para> +# +# teak ist ein lokaler Drucker und direkt mit orchid verbunden: +# +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 ist mit rose verbunden, Druckaufträge für rattan gehen daher +# an den Rechner rose: +# +rattan|line|diablo|lp|Diablo 630 Line Printer:\ + :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan: + +# +# bamboo ist ebenfalls mit rose verbunden: +# +bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ + :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:</programlisting> + + <para>Nun müssen wir nur noch die Spooling-Verzeichnisse + auf dem Rechner <hostid>orchid</hostid> erzeugen:</para> + + <screen>&prompt.root; <userinput>mkdir -p /var/spool/lpd/rattan /var/spool/lpd/bamboo</userinput> +&prompt.root; <userinput>chmod 770 /var/spool/lpd/rattan /var/spool/lpd/bamboo</userinput> +&prompt.root; <userinput>chown daemon:daemon /var/spool/lpd/rattan /var/spool/lpd/bamboo</userinput></screen> + + <para>Damit können Benutzer des Rechners + <hostid>orchid</hostid> die Drucker <literal>rattan</literal> + und <literal>bamboo</literal> verwenden. Gibt ein Benutzer + auf <hostid>orchid</hostid> beispielsweise + + <screen>&prompt.user; <userinput>lpr -P bamboo -d sushi-review.dvi</userinput></screen> + + ein, würde <application>LPD</application> auf dem Rechner + <hostid>orchid</hostid> den Druckauftrag in das + Spooling-Verzeichnis <filename>/var/spool/lpd/bamboo</filename> + kopieren und feststellen, dass es sich um einen DVI-Auftrag + handelt. Sobald <hostid>rose</hostid> über genug freien + Platz im <literal>bamboo</literal>-Spooling-Verzeichnis + verfügt, würden die beiden + <application>LPDs</application> die Datei auf den Rechner + <hostid>rose</hostid> transferieren. Diese Datei verbleibt + danach in der Druckerwarteschlange des Rechners + <hostid>rose</hostid>, bis der Ausdruck der Datei + abgeschlossen ist. Vor dem Ausdruck würde die Datei + noch von DVI nach &postscript; konvertiert werden, da es sich + bei <literal>bamboo</literal> um einen an den Rechner + <hostid>rose</hostid> angeschlossenen &postscript;-Drucker + handelt.</para> </sect3> <sect3 id="printing-advanced-network-net-if"> - <title>* Drucker mit direkter TCP-Schnittstelle</title> + <title>Drucker mit direkter TCP-Schnittstelle</title> + + <para>Wenn Sie eine Netzwerkkarte für Ihren Drucker kaufen, + können Sie zwei verschiedene Versionen wählen: + Eine Version, die ein Drucksystem emuliert (die teure Version), + oder eine Version, die sich verhält, als wäre der + Drucker an eine serielle oder parallele Schnittstelle + angeschlossen (die billige Version). Dieser Abschnitt + beschreibt die billige Variante. Bevorzugen Sie die teure + Variante, sollten Sie den Abschnitt <link + linkend="printing-advanced-network-rm">Auf entfernten + Rechnern installierte Drucker</link> nochmals lesen.</para> + + <para>Das Format der Datei <filename>/etc/printcap</filename> + erlaubt es Ihnen, anzugeben, welche serielle oder parallele + Schnittstelle verwendet werden soll und (falls Sie eine + serielle Schnittstelle verwenden) welche Parameter (Baudrate, + Flußkontrolle, Behandlung von Tabulatoren, Konvertierung + von neuen Zeilen und andere mehr) Sie verwenden wollen. Es + gibt allerdings keine Möglichkeit, eine Verbindung zu + einem Drucker zu definieren, der einen TCP/IP- oder einem + anderem Netzwerkport auf Druckaufträge hin abfragt.</para> + + <para>Um Daten an einen Netzwerkdrucker zu schicken, müssen + Sie daher ein Kommunikationsprogramm entwickeln, das von + Text- und Konvertierungsfiltern aufgerufen werden kann. Dazu + ein Beispiel. Das Skript <command>netprint</command> + übernimmt alle Daten von der Standardeingabe und schickt + sie an einen Netzwerkdrucker. <command>netprint</command> + erwartet zwei Argumente: Als erstes Argument wird der Hostname + des Druckers und als zweites Argument der Port, über den + die Verbindung erfolgen soll, übergeben. Dabei handelt + sich allerdings um eine Ein-Wege-Kommunikation (von FreeBSD zum + Drucker). Viele Netzwerkdrucker unterstützen aber auch + eine Zwei-Wege-Kommunikation, deren Vorteile (Abfrage des + Druckerstatus, die Verrechnung von Druckaufträgen und + andere mehr) Sie vielleicht nutzen wollen.</para> + + <programlisting>#!/usr/bin/perl +# +# netprint - Textfilter für einen Netzwerkdrucker +# Installiert unter: /usr/local/libexec/netprint +# +$#ARGV eq 1 || die "Usage: $0 <printer-hostname> <port-number>"; - <para></para> +$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; </programlisting> + + <para>Dieses Skript kann für verschiedene Filter + eingesetzt werden. Das folgende Beispiel verwendet den + an ein Netzwerk angeschlossenen Zeilendrucker Diablo 750-N. + Dieser Drucker empfängt zu druckende Daten auf dem + Port 5100. Der Hostname des Druckers lautet scrivener. + Daher sieht der Textfilter für diesen Drucker wie folgt + aus:</para> + + <programlisting>#!/bin/sh +# +# diablo-if-net - Textfilter für den Diablo-Drucker `scrivener'. +# Drucker lauscht auf Port 5100. +# Installiert unter: /usr/local/libexec/diablo-if-net +# +exec /usr/libexec/lpr/lpf "$@" | /usr/local/libexec/netprint scrivener 5100</programlisting> </sect3> </sect2> <sect2 id="printing-advanced-restricting"> - <title>* Einschränken der Druckerbenutzung</title> + <title>Den Druckerzugriff beschränken</title> + + <indexterm> + <primary>Drucker</primary> + <secondary>den Zugriff beschränken</secondary> + </indexterm> + + <para>Dieser Abschnitt beschreibt, wie Sie den Druckerzugriff + beschränken können. Das + <application>LPD</application>-Drucksystem erlaubt Ihnen die + Kontrolle darüber, wer lokal oder über ein Netzwerk + auf einen Drucker zugreifen darf, ob mehrere Kopien erstellt + werden dürfen und wie groß Druckaufträge und + Druckerwarteschlangen werden dürfen.</para> <sect3 id="printing-advanced-restricting-copies"> - <title>* Mehrfache Kopien verbieten</title> + <title>Den Ausdruck von mehreren Kopien verhindern</title> + + <para>Das <application>LPD</application>-System macht es dem + einzelnen Benutzer einfach, mehrere Kopien einer Datei zu + drucken. So werden mit <command>lpr -#5</command> + beispielsweise fünf Kopien jeder Datei des Druckauftrags + erstellt. Ob dies gut oder schlecht ist, müssen Sie + selbst entscheiden.</para> + + <para>Wenn Sie der Meinung sind, dass multiple Kopien eine + unnötige Beanspruchung Ihres Druckers darstellen, + sollten Sie die <option>-#</option>-Opion von &man.lpr.1; + deaktivieren, indem Sie die + <literal>sc</literal>-Fähigkeit in Ihre + <filename>/etc/printcap</filename> aufnehmen. Verwendet ein + Benutzer dennoch die Option <option>-#</option>, erhält + er daraufhin folgende Meldung:</para> + + <screen>lpr: multiple copies are not allowed</screen> + + <para>Wenn Sie den Zugriff auf einen entfernten Drucker + (wie in Abschnitt <link + linkend="printing-advanced-network-rm">Auf entfernten + Rechnern installierte Drucker</link> beschrieben) konfiguriert + haben, müssen Sie die <literal>sc</literal>-Fähigkeit + auch auf den entfernten Rechnern, die auf Ihren Drucker + zugreifen dürfen, in <filename>/etc/printcap</filename> + eintragen, damit Benutzer diese Vorgabe nicht durch den Wechsel + auf einen anderen Rechner umgehen können.</para> + + <para>Dazu ein Beispiel. Es handelt sich dabei um die Datei + <filename>/etc/printcap</filename> auf dem Rechner + <hostid>rose</hostid>. Der Drucker <literal>rattan</literal> + soll multiple Kopien zulassen, auf dem Laserdrucker + <literal>bamboo</literal> sollen multiple Kopien hingegen + nicht erlaubt sein, daher müssen wir für diesen + Drucker die <literal>sc</literal>-Fähigkeit + aktivieren:</para> + + <programlisting># +# /etc/printcap für den Rechner rose - multiple Kopien auf bamboo verbieten +# +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/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\ + :if=/usr/local/libexec/psif:\ + :df=/usr/local/libexec/psdf:</programlisting> + + <para>Außerdem müssen wir noch die + <literal>sc</literal>-Fähigkeit in der Datei + <filename>/etc/printcap</filename> des Rechners + <hostid>orchid</hostid> aktivieren. Parallel dazu untersagen + wir das Erstellen von multiplen Kopien auf dem Drucker + <literal>teak</literal>:</para> + + <programlisting># +# /etc/printcap für den Rechner orchid - lokal machen wir keine multiplen Kopien +# Lokaler Drucker teak oder entfernter Drucker 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: - <para></para> +bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ + :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:sc:</programlisting> + + <para>Durch die Verwendung der + <literal>sc</literal>-Fähigkeit ist zwar die Verwendung + von <command>lpr -#</command> nicht mehr möglich, ein + Benutzer kann aber weiterhin &man.lpr.1; mehrmals hintereinander + aufrufen oder eine Datei mehrfach in den gleichen Druckauftrag + aufnehmen:</para> + + <screen>&prompt.user; <userinput>lpr forsale.sign forsale.sign forsale.sign forsale.sign forsale.sign</userinput></screen> + + <para>Auch dieser Mißbrauch Ihres Druckers kann verhindert + werden, falls Sie dies wünschen. Diese Maßnahmen + werden in diesem Abschnitt allerdings nicht behandelt.</para> </sect3> <sect3 id="printing-advanced-restricting-access"> - <title>* Zugriff auf einzelne Drucker - einschränken</title> + <title>Den Zugriff auf bestimmte Drucker beschränken</title> + + <para>Sie können angeben, wer auf welchem Drucker drucken + darf, wenn Sie den Gruppenmechanismus von &unix; in Kombination + mit der <literal>rg</literal>-Fähigkeit von + <filename>/etc/printcap</filename> einsetzen. Weisen Sie dazu + alle Benutzer, die auf einen Drucker zugreifen dürfen, + einer gemeinsamen Gruppe zu und geben Sie diese Gruppe + über die <literal>rg</literal>-Fähigkeit an.</para> + + <para>Benutzer, die dieser Gruppe nicht angehören (dies + gilt auch für <username>root</username>), erhalten die + Meldung + + <errorname>lpr: Not a member of the restricted group</errorname> + + wenn Sie diesen Drucker verwenden wollen.</para> + + <para>Analog zur <literal>sc</literal>-Fähigkeit + (<emphasis>suppress multiple copies</emphasis>) müssen + Sie die <literal>rg</literal>-Fähigkeit auch auf allen + entfernten Rechnern aktivieren, die auf Ihren Drucker + zugreifen dürfen (lesen Sie dazu auch den Abschnitt + <link linkend="printing-advanced-network-rm">Auf entfernten + Rechnern installierte Drucker</link>).</para> + + <para>Wollen wir beispielsweise allen Benutzern die Verwendung + des Druckers <literal>rattan</literal>, aber nur Mitgliedern + der Gruppe <groupname>artists</groupname> die Verwendung des + Druckers <literal>bamboo</literal> erlauben, passen wir die + bereits bekannte <filename>/etc/printcap</filename> des + Rechners <hostid>rose</hostid> entsprechend an:</para> + + <programlisting># +# /etc/printcap des Rechners rose - Zugriffsbeschränkung für 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/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\ + :if=/usr/local/libexec/psif:\ + :df=/usr/local/libexec/psdf:</programlisting> + + <para>Die Datei <filename>/etc/printcap</filename> des Rechners + <hostid>orchid</hostid> wird dadurch nicht beeinflusst. Jeder + Benutzer des Rechners <hostid>orchid</hostid> kann also + weiterhin den Drucker <literal>bamboo</literal> verwenden.</para> - <para></para> + <note> + <para>Für jeden Drucker kann nur eine einzige + priviligierte Gruppe erstellt werden.</para> + </note> </sect3> - <sect3 id="printing-advanced-restricting-sizes"> - <title>* Die Größe der Druckaufträge - beschränken</title> + <sect3 id="printing-advanced-restricting-sizes"> + <title>Die Größe von Druckaufträgen kontrollieren</title> - <para></para> + <indexterm><primary>Druckaufträge</primary></indexterm> + + <para>Wenn Sie viele Benutzer haben, die Ihre Drucker verwenden + dürfen, werden Sie wahrscheinlich eine Obergrenze für + Dateien angeben wollen, die Benutzer an Ihren Drucker senden + dürfen. Dies ist sinnvoll, weil Speicherplatz + für Spooling-Verzeichnisse nur begrenzt verfügbar + ist und Sie stets sicherstellen müssen, dass auch die + Druckaufträge anderer Benutzer verarbeitet werden + können.</para> + + <indexterm> + <primary>Druckauftrag</primary> + <secondary>kontrollieren</secondary> + </indexterm> + + <para><application>LPD</application> verwendet die + <literal>mx</literal>-Fähigkeit, um die maximal erlaubte + Größe von Dateien eines Druckauftrags anzugeben. + Dieser Wert wird in 1.024 Bytes großen + <literal>BUFSIZ</literal>-Blöcken angegeben. Setzen Sie + diesen Wert auf Null, gibt es keine + Größenbeschränkung. Existiert die + <literal>mx</literal>-Fähigkeit hingegen überhaupt + nicht, so gilt ein Limit von 1.000 Blöcken.</para> + + <note> + <para>Diese Limits gelten nur für die Größe + von <emphasis>Dateien</emphasis> innerhalb eines + Druckauftrages, <emphasis>nicht aber</emphasis> für + die Gesamtgröße des Druckauftrags.</para> + </note> + + <para><application>LPD</application> lehnt eine Datei auch dann + nicht ab, wenn sie das Limit des Druckers überschreitet. + Vielmehr wird die Datei bis zum Erreichen des Limits in die + Warteschlange geladen, danach wird der Druck gestartet. Der + das Limit überschreitende Rest wird hingegen verworfen + und nicht gedruckt!</para> + + <para>Mit diesem Wissen können wir nun Limits für die + Drucker <literal>rattan</literal> und <literal>bamboo</literal> + definieren. Da &postscript;-Dateien der Gruppe + <groupname>artists</groupname> in der Regel sehr groß + sind, setzen wir ein Limit von fünf Megabytes. Für + den Druck von normalen Text (auf dem Drucker + <literal>rattan</literal>) setzen wir hingegen kein Limit:</para> + + <programlisting># +# /etc/printcap für den Rechner rose +# + +# +# Kein Größenlimit: +# +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: + +# +# Ein Limit von 5 Megabyte: +# +bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ + :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\ + :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\ + :if=/usr/local/libexec/psif:\ + :df=/usr/local/libexec/psdf:</programlisting> + + <para>Auch diese Limits gelten nur für lokale Benutzer. + Wenn Sie den Zugriff auf Ihren Drucker auch über ein + Netzwerk erlauben wollen, unterliegen die Benutzer dieser + Rechner diesen Limits nicht. Daher müssen Sie diese + Limits über die <literal>mx</literal>-Fähigkeit + auch in der <filename>/etc/printcap</filename> jedes + Rechners definieren, der Ihren Drucker verwenden darf. + Der Abschnitt <link linkend="printing-advanced-network-rm"> + Auf entfernten Rechnern installierte Drucker</link> + enthält weitere Informationen zum Drucken über + ein Netzwerk.</para> + + <para>Es gibt eine weitere Möglichkeit, um die + Größe von Druckaufträgen von entfernten + Rechnern zu beschränken. Lesen Sie dazu den Abschnitt + <link linkend="printing-advanced-restricting-remote"> + Druckaufträge von entfernten Rechnern + beschränken</link>.</para> </sect3> <sect3 id="printing-advanced-restricting-remote"> - <title>* Zugriff von Computern im Netzwerk + <title>Druckaufträge von entfernten Rechnern beschränken</title> - <para></para> + <para>Das <application>LPD</application>-System bietet mehrere + Möglichkeiten, um Druckaufträge zu beschränken, + die auf entfernten Rechnern gestartet wurden:</para> + + <variablelist> + <varlistentry> + <term>Rechner beschränken</term> + + <listitem> + <para>Sie können festlegen, von welchen entfernten + Rechnern ein lokaler <application>LPD</application> + Druckaufträge annimmt, indem Sie die Dateien + <filename>/etc/hosts.equiv</filename> sowie + <filename>/etc/hosts.lpd</filename> entsprechend + anpassen. <application>LPD</application> + überprüft diese Dateien, um festzustellen, + ob ein Druckauftrag von einem Rechner stammt, der in + einer dieser Dateien aufgeführt ist. Ist dies + nicht der Fall, lehnt <application>LPD</application> + den Druckauftrag ab.</para> + + <para>Der Aufbau dieser Datei ist sehr einfach: Jede + Zeile enthält einen einzigen Rechnernamen. + Beachten Sie aber, dass + <filename>/etc/hosts.equiv</filename> auch vom + &man.ruserok.3;-Protokoll benötigt wird und + Änderungen dieser Datei auch Programme wie + &man.rsh.1; und &man.rcp.1; beeinflussen + können.</para> + + <para>Das folgende Beispiel beschreibt die Datei + <filename>/etc/hosts.lpd</filename> auf dem Rechner + <hostid>rose</hostid>:</para> + + <programlisting>orchid +violet +madrigal.fishbaum.de</programlisting> + + <para>Durch diese Vorgaben akzeptiert <hostid>rose</hostid> + nur noch Druckaufträge von den Rechnern + <hostid>orchid</hostid>, <hostid>violet</hostid>, + und <hostid role="fqdn">madrigal.fishbaum.de</hostid>. + Versucht ein anderer Rechner, auf den + <application>LPD</application> von + <hostid>rose</hostid> zuzugreifen, wird dieser + Druckauftrag abgelehnt werden.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>Größenbeschränkungen</term> + + <listitem> + <para>Sie können festlegen, wieviel Speicherplatz + auf dem Dateisystem, in dem das Spooling-Verzeichnis + liegt, mindestens frei sein muss. Dazu erzeugen Sie im + Spooling-Verzeichnis Ihres lokalen Druckers die Datei + <filename>minfree</filename>. In dieser Datei geben + Sie an, wieviele 512 Byte große + Blöcke auf Ihrer Platte frei sein müssen, + damit ein Druckauftrag von einem entfernten Rechner + akzeptiert wird.</para> + + <para>Durch diese Vorgabe können Sie sicherstellen, + dass Benutzer von entfernten Rechnern Ihr Dateisystem + nicht <quote>zumüllen</quote>. Außerdem + können Sie damit lokale Benutzer bevorzugen, da + diese auch dann noch Druckaufträge erteilen + dürfen, wenn der verfügbare Plattenplatz + unter das in der Datei <filename>minfree</filename> + definierte Limit gefallen ist.</para> + + <para>Legen wir nun die Datei <filename>minfree</filename> + für den Drucker <literal>bamboo</literal> an. Zuerst + untersuchen wir <filename>/etc/printcap</filename>, um + das Spooling-Verzeichnis für diesen Drucker zu + finden. Das folgende Beispiel zeigt den Eintrag + für den Drucker <literal>bamboo</literal>:</para> + + <programlisting>bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ + :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\ + :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:mx#5000:\ + :if=/usr/local/libexec/psif:\ + :df=/usr/local/libexec/psdf:</programlisting> + + <para>Das Spooling-Verzeichnis wird über die + <literal>sd</literal>-Fähigkeit festgelegt. + Wir wollen, dass mindestens drei Megabyte + (also 6144 Blöcke) freier Plattenplatz + vorhanden sein müssen, damit + <application>LPD</application> einen Druckauftrag + von einem entfernten Rechner akzeptiert:</para> + + <screen>&prompt.root; <userinput>echo 6144 > /var/spool/lpd/bamboo/minfree</userinput></screen> + </listitem> + </varlistentry> + + <varlistentry> + <term>Benutzer beschränken</term> + + <listitem> + <para>Sie können auch festlegen, welche entfernten + Benutzer Ihren lokalen Drucker verwenden dürfen, + indem Sie die <literal>rs</literal>-Fähigkeit in + <filename>/etc/printcap</filename> definieren. Wenn + für den Eintrag eines lokalen Druckers die + <literal>rs</literal>-Fähigkeit definiert ist, + akzeptiert <application>LPD</application> + Druckaufträge von entfernten Rechnern nur dann, + <emphasis>wenn</emphasis> der Benutzer, der den + Druckauftrag gesendet hat, auch über ein + gleichnamiges Benutzerkonto auf dem lokalen Rechner + verfügt. Ist dies nicht der Fall, lehnt + <application>LPD</application> den Druckauftrag ab.</para> + + <para>Diese Fähigkeit ist besonders in Umgebungen + nützlich, in denen beispielsweise verschiedene + Abteilungen ein gemeinsames Netzwerk teilen, wobei + einige Benutzer zu mehreren Abteilungen gehören. + Haben diese Benutzer auch ein Benutzerkonto auf Ihrem + System, so können sie Ihren Drucker auch von + ihrer eigenen Abteilung aus nutzen. Wollen Sie zwar + den Zugriff auf Ihren Drucker, <emphasis>nicht + aber</emphasis> den Zugriff auf Ihre übrigen + Ressourcen erlauben, können Sie für diese + Benutzer einen sogenannten <quote>Token-Account</quote> + ohne Heimatverzeichnis und mit einer nutzlosen Shell + wie <filename>/usr/bin/false</filename> erstellen.</para> + </listitem> + </varlistentry> + </variablelist> </sect3> </sect2> <sect2 id="printing-advanced-acct"> - <title>* Abrechnungsdaten aufzeichnen</title> + <title>Die Druckernutzung verrechnen</title> + + <indexterm> + <primary>Drucker</primary> + <secondary>verrechnen</secondary> + </indexterm> + + <para>Sie wollen die Nutzung Ihrer Drucker kostenpflichtig machen? + Warum auch nicht? Papier und Tinte kosten Geld. Auch eine + regelmäßige Wartung muss bezahlt werden. Nachdem Sie + einen Preis festgelegt haben, den Sie für jede + gedruckte Seite verrechnen wollen, stellt sich die Frage, wie Sie + die Verrechnung der Druckkosten technisch umsetzen + können.</para> + + <para>Die schlechte Nachricht ist, dass das + <application>LPD</application>-System dabei wenig hilfreich ist. + Die Verrechnung von Druckaufträgen hängt stark vom + verwendeten Drucker, den zu druckenden Dateiformaten und + <emphasis>Ihren</emphasis> Anforderungen an die Verrechnung + der Druckernutzung ab.</para> + + <para>Um die Verrechnung der Druckernutzung zu implementieren, + müssen Sie sowohl Ihre Textfilter (um den Druck von + normalem Text abzurechnen) als auch Ihre Konvertierungsfilter + (um den Druck sonstiger Formate abzurechnen) entsprechend + anpassen, damit diese die Zahl der gedruckten Seiten + ermitteln können. Leider können Sie dazu nicht + einen einfachen Ausgabefilter verwenden, da diese die + Verrechnung von Druckaufträgen nicht unterstützen. + Weitere Informationen zu den verschiedenen Filterarten finden + Sie im Abschnitt <link + linkend="printing-advanced-filter-intro">Filter</link>.</para> + + <para>Prinzipiell gibt es zwei Möglichkeiten, wie Sie diese + Verrechnung umsetzen können:</para> + + <itemizedlist> + <listitem> + <para>Die <emphasis>periodische Verrechnung</emphasis> wird + häufiger verwendet, da sie einfacher zu implementieren + ist. Wenn ein Druckauftrag ausgeführt wird, + schreibt der Filter den Benutzer, den verwendeten Rechner + sowie die Anzahl der gedruckten Seiten in eine + Verrechnungsdatei. Nach einem zu definierenden Zeitraum + werden diese Dateien ausgewertet, die Gesamtzahl der + von einem Benutzer gedruckten Seiten bestimmt und dem + jeweiligen Benutzer verrechnet. Danach werden alle + Protokolldateien zurückgesetzt, und die Protokollierung + beginnt von Neuem.</para> + </listitem> + + <listitem> + <para>Die <emphasis>unmittelbare Verrechnung</emphasis> wird + nur selten eingesetzt, das sie schwieriger zu implementieren + ist. Bei dieser Methode wird der Druckauftrag verrechnet, + sobald der Drucker verwendet wird. Dadurch können Sie + beispielsweise verhindern, dass ein Benutzer seine erlaubte + <quote>Druckquote</quote> überschreitet. + Zusätzlich können Sie es Ihren Benutzern erlauben, + deren Druckquote abzufragen oder anzupassen. Allerdings + benötigen Sie eine Datenbank, um Benutzer und deren + Quoten verwalten zu können.</para> + </listitem> + </itemizedlist> + + <para>Das <application>LPD</application>-Drucksystem + unterstützt beide Methoden. Allerdings müssen Sie + die benötigen Filter sowie den zur Verrechnung nötigen + Code selbst bereitstellen. Der Vorteil dabei ist allerdings, + dass Sie in der Wahl Ihrer Verrechnungsmethode äußerst + flexibel sind. So können Sie sich etwa für die + periodische oder die unmittelbare Verrechnung entscheiden. Sie + können festlegen, welche Informationen Sie erfassen wollen: + Benutzernamen, Rechnernamen, die Art der Druckaufträge, + die Anzahl der gedruckten Seiten, den Papierverbrauch, den + Zeitaufwand für die Bearbeitung eines Druckauftrages und + viele andere mehr. Dazu müssen Sie Ihre Filter entsprechend + anpassen, damit diese Informationen erfassst und gespeichert + werden.</para> <sect3> - <title>* Einfache Abrechnung</title> + <title>Kurzanleitung für die Implementierung der + Druckerverrechnung</title> + + <para>FreeBSD bietet Ihnen zwei Programme, um eine periodische + Verrechnung rasch zu implementieren. Dabei handelt es sich + um den im Abschnitt <link + linkend="printing-advanced-lpf">lpf: Ein Textfilter</link> + behandelten Textfilter sowie um &man.pac.8;, ein Programm, + mit dem Sie Einträge aus Verrechnungsdateien auslesen + und aufsummieren können.</para> + + <para>Wie bereits im Abschnitt <link + linkend="printing-advanced-filters">Filter</link> erwähnt, + startet <application>LPD</application> den Text- oder + Konvertierungsfilter mit dem Namen der Verrechnungsdatei als + Argument. Dadurch weiß der Filter, in welche Datei + er einen Verrechnungseintrag schreiben soll. Der Name dieser + Datei wird über die <literal>af</literal>-Fähigkeit + in <filename>/etc/printcap</filename> festgelegt. Falls die + Datei nicht über einen absoluten Pfad angegeben wird, + handelt es sich um einen Pfad relativ zum + Spooling-Verzeichnis.</para> + + <para><application>LPD</application> startet + <command>lpf</command> mit den Argumenten <emphasis>page width + und page length</emphasis>, die über die + <literal>pw</literal>- und <literal>pl</literal>-Fähigkeit + definiert werden. <command>lpf</command> verwendet diese + Argumente danach, um den Papierverbrauch zu bestimmen. Nachdem + die Datei an den Drucker geschickt wurde, wird ein + Verrechnungseintrag in die Verrechnungsdatei geschrieben. Ein + solcher Eintrag sieht dabei ähnlich den folgenden aus:</para> + + <programlisting>2.00 rose:andy +3.00 rose:kelly +3.00 orchid:mary +5.00 orchid:mary +2.00 orchid:zhang</programlisting> + + <para>Sie sollten für jeden Drucker eine eigene + Verrechnungsdatei verwenden, da <command>lpf</command> + die Verrechnungsdatei nicht sperren kann. Sind also + gleichzeitig zwei <command>lpf</command>-Instanzen aktiv, + kann es dazu kommen, dass Ihre Verrechnungsdatei zerstört + wird, wenn beide Instanzen gleichzeitig in die gleiche Datei + schreiben. Damit für jeden Drucker eine eigene + Verrechnungsdatei angelegt wird, fügen Sie den + Eintrag <literal>af=acct</literal> in + <filename>/etc/printcap</filename> ein. Dadurch wird für + jeden Drucker eine separate Verrechnungsdatei mit dem Namen + <filename>acct</filename> im Spooling-Verzeichnis des + jeweiligen Druckers erzeugt.</para> + + <para>Wenn Sie Ihre Daten erfasst haben und die entstandenen + Kosten Ihren Benutzern verrechnen wollen, starten Sie + &man.pac.8;. Dazu wechseln Sie in das Spooling-Verzeichnis + des auszuwertenden Druckers und geben <command>pac</command> + ein. Dadurch erhalten Sie eine Ausgabe ähnlich + der folgenden:</para> + + <screen> 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</screen> + + <para>Folgende Argumente können an &man.pac.8; + übergeben werden:</para> + + <variablelist> + <varlistentry> + <term><option>-P<replaceable>Drucker</replaceable></option></term> + + <listitem> + <para>Gibt an, welcher <replaceable>Drucker</replaceable> + ausgewertet werden soll. Diese Option setzt voraus, + dass für die <literal>af</literal>-Fähigkeit + in <filename>/etc/printcap</filename> ein absoluter + Pfad angegeben wurde.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-c</option></term> + + <listitem> + <para>Sortiert die Ausgabe nach den verursachten Kosten + anstelle einer alphabetischen Sortierung der + Benutzernamen.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-m</option></term> - <para></para> + <listitem> + <para>Ignoriert den Rechnernamen in Verrechnungsdateien. + Ist diese Option gesetzt, ist der Benutzer + <username>smith</username> auf dem Rechner + <hostid>alpha</hostid> mit dem Benutzer + <username>smith</username> auf dem Rechner + <hostid>gamma</hostid> identisch. Ist diese Option + nicht gesetzt, handelt es sich um unterschiedliche + Benutzer.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-p<replaceable>Preis</replaceable></option></term> + + <listitem> + <para>Berechnet die entstandenen Kosten aus dem + <replaceable>Preis</replaceable> in Dollar pro Seite + statt aus dem über die + <literal>pc</literal>-Fähigkeit in + <filename>/etc/printcap</filename> definierten Preis. + In der Voreinstellung sind dies zwei Cent pro Seite. + Sie können aber auch einen eigenen + <replaceable>Preis</replaceable> in Form einer + Gleitkommazahl angeben.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-r</option></term> + + <listitem> + <para>Die Sortierreihenfolge umkehren.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-s</option></term> + + <listitem> + <para>Die Verrechnungsdatei in einer neuen Datei + aufsummieren und die originale Verrechnungsdatei + zurücksetzen.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable>name</replaceable> + <replaceable>…</replaceable></term> + + <listitem> + <para>Verrechnungsinformationen nur für die + angegebenen Benutzernamen ausgeben.</para> + </listitem> + </varlistentry> + </variablelist> + + <para>In der Voreinstellung gibt &man.pac.8; aus, wieviele + Seiten von welchem Benutzer auf welchem Rechner gedruckt + wurden. Wenn Rechnernamen für Sie uninteressant sind + (weil sich Benutzer beispielsweise auf jedem Rechner + anmelden können), sollten Sie <command>pac -m</command> + verwenden, um die folgende Ausgabe zu erhalten:</para> + + <screen> 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</screen> + + + <para>Um den zu verrechnenden Betrag zu ermitteln, verwendet + &man.pac.8; die <literal>pc</literal>-Fähigkeit von + <filename>/etc/printcap</filename> (Voreinstellung 200, dieser + Wert entspricht 2 Cents). Geben Sie hier (als Hundertfaches + des tatsächlichen Wertes) den Preis pro Seite an, den + Sie verrechnen wollen. Sie können diesen Wert + überschreiben, wenn Sie &man.pac.8; mit der Option + <option>-p</option> ausführen. Beachten Sie dabei aber, + dass Sie in diesem Fall die Einheiten in Dollar angeben, und + nicht als Hundertfaches des tatsächlichen Cent-Betrages. + So steht + + <screen>&prompt.root; <userinput>pac -p1.50</userinput></screen> + + beispielsweise für einen Preis von einem Dollar und + fünfzig Cent pro Seite.</para> + + <para>Der Aufruf von <command>pac -s</command> führt + schließlich dazu, dass die aufsummierten Informationen + in einer eigenen Auswertedatei gespeichert werden. Diese hat + den gleichen Namen wie die Verrechnungsdatei, es wird + lediglich ein <literal>_sum</literal> an den Dateinamen + angehängt. Danach wird die Verrechnungsdatei + zurückgesetzt. Wenn Sie &man.pac.8; erneut aufrufen, + wird die Auswertedatei eingelesen, um die Startbeträge + zu erhalten, alle weiteren Informationen stammen danach + aus der normalen Verrechnungsdatei.</para> </sect3> <sect3> - <title>* Anzahl der gedruckten Seiten bestimmen</title> - - <para></para> + <title>Wie kann man die Anzahl der gedruckten Seiten + ermitteln?</title> + + <para>Um die Druckernutzung auch nur annähernd genau + verrechnen zu können, müssen Sie ermitteln, wieviel + Papier ein Druckauftrag verbraucht. Die Bestimmung dieses + Wertes ist das zentrale Problem, das Sie lösen müssen, + wenn Sie Druckaufträge kostenpflichtig machen wollen.</para> + + <para>Normaler Text stellt in der Regel kein Problem dar: Sie + zählen dazu nur die Zeilen des Druckauftrages und + dividieren diesen Wert durch die Anzahl der Zeilen pro Seite, + die Ihr Drucker bietet. Allerdings dürfen Sie dabei + nicht vergessen, dass gelöschte Zeichen + (<foreignphrase>Backspaces</foreignphrase>) Zeilen + überschreiben. Außerdem können sich lange + logische Zeilen (im Druckauftrag) über mehrere + physikalische Zeilen (am Ausdruck) erstrecken.</para> + + <para>Der im Abschnitt <link linkend="printing-advanced-lpf">lpf: + Ein Textfilter</link> vorgestellte Textfilter + <command>lpf</command> berücksichtigt diese + Besonderheiten. Wenn Sie einen eigenen Textfilter für + die Verrechnung der Druckernutzung schreiben wollen, sollten + Sie sich daher den Quellcode von <command>lpf</command> + näher ansehen.</para> + + <para>Aber was ist mit anderen Dateiformaten?</para> + + <para>Für die DVI-nach-LaserJet- oder für die + DVI-nach-&postscript;-Konvertierung können Sie die + Protokolldateien von <command>dvilj</command> oder + <command>dvips</command> auslesen, um festzustellen, wieviele + Seiten konvertiert wurden. Die gleiche Methode könnte + auch mit anderen Dateitypen funktionieren.</para> + + <para>Alle diese Methoden haben aber das Problem, dass ein + Drucker möglicherweise nicht alle Seiten des + Druckauftrages drucken kann. So könnte es etwa zu einem + Papierstau kommen, der Toner könnte zu Ende gehen oder + es könnte ein Druckerdefekt + auftreten – trotzdem würden alle Seiten + des Druckauftrages verrechnet werden.</para> + + <para>Was kann man dagegen tun?</para> + + <para>Es gibt nur eine einzige <emphasis>sichere</emphasis> + Methode, um die Druckernutzung <emphasis>exakt</emphasis> + zu bestimmen. Besorgen Sie sich einen Drucker, der das + verbrauchte Papier protokolliert und verbinden Sie ihn + über eine serielle oder eine Netzwerkverbindung. + Nahezu alle &postscript;-Drucker, aber auch viele andere + Modelle und Druckertypen (beispielsweise Laserdrucker von + Imagen) sind dazu in der Lage. Passen Sie die Filter + für diese Drucker entsprechend an, damit diese + nach jedem Druckauftrag die Anzahl der gedruckten Seiten + ermitteln und verrechnen Sie Druckaufträge + <emphasis>ausschließlich</emphasis> über diesen + Wert. Danach müssen Sie sich um die Anzahl + der gedruckten Zeilen oder um mögliche Druckerprobleme + nie mehr kümmern.</para> + + <para>Sie können aber auch großzügig sein und alle + Ausdrucke kostenlos abgeben.</para> </sect3> </sect2> </sect1> <sect1 id="printing-using"> - <title>* Drucken</title> + <sect1info> + <authorgroup> + <author> + <firstname>Johann</firstname> + <surname>Kois</surname> + <contrib>Übersetzt von </contrib> + </author> + </authorgroup> + </sect1info> + + <title>Drucker verwenden</title> + + <indexterm> + <primary>Drucker</primary> + <secondary>verwenden</secondary> + </indexterm> - <para>Dieser Abschnitt ist noch nicht übersetzt. Lesen Sie - bitte <ulink - url="&url.books.handbook.en;/printing-using.html"> - das Original in englischer Sprache</ulink>.</para> + <para>Dieser Abschnitt beschreibt, wie Sie einen unter FreeBSD + konfigurierten Drucker verwenden können. Die folgende + Liste bietet einen Überblick über wichtige + Anwenderbefehle:</para> + + <variablelist> + <varlistentry> + <term>&man.lpr.1;</term> + + <listitem> + <para>Einen Druckauftrag drucken</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>&man.lpq.1;</term> + + <listitem> + <para>Eine Druckerwarteschlange prüfen</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>&man.lprm.1;</term> + + <listitem> + <para>Einen Druckauftrag aus einer Warteschlange entfernen + (stornieren)</para> + </listitem> + </varlistentry> + </variablelist> + + <para>Zusätzlich existiert mit &man.lpc.8; ein Befehl zur + zur Steuerung von Druckern und Druckerwarteschlangen, der im + Abschnitt <link linkend="printing-lpc">Das + <application>LPD</application>-Drucksystem verwalten</link> + näher beschrieben wird.</para> + + <para>Jeder der drei Befehle &man.lpr.1;, &man.lprm.1;, sowie + &man.lpq.1; akzeptiert die Option + <option>-P <replaceable>printer-name</replaceable></option>, + mit der Sie den zu verwendenden Drucker (der dazu in + <filename>/etc/printcap</filename> definiert sein muss) + festlegen. Dadurch sind Sie in der Lage, Druckaufträge + zu erstellen, zu stornieren, oder den Status Ihrer + Druckaufträge zu überprüfen. Verwenden Sie die + Option <option>-P</option> nicht, wird der in der Umgebungsvariable + <envar>PRINTER</envar> definierte Drucker verwendet. Existiert + diese Variable nicht, greifen diese Befehle auf den Drucker + <literal>lp</literal> zurück.</para> + + <para>Im Folgenden steht der Begriff + <emphasis>Standarddrucker</emphasis> daher + für den über die Umgebungsvariable <envar>PRINTER</envar> + definierten Drucker, oder, falls diese Variable nicht existiert, + für den Drucker <literal>lp</literal>.</para> <sect2 id="printing-lpr"> - <title>* Druckaufträge erstellen</title> + <title>Druckaufträge erstellen</title> + + <para>Um eine Datei zu drucken, geben Sie folgenden Befehl ein:</para> + + <screen>&prompt.user; <userinput>lpr <replaceable>filename</replaceable> <replaceable>...</replaceable></userinput></screen> + + <indexterm><primary>printing</primary></indexterm> + + <para>Dadurch wird jede angegebene Datei an den Standarddrucker + geschickt. Wenn Sie keine Datei angeben, liest &man.lpr.1; + die zu druckenden Daten von der Standardeingabe. Um + beispielsweise einige wichtige Systemdateien zu drucken, geben + Sie folgenden Befehl ein:</para> - <para></para> + <screen>&prompt.user; <userinput>lpr /etc/host.conf /etc/hosts.equiv</userinput></screen> + + <para>Um einen bestimmten Drucker auszuwählen, verwenden Sie:</para> + + <screen>&prompt.user; <userinput>lpr -P <replaceable>printer-name</replaceable> <replaceable>filename</replaceable> <replaceable>...</replaceable></userinput></screen> + + <para>Das folgende Beispiel gibt eine ausführliche Liste aller + im Arbeitsverzeichnis enthaltenen Dateien auf den Drucker + <literal>rattan</literal> aus:</para> + + <screen>&prompt.user; <userinput>ls -l | lpr -P rattan</userinput></screen> + + <para>Da keine Dateien an &man.lpr.1; übergeben werden, liest + <command>lpr</command> die zu druckenden Daten von der + Standardeingabe, in unserem Fall also die Ausgabe des Befehls + <command>ls -l</command>.</para> + + <para>&man.lpr.1; akzeptiert auch verschiedene Optionen zur + Formatierung und Konvertierung von Dateien, zur Erzeugung von + multiplen Ausdrucken und so weiter. Lesen Sie dazu den + Abschnitt <link + linkend="printing-lpr-options">Druckoptionen</link>.</para> </sect2> <sect2 id="printing-lpq"> - <title>* Druckaufträge anzeigen</title> - - <para></para> + <title>Druckaufträge verwalten</title> + + <indexterm><primary>Druckauftrag</primary></indexterm> + + <para>Wenn Sie &man.lpr.1; verwenden, werden alle zu druckenden + Daten in ein Paket, den sogenannten <quote>Druckauftrag</quote>, + gepackt und an <application>LPD</application> geschickt. Jeder + Drucker verfügt über eine Druckerwarteschlange, in + der Ihre Druckaufträge gemeinsam mit denen anderer Benutzer + verbleiben, bis sie gedruckt werden können. Zuerst + eintreffende Druckaufträge werden dabei auch zuerst + gedruckt.</para> + + <para>Um die Druckerwarteschlange des Standarddruckers anzuzeigen, + verwenden Sie &man.lpq.1;. Wollen Sie einen anderen Drucker + abfragen, müssen Sie die Option <option>-P</option> + verwenden. Der Befehl + + <screen>&prompt.user; <userinput>lpq -P bamboo</userinput></screen> + + zeigt so die Druckerwarteschlange des Druckers + <literal>bamboo</literal> an. Dieser Befehl liefert eine + Ausgabe ähnlich der folgenden:</para> + + <screen>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</screen> + + <para>Derzeit enthält die Warteschlange von + <literal>bamboo</literal> drei Druckaufträge. Dem ersten + Auftrag, der vom Benutzer kelly erstellt wurde, wurde die + <quote>Auftragsnummer (job number)</quote> 9 zugewiesen. + Analog erhält jeder Druckerauftrag eine eindeutige Nummer + zugewiesen. Diese Nummern sind nur dann von Bedeutung, wenn + Sie einen Druckauftrag stornieren wollen. Der Abschnitt + <link linkend="printing-lprm">Druckaufträge + stornieren</link> beschreibt, wie Sie dazu vorgehen.</para> + + <para>Der Auftrag mit der Nummer 9 besteht aus zwei Dateien, + mehrere an &man.lpr.1; übergebene Dateien werden also als + Teil eines (gemeinsamen) Druckauftrags betrachtet. Dieser + Druckauftrag ist derzeit aktiv (beachten Sie den Status + <literal>active</literal> in der Spalte <quote>Rank</quote>), + wird also gerade gedruckt. Der zweite Auftrag besteht aus + Daten, die von der Standardeingabe an &man.lpr.1; + übergeben wurden. Der dritte Auftrag wurde vom Benutzer + <username>mary</username> erstellt. Er ist sehr viel + größer als die anderen Aufträge. Da der + Pfad der zu druckenden Datei aufgrund seiner Länge nicht + in der Spalte <quote>Files</quote> Platz hat, werden von + &man.lpq.1; nur drei Punkte angezeigt.</para> + + <para>Die erste Zeile der Ausgabe von &man.lpq.1; ist ebenfalls + sehr nützlich: Sie beschreibt den momentanen Druckerstatus + (oder zumindest, was <application>LPD</application> denkt, + dass der Drucker gerade macht).</para> + + <para>&man.lpq.1; unterstützt auch die Option + <option>-l</option> zur Erstellung einer ausführlicheren + Ausgabe. Die Eingabe von <command>lpq -l</command> erzeugt + für unser obiges Beispiel die folgende Ausgabe:</para> + + <screen>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</screen> </sect2> <sect2 id="printing-lprm"> - <title>* Druckaufträge löschen</title> - - <para></para> + <title>Druckaufträge stornieren</title> + + <para>Mit &man.lprm.1; können Sie einen Druckauftrag + stornieren. Häufig ist &man.lprm.1; auch noch in der + Lage, einen bereits aktiven Auftrag abzubrechen, allerdings + wird dabei in der Regel trotzdem ein Teil des Auftrages oder + der gesamte Auftrag gedruckt.</para> + + <para>Um einen Druckauftrag auf dem Standarddrucker zu + stornieren, müssen Sie zuerst die Auftragsnummer + über &man.lpq.1; ermitteln. Danach geben Sie + Folgendes ein:</para> + + <screen>&prompt.user; <userinput>lprm <replaceable>job-number</replaceable></userinput></screen> + + <para>Um einen Druckauftrag eines anderen Druckers zu stornieren, + benötigen Sie wiederum die Option <option>-P</option>. Der + folgende Befehl entfernt den Druckauftrag mit der Nummer 10 + aus der Warteschlange des Druckers + <literal>bamboo</literal>:</para> + + <screen>&prompt.user; <userinput>lprm -P bamboo 10</userinput></screen> + + <para>&man.lprm.1; unterstützt verschiedene Kurzbefehle:</para> + + <variablelist> + <varlistentry> + <term>lprm -</term> + + <listitem> + <para>Entfernt alle Druckaufträge (des Standarddruckers), + die von Ihnen erstellt wurden.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>lprm <replaceable>user</replaceable></term> + + <listitem> + <para>Entfernt alle Druckaufträge (des Standarddruckers), + die vom Benutzer <replaceable>user</replaceable> erstellt + wurden. Der Superuser kann im Gegensatz zu einem normalen + Benutzer auch Aufträge anderer Benutzer entfernen.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>lprm</term> + + <listitem> + <para>Wenn Sie weder eine Auftragsnummer, einen Benutzernamen, + noch die Option <option>-</option> angeben, entfernt + &man.lprm.1; den aktiven Druckauftrag auf dem + Standarddrucker, falls dieser Auftrag von Ihnen erstellt + wurde. Der Superuser kann hingegen jeden aktiven + Druckauftrag abbrechen.</para> + </listitem> + </varlistentry> + </variablelist> + + <para>Verwenden Sie zusätzlich die Option <option>-P</option> + zu den eben beschriebenen Kurzbefehlen, wenn Sie diese auf einen + anderen Drucker als den Standarddrucker anwenden wollen. So + entfernt der folgende Befehl beispielsweise alle + Druckaufträge des aktuellen Benutzers aus der + Druckerwarteschlange des Druckers + <literal>rattan</literal>:</para> + + <screen>&prompt.user; <userinput>lprm -P rattan -</userinput></screen> + + <note> + <para>Wenn Sie in einer Netzwerkumgebung arbeiten, erlaubt es + &man.lprm.1; Ihnen nur, Druckaufträge auf dem Rechner + zu stornieren, auf dem sie erstellt wurden. Dies gilt selbst + dann, wenn der gleiche Drucker auch auf anderen Rechnern des + Netzwerks verfügbar ist. Die folgende Befehlsfolge + veranschaulicht diesen Umstand:</para> + + <screen>&prompt.user; <userinput>lpr -P rattan myfile</userinput> +&prompt.user; <userinput>rlogin orchid</userinput> +&prompt.user; <userinput>lpq -P rattan</userinput> +Rank Owner Job Files Total Size +active seeyan 12 ... 49123 bytes +2nd kelly 13 myfile 12 bytes +&prompt.user; <userinput>lprm -P rattan 13</userinput> +rose: Permission denied +&prompt.user; <userinput>logout</userinput> +&prompt.user; <userinput>lprm -P rattan 13</userinput> +dfA013rose dequeued +cfA013rose dequeued + </screen> + </note> </sect2> <sect2 id="printing-lpr-options"> - <title>* Optionen für Druckaufträge</title> + <title>Abseits von normalem Text: Druckoptionen</title> + + <para>&man.lpr.1; unterstützt verschiedene Optionen zur + Formatierung von Text, zur Konvertierung von Grafik- und + anderen Dateiformaten, zur Erzeugung von multiplen Kopien, + zur Verwaltung von Druckaufträgen und andere mehr. + Dieser Abschnitt beschreibt einige dieser Optionen.</para> <sect3 id="printing-lpr-options-format"> - <title>* Formatierungs- und Konvertierungs-Optionen</title> + <title>Formatierungs- und Konvertierungsoptionen</title> + + <para>Die folgenden &man.lpr.1;-Optionen kontrollieren die + Formatierung von in einem Druckauftrag enthaltenen Dateien. + Verwenden Sie diese Optionen, wenn Ihr Druckauftrag keinen + normalen Text enthält, oder wenn Sie normalen Text + mit &man.pr.1; formatieren wollen.</para> + + <indexterm><primary>&tex;</primary></indexterm> + + <para>Der folgende Befehl druckt so beispielsweise eine + DVI-Datei (des &tex;-Satzsystems) namens + <filename>fish-report.dvi</filename> auf dem Drucker + <literal>bamboo</literal>:</para> + + <screen>&prompt.user; <userinput>lpr -P bamboo -d fish-report.dvi</userinput></screen> + + <para>Diese Optionen gelten für jede Datei des + Druckauftrags, daher ist es nicht möglich beispielsweise + DVI- und ditroff-Dateien über den gleichen Druckauftrag + zu drucken. Sie müssen diese Dateien vielmehr über + getrennte Druckaufträge drucken, wobei Sie jeweils + geeignete Konvertierungsoptionen verwenden.</para> + + <note> + <para>Alle Optionen mit Ausnahme von <option>-p</option> und + <option>-T</option> setzen einen installierten und + für den jeweiligen Drucker konfigurierten + Konvertierungsfilter voraus. So benötigt die Option + <option>-d</option> den DVI-Konvertierungsfilter. Diese + Filter werden im Abschnitt <link + linkend="printing-advanced-convfilters"> + Konvertierungsfilter</link> ausführlich + beschrieben.</para> + </note> + + <variablelist> + <varlistentry> + <term><option>-c</option></term> + + <listitem> + <para>Druckt cifplot-Dateien.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-d</option></term> + + <listitem> + <para>Druckt DVI-Dateien.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-f</option></term> + + <listitem> + <para>Druckt FORTRAN-Textdateien.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-g</option></term> + + <listitem> + <para>Druckt Plot-Daten.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-i <replaceable>anzahl</replaceable></option></term> + + <listitem> + <para>Rückt die Ausgabe um + <replaceable>anzahl</replaceable> Spalten ein, lassen + Sie <replaceable>anzahl</replaceable> weg, wird der Text + um 8 Spalten eingerückt. Beachten Sie aber, dass + diese Option nicht mit allen Konvertierungsfiltern + funktioniert.</para> + + <note> + <para>Zwischen der Option <option>-i</option> und der + der Zahl darf dabei kein Leerzeichen stehen.</para> + </note> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-l</option></term> + + <listitem> + <para>Druckt Text inklusive vorhandener Steuerzeichen.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-n</option></term> + + <listitem> + <para>Druckt ditroff-Dateien (geräteunabhängiges + troff).</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-p</term> + + <listitem> + <para>Formatiert normalen Text mit &man.pr.1;, bevor der + Ausdruck erfolgt.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-T <replaceable>titel</replaceable></option></term> + + <listitem> + <para>Verwende <replaceable>titel</replaceable> auf dem + &man.pr.1;-Deckblatt anstelle des Dateinamens. Diese + Option ist nur wirksam, wenn sie gemeinsam mit der + Option <option>-p</option> verwendet.</para> + </listitem> + </varlistentry> - <para></para> + <varlistentry> + <term><option>-t</option></term> + + <listitem> + <para>Druckt troff-Daten.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-v</option></term> + + <listitem> + <para>Druckt Rasterdaten.</para> + </listitem> + </varlistentry> + </variablelist> + + <para>Dazu ein Beispiel. Der folgende Befehl druckt eine + formatierte Version der Manualpage zu &man.ls.1; auf den + Standarddrucker:</para> + + <screen>&prompt.user; <userinput>zcat /usr/share/man/man1/ls.1.gz | troff -t -man | lpr -t</userinput></screen> + + <para>&man.zcat.1; dekomprimiert den Quellcode der Manualpage + &man.ls.1; und reicht ihn an &man.troff.1; weiter, das + ihn formatiert und daraus GNU troff-Daten erzeugt. Diese + werden wiederum an &man.lpr.1; weitergereicht, das den + Druckauftrag schließlich an + <application>LPD</application> übergibt. Da die Option + <option>-t</option> von &man.lpr.1; verwendet wurde, + konvertiert das Drucksystem die GNU troff-Daten zuvor in + ein Format, das der Standarddrucker verstehen und ausgeben + kann.</para> </sect3> <sect3 id="printing-lpr-options-job-handling"> - <title>* Druckauftrags-Optionen</title> + <title>Druckaufträge verwalten</title> + + <para>Die folgenden Optionen von &man.lpr.1; weisen + <application>LPD</application> an, den Druckauftrag auf + verschiedene Art und Weise zu behandeln:</para> + + <variablelist> + <varlistentry> + <term>-# <replaceable>anzahl</replaceable></term> + + <listitem> + <para>Erzeugt <replaceable>anzahl</replaceable> Ausdrucke + jeder im Druckauftrag enthaltenen Datei anstelle eines + einzigen Exemplars. Diese Option kann von einem + Administrator deaktiviert werden, um die Beanspruchung + des Druckers zu verringern. Lesen Sie den Abschnitt + <link linkend="printing-advanced-restricting-copies"> + Den Ausdruck von mehreren Kopien verhindern</link>, + wenn Sie diese Funktion benötigen.</para> + + <para>Das folgende Beispiel druckt drei Kopien der Datei + <filename>parser.c</filename>, gefolgt von drei Kopien + von <filename>parser.h</filename> auf den + Standarddrucker:</para> + + <screen>&prompt.user; <userinput>lpr -#3 parser.c parser.h</userinput></screen> + </listitem> + </varlistentry> + + <varlistentry> + <term>-m</term> + + <listitem> + <para>Verschickt eine E-Mail, nachdem der Druckauftrag + beendet wurde. Verwenden Sie diese Option, sendet + <application>LPD</application> Ihnen eine E-Mail, wenn + es die Bearbeitung Ihres Druckauftrages abgeschlossen + hat. Diese Nachricht enthält Informationen + darüber, ob Ihr Auftrag erfolgreich erledigt wurde + oder ob ein Fehler auftrat. Ist dies der Fall, wird + meist noch angegeben, welcher Fehler auftrat.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-s</term> + + <listitem> + <para>Kopiert die Dateien nicht in das + Spooling-Verzeichnis, sondern verlinkt stattdessen + symbolisch auf diese Dateien.</para> + + <para>Wenn Sie einen umfangreichen Druckauftrag erstellen, + werden Sie diese Option wahrscheinlich verwenden wollen. + Einerseits sparen Sie dadurch Speicherplatz im + Spooling-Verzeichnis (im schlimmsten Fall könnte + Ihr Druckauftrag ansonsten das Dateisystem des + Spooling-Verzeichnis zum Überlaufen bringen), + andererseits sparen Sie dadurch auch Zeit, weil + <application>LPD</application> die in Ihrem Druckauftrag + enthaltenen Dateien nicht in das Spooling-Verzeichnis + kopieren muss.</para> + + <para>Da <application>LPD</application> in diesem Fall die + Originaldateien verwendet, muss sichergestellt sein, + dass diese nicht verändert werden, bevor der + Ausdruck abgeschlossen ist.</para> + + <note> + <para>Wenn Sie auf einen entfernten Drucker drucken, + muss <application>LPD</application> die Dateien dennoch + vom lokalen auf den entfernten Rechner kopieren. In + diesem Fall spart die Option <option>-s</option> + Speicherplatz lediglich im lokalen + Spooling-Verzeichnis, nicht aber im entfernten. Dennoch + ist diese Option auch in diesem Fall nützlich.</para> + </note> + </listitem> + </varlistentry> + + <varlistentry> + <term>-r</term> - <para></para> + <listitem> + <para>Löscht die im Druckauftrag enthaltenen Dateien, + nachdem sie in das Spooling-Verzeichnis kopiert oder + unter Verwendung der Option <option>-s</option> + gedruckt werden. Verwenden Sie diese Option daher + nur mit äußerster Vorsicht!</para> + </listitem> + </varlistentry> + </variablelist> </sect3> <sect3 id="printing-lpr-options-misc"> - <title>* Titelseiten-Optionen</title> + <title>Deckblatt-Optionen</title> + + <para>Die folgenden &man.lpr.1;-Optionen passen den Text an, + der auf einem Deckblatt eines Druckauftrages ausgegeben + wird. Wird die Ausgabe von Deckblättern auf dem + Zieldrucker unterdrückt, bleiben diese Optionen + wirkungslos. Lesen Sie den Abschnitt <link + linkend="printing-advanced-header-pages">Deckblätter</link>, + wenn Sie diese Funktion benötigen.</para> + + <variablelist> + <varlistentry> + <term>-C <replaceable>text</replaceable></term> + + <listitem> + <para>Ersetzt den Rechnernamen auf dem Deckblatt durch + <replaceable>text</replaceable>. Der Rechnername ist + dabei in der Regel der Name des Rechners, auf dem der + Druckauftrag erstellt wurde.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-J <replaceable>text</replaceable></term> - <para></para> + <listitem> + <para>Ersetzt den Namen des Druckauftrages auf dem + Deckblatt durch <replaceable>text</replaceable>. Der + Name des Druckauftrages entspricht in der Regel dem + Namen der ersten Datei des Druckauftrages oder + <filename>stdin</filename>, wenn Sie die + Standardeingabe an den Drucker weiterleiten.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-h</term> + + <listitem> + <para>Verhindert den Ausdruck von Deckblättern.</para> + + <note> + <para>Ob diese Option funktioniert, hängt von der + Art und Weise ab, wie Deckblätter auf Ihrem + System erzeugt werden. Lesen Sie den Abschnitt + <link linkend="printing-advanced-header-pages"> + Deckblätter</link> für weitere + Informationen.</para> + </note> + </listitem> + </varlistentry> + </variablelist> </sect3> </sect2> <sect2 id="printing-lpc"> - <title>* Drucker verwalten</title> + <title>Drucker verwalten</title> + + <para>Als Administrator Ihres Systems ist es Ihre Aufgabe, Drucker + zu installieren, zu konfigurieren und zu testen. Um mit Ihrem + Drucker zu kommunizieren, können Sie &man.lpc.8; verwenden. + Dadurch sind Sie in der Lage,</para> + + <itemizedlist> + <listitem> + <para>Ihre Drucker zu starten und zu beenden.</para> + </listitem> + + <listitem> + <para>Die Warteschlangen Ihrer Drucker zu aktivieren und zu + deaktivieren.</para> + </listitem> + + <listitem> + <para>Die Reihenfolge der Druckaufträge zu + ändern.</para> + </listitem> + </itemizedlist> - <para></para> + <para>Am Anfang dieses Abschnitts steht die Erklärung + einiger Begriffe. Wenn ein Drucker <emphasis>beendet</emphasis> + ist, wird der Inhalt seiner Warteschlange nicht gedruckt. + Druckaufträge können zwar weiterhin erstellt werden, + diese verbleiben aber solange in der Warteschlange, bis der + Drucker wieder <emphasis>gestartet</emphasis> oder die + Warteschlange gelöscht wird.</para> + + <para>Ist eine Warteschlange <emphasis>deaktiviert</emphasis>, + kann (mit Ausnahme von <username>root</username>) kein Benutzer + mehr einen Druckauftrag erteilen. Ist die Warteschlange hingegen + <emphasis>aktiviert</emphasis>, können Druckaufträge + erteilt werden. Ist ein Drucker zwar + <emphasis>gestartet</emphasis>, die Warteschlange hingegen + <emphasis>deaktiviert</emphasis>, werden dennoch alle noch in + der Warteschlange vorhandenen Druckaufträge gedruckt.</para> + + <para>Im Allgemeinen benötigen Sie + <username>root</username>-Rechte, um &man.lpc.8; einsetzen zu + können. Als normaler Benutzer erlaubt es Ihnen &man.lpc.8; + lediglich, den Druckstatus abzufragen und einen hängenden + Drucker neu zu starten.</para> + + <para>Es folgt nun eine Zusammenfassung der Befehle von + &man.lpc.8;. Die meisten dieser Befehle benötigen das + Argument <replaceable>printer-name</replaceable>, mit dem Sie + angeben, auf welchen Drucker der Befehl angewendet werden soll. + Wenn Sie für <replaceable>printer-name</replaceable> + <literal>all</literal> angeben, wird der Befehl auf alle in + <filename>/etc/printcap</filename> definierten Drucker + angewendet.</para> + + <variablelist> + <varlistentry> + <term><command>abort + <replaceable>printer-name</replaceable></command></term> + + <listitem> + <para>Bricht den aktuellen Druckauftrag ab und beendet den + Drucker. Solange die Warteschlange aktiviert ist, + können allerdings weiterhin Druckaufträge + erteilt werden.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><command>clean + <replaceable>printer-name</replaceable></command></term> + + <listitem> + <para>Entfernt veraltete Dateien aus dem + Spooling-Verzeichnis des Druckers, da diese manchmal nicht + vollständig von <application>LPD</application> + entfernt werden können. Dies ist insbesondere dann + der Fall, wenn während der Bearbeitung des + Druckauftrages Fehler auftraten. Dieser Befehl sucht + dabei nach Dateien, die nicht in das Spooling-Verzeichnis + gehören und entfernt diese.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><command>disable + <replaceable>printer-name</replaceable></command></term> + + <listitem> + <para>Deaktiviert die Annahme neuer Druckaufträge. + Solange der Drucker nicht beendet wird, werden weiterhin + alle in der Warteschlange enthaltenen Auftrage bearbeitet + und gedruckt. <username>root</username> kann jederzeit + Druckaufträge erstellen, selbst dann, wenn die + Druckerwarteschlange deaktiviert ist.</para> + + <para>Dieser Befehl ist besonders nützlich, wenn Sie + einen neuen Drucker testen müssen oder einen neuen + Filter installiert haben. Dazu deaktivieren Sie die + Warteschlange des Druckers und erstellen Ihre + Druckaufträge als <username>root</username>. + Andere Benutzer können erst dann einen Druckauftrag + erstellen, wenn Sie Ihre Tests abgeschlossen haben und + die Druckerwarteschlange mit <command>enable</command> + wieder reaktivieren.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><command>down <replaceable>printer-name</replaceable> + <replaceable>nachricht</replaceable></command></term> + + <listitem> + <para>Beendet einen Drucker. Äquivalent zu + <command>disable</command>, gefolgt von + <command>stop</command>. Die von Ihnen definierte + <replaceable>nachricht</replaceable> wird als + Druckerstatus angezeigt, wenn ein Benutzer die + Warteschlange des Druckers mit &man.lpq.1; oder + mit <command>lpc status</command> abfragt.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><command>enable + <replaceable>printer-name</replaceable></command></term> + + <listitem> + <para>Aktiviert die Warteschlange eines Druckers. Erteilte + Druckaufträge können zwar erteilt werden, diese + werden aber nur dann gedruckt, wenn der Drucker auch + gestartet ist.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><command>help + <replaceable>command-name</replaceable></command></term> + + <listitem> + <para>Ausgaben von hilfreichen Informationen zu + <replaceable>command-name</replaceable>. Wird kein + <replaceable>command-name</replaceable> angegeben, wird + die Liste der verfügbaren Befehle ausgegeben.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><command>restart + <replaceable>printer-name</replaceable></command></term> + + <listitem> + <para>Startet den Drucker. Normale Benutzer können + diesen Befehl verwenden, um einen hängenden + <application>LPD</application> zu reaktivieren, sie sind + allerdings nicht berechtigt, einen Drucker zu starten, + der mit <command>stop</command> oder <command>down</command> + beendet wurde. Dieser Befehl ist äquivalent zu + <command>abort</command>, gefolgt von + <command>start</command>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><command>start + <replaceable>printer-name</replaceable></command></term> + + <listitem> + <para>Startet den Drucker, um die in der Warteschlange + enthaltenen Aufträge zu drucken.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><command>stop + <replaceable>printer-name</replaceable></command></term> + + <listitem> + <para>Beendet den Drucker. Der Drucker beendet den aktiven + Druckauftrag noch, danach wird kein weiterer in der + Warteschlange enthaltener Auftrag gedruckt. Obwohl der + Drucker beendet wurde, können weiterhin + Druckaufträge erteilt werden, solange die + Warteschlange nicht deaktiviert wurde.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><command>topq <replaceable>printer-name</replaceable> + <replaceable>job-or-username</replaceable></command></term> + + <listitem> + <para>Sortiert die Druckerwarteschlange des Druckers + <replaceable>printer-name</replaceable> um, wobei + der Auftrag mit der angegebenen + <replaceable>Auftragsnummer</replaceable>, + oder Druckaufträge, die von + <replaceable>username</replaceable> erstellt wurden, an + den Beginn der Warteschlange gesetzt werden. Für + diesen Befehl kann die Option <literal>all</literal> + nicht als <replaceable>printer-name</replaceable> + verwendet werden.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><command>up + <replaceable>printer-name</replaceable></command></term> + + <listitem> + <para>Startet einen Drucker. Das Gegenstück zu + <command>down</command>. Äquivalent zu + <command>start</command>, gefolgt von + <command>enable</command>.</para> + </listitem> + </varlistentry> + </variablelist> + + <para>&man.lpc.8; akzeptiert diese Befehle direkt auf der + Kommandozeile. Geben Sie keinen Befehl ein, wird + &man.lpc.8; im interaktiven Modus gestartet. In diesem + Modus können Sie solange Befehle eingeben, bis Sie + <command>exit</command> oder <command>quit</command> + eingeben.</para> </sect2> </sect1> diff --git a/de_DE.ISO8859-1/books/handbook/security/chapter.sgml b/de_DE.ISO8859-1/books/handbook/security/chapter.sgml index f559a35b17..fddef7b815 100644 --- a/de_DE.ISO8859-1/books/handbook/security/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/security/chapter.sgml @@ -3,7 +3,7 @@ The FreeBSD German Documentation Project $FreeBSD$ - $FreeBSDde: de-docproj/books/handbook/security/chapter.sgml,v 1.131 2005/09/04 09:27:23 jkois Exp $ + $FreeBSDde: de-docproj/books/handbook/security/chapter.sgml,v 1.132 2005/09/06 18:55:34 jkois Exp $ basiert auf: 1.281 --> @@ -3575,7 +3575,7 @@ options IPSEC_ESP #IP security (crypto; define w/ IPSEC)</screen> <indexterm> <primary>VPN</primary> - <secondary>Einrichtung</secondary> + <secondary>einrichten</secondary> </indexterm> <para>Dieses Szenario hat die folgenden Vorausetzungen:</para> diff --git a/de_DE.ISO8859-1/books/handbook/x11/chapter.sgml b/de_DE.ISO8859-1/books/handbook/x11/chapter.sgml index 082033a620..1d64d5feb7 100644 --- a/de_DE.ISO8859-1/books/handbook/x11/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/x11/chapter.sgml @@ -2,8 +2,8 @@ The FreeBSD Documentation Project $FreeBSD$ - $FreeBSDde: de-docproj/books/handbook/x11/chapter.sgml,v 1.38 2005/09/03 17:01:41 jkois Exp $ - basiert auf: 1.166 + $FreeBSDde: de-docproj/books/handbook/x11/chapter.sgml,v 1.39 2005/09/13 16:56:57 jkois Exp $ + basiert auf: 1.167 --> <chapter id="x11"> |