diff options
author | Remko Lodder <remko@FreeBSD.org> | 2005-12-18 20:46:54 +0000 |
---|---|---|
committer | Remko Lodder <remko@FreeBSD.org> | 2005-12-18 20:46:54 +0000 |
commit | ca761b969e158b47460e2a69e580af9bafdbca41 (patch) | |
tree | 7939d551ab93f028e436c230140e0a8413a690b7 | |
parent | c98e25e6161ed4e602043bd1584b212ef3a30b82 (diff) |
Notes
-rw-r--r-- | nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.sgml | 26 | ||||
-rw-r--r-- | nl_NL.ISO8859-1/books/handbook/desktop/chapter.sgml | 9 | ||||
-rw-r--r-- | nl_NL.ISO8859-1/books/handbook/disks/chapter.sgml | 107 | ||||
-rw-r--r-- | nl_NL.ISO8859-1/books/handbook/geom/chapter.sgml | 10 | ||||
-rw-r--r-- | nl_NL.ISO8859-1/books/handbook/mirrors/chapter.sgml | 120 | ||||
-rw-r--r-- | nl_NL.ISO8859-1/books/handbook/multimedia/chapter.sgml | 81 | ||||
-rw-r--r-- | nl_NL.ISO8859-1/books/handbook/network-servers/chapter.sgml | 4 | ||||
-rw-r--r-- | nl_NL.ISO8859-1/books/handbook/pgpkeys/chapter.sgml | 80 | ||||
-rw-r--r-- | nl_NL.ISO8859-1/books/handbook/printing/chapter.sgml | 5286 | ||||
-rw-r--r-- | nl_NL.ISO8859-1/books/handbook/security/chapter.sgml | 18 | ||||
-rw-r--r-- | nl_NL.ISO8859-1/books/handbook/x11/chapter.sgml | 13 |
11 files changed, 5445 insertions, 309 deletions
diff --git a/nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.sgml index 1c69663241..613dd7f299 100644 --- a/nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.sgml @@ -2,8 +2,8 @@ The FreeBSD Dutch Documentation Project $FreeBSD$ - $FreeBSDnl: nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.sgml,v 1.42 2005/09/23 17:09:55 siebrand Exp $ - Gebaseerd op: 1.219 + $FreeBSDnl: doc/nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.sgml,v 1.43 2005/12/18 11:59:01 siebrand Exp $ + Gebaseerd op: 1.220 --> <chapter id="cutting-edge"> @@ -755,8 +755,9 @@ daar redelijke waardes in te vullen voor een systeem.</para> <para>Een typische gebruiker wil waarschijnlijk de regels - <makevar>CFLAGS</makevar> en <makevar>NOPROFILE</makevar> - uit <filename>/usr/share/examples/etc/make.conf</filename> + <makevar>CFLAGS</makevar> en <makevar>NO_PROFILE</makevar> (of + <makevar>NOPROFILE</makevar> in &os; 5.X en ouder) uit + <filename>/usr/share/examples/etc/make.conf</filename> (<filename>/etc/defaults/make.conf</filename> in &os; 4.X) kopieren naar <filename>/etc/make.conf</filename> en het commentaar verwijderen.</para> @@ -978,14 +979,14 @@ Script done, …</screen> <filename>/etc/make.conf</filename>. Deze optie biedt een alternatief om deze opties in te stellen.</para> - <screen>&prompt.root; <userinput>make -DNOPROFILE <replaceable>doel</replaceable></userinput></screen> + <screen>&prompt.root; <userinput>make -DNO_PROFILE <replaceable>doel</replaceable></userinput></screen> <para>Het bovenstaande commando is een andere manier om aan te geven dat geprofileerde bibliotheken niet gebouwd moeten worden en correspondeert met de onderstaande regel in <filename>/etc/make.conf</filename>:</para> - <programlisting>NOPROFILE= true # Avoid compiling profiled libraries</programlisting> + <programlisting>NO_PROFILE= true # Avoid compiling profiled libraries</programlisting> <para><replaceable>doel</replaceable> geeft &man.make.1; aan wat er gedaan moet worden. Elke @@ -1183,12 +1184,12 @@ Script done, …</screen> <para>Als bijvoorbeeld het volgende commando is uitgevoerd:</para> - <screen>&prompt.root; <userinput>make -DNOPROFILE buildworld</userinput></screen> + <screen>&prompt.root; <userinput>make -DNO_PROFILE buildworld</userinput></screen> <para>Dan moet het resultaat geïnstalleerd worden met:</para> - <screen>&prompt.root; <userinput>make -DNOPROFILE installworld</userinput></screen> + <screen>&prompt.root; <userinput>make -DNO_PROFILE installworld</userinput></screen> <para>Anders wordt geprobeerd geprofileerde bibliotheken te installeren die niet gebouwd zijn tijdens de fase @@ -1731,7 +1732,12 @@ Script done, …</screen> <screen><emphasis>… fix the problem …</emphasis> &prompt.root; <userinput>cd /usr/src</userinput> -&prompt.root; <userinput>make -DNOCLEAN all</userinput></screen> +&prompt.root; <userinput>make -DNO_CLEAN all</userinput></screen> + + <note> + <para>Gebruik in &os; 5.X en ouder + <makevar>-DNOCLEAN</makevar>.</para> + </note> <para>Dit maakt het werk van de vorige <command>make buildworld</command> niet ongedaan.</para> @@ -1777,7 +1783,7 @@ Building everything.. <listitem> <para>Zet profiling uit (voeg - <quote>NOPROFILE=true</quote> toe aan + <quote>NO_PROFILE=true</quote> toe aan <filename>/etc/make.conf</filename>). Het is zeer waarschijnlijk niet nodig;</para> </listitem> diff --git a/nl_NL.ISO8859-1/books/handbook/desktop/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/desktop/chapter.sgml index 322864c1c9..afb2ff9b41 100644 --- a/nl_NL.ISO8859-1/books/handbook/desktop/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/desktop/chapter.sgml @@ -2,8 +2,8 @@ The FreeBSD Dutch Documentation Project $FreeBSD$ - $FreeBSDnl: nl_NL.ISO8859-1/books/handbook/desktop/chapter.sgml,v 1.33 2005/11/20 22:30:12 siebrand Exp $ - Gebaseerd op: 1.62 + $FreeBSDnl: doc/nl_NL.ISO8859-1/books/handbook/desktop/chapter.sgml,v 1.34 2005/12/18 11:59:01 siebrand Exp $ + Gebaseerd op: 1.63 --> <chapter id="desktop"> @@ -356,10 +356,7 @@ <para><application>Opera</application> is een zeer snelle, complete browser en voldoet aan standaarden. Hij komt in twee smaken: een &os; versie en een versie die draait onder &linux; - emulatie. Voor elk besturingssysteem is er een gratis versie - van de browser (adware) en een reclameloze versie die gekocht - kan worden op de <ulink - url="http://www.opera.com/">Opera website</ulink>.</para> + emulatie.</para> <para>De &os; package versie van <application>Opera</application> wordt zo geïnstalleerd:</para> diff --git a/nl_NL.ISO8859-1/books/handbook/disks/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/disks/chapter.sgml index 0882ba0004..ae57598dc5 100644 --- a/nl_NL.ISO8859-1/books/handbook/disks/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/disks/chapter.sgml @@ -2,8 +2,8 @@ The FreeBSD Dutch Documentation Project $FreeBSD$ - $FreeBSDnl: nl_NL.ISO8859-1/books/handbook/disks/chapter.sgml,v 1.30 2005/08/06 22:18:18 siebrand Exp $ - Gebaseerd op: 1.241 + $FreeBSDnl: doc/nl_NL.ISO8859-1/books/handbook/disks/chapter.sgml,v 1.31 2005/12/18 11:59:02 siebrand Exp $ + Gebaseerd op: 1.242 --> <chapter id="disks"> @@ -2579,6 +2579,109 @@ sa0(ncr1:4:0): Logical unit is in process of becoming ready</screen> </sect2> </sect1> + <sect1 id="backup-strategies"> + <sect1info> + <authorgroup> + <author> + <firstname>Lowell</firstname> + <surname>Gilbert</surname> + <contrib>Oorspronkelijk werk van </contrib> + </author> + </authorgroup> + <!-- 3 Dec 2005 --> + </sect1info> + + <title>Back-up strategieën</title> + + <para>Het eerste wat nodig is voor het ontwepken van een + back-upplan, is er voor te zorgen dat de volgende mogelijke + problemen worden ondervangen:</para> + + <itemizedlist> + <listitem> + <para>Schijffalen</para> + </listitem> + + <listitem> + <para>Per ongeluk verwijderde bestanden</para> + </listitem> + + <listitem> + <para>Willekeurige bestandscorruptie</para> + </listitem> + + <listitem> + <para>Complete machinevernietiging (door bijvoorbeeld brand), + inclusief de vernietiging van lokaal beschikbare + back-ups.</para> + </listitem> + </itemizedlist> + + <para>Het is goed mogelijk dat een aantal systemen het best + geholpen zijn door voor al deze problemen een andere techniek te + gebruiken. Behalve voor volledig persoonlijke systemen met + niet echt belangrijke gegevens, is het zelfs onwaarschijnlijk dat + één techniek alle mogelijke problemen kan + afvangen.</para> + + <para>Een aantal technieken in de gereedschapskist zijn:</para> + + <itemizedlist> + <listitem> + <para>Archiveren van een heel systeem op een back-up die niet + lokaal wordt bewaard. Dit biedt bescherming tegen alle + hierboven beschreven problemen, maar het is langzaam en + onhandig om er een restore van te maken. Het is mogelijk om + lokaal een kopie aan te houden en/of online, maar dan zijn er + nog steeds onhandigheden, in het bijzonder voor restores voor + gebruikers met beperkte rechten.</para> + </listitem> + + <listitem> + <para>Snapshots van bestandssystemen. Dit werkt eigenlijk + alleen in het geval bestanden per ongelijk verwijderd worden, + maar het kan in dat geval <emphasis>erg</emphasis> handig + zijn en het werkt snel en eenvoudig.</para> + </listitem> + + <listitem> + <para>Een kopie maken van hele bestandssystemen en/of schijven + (bijvoorbeeld een periodieke rsync van een hele machine). + Dit is in het algemeen het meest bruikbaar in netwerken met + specifieke eisen. Voor algemene bescherming tegen het falen + van een schijf, is het meestal minder geschikt dan + <acronym>RAID</acronym>. Voor het herstellen van per ongeluk + verwijderde bestanden is het vergelijkbaar aan + <acronym>UFS</acronym> snapshots, maar dat hangt af van + persoonlijke voorkeuren.</para> + </listitem> + + <listitem> + <para><acronym>RAID</acronym>. Minimaliseert of voorkomt + downtijd als een schijf faalt. Dit ten koste van het vaker + hebben van schijven die falen (omdat er meer van zijn), maar + wel met een veel lagere urgentie.</para> + </listitem> + + <listitem> + <para>Controleren van fingerprints van bestanden. Het + hulpprogramma &man.mtree.8; kan hier bij helpen. Hoewel dit + geen back-uptechniek is, zorgt het er wel voor dat kan worden + opgemerkt wanneer back-ups geraadpleegd moeten worden. Dit + is in het bijzonder belangrijk voor offline back-ups en de + fingerprints horen periodiek gecontroleerd te worden.</para> + </listitem> + </itemizedlist> + + <para>Het is makkelijk om met nog meer technieken op de proppen te + komen, waaronder veel variaties op de bovengenoemde. Bijzondere + eisen leiden vaak tot bijzondere oplossingen. Het back-uppen van + een draaiende database vereist bijvoorbeeld een methode die + toegespitst is op de gebruikte database software als tussenstap. + Het is van groot belang om te onderkennen tegen welke gevaren er + bescherming dient te zijn en hoe daarmee om te gaan.</para> + </sect1> + <sect1 id="backup-basics"> <title>Back-upbeginselen</title> diff --git a/nl_NL.ISO8859-1/books/handbook/geom/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/geom/chapter.sgml index 69dc391d42..606265d0ca 100644 --- a/nl_NL.ISO8859-1/books/handbook/geom/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/geom/chapter.sgml @@ -2,8 +2,8 @@ The FreeBSD Dutch Documentation Project $FreeBSD$ - $FreeBSDnl: nl_NL.ISO8859-1/books/handbook/geom/chapter.sgml,v 1.9 2005/11/20 22:30:13 siebrand Exp $ - Gebaseerd op: 1.12 + $FreeBSDnl: doc/nl_NL.ISO8859-1/books/handbook/geom/chapter.sgml,v 1.11 2005/12/18 11:59:02 siebrand Exp $ + Gebaseerd op: 1.16 --> <chapter id="GEOM"> @@ -169,7 +169,7 @@ <para>Zorg ervoor dat er een mountpunt beschikbaar is. Als dit volume een rootpartitie wordt, gebruikt dan tijdelijk een ander mountpunt zoals <filename - role="directory">/mnt</filename>.</para> + role="directory">/mnt</filename>:</para> <screen>&prompt.root; <userinput>mkdir /mnt</userinput></screen> </step> @@ -334,7 +334,7 @@ Done.</screen> op het mountpunt <filename role="directory">/mnt</filename>:</para> - <screen>&prompt.root <userinput>mount /dev/mirror/gm0s1a /mnt</userinput></screen> + <screen>&prompt.root; <userinput>mount /dev/mirror/gm0s1a /mnt</userinput></screen> <para>Verplaats nu alle gegevens van de bootschijf naar dit nieuwe bestandssysteem. In dit voorbeeld worden &man.dump.8; en @@ -383,7 +383,7 @@ Done.</screen> </note> <para>Voeg de volgende regel toe aan de nieuwe - <filename>/boot/loader.conf:</filename></para> + <filename>/boot/loader.conf</filename>:</para> <screen>&prompt.root; <userinput>echo 'geom_mirror_load="YES"' >> /mnt/boot/loader.conf</userinput></screen> diff --git a/nl_NL.ISO8859-1/books/handbook/mirrors/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/mirrors/chapter.sgml index a6a4749ca6..d93a934d5c 100644 --- a/nl_NL.ISO8859-1/books/handbook/mirrors/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/mirrors/chapter.sgml @@ -2,8 +2,8 @@ The FreeBSD Dutch Documentation Project $FreeBSD$ - $FreeBSDnl: nl_NL.ISO8859-1/books/handbook/mirrors/chapter.sgml,v 1.38 2005/11/26 14:31:31 siebrand Exp $ - Gebaseerd op: 1.391 + $FreeBSDnl: doc/nl_NL.ISO8859-1/books/handbook/mirrors/chapter.sgml,v 1.41 2005/12/18 11:59:02 siebrand Exp $ + Gebaseerd op: 1.398 Vertaald door: Siebrand Mazeland --> @@ -491,15 +491,12 @@ Warning: Permanently added 'anoncvs.freebsd.org' (DSA) to the list of known host </example> <example> - <title>Iets uitchecken uit -CURRENT (&man.ls.1;) en dat weer - verwijderen:</title> + <title>Iets uitchecken uit -CURRENT (&man.ls.1;):</title> - <screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs</userinput> + <screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs</userinput> &prompt.user; <userinput>cvs login</userinput> <emphasis>At the prompt, enter the password</emphasis> <quote>anoncvs</quote>. -&prompt.user; <userinput>cvs co ls</userinput> -&prompt.user; <userinput>cvs release -d ls</userinput> -&prompt.user; <userinput>cvs logout</userinput></screen> +&prompt.user; <userinput>cvs co ls</userinput></screen> </example> <example> @@ -514,39 +511,34 @@ Warning: Permanently added 'anoncvs.freebsd.org' (DSA) to the list of known host </example> <example> - <title>De versie van &man.ls.1; in de 3.X-STABLE tak + <title>De versie van &man.ls.1; in de 6-STABLE tak uitchecken:</title> - <screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs</userinput> + <screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs</userinput> &prompt.user; <userinput>cvs login</userinput> <emphasis>At the prompt, enter the password</emphasis> <quote>anoncvs</quote>. -&prompt.user; <userinput>cvs co -rRELENG_3 ls</userinput> -&prompt.user; <userinput>cvs release -d ls</userinput> -&prompt.user; <userinput>cvs logout</userinput></screen> +&prompt.user; <userinput>cvs co -rRELENG_6 ls</userinput></screen> </example> <example> <title>Een lijst wijzigingen maken (als unified diffs) voor &man.ls.1;</title> - <screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs</userinput> + <screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs</userinput> &prompt.user; <userinput>cvs login</userinput> <emphasis>At the prompt, enter the password</emphasis> <quote>anoncvs</quote>. -&prompt.user; <userinput>cvs rdiff -u -rRELENG_3_0_0_RELEASE -rRELENG_3_4_0_RELEASE ls</userinput> -&prompt.user; <userinput>cvs logout</userinput></screen> +&prompt.user; <userinput>cvs rdiff -u -rRELENG_5_3_0_RELEASE -rRELENG_5_4_0_RELEASE ls</userinput></screen> </example> <example> <title>Uitzoeken welke modulenamen gebruikt kunnen worden:</title> - <screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs</userinput> + <screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs</userinput> &prompt.user; <userinput>cvs login</userinput> <emphasis>At the prompt, enter the password</emphasis> <quote>anoncvs</quote>. &prompt.user; <userinput>cvs co modules</userinput> -&prompt.user; <userinput>more modules/modules</userinput> -&prompt.user; <userinput>cvs release -d modules</userinput> -&prompt.user; <userinput>cvs logout</userinput></screen> +&prompt.user; <userinput>more modules/modules</userinput></screen> </example> </sect2> @@ -2476,18 +2468,17 @@ doc/zh_*</screen> HTTP.</para> <para>Net als <application>CVSup</application> gebruikt - <application>portsnap</application> een + <application>Portsnap</application> een <emphasis>pull</emphasis>-model voor het bijwerken: de voorverpakte en getekende portsstructuren worden op een webserver geplaatst die passief wacht op verzoeken om bestanden door clients. Gebruikers dienen ofwel handmatig - <application>portsnap</application> te draaien om de updates op - te halen ofwel een taak in <command>cron</command> in te - stellen om de updates regelmatig automatisch op te laten - halen.</para> + &man.portsnap.8; te draaien om de updates op te halen ofwel een + taak in &man.cron.8; in te stellen om de updates regelmatig + automatisch op te laten halen.</para> <para>Om technische redenen werkt - <application>portsnap</application> de portsstructuur in + <application>Portsnap</application> de portsstructuur in <filename>/usr/ports/</filename> niet direct <quote>live</quote> bij. In plaats daarvan werkt het met een gecomprimeerde kopie van de portsstructuur die standaard in @@ -2496,7 +2487,7 @@ doc/zh_*</screen> portsstructuur bij te werken.</para> <note> - <para>Als <application>portsnap</application> is + <para>Als <application>Portsnap</application> is geïnstalleerd uit de &os; Portscollectie, dan is de standaardlocatie voor het gecomprimeerde snapshot <filename>/usr/local/portsnap/</filename> in plaats van @@ -2508,7 +2499,7 @@ doc/zh_*</screen> <title>Installatie</title> <para>In &os; 6.0 en nieuwere versies, is - <application>portsnap</application> onderdeel van het &os; + <application>Portsnap</application> onderdeel van het &os; basissysteem. In oudere versies van &os; kan het geïnstalleerd worden met de port <filename role="package">sysutils/portsnap</filename>.</para> @@ -2524,7 +2515,7 @@ doc/zh_*</screen> staan in de handboekpagina van &man.portsnap.conf.5;.</para> <note> - <para>Als <application>portsnap</application> is + <para>Als <application>Portsnap</application> is geïnstalleerd uit de Portscollectie, dan wordt als instellingenbestand <filename>/usr/local/etc/portsnap.conf</filename> gebruikt in @@ -2543,12 +2534,11 @@ doc/zh_*</screen> <title><application>Portsnap</application> voor de eerste keer draaien</title> - <para>De eerste keer dat <application>portsnap</application> - wordt gedraaid, moet het een gecomprimeerde snapshot van de - complete portsstructuur downloaden naar - <filename>/var/db/portsnap/</filename> (of + <para>De eerste keer dat &man.portsnap.8; wordt gedraaid, moet + het een gecomprimeerde snapshot van de complete portsstructuur + downloaden naar <filename>/var/db/portsnap/</filename> (of <filename>/usr/local/portsnap/</filename> als - <application>portsnap</application> geïnstalleerd is uit + <application>Portsnap</application> geïnstalleerd is uit de Portscollectie). Dit is een download van ongeveer 36 MB.</para> @@ -2560,10 +2550,18 @@ doc/zh_*</screen> gebeuren, zelfs als er al een portsstructuur bestaat in die map (bijvoorbeeld door gebruik van <application>CVSup</application>), omdat hiermee een - uitgangspunt wordt gemaakt dat - <application>portsnap</application> gebruikt om later te - bepalen welke delen van de portsstructuur bijgewerkt moeten - worden.</para> + uitgangspunt wordt gemaakt dat <command>portsnap</command> + gebruikt om later te bepalen welke delen van de portsstructuur + bijgewerkt moeten worden.</para> + + <note> + <para>In de standaard installatie wordt <filename + role="directory">/usr/ports</filename> niet aangemaakt. + Maak deze map aan alvorens + <application>portsnap</application> te gebruiken:</para> + + <screen>&prompt.root; <userinput>mkdir /usr/ports</userinput></screen> + </note> <screen>&prompt.root; <userinput>portsnap extract</userinput></screen> </sect2> @@ -2578,17 +2576,15 @@ doc/zh_*</screen> gecomprimeerde updates voor het snapshot (<emphasis>fetch</emphasis>) en die gebruiken om de live portsstructuur bij te werken (<emphasis>update</emphasis>). - Deze twee stappen kunnen door - <application>portsnap</application> in een enkel commando - worden uitgevoerd:</para> + Deze twee stappen kunnen door <command>portsnap</command> in + een enkel commando worden uitgevoerd:</para> <screen>&prompt.root; <userinput>portsnap fetch update</userinput></screen> <note> - <para>Sommige oudere versies van - <application>portsnap</application> ondersteunen deze - syntaxis niet. Als het bovenstaande niet werkt, probeer - dan het volgende:</para> + <para>Sommige oudere versies van <command>portsnap</command> + ondersteunen deze syntaxis niet. Als het bovenstaande niet + werkt, probeer dan het volgende:</para> <screen>&prompt.root; <userinput>portsnap fetch</userinput> &prompt.root; <userinput>portsnap update</userinput></screen> @@ -2599,11 +2595,11 @@ doc/zh_*</screen> <title>Portsnap draaien vanuit cron</title> <para>Om het probleem dat hordes gebruikers inhameren op de - servers voor <application>portsnap</application> te voorkomen, + servers voor <application>Portsnap</application> te voorkomen, draait <userinput>portsnap fetch</userinput> niet vanuit een - <command>cron</command>-opdracht. In plaats daarvan is het - commando <userinput>portsnap cron</userinput> beschikbaar, dat - een willekeurige periode wacht, tot 3600 seconden, voordat de + &man.cron.8;-opdracht. In plaats daarvan is het commando + <command>portsnap cron</command> beschikbaar, dat een + willekeurige periode wacht, tot 3600 seconden, voordat de updates worden opgehaald.</para> <para>Daarnaast wordt het sterk aangeraden om @@ -2613,8 +2609,8 @@ doc/zh_*</screen> waarop een port wordt gebouwd of geïnstalleerd. Het is wel veilig om de INDEX-bestanden voor de ports bij te werken en dit kan gedaan worden door de vlag <option>-I</option> mee te - geven aan <application>portsnap</application>. Natuurlijk is - het op een later moment nodig om, als <command>portsnap -I + geven aan <command>portsnap</command>. Natuurlijk is het op + een later moment nodig om, als <command>portsnap -I update</command> draait vanuit de <command>cron</command>, <command>portsnap update</command> te draaien zonder de vlag <option>-I</option> om de rest van de structuur bij te @@ -2622,26 +2618,26 @@ doc/zh_*</screen> <para>Door de volgende regel toe te voegen aan <filename>/etc/crontab</filename> werkt - <application>portsnap</application> zijn gecomprimeerde + <application>Portsnap</application> zijn gecomprimeerde snapshot bij, worden de INDEX-bestanden in <filename>/usr/ports/</filename> bijgewerkt en wordt er een e-mail verzonden als er ports zijn die bijgewerkt moeten worden:</para> - <screen>0 3 * * * root portsnap -I cron update && pkg_version -vIL=</screen> + <programlisting>0 3 * * * root portsnap -I cron update && pkg_version -vIL=</programlisting> <note> <para>Als een systeemklok niet is ingesteld op de lokale - tijdzone, vervang <userinput>3</userinput> dan door een + tijdzone, vervang <literal>3</literal> dan door een willekeurige waarde tussen 0 en 23 om de belasting op de - servers voor <application>portsnap</application> zo + servers voor <application>Portsnap</application> zo evenwichtig mogelijk te verdelen.</para> </note> <note> <para>Sommige oudere versie van - <application>portsnap</application> bieden geen ondersteuning - voor het opgeven van meerdere commando's, zoals bijvoorbeeld + <command>portsnap</command> bieden geen ondersteuning voor + het opgeven van meerdere commando's, zoals bijvoorbeeld <literal>cron update</literal>, in dezelde aanroep van <command>portsnap</command>. Als de regel hierboven faalt, probeer <command>portsnap -I cron update</command> dan te @@ -2705,6 +2701,16 @@ doc/zh_*</screen> </varlistentry> <varlistentry> + <term>RELENG_6_0</term> + + <listitem> + <para>De releasetak voor &os;-6.0, alleen gebruikt voor + beveiligingswaarschuwingen en andere kritische + aanpassingen.</para> + </listitem> + </varlistentry> + + <varlistentry> <term>RELENG_5</term> <listitem> diff --git a/nl_NL.ISO8859-1/books/handbook/multimedia/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/multimedia/chapter.sgml index f12d90353b..cd591e192c 100644 --- a/nl_NL.ISO8859-1/books/handbook/multimedia/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/multimedia/chapter.sgml @@ -2,8 +2,8 @@ The FreeBSD Dutch Documentation Project $FreeBSD$ - $FreeBSDnl: nl_NL.ISO8859-1/books/handbook/multimedia/chapter.sgml,v 1.26 2005/10/04 21:04:26 siebrand Exp $ - Gebaseerd op: 1.111 + $FreeBSDnl: doc/nl_NL.ISO8859-1/books/handbook/multimedia/chapter.sgml,v 1.27 2005/12/10 23:40:57 siebrand Exp $ + Gebaseerd op: 1.113 --> <chapter id="multimedia"> @@ -869,18 +869,17 @@ link acd0 rdvd</programlisting> </indexterm> <para>Een aantal van de hier besproken ports hebben specifieke - kernelopties nodig om correct gebouwd te worden. Voordat ze - gebouwd worden, dienen deze opties aan het bestand met - kernelinstellingen toegevoegd te worden, dient de kernel - opnieuw gebouwd te worden en het systeem opnieuw gestart te - worden:</para> + kernelopties nodig om correct gebouwd te worden. Voeg de + onderstaande instelling toe aan het bestand met + kernelinstellingen, bouw en installeer daarna de kernel en + herstart het systeem:</para> - <programlisting>option CPU_ENABLE_SSE -option USER_LDT</programlisting> + <programlisting>option CPU_ENABLE_SSE</programlisting> <note> - <para><literal>option USER_LDT</literal> bestaat niet in - &os; 5.X.</para> + <para>In &os; 4.X dient <literal>option USER_LDT</literal> + toegevoegd te worden aan het bestand met kernelinstellingen. + In &os; 5.X en later bestaat deze optie niet.</para> </note> <para>Om de gedeeld geheugen interface van X11 te verbeteren, @@ -1443,52 +1442,44 @@ zoom=yes</programlisting> <para>De software <application>transcode</application> is geen speler, maar een verzameling hulpprogramma's voor het - hercoderen van <filename>.avi</filename> en - <filename>.mpg</filename> bestanden. Met + hercoderen van video- en audiobestanden. Met <application>transcode</application> wordt het mogelijk om videobestanden samen te voegen, kapotte bestanden te repareren en commandoregelprogramma's te gebruiken met <filename>stdin/stdout</filename> stream interfaces.</para> - <para>Net als <application>MPlayer</application> is - <application>transcode</application> bijzonder experimentele - software die vanuit de port <filename - role="package">multimedia/transcode</filename> gebouwd moet - worden. Er zijn veel opties voor <command>make</command> - beschikbaar en daaruit worden de volgende aangeraden:</para> - - <screen>&prompt.root; <userinput>make WITH_LIBMPEG2=yes</userinput></screen> + <para>Tijdens het bouwen van de port <filename + role="package">multimedia/transcode</filename> kan een + groot aantal opties opgegeven worden en de volgende + commandoregel wordt geadviseerd om + <application>transcode</application> te bouwen:</para> - <para>Als ook <filename - role="package">multimedia/avifile</filename> wordt - geïnstalleerd, dan dient <literal>WITH_AVIFILE</literal> - aan de <command>make</command> commandoregel te worden - toegevoegd:</para> + <screen>&prompt.root; <userinput>make WITH_OPTIMIZED_CFLAGS=yes WITH_LIBA52=yes WITH_LAME=yes WITH_OGG=yes \ +WITH_MJPEG=yes -DWITH_XVID=yes</userinput></screen> - <screen>&prompt.root; <userinput>make WITH_AVIFILE=yes WITH_LIBMPEG2=yes</userinput></screen> + <para>De geadviseerde instellingen zijn toereikend voor de + meeste gebruikers.</para> - <para>Hieronder staan twee voorbeelden beschreven waarin - <command>transcode</command> wordt gebruikt voor het - converteren van video met als resultaat anders geschaalde - uitvoer. Het eerste encodeert de uitvoer naar een openDIVX - AVI-bestand, het tweede encodeert het naar het meer portabele - formaat MPEG.</para> + <para>Om de mogelijkheden van <command>transcode</command> te + illustreren volgt nu een voorbeeld van hoe een DivX-bestand + om te zetten in een PAL MPEG-1-bestand (PAL VCD):</para> - <screen>&prompt.user; <userinput>transcode -i input.vob -x vob -V -Z 320x240 \ --y opendivx -N 0x55 -o output.avi</userinput></screen> + <screen>&prompt.user; <userinput>transcode -i input.avi -V --export_prof vcd-pal -o output_vcd</userinput> +&prompt.user; <userinput>mplex -f 1 -o output_vcd.mpg output_vcd.m1v output_vcd.mpa</userinput></screen> - <screen>&prompt.user; <userinput>transcode -i input.vob -x vob -V -Z 320x240 \ --y mpeg -N 0x55 -o output.tmp</userinput> -&prompt.user; <userinput>tcmplex -o output.mpg -i output.tmp.m1v -p output.tmp.mpa -m 1</userinput></screen> + <para>Het resulterende MPEG-bestand, + <filename>output_vcd.mpg</filename>, is klaar om afgespeeld + te worden met <application>MPlayer</application>. Het kan + ook op een CD-R gebrand worden om er een Video CD mee te + maken. In dat geval is het nodig om de programma's <filename + role="package">multimedia/vcdimager</filename> en <filename + role="package">sysutils/cdrdao</filename> te + installeren.</para> <para>Er is een hulppagina voor <command>transcode</command>, - maar er is weinig documentatie voor de verschillende - <command>tc*</command> programma's (zoals - <command>tcmplex</command>) die ook zijn geïnstalleerd. - Voor ieder commando is wel de commandoregeloptie - <option>-h</option> beschikbaar, waarmee een korte - beschrijving voor het gebruik van het programma wordt - getoond.</para> + maar kijk ook op <ulink + url="http://www.transcoding.org/cgi-bin/transcode">transcode + wiki</ulink> voor meer informatie en voorbeelden.</para> <para>Als de twee vergeleken worden, draait <command>transcode</command> aanzienlijk langzamer dan diff --git a/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.sgml index 016536ad27..7487b6bc77 100644 --- a/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.sgml @@ -2,8 +2,8 @@ The FreeBSD Dutch Documentation Project $FreeBSD$ - $FreeBSDnl: nl_NL.ISO8859-1/books/handbook/network-servers/chapter.sgml,v 1.45 2005/10/04 21:04:26 siebrand Exp $ - Gebaseerd op: 1.70 + $FreeBSDnl: doc/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.sgml,v 1.46 2005/12/10 23:40:58 siebrand Exp $ + Gebaseerd op: 1.71 --> <chapter id="network-servers"> diff --git a/nl_NL.ISO8859-1/books/handbook/pgpkeys/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/pgpkeys/chapter.sgml index 895057291d..53025e1e31 100644 --- a/nl_NL.ISO8859-1/books/handbook/pgpkeys/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/pgpkeys/chapter.sgml @@ -2,8 +2,8 @@ The FreeBSD Dutch Documentation Project $FreeBSD$ - $FreeBSDnl: nl_NL.ISO8859-1/books/handbook/pgpkeys/chapter.sgml,v 1.24 2005/10/31 19:51:47 siebrand Exp $ - Gebaseerd op: 1.277 + $FreeBSDnl: doc/nl_NL.ISO8859-1/books/handbook/pgpkeys/chapter.sgml,v 1.28 2005/12/18 20:12:26 remko Exp $ + Gebaseerd op: 1.285 Vertaald door: Siebrand Mazeland --> @@ -38,6 +38,11 @@ <title>&a.core-secretary;</title> &pgpkey.core-secretary; </sect2> + + <sect2 id="pgpkey-portmgr-secretary"> + <title>&a.portmgr-secretary;</title> + &pgpkey.portmgr-secretary; + </sect2> </sect1> <sect1 id="pgpkeys-core"> @@ -127,6 +132,11 @@ &pgpkey.damien; </sect2> + <sect2 id="pgpkey-tdb"> + <title>&a.tdb;</title> + &pgpkey.tdb; + </sect2> + <sect2 id="pgpkey-mbr"> <title>&a.mbr;</title> &pgpkey.mbr; @@ -167,6 +177,11 @@ &pgpkey.wilko; </sect2> + <sect2 id="pgpkey-oleg"> + <title>&a.oleg;</title> + &pgpkey.oleg; + </sect2> + <sect2 id="pgpkey-jcamou"> <title>&a.jcamou;</title> &pgpkey.jcamou; @@ -337,11 +352,6 @@ &pgpkey.billf; </sect2> - <sect2 id="pgpkey-patrick"> - <title>&a.patrick;</title> - &pgpkey.patrick; - </sect2> - <sect2 id="pgpkey-gioria"> <title>&a.gioria;</title> &pgpkey.gioria; @@ -507,11 +517,6 @@ &pgpkey.mlaier; </sect2> - <sect2 id="pgpkey-alex"> - <title>&a.alex;</title> - &pgpkey.alex; - </sect2> - <sect2 id="pgpkey-erwin"> <title>&a.erwin;</title> &pgpkey.erwin; @@ -612,6 +617,11 @@ &pgpkey.dwmalone; </sect2> + <sect2 id="pgpkey-sem"> + <title>&a.sem;</title> + &pgpkey.sem; + </sect2> + <sect2 id="pgpkey-ehaupt"> <title>&a.ehaupt;</title> &pgpkey.ehaupt; @@ -647,11 +657,6 @@ &pgpkey.sanpei; </sect2> - <sect2 id="pgpkey-jim"> - <title>&a.jim;</title> - &pgpkey.jim; - </sect2> - <sect2 id="pgpkey-marcel"> <title>&a.marcel;</title> &pgpkey.marcel; @@ -732,9 +737,9 @@ &pgpkey.den; </sect2> - <sect2 id="pgpkey-pirzyk"> - <title>&a.pirzyk;</title> - &pgpkey.pirzyk; + <sect2 id="pgpkey-gerald"> + <title>&a.gerald;</title> + &pgpkey.gerald; </sect2> <sect2 id="pgpkey-jdp"> @@ -767,6 +772,11 @@ &pgpkey.dfr; </sect2> + <sect2 id="pgpkey-rees"> + <title>&a.rees;</title> + &pgpkey.rees; + </sect2> + <sect2 id="pgpkey-trhodes"> <title>&a.trhodes;</title> &pgpkey.trhodes; @@ -777,11 +787,6 @@ &pgpkey.benno; </sect2> - <sect2 id="pgpkey-paul"> - <title>&a.paul;</title> - &pgpkey.paul; - </sect2> - <sect2 id="pgpkey-roberto"> <title>&a.roberto;</title> &pgpkey.roberto; @@ -847,11 +852,6 @@ &pgpkey.vanilla; </sect2> - <sect2 id="pgpkey-cshumway"> - <title>&a.cshumway;</title> - &pgpkey.cshumway; - </sect2> - <sect2 id="pgpkey-demon"> <title>&a.demon;</title> &pgpkey.demon; @@ -867,6 +867,11 @@ &pgpkey.scop; </sect2> + <sect2 id="pgpkey-anray"> + <title>&a.anray;</title> + &pgpkey.anray; + </sect2> + <sect2 id="pgpkey-glebius"> <title>&a.glebius;</title> &pgpkey.glebius; @@ -892,11 +897,6 @@ &pgpkey.sobomax; </sect2> - <sect2 id="pgpkey-dcs"> - <title>&a.dcs;</title> - &pgpkey.dcs; - </sect2> - <sect2 id="pgpkey-brian"> <title>&a.brian;</title> &pgpkey.brian; @@ -972,11 +972,6 @@ &pgpkey.flz; </sect2> - <sect2 id="pgpkey-viny"> - <title>&a.viny;</title> - &pgpkey.viny; - </sect2> - <sect2 id="pgpkey-ume"> <title>&a.ume;</title> &pgpkey.ume; @@ -1012,6 +1007,11 @@ &pgpkey.joerg; </sect2> + <sect2 id="pgpkey-emax"> + <title>&a.emax;</title> + &pgpkey.emax; + </sect2> + <sect2 id="pgpkey-bz"> <title>&a.bz;</title> &pgpkey.bz; diff --git a/nl_NL.ISO8859-1/books/handbook/printing/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/printing/chapter.sgml index e6d476d0e4..5c3dfb4b4c 100644 --- a/nl_NL.ISO8859-1/books/handbook/printing/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/printing/chapter.sgml @@ -1,7 +1,9 @@ <!-- - The FreeBSD Dutch Documentation Project + The FreeBSD Documentation Project $FreeBSD$ + $FreeBSDnl: doc/nl_NL.ISO8859-1/books/handbook/printing/chapter.sgml,v 1.46 2005/12/18 20:01:54 remko Exp $ + Gebaseerd op: 1.95 --> <chapter id="printing"> @@ -10,16 +12,14 @@ <author> <firstname>Sean</firstname> <surname>Kelly</surname> - <contrib>Bijgedragen door </contrib> + <contrib>Bijdrage van </contrib> </author> - <!-- 30 Sept 1995 --> </authorgroup> <authorgroup> <author> <firstname>Jim</firstname> <surname>Mock</surname> - <contrib>Herstructureerd en geupdate door </contrib> - <!-- Mar 2000 --> + <contrib>Geherstructureerd en bijgewerkt door </contrib> </author> </authorgroup> <authorgroup> @@ -28,376 +28,5408 @@ <surname>Koopman</surname> <contrib>Vertaald door </contrib> </author> - <!-- 22 May 2004 --> </authorgroup> </chapterinfo> - <title>* Printen</title> + + <title>Afdrukken</title> <sect1 id="printing-synopsis"> - <title>* Samenvatting</title> + <title>Overzicht</title> + + <indexterm><primary>wachtrijsysteem LPD</primary></indexterm> + + <indexterm><primary>afdrukken</primary></indexterm> + + <para>&os; kan gebruikt worden om op een scala aan printers af te + drukken, van de oudste matrixprinter tot de nieuwste + laserprinters en alles er tussenin, waardoor op hoge kwaliteit + afgedrukt kan worden vanuit de gebruikte programma's.</para> + + <para>&os; kan ook ingesteld worden als printserver in een netwerk. + Dan kan &os; afdrukopdrachten ontvangen van uiteenlopende + computers, waaronder &os;, &windows; en &macos; hosts. &os; + zorgt ervoor dat er één afdrukopdracht per keer + wordt afgedrukt, houdt statistieken bij van gebruikers en + computers die de meeste afdrukken maken, drukt + <quote>voorbladen</quote> af, zodat duidelijk is van wie de + afdruk is en nog veel meer.</para> + + <para>Na het lezen van dit hoofdstuk weet de lezer:</para> + + <itemizedlist> + <listitem> + <para>Hoe het &os; afdrukwachtrijsysteem moet worden + ingesteld;</para> + </listitem> + + <listitem> + <para>Hoe afdrukfilters kunnen worden geïnstalleerd, om + bepaalde afdrukopdrachten op een andere manier af te + handelen, zoals het omzetten van documenten naar formaten die + een printer begrijpt;</para> + </listitem> + + <listitem> + <para>Hoe voorbladen kunnen worden afgedrukt;</para> + </listitem> + + <listitem> + <para>Hoe er op printers die op andere computers zijn + aangesloten kan worden afgedrukt;</para> + </listitem> + + <listitem> + <para>Hoe er op printers die direct op het netwerk zijn + aangesloten kan worden afgedrukt;</para> + </listitem> + + <listitem> + <para>Hoe afdrukbeperkingen kunnen worden opgelegd, zoals het + beperken van de grootte van de afdrukopdracht, en bepaalde + gebruikers verbieden af te drukken;</para> + </listitem> + + <listitem> + <para>Hoe afdrukstatistieken kunnen worden bijgehouden en het + printergebruik in de gaten kan worden gehouden;</para> + </listitem> - <para></para> + <listitem> + <para>Hoe problemen met afdrukken kunnen worden + opgelost.</para> + </listitem> + </itemizedlist> + + <para>Aangeraden voorkennis:</para> + + <itemizedlist> + <listitem> + <para>Hoe een nieuwe kernel wordt ingesteld, gebouwd en + geïnstalleerd (<xref linkend="kernelconfig">).</para> + </listitem> + </itemizedlist> </sect1> <sect1 id="printing-intro-spooler"> - <title>* Inleiding</title> + <title>Inleiding</title> + + <para>Om printers onder &os; te kunnen gebruiken moeten ze + kunnen werken met het Berkeley line afdrukwachtrijsysteem, ook + wel bekend als het wachtrijsysteem + <application>LPD</application>. Dit is het standaard + afdruksysteem onder &os;. Dit hoofdstuk introduceert het + wachtrijsysteem <application>LPD</application>, vaak simpelweg + <application>LPD</application> genoemd en begeleidt bij het + instellen.</para> + + <para>Als de gebruiker al bekend is met + <application>LPD</application> of een ander + afdrukwachtrijsysteem, dan kan verder worden lezen vanaf <link + linkend="printing-intro-setup">Standaardinstallatie</link>.</para> + + <para><application>LPD</application> regelt alles met betrekking + tot de printer van een host. Het is verantwoordelijk voor een + aantal zaken:</para> + + <itemizedlist> + <listitem> + <para>Het regelt de toegang tot aangesloten printers en + printers die op andere hosts op het netwerk zijn + aangesloten;</para> + </listitem> + + <indexterm><primary>afdrukopdrachten</primary></indexterm> + + <listitem> + <para>Het geeft gebruikers de mogelijkheid bestanden aan te + bieden die afgedrukt moeten worden; deze aangeboden bestanden + worden <emphasis>afdrukopdrachten</emphasis> genoemd;</para> + </listitem> + + <listitem> + <para>Het voorkomt dat gebruikers tegelijkertijd een printer + benaderen door een <emphasis>wachtrij</emphasis> bij te + houden voor elke printer;</para> + </listitem> + + <listitem> + <para>Het kan <emphasis>voorbladen</emphasis> afdukken (in het + Engels ook wel bekend als <emphasis>banner</emphasis>, of + <emphasis>burst</emphasis> pagina's) zodat gebruikers hun + afdruk tussen andere afdrukken makkelijk terug kunnen + vinden;</para> + </listitem> + + <listitem> + <para>Het handelt de communicatie af voor printers die op een + seriële poort zijn aangesloten;</para> + </listitem> + + <listitem> + <para>Het kan afdrukopdrachten over een netwerk versturen naar + een <application>LPD</application> wachtrij op een andere + host;</para> + </listitem> + + <listitem> + <para>Het kan speciale filters aanroepen die afdrukopdrachten + converteren voor verschillende printertalen of + afdrukmogelijkheden;</para> + </listitem> + + <listitem> + <para>Het houdt statistieken bij van het printergebruik.</para> + </listitem> + </itemizedlist> + + <para>Middels een instellingenbestand + (<filename>/etc/printcap</filename>) en door speciale filters + beschikbaar te stellen, kan het <application>LPD</application> + systeem alle, of enkele van bovenstaande taken uitvoeren + op een grote verscheidenheid aan afdrukhardware.</para> <sect2 id="printing-intro-why"> - <title>* Waarom je het wachtrijsysteem zou moeten - gebruiken</title> + <title>Waarom het wachtrijsysteem gebruikt zou moet + worden</title> + + <para>Als er maar één gebruiker is op een systeem, + staat terecht ter discussie waarom het wachtrijsysteem nodig is + als toegangscontrole, voorbladen en printerstatistieken niet + nodig zijn. Hoewel directe toegang tot de printer is in te + stellen, is het raadzaam het wachtrijsysteem toch te + gebruiken, omdat:</para> + + <itemizedlist> + <listitem> + <para><application>LPD</application> afdrukopdrachten in de + achtergrond afhandelt. Dan is het niet nodig te wachten + tot de gegevens naar de printer zijn verzonden;</para> + </listitem> - <para></para> + <indexterm><primary>&tex;</primary></indexterm> + + <listitem> + <para><application>LPD</application> op eenvoudige wijze een + afdrukopdracht door een filter kan afdrukken om kopteksten + met datum/tijd toe te voegen of een speciaal + bestandsformaat (zoals een &tex; DVI bestand) om te zetten + naar een formaat dat de printer begrijpt. Deze handelingen + hoeven dan niet handmatig uitgevoerd te worden;</para> + </listitem> + + <listitem> + <para>Veel gratis en commerciële software met een + afdrukfunctie verwacht dat er een wachtrijsysteem aanwezig + is op een systeem om afdrukopdrachten naar te sturen. Door + een wachtrijsysteem op te zetten, wordt toekomstig te + installeren of reeds geïstalleerde software op + eenvoudige wijze ondersteund.</para> + </listitem> + </itemizedlist> </sect2> </sect1> <sect1 id="printing-intro-setup"> - <title>* Standaard opzet</title> + <title>Standaardinstallatie</title> + + <para>Om printers met het <application>LPD</application> + wachtrijsysteem te kunnen gebruiken, dienen zowel de + printerhardware als de <application>LPD</application> software + geïnstalleerd te worden. Dit document beschrijft deze + installatie in twee stappen:</para> + + <itemizedlist> + <listitem> + <para>In het onderdeel <link + linkend="printing-simple">Eenvoudige + printerinstallatie</link> staat hoe een printer moet worden + aangesloten, hoe <application>LPD</application> er mee kan + communiceren en hoe tekstbestanden afgedrukt kunnen + worden.</para> + </listitem> + + <listitem> + <para>In <link linkend="printing-advanced">Geavanceerde + printerinstallatie</link> staat beschreven hoe een scala + aan bestandsformaten afgedrukt kan worden, hoe voorbladen + kunnen worden afgedrukt en hoe statistieken van de printer + kunnen worden bijgehouden.</para> + </listitem> + </itemizedlist> <sect2 id="printing-simple"> - <title>* Eenvoudige printer opzet</title> + <title>Eenvoudige printerinstallatie</title> + + <para>Nu wordt toegelicht hoe de printerhardware en de + <application>LPD</application> software ingesteld moeten worden + om een printer te kunnen gebruiken. Het behandelt de + basis:</para> + + <itemizedlist> + <listitem> + <para><link + linkend="printing-hardware">Hardware-instelling</link> + geeft een aantal aanwijzingen voor het aansluiten van een + printer op een poort van een computer.</para> + </listitem> + + <listitem> + <para><link + linkend="printing-software">Software-instellingen</link> + toont hoe het instellingenbestand + (<filename>/etc/printcap</filename>) voor het + <application>LPD</application>-systeem moet worden + opgezet.</para> + </listitem> + </itemizedlist> + + <para>Hoe een printer geïnstalleerd moet worden die via een + netwerkprotocol gegevens ontvangt, in plaats van een + seriële of parallelle poort, staat in <link + linkend="printing-advanced-network-net-if">Printers met + netwerkinterfaces</link>.</para> + + <para>Hoewel dit onderdeel <quote>Eenvoudige + printerinstallatie</quote> heet, is het redelijk complex. De + printer met de computer en het + <application>LPD</application>-systeem laten samenwerken is het + moeilijkste. De geavanceerde opties, zoals voorbladen en + statistieken, zijn relatief makkelijk als de printer eenmaal + werkt.</para> <sect3 id="printing-hardware"> - <title>* Hardware Setup</title> + <title>Hardware-instelling</title> + + <para>Hier worden de verschillende manieren waarop een printer + op een computer kan worden aangesloten beschreven. Het + bespreekt de soorten poorten en kabels en de + kernelinstellingen die nodig kunnen zijn om &os; met een + printer te laten communiceren.</para> + + <para>Als een printer al is aangesloten en succesvol is + gebruikt onder een ander besturingssysteem, dan kan + waarschijnlijk verder gelezen worden in <link + linkend="printing-software">Software-instellingen</link>.</para> <sect4 id="printing-ports"> - <title>* Poorten en kabels</title> + <title>Poorten en kabels</title> + + <para>De printers die tegenwoordig voor PC's verkocht worden + hebben eigenlijk altijd een van de volgende drie + poorten:</para> + + <itemizedlist> + <indexterm> + <primary>printers</primary> + + <secondary>serieel</secondary> + </indexterm> + + <listitem> + <para><emphasis>Seriële</emphasis> poort, ook + bekend als RS-232 of COM poorten, gebruiken een + seriële poort op een computer om gegevens naar een + printer te sturen. Seriële poorten zijn heel + gebruikelijk in de computerindustrie en kabels zijn + eenvoudig verkrijgbaar en makkelijk te maken. + Seriële poorten hebben soms speciale kabels + nodig en vereisen soms het instellen van ingewikkelde + communicatieparameters. De meeste seriële poorten + hebben een maximale doorvoersnelheid van + 115.200 bps waardoor het afdrukken van grote + grafische afdrukopdrachten erg onpraktisch + wordt.</para> + </listitem> + + <indexterm> + <primary>printers</primary> + + <secondary>parallel</secondary> + </indexterm> + + <listitem> + <para><emphasis>Parallelle</emphasis> poorten + gebruiken een parallelle poort op een computer om + gegevens naar een printer te sturen. Parallelle + poorten zijn gebruikelijk in de PC-markt en zijn + sneller dan RS-232 serieel. Kabels zijn goed + verkrijgbaar, maar moeilijker handmatig te + vervaardigen. Meestal zijn er geen + communicatieparameters bij parallelle poorten, wat het + instellen erg eenvoudig maakt.</para> + + <indexterm> + <primary>centronics</primary> + + <see>parallelle printers</see> + </indexterm> + + <para>Parallelle poorten staan ook wel bekend als + <quote>Centronics</quote> poorten, genoemd naar het + soort aansluiting op de printer.</para> + </listitem> - <para></para> + <indexterm> + <primary>printers</primary> + + <secondary>USB</secondary> + </indexterm> + + <listitem> + <para>USB poorten, genoemd naar de Universal Serial + Bus, kunnen zelfs op nog hogere snelheid werken dan + parallelle of RS-232 seriële poorten. De + kabels zijn eenvoudig en goedkoop. USB is voor + afdrukken superieur aan RS-232 Serieel en Parallel, + maar wordt op &unix;-systemen niet altijd goed + ondersteund. Een van de manieren om dit te omzeilen is + de aanschaf van een printer met zowel een USB als een + parallelle poort, zoals veel printers die + hebben.</para> + </itemizedlist> + + <para>Over het algemeen kunnen parallelle poorten + meestal in één richting communiceren (van + computer naar printer), terwijl seriële en USB + poorten in twee richtingen kunnen communiceren. + Nieuwere parallelle poorten (EPP en ECP) en printers kunnen + onder &os; in beide richtingen communiceren, mits een + IEEE-1284 gekeurde kabel wordt gebruikt.</para> + + <indexterm><primary>&postscript;</primary></indexterm> + + <para>Tweewegcommunicatie met een printer over een + parallelle poort verloopt meestal op een van de volgende + twee manieren. De eerste manier is door gebruik te maken + van een op maat gemaakt stuurprogramma voor &os; dat de + taal spreekt die door de printer wordt gebruikt. Dit geldt + meestal voor inkjet printers en er kan dan gebruikt gemaakt + worden van rapportagemogelijkheden over bijvoorbeeld + inktniveau's en andere statusinformatie. De tweede methode + wordt gebruikt als een printer &postscript; + ondersteunt.</para> + + <para>&postscript;-taken zijn eigenlijk programma's die + naar de printer worden gestuurd. Het hoeft zelfs niet in + een afdruk te resulteren; het resultaat van de opdracht kan + direct weer naar de computer worden gestuurd. &postscript; + gebruikt ook tweewegcommunicatie om een computer op de + hoogte te stellen van opgetreden fouten, zoals fouten in + het &postscript;-programma of vastgelopen papier. + Gebruikers kunnen dit soort informatie handig vinden. De + beste manier om bij een &postscript;-printer effectief bij + te houden wat het printergebruik is, vraagt om + tweewegcommunicatie: de printer wordt gevraagd om het + totaal aantal afgedrukt pagina's, de afdrukopdracht wordt + verzonden en vervolgens wordt nogmaals om het totaal aantal + afgedrukte pagina's gevraagd. Het verschil van deze + getallen geeft het aantal afgedrukte pagina's van de + afdrukopdracht van de betreffende gebruiker.</para> </sect4> <sect4 id="printing-parallel"> - <title>* Parallel poorten</title> + <title>Parallelle poorten</title> + + <para>Om een printer met een parallelle poort aan te + sluiten, moet een Centronics kabel de printer met de + computer verbinden. De instructies die geleverd zijn bij + de printer, de computer of beide, moeten voldoende zijn + om dit te verduidelijken.</para> - <para></para> + <para>Onthoud op welke parallelle poort de printer is + aangesloten. De eerste parallelle poort heet onder &os; + <filename>ppc0</filename>, de tweede + <filename>ppc1</filename>, enzovoort. De benaming voor + de printer gaat analoog: <filename>/dev/lpt0</filename> + voor de printer op de eerste parallelle poort + enzovoort.</para> </sect4> <sect4 id="printing-serial"> - <title>* Seriële poorten</title> + <title>Seriële poorten</title> + + <para>Gebruik de juiste seriële kabel om een printer met + een seriële poort op een computer aan te sluiten. + De instructies die geleverd zijn bij de printer, de + computer of beide, moeten voldoende zijn om dit te + verduidelijken.</para> + + <para>Als onduidelijk is wat de <quote>juiste seriële + kabel</quote> is, kan een van onderstaande opties + geprobeerd worden:</para> + + <itemizedlist> + <listitem> + <para>Een <emphasis>modem</emphasis>kabel verbindt elke + pin van de stekker aan het ene eind direct met de + corresponderende pin van de stekker aan het andere + eind. Dit type kabel heet ook wel een + <quote>DTE-naar-DCE</quote>-kabel.</para> + </listitem> + + <indexterm><primary>null-modem kabel</primary></indexterm> + + <listitem> + <para>Een <emphasis>null-modem</emphasis> kabel verbindt + enkele pinnetjes direct, verwisselt andere + (bijvoorbeeld van verstuur gegevens naar ontvang + gegevens) en sluit sommige draden kort in de stekker. + Dit type kabel heet ook wel een + <quote>DTE-to-DTE</quote>-kabel.</para> + </listitem> + + <listitem> + <para>Een + <emphasis>seriële printer</emphasis>kabel, nodig + bij sommige ongebruikelijke printers, is als een + null-modem kabel, maar stuurt sommige signalen naar hun + tegenhangers in plaats van ze intern kort te + sluiten.</para> + </listitem> + </itemizedlist> - <para></para> + <indexterm><primary>baud rate</primary></indexterm> + + <indexterm><primary>pariteit</primary></indexterm> + + <indexterm> + <primary>flow-control protocol</primary> + </indexterm> + + <para>Het is ook nodig de communicatieparameters voor de + printer in te stellen, meestal via het bedieningspaneel of + middels DIP-schakelaars op de printer. Selecteer de + hoogste <literal>bps</literal> (bits per seconde, soms + <emphasis>baud</emphasis>) die zowel door de computer als + de printer wordt ondersteund. Kies 7 of 8 data bits. + Geen, even of oneven pariteit en 1 of 2 stop bits. + Selecteer ook het flow-control protocol: ofwel geen, ofwel + XON/XOFF (ook bekend als <quote>in-band</quote> of + <quote>software</quote>) flow-control. Onthoud deze + instellingen voor de hier op volgende + software-instellingen.</para> </sect4> </sect3> <sect3 id="printing-software"> - <title>* Software setup</title> + <title>Software-instellingen</title> + + <para>Nu wordt beschreven welke software-instellingen nodig + zijn om onder &os; af te drukken met behulp van het + wachtrijsysteem <application>LPD</application>.</para> + + <para>Een overzicht van de te doorlopen stappen:</para> + + <procedure> + <step> + <para>Maak, indien nodig, de kernel geschikt voor de poort + die door de printer wordt gebruikt. In <link + linkend="printing-kernel">Kernelinstellingen</link> is + te lezen hoe dit gedaan kan worden.</para> + </step> + + <step> + <para>Stel de communicatievorm voor de parallelle poort in, + als gebruik wordt gemaakt van een parallelle printer. In + <link + linkend="printing-parallel-port-mode">Communicatietype + instellen voor een parallelle poort</link> staan de + details.</para> + </step> + + <step> + <para>Test of het besturingssysteem gegevens naar de + printer kan sturen. In <link + linkend="printing-testing">Printercommunicatie + controleren</link> staat een aantal suggesties.</para> + </step> + + <step> + <para>Stel <application>LPD</application> in voor de + printer door <filename>/etc/printcap</filename> aan te + passen. Dat wordt later in het hoofdstuk + beschreven.</para> + </step> + </procedure> <sect4 id="printing-kernel"> - <title>* Kernel configuratie</title> + <title>Kernelinstellingen</title> + + <para>Het besturingssysteem is gecompileerd om met een + beperkte verzameling apparaten te kunnen werken. De + seriële en parallelle poorten zijn onderdeel van + deze verzameling. Daarom kan het nodig zijn om + ondersteuning voor een extra seriële of parallelle + poort toe te voegen als een kernel hier nog niet voor is + ingesteld.</para> + + <para>Om te achterhalen of een huidige kernel een + seriële poort ondersteunt:</para> + + <screen>&prompt.root; <userinput>grep sio<replaceable>N</replaceable> /var/run/dmesg.boot</userinput></screen> + + <para>Hier is <replaceable>N</replaceable> het aantal + seriële poorten, beginnende bij nul. Als de uitvoer + op het volgende lijkt, dan wordt de poort door een kernel + ondersteund:</para> - <para></para> + <screen>sio2 at port 0x3e8-0x3ef irq 5 on isa +sio2: type 16550A</screen> + + <para>Om te achterhalen of een kernel een parallelle + poort ondersteunt:</para> + + <screen>&prompt.root; <userinput>grep ppc<replaceable>N</replaceable> /var/run/dmesg.boot</userinput></screen> + + <para>Hier is <replaceable>N</replaceable> het aantal + parallelle poorten beginnende bij nul. Als de uitvoer er + ongeveer als volgt uit ziet, dan wordt de poort door een + kernel ondersteund:</para> + + <screen>ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0 +ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode +ppc0: FIFO with 16/16/8 bytes threshold</screen> + + <para>Het kan nodig zijn een kernel aan te passen om het + besturingssysteem in staat te stellen een parallelle of + seriële poort die voor een printer wordt gebruikt te + herkennen en te gebruiken.</para> + + <para>In het onderdeel over kernelinstellingen staat meer + informatie om ondersteuning voor een seriële poort toe + te voegen. Lees de betreffende <emphasis>en</emphasis> de + volgende sectie om ondersteuning voor een parallelle poort + toe te voegen.</para> </sect4> </sect3> <sect3 id="printing-dev-ports"> - <title>* Het toevoegen van <filename>/dev</filename> bestanden - voor de poorten</title> + <title>Ingangen in <filename>/dev</filename> toevoegen voor + poorten</title> + + <note> + <para>&os; 5.0 beschikt over het bestandssysteem + <literal>devfs</literal> dat automatisch apparaatnodes + creëert wanneer deze nodig zijn. Als een versie van + &os; wordt gebruikt die <literal>devfs</literal> aan heeft + staan, dan kan deze sectie overgeslagen worden.</para> + </note> + + <para>Een kernel die communicatie via seriële of + parallelle poort ondersteund, is niet voldoende. Er is ook + een software-interface nodig waarover programma's gegevens + kunnen zenden en ontvangen. Dat is de functie van de + bestanden in de map <filename>/dev</filename>.</para> + + <para><emphasis>Volg onderstaande stappen om een ingang in + <filename>/dev</filename> voor een poort toe te + voegen:</emphasis></para> + + <procedure> + <step> + <para>Wordt <username>root</username> met &man.su.1;. Geef + het <username>root</username>-wachtwoord als daar om + wordt gevraagd.</para> + </step> + + <step> + <para>Ga naar de map <filename>/dev</filename>:</para> + + <screen>&prompt.root; <userinput>cd /dev</userinput></screen> + </step> + + <step> + <para>Geef in:</para> + + <screen>&prompt.root; <userinput>./MAKEDEV <replaceable>poort</replaceable></userinput></screen> + + <para>Hier is <replaceable>poort</replaceable> de + apparaatingang voor de poort die wordt aangemaakt. + Gebruik <literal>lpt0</literal> voor de printer op de + eerste parallelle poort, <literal>lpt1</literal> voor de + printer op de tweede poort, enzovoort. Gebruik + <literal>ttyd0</literal> voor de eerste seriële + poort, <literal>ttyd1</literal> voor de tweede, + enzovoort.</para> + </step> + + <step> + <para>Voer het volgende commando uit om vast te stellen of + de apparaatingang is aangemaakt:</para> + + <screen>&prompt.root; <userinput>ls -l <replaceable>poort</replaceable></userinput></screen> + + </step> + </procedure> <sect4 id="printing-parallel-port-mode"> - <title>* Het communicatietype instellen voor de parallelle + <title>Communicatietype instellen voor een parallelle poort</title> - <para></para> + <para>Wanneer een parallelle poort wordt gebruikt, kan + worden aangegeven of &os; voor de printer + interrupt-gestuurde of <quote>polled</quote> communicatie + moet gebruiken. Het generieke printer + apparaatstuurprogramma (&man.lpt.4;) onder + &os; 4.X en 5.X gebruikt het systeem &man.ppbus.4;. + Dit bestuurt de chipset van de poort met het stuurprogramma + &man.ppc.4;.</para> + + <itemizedlist> + <listitem> + <para>De <emphasis>interrupt-gestuurde</emphasis> + methode is standaard in de GENERIC kernel. In dit + geval gebruikt het besturingssysteem een IRQ om te + bepalen of de printer klaar is om gegevens te + ontvangen.</para> + </listitem> + + <listitem> + <para>Bij de <emphasis>polled</emphasis> methode vraagt + het besturingssysteem met vaste intervallen aan de + printer of deze klaar is om gegevens te ontvangen. Als + de printer antwoordt met <quote>klaar</quote>, stuurt + de kernel meer gegevens.</para> + </listitem> + </itemizedlist> + + <para>De interrupt-gestuurde methode is meestal iets sneller, + maar gebruikt een kostbaar IRQ nummer. Van sommige HP + printers wordt beweerd dat ze niet goed werken in + interruptmodus, schijnbaar door een (nog niet begrepen) + timing probleem. Deze printers moeten gebruik maken van de + polled methode. Gebruik de methode die werkt. Sommige + printers werken met beide methodes, maar zijn tergend + langzaam in de interrupt modus.</para> + + <para>Het communicatietype kan op twee manieren worden + ingesteld: door de kernel in te stellen of door gebruik te + maken van &man.lptcontrol.8;.</para> + + <para><emphasis>Het communicatietype instellen door de kernel + aan te passen:</emphasis></para> + + <procedure> + <step> + <para>Pas het kernelinstellingenbestand aan. Zoek naar + een <literal>ppc0</literal> ingang. Gebruik + <literal>ppc1</literal> voor het opzetten van een + tweede parallelle poort. Gebruik + <literal>ppc2</literal> voor de derde poort, + enzovoort.</para> + + <itemizedlist> + <listitem> + <para>Voeg onder &os; 4.X het + <literal>irq</literal> nummer toe om gebruik te + maken van interrupt-gestuurde modus:</para> + + <programlisting>device ppc0 at isa? irq <replaceable>N</replaceable></programlisting> + + <para>Hier is <replaceable>N</replaceable> het IRQ + nummer voor een parallelle poort van de + computer.</para> + + <para>Wijzig voor &os; 5.X de volgende + regel in <filename>/boot/device.hints</filename> en + vervang <replaceable>N</replaceable> door het + juiste IRQ nummer:</para> + + <programlisting>hint.ppc.0.irq="<replaceable>N</replaceable>"</programlisting> + + <para>Het kernelinstellingenbestand moet ook het + stuurprogramma &man.ppc.4; bevatten:</para> + + <screen>device ppc</screen> + </listitem> + + <listitem> + <para>Voeg het <literal>irq</literal> nummer niet toe + om gebruik te maken van polled modus.</para> + + <para>Gebruik voor &os; 4.X de volgende regel + in het kernelinstellingenbestand:</para> + + <programlisting>device ppc0 at isa?</programlisting> + + <para>Verwijder voor &os; 5.X de onderstaande + regel in + <filename>/boot/device.hints</filename>:</para> + + <programlisting>hint.ppc.0.irq="<replaceable>N</replaceable>"</programlisting> + + <para>In sommige gevallen is het onder + &os; 5.X niet voldoende om een poort in + polled modus te zetten. In veel gevallen komt dat + door het stuurprogramma &man.acpi.4;. Dit is in + staat om apparaten te testen en aan te sluiten en + kan zodoende het communcatietype van de printer + wijzigen. Raadpleeg de instellingen voor + &man.acpi.4; om dit probleem te verhelpen.</para> + </listitem> + </itemizedlist> + </step> + + <step> + <para>Sla het bestand op. Maak en installeer de nieuwe + kernel en herstart de computer. In <link + linkend="kernelconfig">De &os;-kernel + instellen</link> staan meer details.</para> + </step> + </procedure> + + <para><emphasis>Communictatietype instellen met + </emphasis> &man.lptcontrol.8;:</para> + + <procedure> + <step> + <para>Voer het volgende commando uit om + <literal>lpt<replaceable>N</replaceable></literal> op + interrupt-gestuurde modus in te stellen.:</para> + + <screen>&prompt.root; <userinput>lptcontrol -i -d /dev/lpt<replaceable>N</replaceable></userinput></screen> + </step> + + <step> + <para>Voer het volgende commando uit om + <literal>lpt<replaceable>N</replaceable></literal> op + polled modus in te stellen.</para> + + <screen>&prompt.root; <userinput>lptcontrol -p -d /dev/lpt<replaceable>N</replaceable></userinput></screen> + </step> + </procedure> + + <para>Zet deze commando's in het bestand + <filename>/etc/rc.local</filename> zodat het + communicatietype juist wordt ingesteld bij het opstarten. + In &man.lptcontrol.8; staat meer informatie.</para> </sect4> <sect4 id="printing-testing"> - <title>* Het controleren van de printercommunicatie</title> + <title>Printercommunicatie controleren</title> + + <para>Voor het instellen van het wachtrijsysteem, is het + verstandig te controleren of het besturingssyteem gegevens + naar een printer kan versturen. Het is een stuk + makkelijker om problemen met printercommunicatie en het + wachtrijsysteem apart op te lossen.</para> + + <para>De printer wordt getest door er tekst naar toe te + sturen. Voor printers die direct tekens kunnen afdrukken + is het programma &man.lptest.1; handig: het genereert alle + 96 afdrukbare ASCII tekens op 96 regels.</para> + + <indexterm><primary>&postscript;</primary></indexterm> + + <para>Voor &postscript; (of andere op taal gebaseerde) + printers, is een meer geavanceerde test nodig. Een + eenvoudig &postscript;-programma zoals het volgende + volstaat:</para> + + <programlisting>%!PS +100 100 moveto 300 300 lineto stroke +310 310 moveto /Helvetica findfont 12 scalefont setfont +(Werkt dit?) show +showpage</programlisting> + + <para>Bovenstaande &postscript;-code kan in een bestand + worden opgeslagen en in de voorbeelden in de volgende + paragrafen gebruikt worden.</para> + + <indexterm><primary>PCL</primary></indexterm> + + <note> + <para>Als in dit document wordt gesproken over een + printertaal, wordt uitgegaan van een taal als + &postscript; en niet PCL van HP. Hoewel PCL zeer + functioneel is, kan het direct platte tekst afdrukken + door gebruik te maken van escapetekens. &postscript; kan + niet direct platte tekst afdrukken. Voor dat soort + printertalen zijn speciale aanpassingen nodig.</para> + </note> <sect5 id="printing-checking-parallel"> - <title>* Het controleren van een parallelle printer</title> + <title>Parallelle printer controleren</title> - <para></para> + <indexterm> + <primary>printers</primary> + + <secondary>parallel</secondary> + </indexterm> + + <para>In deze sectie wordt beschreven hoe te controleren of + &os; kan communiceren met een printer die op een + parallelle poort is aangesloten.</para> + + <para><emphasis>Voer de volgende stappen uit om een printer + op een parallelle poort te testen:</emphasis></para> + + <procedure> + <step> + <para>&man.su.1; naar <username>root</username>.</para> + </step> + + <step> + <para>Stuur gegevens naar de printer.</para> + + <itemizedlist> + <listitem> + <para>Gebruik &man.lptest.1; als de printer platte + tekst af kan drukken:</para> + + <screen>&prompt.root; <userinput>lptest > /dev/lpt<replaceable>N</replaceable></userinput></screen> + + <para>Hier is <replaceable>N</replaceable> het + nummer van de parallelle poort, beginnende bij + nul.</para> + </listitem> + + <listitem> + <para>Als de printer &postscript; of een andere + printertaal begrijpt, stuur dan een klein + programma naar de printer:</para> + + <screen>&prompt.root; <userinput>cat > /dev/lpt<replaceable>N</replaceable></userinput></screen> + + <para>Geef het programma regel voor regel + <emphasis>heel nauwkeurig</emphasis> in. Een + regel kan niet worden gewijzigd als er op + <literal>RETURN</literal> of + <literal>ENTER</literal> is gedrukt. Geef na het + afronden van de invoer voor het programma het + einde-van-invoer teken. Dit is meestal + <literal>CONTROL+D</literal>.</para> + + <para>Het programma kan ook in een bestand worden + opgeslagen:</para> + + <screen>&prompt.root; <userinput>cat <replaceable>bestand</replaceable> > /dev/lpt<replaceable>N</replaceable></userinput></screen> + + <para>Hier is <replaceable>bestand</replaceable> de + naam van het bestand waarin het programma is + opgeslagen dat naar een printer gestuurd kan + worden.</para> + </listitem> + </itemizedlist> + </step> + </procedure> + + <para>Nu moet er iets worden afgedrukt. Tekst die er niet + goed uitziet is geen probleem. Dit wordt later + gerepareerd.</para> </sect5> <sect5 id="printing-checking-serial"> - <title>* Het controleren van een seriële printer</title> + <title>Seriële printer controleren</title> + + <indexterm> + <primary>printers</primary> + + <secondary>serieel</secondary> + </indexterm> + + <para>In deze sectie wordt beschreven hoe te controleren of + &os; kan communiceren met een printer die op een + seriële poort is aangesloten.</para> + + <para><emphasis>Voer de volgende stappen uit om een printer + op de seriële poort te testen:</emphasis></para> + + <procedure> + <step> + <para>&man.su.1; naar <username>root</username>.</para> + </step> + + <step> + <para>Voeg de volgende regel toe aan + <filename>/etc/remote</filename>:</para> + + <programlisting>printer:dv=/dev/<replaceable>poort</replaceable>:br#<replaceable>bps-snelheid</replaceable>:pa=<replaceable>pariteit</replaceable></programlisting> + + <indexterm> + <primary>bits-per-seconde</primary> + </indexterm> + + <indexterm> + <primary>seriële poort</primary> + </indexterm> + + <indexterm><primary>pariteit</primary></indexterm> + + <para>Hier is <replaceable>poort</replaceable> de + apparaatingave voor de seriële poort + (<literal>ttyd0</literal>, <literal>ttyd1</literal>, + enzovoort), <replaceable>bps-snelheid</replaceable> + is het aantal bits per seconde waarop de printer + communiceert en <replaceable>pariteit</replaceable> + is de pariteit die door de printer wordt vereist + (<literal>even</literal>, <literal>odd</literal>, + <literal>none</literal> of + <literal>zero</literal>).</para> - <para></para> + <para>Hier volgt een voorbeeldregel voor een printer + verbonden met een seriële lijn op de derde + seriële poort op 19200 bps, zonder + pariteit:</para> + + <programlisting>printer:dv=/dev/ttyd2:br#19200:pa=none</programlisting> + </step> + + <step> + <para>Maak verbinding met de printer met + &man.tip.1;:</para> + + <screen>&prompt.root; <userinput>tip printer</userinput></screen> + + <para>Als dit niet werkt, pas dan + <filename>/etc/remote</filename> opnieuw aan en + probeer gebruik te maken van + <filename>/dev/cuaa<replaceable>N</replaceable></filename> + in plaats van + <filename>/dev/ttyd<replaceable>N</replaceable></filename>.</para> + </step> + + <step> + <para>Stuur gegevens naar de printer.</para> + + <itemizedlist> + <listitem> + <para>Gebruik &man.lptest.1; als de printer platte + tekst af kan drukken:</para> + + <screen>&prompt.user; <userinput>$lptest</userinput></screen> + </listitem> + + <listitem> + <para>Als de printer &postscript; of een andere + printertaal begrijpt, stuur dan een klein + programma naar de printer. Geef het programma + regel voor regel <emphasis>heel + nauwkeurig</emphasis> in. Backspace of andere + speciale toetsen kunnen een speciale betekenis + hebben voor de printer. Het kan ook nodig zijn + een speciaal einde-van-invoer teken te geven + zodat de printer weet dat het gehele programma + ontvangen is. Druk voor &postscript;-printers + <literal>CONTROL+D</literal>.</para> + + <para>Het programma kan ook in een bestand worden + opgeslagen:</para> + + <screen>&prompt.user; <userinput>><replaceable>bestand</replaceable></userinput></screen> + + <para>Hier is <replaceable>bestand</replaceable> de + naam van het bestand waarin het programma is + opgeslagen. Nadat &man.tip.1; het bestand heeft + verstuurd kan het juiste einde-van-invoer + teken ingegeven worden.</para> + </listitem> + </itemizedlist> + </step> + </procedure> + + <para>Nu moet er iets worden afgedrukt. Tekst die er niet + niet goed uitziet is geen probleem. Dit wordt later + gerepareerd.</para> </sect5> </sect4> </sect3> <sect3 id="printing-printcap"> - <title>* De wachtrij aanzetten: het - <filename>/etc/printcap</filename> bestand</title> + <title>De wachtrij aanzetten: + <filename>/etc/printcap</filename></title> + + <para>Op dit punt moet de printer zijn aangesloten, de kernel + ingesteld zijn om met de printer te communiceren (indien + nodig) en is het mogelijk eenvoudige gegevens naar de printer + te sturen. Nu kan <application>LPD</application> ingesteld + worden zodat de toegang tot de printer wordt geregeld.</para> + + <para><application>LPD</application> wordt ingesteld door het + bestand <filename>/etc/printcap</filename> aan te passen. + Het wachtrijsysteem <application>LPD</application> leest + dit bestand iedere keer dat het systeem wordt aangeroepen + zodat wijzigingen direct van toepassing zijn.</para> + + <indexterm> + <primary>printers</primary> + + <secondary>mogelijkheden</secondary> + </indexterm> + + <para>De opmaak van het bestand &man.printcap.5; is voor de + hand liggend. Met een willekeurige tekstverwerker kunnen + wijzigen in <filename>/etc/printcap</filename> aangebracht + worden. De opmaak is identiek aan die van andere bestanden + die voor dergelijke instellingen worden gebruik, zoals + <filename>/usr/share/misc/termcap</filename> en + <filename>/etc/remote</filename>. In &man.cgetent.3; staat + een uitgebreid overzicht van dit formaat.</para> + + <para>De vereenvoudigde instellingen bestaan uit de volgende + stappen:</para> + + <procedure> + <step> + <para>Kies een naam (en een paar handige aliassen) voor de + printer en voeg ze toe aan + <filename>/etc/printcap</filename>. In <link + linkend="printing-naming">Printernaamgeving</link> + staat meer informatie over het toekennen van een naam aan + een printer.</para> + </step> + + <indexterm><primary>voorbladen</primary></indexterm> + + <step> + <para>Het afdrukken van voorbladen (standaard) kan uitgezet + worden met de optie <literal>sh</literal>. In <link + linkend="printing-no-header-pages">Voorbladen + onderdrukken</link> staat meer informatie.</para> + </step> + + <step> + <para>Maak een wachtrijmap aan en specificeer de locatie + door middel van de optie <literal>sd</literal>. In + <link linkend="printing-spooldir">Wachtrijmap + aanmaken</link> staat meer informatie.</para> + </step> + + <step> + <para>Bepaal welke ingave in <filename>/dev</filename> voor + de printer wordt gebruikt en geef dit in + <filename>/etc/printcap</filename> aan door gebruik te + maken van de opte <literal>lp</literal>. In <link + linkend="printing-device">Printerapparaat + identificeren</link> staat meer informatie. Als de + printer is aangesloten op een seriële poort moeten + de communicatieparameters worden ingesteld met de optie + <literal>ms#</literal>. Dit wordt beschreven in <link + linkend="printing-commparam">Communicatieparameters + voor het wachtrijsysteem instellen</link>.</para> + </step> + + <step> + <para>Installeer een filter voor platte tekst. In <link + linkend="printing-textfilter">Tekstfilter + installeren</link> staan details.</para> + </step> + + <step> + <para>Test de instellingen door iets met &man.lpr.1; af te + druken. Details staan in <link + linkend="printing-trying">Printer uitproberen</link> en + <link linkend="printing-troubleshooting">Problemen + oplossen</link>.</para> + </step> + </procedure> + + <note> + <para>Op taal gebaseerde printers, zoals + &postscript;-printers, kunnen niet direct platte tekst + afdrukken. De vereenvoudigde instellingen, zoals hierboven + beschreven en hieronder verder beschreven, gaan er van uit + dat alleen bestanden naar een printer worden gestuurd die + de printer begrijpt.</para> + </note> + + <para>Gebruikers verwachten vaak dat ze platte tekst naar + printers op een systeem kunnen sturen. Programma's die + <application>LPD</application> gebruiken om af te drukken + gaan hier ook vaak van uit. Als een dergelijke printer wordt + geïnstalleerd en het moet mogelijk zijn zowel + afdrukopdrachten in de printertaal als in platte tekst naar + een printer te sturen, dan is het zeer aan te raden een extra + stap in deze vereenvoudigde opzet in te voegen: installeer + een conversieprogramma dat automatisch platte tekst omzet in + &postscript; (of een andere printertaal). In <link + linkend="printing-advanced-if-conversion">Platte tekst + op &postscript;-printers afdrukken</link> staat hoe dit in + zijn werk gaat.</para> <sect4 id="printing-naming"> - <title>* Printernaamgeving</title> + <title>Printernaamgeving</title> + + <para>De eerste (makkelijke) stap is het kiezen van een naam + voor een printer. Het maakt niet uit of een naam + functioneel of grappig is, aangezien ook een aantal + aliassen aan een printer toegekend kunnen worden.</para> + + <para>Ten minste één van de printers die in + <filename>/etc/printcap</filename> worden genoemd moet het + alias <literal>lp</literal> hebben. Dit is de + standaardnaam voor de printer. Als gebruikers de + omgevingsvariabele <envar>PRINTER</envar> niet ingesteld + hebben en ook geen printernaam specificeren als ze + <application>LPD</application> gebruiken, dan wordt + standaard de printer <literal>lp</literal> gebruikt.</para> + + <para>Het is verder gebruikelijk om het laaste alias zo te + kiezen dat het een volledige beschrijving van de printer + is, inclusief merk en model.</para> + + <para>Als een naam en een aantal aliassen zijn gekozen, + kunnen ze aan <filename>/etc/printcap</filename> worden + toegevoegd. De naam van een printer wordt in de meest + linker kolom geplaatst. Scheid ieder alias met een + verticale streep en plaats een dubbele punt achter het + laatste alias.</para> + + <para>In het volgende voorbeeld is de beginsituatie een + uitgekleed <filename>/etc/printcap</filename> waarin twee + printers worden gedefinieerd (een Diablo 630 lineprinter + en een Panasonic KX-P4455 + &postscript;-laserprinter):</para> + + <programlisting># +# /etc/printcap voor host rose +# +rattan|line|diablo|lp|Diablo 630 Line Printer: - <para></para> +bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:</programlisting> + + <para>In dit voorbeeld heet de eerste printer + <literal>rattan</literal> en heeft de volgende aliassen: + <literal>line</literal>, <literal>diablo</literal>, + <literal>lp</literal> en <literal>Diablo 630 Line + Printer</literal>. Omdat deze printer het alias + <literal>lp</literal> heeft, is het de standaard printer. + De tweede printer heet <literal>bamboo</literal> en heeft + de aliassen <literal>ps</literal>, <literal>PS</literal>, + <literal>S</literal>, <literal>panasonic</literal> en + <literal>Panasonic KX-P4455 PostScript + v51.4</literal>.</para> </sect4> <sect4 id="printing-no-header-pages"> - <title>* Voorbladen onderdrukken</title> + <title>Voorbladen onderdrukken</title> + + <indexterm> + <primary>afdrukken</primary> + + <secondary>voorbladen</secondary> + </indexterm> + + <para>Het wachtrijsysteem <application>LPD</application> + drukt standaard een <emphasis>voorblad</emphasis> af voor + elke afdrukopdracht. Het voorblad bevat de gebruikersnaam + van de gebruiker die de afdrukopdracht gaf, de computer + waar de opdracht is gegeven en, in mooie grote letters, de + naam van de afdrukopdracht. Het nadeel hiervan is dat al + deze extra tekst het debuggen van de eenvoudige + printerinstallatie bemoeilijkt. Daarom wordt het afdrukken + van voorbladen onderdrukt.</para> + + <para>Om voorbladen te onderdrukken, wordt de optie + <literal>sh</literal> toegevoegd voor de relevante printer + in <filename>/etc/printcap</filename>. Hieronder staat een + voorbeeld van <filename>/etc/printcap</filename> met de + optie <literal>sh</literal>:</para> + + <programlisting># +# /etc/printcap voor host rose - nergens worden voorbladen afgedrukt +# +rattan|line|diablo|lp|Diablo 630 Line Printer:\ + :sh: - <para></para> +bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ + :sh:</programlisting> + + <para>Het juiste formaat is gebruikt: de eerste regel begint + in de meest linker kolom, volgende regels springen in. + Elke regel eindigt met een backslash, behalve de + laatste.</para> </sect4> <sect4 id="printing-spooldir"> - <title>* Het aanmaken van de wachtrijdirectory</title> + <title>Wachtrijmap aanmaken</title> + + <indexterm><primary>printer wachtrij</primary></indexterm> + + <indexterm><primary>afdrukopdrachten</primary></indexterm> + + <para>De volgende stap in deze eenvoudige opzet is het + aanmaken van een <emphasis>wachtrijmap</emphasis>. Dit is + een map waar afdrukopdrachten geplaatst worden totdat ze + worden afgedrukt. Ook wordt er een aantal bestanden + geplaatst die nodig zijn voor het functioneren van het + wachtrijsysteem.</para> + + <para>Vanwege het veranderlijke karakter van wachtrijmappen + is het gebruikelijk om deze mappen onder + <filename>/var/spool</filename> te plaatsen. Het is niet + nodig om een back-up van de inhoud van deze mappen te + maken. Ze kunnen eenvoudigweg opnieuw worden aangemaakt + met &man.mkdir.1;.</para> + + <para>Het is ook gebruikelijk om de naam van de map overeen + te laten komen met die van de printer, zoals onder is + weergegeven:</para> + + <screen>&prompt.root; <userinput>mkdir /var/spool/<replaceable>printernaam</replaceable></userinput></screen> + + <para>Als er veel printers zijn aangesloten op een netwerk, + is het beter de wachtrijmappen aan te maken in een enkele + map die speciaal wordt gebruikt voor afdrukken met + <application>LPD</application>. In dit voorbeeld wordt dat + gedaan voor de printers <literal>rattan</literal> en + <literal>bamboo</literal>:</para> + + <screen>&prompt.root; <userinput>mkdir /var/spool/lpd</userinput> +&prompt.root; <userinput>mkdir /var/spool/lpd/rattan</userinput> +&prompt.root; <userinput>mkdir /var/spool/lpd/bamboo</userinput></screen> + + <note> + <para>Als de afdrukopdrachten privé moeten blijven, + dan is het belangrijk de wachtrijmap niet algemeen + toegankelijk te maken. Wachtrijmappen moeten eigendom + zijn van gebruiker daemon en groep daemon. Uitsluitend + deze gebruiker en groep moeten de map kunnen lezen, + schrijven en doorzoeken:</para> + + <screen>&prompt.root; <userinput>chown daemon:daemon /var/spool/lpd/rattan</userinput> +&prompt.root; <userinput>chown daemon:daemon /var/spool/lpd/bamboo</userinput> +&prompt.root; <userinput>chmod 770 /var/spool/lpd/rattan</userinput> +&prompt.root; <userinput>chmod 770 /var/spool/lpd/bamboo</userinput></screen> + </note> + + <para>Tenslotte moet <application>LPD</application> verteld + worden dat deze mappen bestaan. Dit kan met het bestand + <filename>/etc/printcap</filename>. De locatie van de + wachtrijmap wordt opgegeven met de optie + <literal>sd</literal>:</para> - <para></para> + <programlisting># +# /etc/printcap voor host rose - opgeven van de wachtrijmappen +# +rattan|line|diablo|lp|Diablo 630 Line Printer:\ + :sh:sd=/var/spool/lpd/rattan: + +bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ + :sh:sd=/var/spool/lpd/bamboo:</programlisting> + + <para>De naam van de printer staat in de eerste kolom, maar + alle andere regels die de printer beschrijven worden + ingesprongen en elke regel eindigt met een + backslash.</para> + + <para>Als geen wachtrijmap wordt opgegeven met + <literal>sd</literal>, dan wordt standaard + <filename>/var/spool/lpd</filename> gebruikt.</para> </sect4> <sect4 id="printing-device"> - <title>* Het printerdevice identificeren</title> + <title>Printerapparaat identificeren</title> + + <para>In <link linkend="printing-dev-ports">Ingangen in + <filename>/dev</filename> toevoegen voor poorten</link> is + bepaald welke ingang in de map <filename>/dev</filename> + door &os; wordt gebruikt om met een printer te + comminiceren. Nu moet <application>LPD</application> dit + ook weten. Als het wachtrijsysteem een afdrukopdracht + krijgt, wordt het relevante apparaat geopend door het + filterprogramma (dat verantwoordelijk is voor het sturen + van gegevens naar een printer).</para> + + <para>Geef de locatie van de ingang in + <filename>/dev</filename> op in + <filename>/etc/printcap</filename> door gebruik te maken + van de optie <literal>lp</literal>.</para> + + <para>In het huidige voorbeeld wordt aangenomen dat + <literal>rattan</literal> op de eerste parallelle poort is + aangesloten en <literal>bamboo</literal> op de zesde + seriële poort. Hier volgen de toevoegingen voor + <filename>/etc/printcap</filename>:</para> + + <programlisting># +# /etc/printcap voor host rose - juiste apparaat bepaald +# +rattan|line|diablo|lp|Diablo 630 Line Printer:\ + :sh:sd=/var/spool/lpd/rattan:\ + :lp=/dev/lpt0: - <para></para> +bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ + :sh:sd=/var/spool/lpd/bamboo:\ + :lp=/dev/ttyd5:</programlisting> + + <para>Als voor een printer de optie <literal>lp</literal> + niet wordt gebruikt in <filename>/etc/printcap</filename>, + dan gebruikt <application>LPD</application> standaard + <filename>/dev/lp</filename>. Momenteel bestaat + <filename>/dev/lp</filename> niet in &os;.</para> + + <para>Als de te installeren printer is aangesloten op een + parallelle poort, dan staan verdere instructies in <link + linkend="printing-textfilter">Tekstfilter + installeren</link>. In andere gevallen kunnen de + instructies in de volgende paragraaf gevold worden.</para> </sect4> <sect4 id="printing-commparam"> - <title>* Het configureren van communicatieparameters voor het - wachtrijsysteem</title> + <title>Communicatieparameters voor het wachtrijsysteem + instellen</title> + + <indexterm> + <primary>printers</primary> + + <secondary>serieel</secondary> + </indexterm> + + <para>Voor printers die zijn aangesloten op een seriële + poort kan <application>LPD</application> de bps-snelheid, + pariteit en andere seriële communicatie parameters + instellen voor het filterprogramma dat gegevens naar een + printer stuurt. Dit is gunstig omdat:</para> + + <itemizedlist> + <listitem> + <para>De verschillende communicatieparameters + uitgeprobeerd kunnen worden door + <filename>/etc/printcap</filename> aan te passen. Het + is niet nodig het filterprogramma opnieuw te + compileren;</para> + </listitem> - <para></para> + <listitem> + <para>Het wachtrijsysteem kan hetzelfde filter gebruiken + voor verschillende printers die mogelijk verschillende + seriële communicatie-instellingen hebben.</para> + </listitem> + </itemizedlist> + + <para>Met de volgende opties in + <filename>/etc/printcap</filename> kunnen seriële + communicatieparameters worden ingesteld voor het apparaat + waar <literal>lp</literal> naar verwijst:</para> + + <variablelist> + <varlistentry> + <term><literal>br#<replaceable>bps-snelheid</replaceable></literal></term> + + <listitem> + <para>Stelt de communicatiesnelheid van het apparaat in + op <replaceable>bps-snelheid</replaceable>, waarbij + <replaceable>bps-snelheid</replaceable> de waarde + 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, + 2400, 4800, 9600, 19200, 38400, 57600 of 115200 + bits-per-seconde kan aannemen.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>ms#<replaceable>stty-modus</replaceable></literal></term> + + <listitem> + <para>Bepaalt de opties voor het geval het + printerapparaat een terminal is. In &man.stty.1; + staat uitleg over de beschikbare opties.</para> + </listitem> + </varlistentry> + </variablelist> + + <para>Als <application>LPD</application> het apparaat opent + dat met <literal>lp</literal> is opgegeven, worden de + eigenschappen van het apparaat bepaald door de optie + <literal>ms#</literal>. Met name van belang zijn de modi + <literal>parenb</literal>, <literal>parodd</literal>, + <literal>cs5</literal>, <literal>cs6</literal>, + <literal>cs7</literal>, <literal>cs8</literal>, + <literal>cstopb</literal>, <literal>crtscts</literal> en + <literal>ixon</literal>. Deze worden uitgelegd in + &man.stty.1;.</para> + + <para>Nu wordt de voorbeeldprinter op de zesde seriële + poort aangepast. De bps-snelheid wordt ingesteld op 38400. + Als modus wordt gekozen: geen pariteit met + <literal>-parenb</literal>, 8-bit tekens met + <literal>cs8</literal>, geen modem controle met + <literal>clocal</literal> en hardware flow controle met + <literal>crtscts</literal>:</para> + + <programlisting>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:</programlisting> </sect4> <sect4 id="printing-textfilter"> - <title>* Een tekstfilter installeren</title> + <title>Tekstfilter installeren</title> + + <indexterm> + <primary>afdrukken</primary> + + <secondary>filters</secondary> + </indexterm> + + <para>Nu kan <application>LPD</application> verteld worden + welke tekstfilters gebruikt moeten worden bij het versturen + van afdrukopdrachten. Een <emphasis>tekstfilter</emphasis> + is een programma dat <application>LPD</application> + aanroept als het een afdrukopdracht krijgt. Wanneer + <application>LPD</application> het tekstfilter aanroept, + wordt de standaard invoer van het filter gekoppeld aan de + afdrukopdracht en de standaard uitvoer aan het + printerapparaat dat door de optie <literal>lp</literal> + is opgegeven. Er wordt aangenomen dat het filter van + standaard invoer leest, vervolgens de nodige handelingen + uitvoert en het resultaat naar de standaard uitvoer + schrijft, zodat het afgedrukt wordt. In <link + linkend="printing-advanced-filters">Filters</link> staat + meer informatie over het tekstfilter.</para> + + <para>Voor deze eenvoudige printerinstallatie kan het + tekstfilter een klein shellscript zijn dat + <command>/bin/cat</command> aanroept om de afdrukopdracht + naar de printer te sturen. &os; wordt geleverd met een + ander filter, <filename>lpf</filename>, dat backspaces en + onderlijnde tekst afhandelt voor printers die hier niet mee + overweg kunnen. Natuurlijk kan elk filter gebruikt worden + dat gewenst is. Het filter <command>lpf</command> wordt + uitgebreid beschreven in <link + linkend="printing-advanced-lpf">lpf: een + tekstfilter</link>.</para> + + <para>Nu wordt eerst het shellscript + <filename>/usr/local/libexec/if-simple</filename> gemaakt + dat als simpel tekstfilter dient. Plaats de volgende tekst + in het bestand met een tekstverwerker naar keuze:</para> - <para></para> + <programlisting>#!/bin/sh +# +# if-simple - Eenvoudig tekstfilter voor lpd +# Geïnstalleerd in /usr/local/libexec/if-simple +# +# Kopieert eenvoudige stdin naar stdout. +# Filterargumenten worden genegeerd. + +/bin/cat && exit 0 +exit 2</programlisting> + + <para>Zorg dat het bestand uitvoerbaar is:</para> + + <screen>&prompt.root; <userinput>chmod 555 /usr/local/libexec/if-simple</userinput></screen> + + <para>Zorg dat <application>LPD</application> het filter + gebruikt door dit aan te geven met de optie + <literal>if</literal> in + <filename>/etc/printcap</filename>. Nu volgt hoe dit te + doen voor de twee printers uit het voorbeeld:</para> + + <programlisting># +# /etc/printcap voor host rose - met tekstfilter +# +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:\ + :if=/usr/local/libexec/if-simple:</programlisting> + + <note> + <para>Een kopie van het script + <filename>if-simple</filename> staat in de map <filename + class="directory">/usr/share/examples/printing</filename>.</para> + </note> </sect4> <sect4> - <title>* <application>LPD</application> aanzetten</title> + <title><application>LPD</application> aanzetten</title> - <para></para> + <para>&man.lpd.8; wordt gestart vanuit + <filename>/etc/rc</filename> door de variabele + <literal>lpd_enable</literal>. Standaard staat deze + variabele op <literal>NO</literal>. Als dit nog niet is + gedaan, voeg dan de volgende regel toe aan + <filename>/etc/rc.conf</filename> en herstart de + computer:</para> + + <programlisting>lpd_enable="YES"</programlisting> + + <para>Of voer het commando &man.lpd.8; uit:</para> + + <screen>&prompt.root; <userinput>lpd</userinput></screen> </sect4> <sect4 id="printing-trying"> - <title>* De printer uitproberen</title> + <title>Printer uitproberen</title> + + <para>Nu volgt het laatste onderdeel van de eenvoudige + <application>LPD</application> installatie. Helaas zijn + felicitaties nog niet gepast. De printer moet worden + getest en eventuele problemen moeten worden opgelost. Om + de installatie te testen kan iets afgedrukt worden. + Afdrukken gaat met het commando &man.lpr.1;. Dit stuurt + een opdracht naar een printer.</para> + + <para>Het programma &man.lpr.1; is te combineren met het + programma &man.lptest.1; uit <link + linkend="printing-testing">Printercommunicatie + controleren </link> om tekst te genereren.</para> + + <para><emphasis>Om de eenvoudige + <application>LPD</application> installatie te + testen:</emphasis></para> - <para></para> + <screen>&prompt.root; <userinput>lptest 20 5 | lpr -P<replaceable>printernaam</replaceable></userinput></screen> + + <para>Hier is <replaceable>printernaam</replaceable> de naam + van een printer (of een alias) die in + <filename>/etc/printcap</filename> wordt genoemd. De + standaard printer kan worden getest door bij het aanroepen + van &man.lpr.1; de optie <option>-P</option> weg te laten. + Nogmaals: test een &postscript;-printer door een + &postscript;-programma naar een printer te sturen en maak + geen gebruik van &man.lptest.1;. Dit kan door het + programma in een bestand op te slaan en de volgende + commandoregel uit te voeren: <command>lpr + <replaceable>bestand</replaceable></command>.</para> + + <para>Voor een &postscript;-printer moet het resultaat van + het programma verschijnen. Als gebruik wordt gemaakt van + &man.lptest.1; ziet het resulaat er ongeveer zo uit:</para> + + <programlisting>!"#$%&'()*+,-./01234 +"#$%&'()*+,-./012345 +#$%&'()*+,-./0123456 +$%&'()*+,-./01234567 +%&'()*+,-./012345678</programlisting> + + <para>Om de printer uitvoeriger te testen kunnen grotere + programma's geprobeerd worden (voor taal gebaseerde + printers) of kan &man.lptest.1; aangeroepen worden met + andere argumenten. Bijvoorbeeld: <command>lptest 80 + 60</command>, drukt 60 regels af met elk 80 + karakters.</para> + + <para>Als de printer niet werkt, lees dan verder in <link + linkend="printing-troubleshooting">Problemen + oplossen</link>.</para> </sect4> </sect3> </sect2> </sect1> <sect1 id="printing-advanced"> - <title>* Geavanceerde printer instellingen</title> + <title>Geavanceerde printerinstallatie</title> + + <para>Deze sectie behandelt het gebruik van filters om speciaal + opgemaakte tekst en voorbladen af te drukken, via het netwerk af + te drukken en printergebruik te beperken en statistieken bij te + houden.</para> <sect2 id="printing-advanced-filter-intro"> - <title>* Filters</title> + <title>Filters</title> + + <indexterm> + <primary>afdrukken</primary> + + <secondary>filters</secondary> + </indexterm> + + <para>Hoewel <application>LPD</application> veel van het + afdrukwerk afhandelt (netwerkverkeer, wachtrijafhandeling, + toegangscontrole, enzovoort), wordt het + <emphasis>echte</emphasis> werk door de filters gedaan. + Filters zijn programma's die met een printer communiceren en + inspelen op printerspecifieke eigenschappen. In de eenvoudige + printeropzet is een filter geïnstalleerd voor platte + tekst, een zeer eenvoudig filter dat met de meeste printers zou + moeten werken (<link linkend="printing-textfilter">Tekstfilter + installeren</link>).</para> + + <para>Om echter gebruik te maken van formaatomzetting, + printeradministratie, printerspecifieke aanpassingen, + enzovoort, is het nodig te weten hoe filters werken. + Uiteindelijk is het de verantwoordelijkheid van het filter om + deze zaken af te handelen. Het slechte nieuws is dat + <emphasis>de beheerder</emphasis> in het meerderdeel van de + gevallen het filter moet aanleveren. Het goede nieuws is dat + veel filters algemeen beschikbaar zijn en als ze dat niet zijn, + zijn ze vaak makkelijk te schrijven.</para> + + <para>&os; heeft een ingebouwd filter, + <filename>/usr/libexec/lpr/lpf</filename>, die met veel + printers werkt die platte tekst kunnen afdrukken. Het filter + regelt backspace en tabs in bestanden en administreert + printergebruik, maar dat is zo'n beetje alles wat dit filter + doet. Er zijn ook diverse filters en filtercomponenten in de + &os; <link linkend="ports">Portscollectie</link>.</para> + + <para>Hieronder wordt het volgende beschreven:</para> + + <itemizedlist> + <listitem> + <para>In <link linkend="printing-advanced-filters">Hoe + filters werken</link> staat een overzicht van de rol die + een filter speelt in het afdrukproces. Lees dat onderdeel + om een indruk te krijgen wat er <quote>onder de + motorkap</quote> gebeurt als + <application>LPD</application> filters gebruikt. Deze + kennis helpt mogelijke problemen te voorkomen of op te + lossen als meerdere filters worden geïnstalleerd voor + printers;</para> + </listitem> + + <listitem> + <para><application>LPD</application> gaat er van uit dat elke + printer standaard platte tekst af kan drukken. Dit geeft + problemen voor &postscript; (of andere op taal gebaseerde) + printers die niet in staat zijn direct platte tekst af te + drukken. In <link + linkend="printing-advanced-if-conversion">Platte tekst + op &postscript;-printers afdrukken</link> staat wat er + kan worden gedaan om dit probleem te verhelpen. Lees + verder in dit onderdeel als het om &postscript;-printers + gaat;</para> + </listitem> + + <listitem> + <para>Voor veel programma's is &postscript; een populair + uitvoerformaat. Sommige mensen schrijven &postscript; code + zelfs direct. &postscript;-printers zijn echter kostbaar. + In <link linkend="printing-advanced-ps">&postscript; + simuleren op niet-&postscript;-printers</link> staat hoe + de tekstfilter van een printer aangepast moet worden zodat + die &postscript; accepteert en afdrukt op een + <emphasis>niet-&postscript;</emphasis>-printer. Dit + onderdeel is van toepassing voor + niet-&postscript;-printers;</para> + </listitem> + + <listitem> + <para>In <link + linkend="printing-advanced-convfilters">Conversiefilters</link> + wordt een methode beschreven om de conversie van bepaalde + bestandsformaten te automatiseren, zoals van grafische of + tekstopmaak programma's, naar formaten die een printer kan + begrijpen. Na het lezen van dit onderdeel is een beheerder + in staat om een printer zodanig in te stellen dat + gebruikers <command>lpr -t</command> kunnen invoeren om + troff gegevens af te drukken, <command>lpr -d</command> om + &tex; DVI gegevens af te drukken of <command>lpr + -v</command> om rasterplaatjes af te drukken, enzovoorts. + Het wordt aangeraden deze sectie te lezen;</para> + </listitem> + + <listitem> + <para>In <link + linkend="printing-advanced-of">Uitvoerfilters</link> + wordt een niet vaak gebruikte functionaliteit van + <application>LPD</application> behandeld: uitvoerfilters. + Tenzij voorbladen worden afgedrukt (<link + linkend="printing-advanced-header-pages">Voorbladen</link>), + kan deze sectie waarschijnlijk overgeslagen worden;</para> + </listitem> + + <listitem> + <para><link linkend="printing-advanced-lpf">lpf: een + tekstfilter</link> beschrijft <command>lpf</command>, een + redelijk complete, eenvoudige tekstfilter voor lineprinters + (en laserprinters die zich als lineprinters voordoen) dat + wordt geleverd bij &os;. Voor een snelle manier om + printeradministratie aan de praat te krijgen voor platte + tekst of voor printers waar rook uit komt bij het zien van + backspace karakters, is het serieus te overwegen gebruik te + maken van <command>lpf</command>.</para> + </listitem> + </itemizedlist> + + <note> + <para>Een kopie van de scripts die hieronder worden beschreven, + staan in de map <filename + class="directory">/usr/share/examples/printing</filename>.</para> + </note> <sect3 id="printing-advanced-filters"> - <title>* Hoe filters werken</title> + <title>Hoe filters werken</title> + + <para>Zoals eerder genoemd, is een filter een programma dat + wordt uitgevoerd door <application>LPD</application> voor het + afhandelen van het apparaatafhankelijke deel van de + communicatie met een printer.</para> + + <para>Als <application>LPD</application> een bestand wil + afdrukken uit een afdrukopdracht, start het een + filterprogramma. Het koppelt de standaard invoer van de + filter aan het af te drukken bestand, de standaard uitvoer + aan de printer en de standaard foutmelding aan het + logboekbestand voor foutmeldingen (zoals opgegeven via de + optie <literal>lf</literal> in + <filename>/etc/printcap</filename> of standaard + <filename>/dev/console</filename>).</para> + + <indexterm> + <primary><command>troff</command></primary> + </indexterm> + + <para>Welk filter <application>LPD</application> start en de + argumenten van het filter hangen af van wat er in het bestand + <filename>/etc/printcap</filename> wordt opgegeven en de + argumenten die de gebruiker geeft op de &man.lpr.1; + commandoregel. Als een gebruiker bijvoorbeeld + <command>lpr -t</command> ingeeft, start + <application>LPD</application> het filter troff, zoals wordt + opgegeven via de optie <literal>tf</literal> voor de + betreffende printer. Als een gebruiker platte tekst wilt + afdrukken, dan wordt het filter <literal>if</literal> gestart + (dit klopt bijna: zie <link + linkend="printing-advanced-of">Uitvoerfilters</link> voor + de details).</para> + + <para>Er zijn drie soorten filters die in + <filename>/etc/printcap</filename> kunnen worden + opgegeven:</para> + + <itemizedlist> + <listitem> + <para>Het tekstfilter, dat in de + <application>LPD</application> documentatie verwarrend + genoeg <emphasis>input filter</emphasis> wordt genoemd, + verwerkt het afdrukken van gewone tekst. Beschouw het + als de standaard filter. <application>LPD</application> + verwacht dat elke printer standaard platte tekst kan + afdrukken en het is de taak van de tekstfilter om er voor + te zorgen dat backspaces, tabs en andere speciale + karakters de printer niet in de war sturen. In een + omgeving waar moet worden bijgehouden hoeveel er wordt + afgedrukt, moet de tekstfilter ook administreren hoeveel + pagina's er zijn afgedrukt. Dit gaat meestal door het + aantal afgedrukte regels te tellen en dit te vergelijken + met het aantal regels per pagina dat door de printer + wordt ondersteund. De tekstfilter wordt aangeroepen met + de volgende lijst argumenten:</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> + + <variablelist> + <varlistentry> + <term><option>-c</option></term> + + <listitem> + <para>wordt gebruikt als de afdrukopdracht is + gegeven met <command>lpr -l</command></para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable>width</replaceable></term> + + <listitem> + <para>is de waarde van de optie + <literal>pw</literal> (<emphasis>page + width</emphasis>: pagina breedte), zoals + opgegeven in + <filename>/etc/printcap</filename>, standaard + 132</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable>length</replaceable></term> + + <listitem> + <para>is de waarde van de optie + <literal>pl</literal> (<emphasis>page + length</emphasis>: paginalengte), standaard + 66</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable>indent</replaceable></term> + + <listitem> + <para>geeft aan hoeveel wordt ingesprongen door + <command>lpr -i</command>, standaard 0</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable>login</replaceable></term> + + <listitem> + <para>de gebruikersnaam van de gebruiker die de + afdrukopdracht gaf</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable>host</replaceable></term> + + <listitem> + <para>de hostnaam waar de afdrukopdracht gegeven + is</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable>acct-file</replaceable></term> - <para></para> + <listitem> + <para>de naam van het administratiebestand zoals + opgegeven via de optie + <literal>af</literal>.</para> + </listitem> + </varlistentry> + </variablelist> + </listitem> + + <indexterm> + <primary>afdrukken</primary> + + <secondary>filters</secondary> + </indexterm> + + <listitem> + <para>Een <emphasis>conversiefilter</emphasis> converteert + een specifiek bestandsformaat naar een formaat dat een + printer begrijpt. Bijvoorbeeld: ditroff + typesettinggegevens kunnen niet direct worden afgedrukt, + maar er bestaat wel een conversiefilter om + ditroffgegevens te converteren naar een formaat dat een + printer kan verteren en afdrukken. Dit wordt in <link + linkend="printing-advanced-convfilters">Conversiefilters</link> + beschreven. Conversiefilters zijn ook nodig om + printergebruik te administreren, mocht dat nodig zijn. + Conversiefilters worden met de volgende argumenten + aangeroepen:</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>Hier is <replaceable>pixel-width</replaceable> de + waarde van de de optie <literal>px</literal> (standaard + 0) en <replaceable>pixel-height</replaceable> is de + waarde van de optie <literal>py</literal> (standaard + 0).</para> + </listitem> + + <listitem> + <para>Het <emphasis>uitvoerfilter</emphasis> wordt alleen + gebruikt als er geen tekstfilter is of als er voorbladen + worden afgedrukt. De ervaring leert dat uitvoerfilters + zelden worden gebruikt. In sectie <link + linkend="printing-advanced-of">Uitvoerfilters</link> + worden ze beschreven Er zijn slechts twee argumenten die + aan een uitvoerfilter worden meegegeven:</para> + + <cmdsynopsis> + <command>filter-name</command> + <arg choice="plain">-w<replaceable>width</replaceable></arg> + <arg choice="plain">-l<replaceable>length</replaceable></arg> + </cmdsynopsis> + + <para>Die zijn identiek aan de argumenten + <option>-w</option> en <option>-l</option> van het + tekstfilter.</para> + </listitem> + </itemizedlist> + + <para>Filters moeten <emphasis>afsluiten</emphasis> met de + volgende waarde:</para> + + <variablelist> + <varlistentry> + <term>exit 0</term> + + <listitem> + <para>Als het filter een bestand succesvol heeft + afgedrukt.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>exit 1</term> + + <listitem> + <para>Als het filter niet geslaagd is om een bestand af + te drukken, maar wil dat <application>LPD</application> + het nogmaals probeert. <application>LPD</application> + herstart het filter als die afsluit met deze + status.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>exit 2</term> + + <listitem> + <para>Als het filter niet geslaagd is om een bestand af + te drukken, maar niet wil dat + <application>LPD</application> het nogmaals probeert. + <application>LPD</application> verwijdert het bestand + uit de wachtrij.</para> + </listitem> + </varlistentry> + </variablelist> + + <para>Het tekstfilter dat bij &os; wordt geleverd, + <filename>/usr/libexec/lpr/lpf</filename>, benut de + argumenten voor paginabreedte en -lengte om te bepalen + wanneer een nieuwe pagina moet worden begonnen en om het + printergebruik bij te houden. Het gebruikt de argumenten + voor login, host en administratiebestand om accountingregels + aan te maken.</para> + + <para>Controleer bij het zoeken naar filters of ze + LPD-compatibel zijn. Zo ja, dan ondersteunen ze de + argumenten zoals hierboven beschreven. Zorg bij het zelf + schrijven van filters voor algemeen gebruik dat ze dezelfde + argumenten en exitcodes ondersteunen.</para> </sect3> <sect3 id="printing-advanced-if-conversion"> - <title>* Platte tekst op &postscript; printers afdrukken</title> + <title>Platte tekst op &postscript;-printers afdrukken</title> + + <indexterm><primary>afdrukopdrachten</primary></indexterm> + + <para>Als een computer en &postscript; (of andere op taal + gebaseerde) printer maar één gebruiker hebben + die belooft nooit platte tekst naar de printer te sturen of + programma's te gebruiken die dat doen, dan is dit onderdeel + overbodig.</para> + + <para>Als gebruikers zowel zowel &postscript; als platte tekst + naar een printer willen sturen, dan is het aan te raden de + printerinstellingen hierop aan te passen. Hiervoor moet het + tekstfiler bij elke nieuwe opdracht bepalen of het om platte + tekst of &postscript; gaat. Alle &postscript;-opdrachten + beginnen met <literal>%!</literal> (raadpleeg de + printerhandleiding voor andere printertalen). Als dit de + eerste twee karakters zijn van een opdracht is het + &postscript; en kan de rest van een opdracht direct + doorgestuurd worden. Is dit niet het geval, dan moet de + filter de tekst omzetten in &postscript; en het resultaat + afdrukken.</para> + + <para>Hoe gaat dat werken?</para> + + <indexterm> + <primary>printers</primary> + + <secondary>serieel</secondary> + </indexterm> + + <para>Voor seriële printers kan het meest eenvoudig + <command>lprps</command> geïnstalleerd worden. + <command>lprps</command> is een &postscript; afdrukfilter + die tweewegcommunicatie met een printer heeft. Het werkt + het statusbestand van een printer bij met uitgebreide + informatie afkomstig van een printer, zodat gebruikers en + beheerders precies kunnen zien wat de status van een printer + is (zoals: <errorname>toner bijna op</errorname> of + <errorname>papier vastgelopen</errorname>). Maar + belangrijker, het omvat het programma <command>psif</command> + dat bepaalt of een binnenkomende opdracht platte tekst is en + <command>textps</command> (dat ook geleverd wordt met + <command>lprps</command>) om opdrachten om te zetten naar + &postscript;. Vervolgens wordt een opdracht met + <command>lprps</command> naar een printer gestuurd.</para> + + <para><command>lprps</command> is onderdeel van de &os; + <link linkend="ports">Portscollectie</link>. De software kan + natuurlijk ook handmatig gedownload, gecompileerd en + geïnstalleerd worden. Nadat <command>lprps</command> is + geïnstalleerd moet de installatielocatie ervan aan + <command>psif</command> worden doorgeven dat onderdeel is van + <command>lprps</command>. Als <command>lprps</command> is + geïnstalleerd via de Portscollectie, gebruik dan + het volgende voor de seriële &postscript;-printer in + <filename>/etc/printcap</filename>:</para> - <para></para> + <programlisting>:if=/usr/local/libexec/psif:</programlisting> + + <para>Ook moet de optie <literal>rw</literal> worden opgeven, + die <application>LPD</application> vertelt om een printer in + read-write modus te openen.</para> + + <para>Als een parallelle &postscript;-printer wordt ingesteld + (en dus geen tweewegcommunicatie toegepast kan worden met de + printer, zoals vereist door <command>lprps</command>), dan + kan het volgende shellscript gebruikt worden als + tekstfilter:</para> + + <programlisting>#!/bin/sh +# +# psif - Druk &postscript; of platte tekst af op een &postscript; +# printer. Script versie; NIET de versie die wordt geleverd bij lprps +# Geïnstalleerd in /usr/local/libexec/psif +# + +IFS="" read -r first_line +first_two_chars=`expr "$first_line" : '\(..\)'` + +if [ "$first_two_chars" = "%!" ]; then + # + # &postscript; opdracht, afdrukken. + # + echo "$first_line" && cat && printf "\004" && exit 0 + exit 2 +else + # + # Platte tekst, converteren en dan afdrukken. + # + ( echo "$first_line"; cat ) | /usr/local/bin/textps && printf "\004" && exit 0 + exit 2 +fi</programlisting> + + <para>In bovenstaand script is <command>textps</command> een + programma dat geïnstalleerd is om platte tekst om te + zetten naar &postscript;. Elk tekst-naar-&postscript; + programma volstaat. De &os; <link + linkend="ports">Portscollectie</link> bevat een uitgebreid + tekst-naar-&postscript;-programma, <literal>a2ps</literal>, + dat wellicht handig is om te gebruiken.</para> </sect3> <sect3 id="printing-advanced-ps"> - <title>* &postscript; simuleren op niet &postscript; - printers</title> + <title>&postscript; simuleren op + niet-&postscript;-printers</title> + + <indexterm> + <primary>&postscript;</primary> + + <secondary>emuleren</secondary> + </indexterm> + + <indexterm> + <primary>Ghostscript</primary> + </indexterm> + + <para>&postscript; is <emphasis>de facto</emphasis> de + standaard voor op hoge kwaliteit typesetten en afdrukken. + &postscript; is echter een <emphasis>dure</emphasis> + standaard. Gelukkig heeft Aladdin Enterprises een gratis + &postscript; kloon, <application>Ghostscript</application>, + die werkt onder &os;. Ghostscript kan de meeste &postscript; + bestanden lezen en ze omzetten naar verschillende soorten + apparaten, waaronder veel niet-&postscript;-printers. Door + Ghostscript te installeren en een printer gebruik te laten + maken van een speciaal tekstfilter, kan een + niet-&postscript;-printer zich gedragen als een echte + &postscript;-printer.</para> + + <para>Ghostscript is beschikbaar via de &os; <link + linkend="ports">Portscollectie</link>. Het kan ook vrij + makkelijk gedownload, gecompileerd en geïnstalleerd + worden.</para> + + <para>Om &postscript; te simuleren moet een tekstfilter + detecteren of het een &postscript; bestand aan het afdrukken + is. Zo niet, dan stuurt het filter het bestand direct naar + een printer, anders gebruikt het filter Ghostscript om het + bestand om te zetten naar een formaat dat door een printer + wordt begrepen.</para> + + <para>Een voorbeeld: het volgende script is een tekstfilter + voor HP DeskJet 500 printers. Voor andere printers moet het + argument <option>-sDEVICE</option> argument voor het commando + <command>gs</command> (Ghostscript) vervangen worden. (Met + <command>gs -h</command> wordt een lijst met apparaten + getoond worden die de huidige Ghostscript installatie + ondersteunt.)</para> - <para></para> + <programlisting>#!/bin/sh +# +# ifhp - Druk Ghostscript-gesimuleerd &postscript; af op een DeskJet +# 500. Geïnstalleerd in /usr/local/libexec/ifhp + +# +# Behandel LF als CR+LF (om een "trap-effect" op HP/PCL +# printer te voorkomen): +# +printf "\033&k2G" || exit 2 + +# +# Lees de eerste twee karakters van het bestand +# +IFS="" read -r first_line +first_two_chars=`expr "$first_line" : '\(..\)'` + +if [ "$first_two_chars" = "%!" ]; then + # + # Het is &postscript;. Gebruik Ghostscript om te converteren + # en druk het af. + # + /usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 \ + -sOutputFile=- - && exit 0 +else + # + # Platte tekst of HP/PCL, dus direct afdrukken; druk een + # pagina-einde af om de laatste pagina te ejecteren. + # + echo "$first_line" && cat && printf "\033&l0H" && +exit 0 +fi + +exit 2</programlisting> + + <para>Tot slot moet <application>LPD</application> op de hoogte + gebracht worden van het filter via de optie + <literal>if</literal>:</para> + + <programlisting>:if=/usr/local/libexec/ifhp:</programlisting> + + <para>Dat is alles. Nu kan <command>lpr plain.text</command> + en <filename>lpr watdanook.ps</filename> ingevoerd worden en + beiden worden juist afgedrukt.</para> </sect3> <sect3 id="printing-advanced-convfilters"> - <title>* Conversie filters</title> + <title>Conversiefilters</title> + + <para>Na de eenvoudige installatie, zoals beschreven in <link + linkend="printing-simple">Eenvoudige + printerinstallatie</link>, te hebben voltooid, is het + waarschijnlijk wenselijk om conversiefilters te installeren + voor favoriete bestandsformaten (naast platte + ASCII-tekst).</para> <sect4> - <title>* Waarom conversie filters installeren?</title> + <title>Waarom conversiefilters installeren?</title> + + <indexterm> + <primary>&tex;</primary> + + <secondary>DVI bestanden afdrukken</secondary> + </indexterm> + + <para>Conversiefilters maken het afdrukken van verschillende + bestanden eenvoudig. Stel dat veel gebruik gemaakt wordt + van het tekstverwerkingsprogramma &tex; en een &postscript; + printer. Elke keer als door &tex; een DVI-bestand wordt + gegenereerd, kan dat niet direct afgedrukt worden. Het + DVI-bestand moet omgezet worden naar &postscript;. De te + geven opdrachten zijn de volgende:</para> + + <screen>&prompt.user; <userinput>dvips zeewieranalyse.dvi</userinput> +&prompt.user; <userinput>lpr zeewieranalyse.ps</userinput></screen> + + <para>Na installatie van een conversiefilter voor + DVI-bestanden kan deze handmatige conversie overgeslagen + worden door <application>LPD</application> de conversie te + laten uitvoeren. Elke keer als een DVI-bestand wordt + afgedrukt, hoeft alleen de volgende opdracht gegeven te + worden:</para> - <para></para> + <screen>&prompt.user; <userinput>lpr -d zeewieranalyse.dvi</userinput></screen> + + <para><application>LPD</application> voert de + DVI-bestandsconversie uit door <option>-d</option> te + geven. In <link + linkend="printing-lpr-options-format">Opties voor opmaak + en conversie</link> staat een lijst van + conversie-opties.</para> + + <para>Voor elke conversie-optie moet een + <emphasis>conversiefilter</emphasis> geïnstalleerd + worden en moet in <filename>/etc/printcap</filename> de + locatie worden opgegeven. Een conversiefilter is als de + tekstfilter voor de eenvoudige printerinstallatie (<link + linkend="printing-textfilter">Tekstfilter + installeren</link>), behalve dat in plaats van platte + tekst af te drukken, de conversiefilter het bestand + converteert naar een formaat dat een printer + begrijpt.</para> </sect4> <sect4> - <title>* Welke conversie filters moet ik installeren?</title> + <title>Welke conversiefilters installeren?</title> + + <para>Installeer de conversiefilters die nodig zijn. Als + veel DVI bestanden worden afgedrukt, dan is het handig een + DVI-filter te installeren. Als veel troff wordt afgedrukt, + dan is het waarschijnlijk handig een troff-filter te + installeren.</para> + + <para>De volgende tabel geeft een samenvatting van filters + waarmee <application>LPD</application> kan werken, hoe ze + in <filename>/etc/printcap</filename> kunnen worden + aangeroepen en hoe ze met <command>lpr</command> kunnen + worden aangeroepen:</para> + + <informaltable frame="none" pgwide="1"> + <tgroup cols="3"> + <thead> + <row> + <entry>Bestandsformaat</entry> + + <entry><filename>/etc/printcap</filename> + optie</entry> + + <entry><command>lpr</command> optie</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-tekst</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>raster</entry> - <para></para> + <entry><literal>vf</literal></entry> + + <entry><option>-v</option></entry> + </row> + + <row> + <entry>platte tekst</entry> + + <entry><literal>if</literal></entry> + + <entry>geen, <option>-p</option>, of + <option>-l</option></entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>In het voorbeeld waarbij <command>lpr -d</command> + wordt gebruikt, moet voor de printer een optie + <literal>df</literal> gedefinieerd staan in + <filename>/etc/printcap</filename>.</para> + + <indexterm><primary>FORTRAN</primary></indexterm> + + <para>Ondanks wat anderen mogelijk beweren, zijn formaten als + FORTRAN-tekst en plot waarschijnlijk verouderd. Dit biedt + de mogelijkheid een nieuwe betekenis te geven aan deze + opties door zelf een filter te installeren. Stel dat + direct Printerleaf bestanden afgedrukt moeten worden + (bestanden van het DTP programma Interleaf), maar nooit + plotbestanden worden afgedrukt. Dan kan een Printerleaf + conversiefilter geïnstalleerd worden onder de optie + <literal>gf</literal> en gebruikers kunnen + geïnstrueerd worden om <command>lpr -g</command> te + gebruiken om Printerleaf bestanden af te drukken.</para> </sect4> <sect4> - <title>* Conversie filters installeren</title> + <title>Conversiefilters installeren</title> + + <para>Aangezien conversiefilters programma's zijn die niet + vallen onder de &os; basisinstallatie, kunnen ze het best + onder <filename>/usr/local</filename> geplaatst worden. De + map <filename>/usr/local/libexec</filename> is een + veelgebruikte locatie, omdat hier programma's te vinden + zijn die alleen door <application>LPD</application> + gebruikt worden. Gewone gebruikers hoeven ze nooit te + gebruiken.</para> + + <para>Om een conversiefilter te activeren, moet de + bestandslocatie onder de juiste optie voor de betreffende + printer in <filename>/etc/printcap</filename> opgegeven + worden.</para> + + <para>In het onderstaande voorbeeld wordt de + DVI-conversiefilter toegevoegd onder de sectie van de + printer <literal>bamboo</literal>. Hieronder staat opnieuw + het voorbeeldbestand <filename>/etc/printcap</filename>, nu + met de nieuwe optie <literal>df</literal> voor de printer + <literal>bamboo</literal>:</para> + + <programlisting># +# /etc/printcap voor host rose - df filter voor bamboo toegevoegd +# +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>De DVI filter is een shellscript met de naam + <filename>/usr/local/libexec/psdf</filename>. Het script + ziet er als volgt uit:</para> - <para></para> + <programlisting>#!/bin/sh +# +# psdf - DVI naar PostScript afdrukfilter +# Geïnstalleerd in /usr/local/libexec/psdf +# +# Aangeroepen door lpd wanneer een gebruiker lpr -d uitvoert +# +exec /usr/local/bin/dvips -f | /usr/local/libexec/lprps "$@"</programlisting> + + <para>Dit script roept <command>dvips</command> in + filtermodus aan (het <option>-f</option> argument) op de + standaard uitvoer, de af te drukken opdracht. Vervolgens + start het &postscript; afdrukfilter + <command>lprps</command> (zie <link + linkend="printing-advanced-if-conversion">Platte tekst op + &postscript;-printers afdrukken</link>) met de argumenten + die <application>LPD</application> aan het script + doorgeeft. <command>lprps</command> gebruikt deze + argumenten om de afgedrukte pagina's te + administreren.</para> </sect4> <sect4> - <title>* Meer conversie filters voorbeelden</title> + <title>Meer conversiefilter voorbeelden</title> + + <para>Aangezien er geen vaste procedure is om + conversiefilters te installeren nu enkele voorbeelden. + Gebruik deze als hulp bij het zelf maken van filters. + Gebruik ze zonder aanpassingen indien mogelijk.</para> + + <para>Dit voorbeeldscript is een raster (eigenlijk een + GIF-bestand) conversiefilter voor een HP LaserJet III-Si + printer:</para> + + <programlisting>#!/bin/sh +# +# hpvf - Converteer GIF bestanden naar HP/PCL, druk vervolgens af +# Geïnstalleerd in /usr/local/libexec/hpvf + +PATH=/usr/X11R6/bin:$PATH; export PATH +giftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300 \ + && exit 0 \ + || exit 2</programlisting> + + <para>Het script converteert achtereenvolgens het GIF-bestand + naar een PNM-bestand (portable anymap), een PGM-bestand + (portable graymap), een PMB-bestand (portable bitmap) en + tenslotte naar LaserJet/PCL formaat.</para> + + <para>Een <filename>/etc/printcap</filename> bestand dat + bovenstaand filter gebruikt ziet er als volgt uit:</para> + + <programlisting># +# /etc/printcap voor host orchid +# +teak|hp|laserjet|HP 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>Het volgende script is een conversiefilter voor troff + gegevens afkomstig van het groff typesettingsysteem voor + de &postscript;-printer <literal>bamboo</literal>:</para> + + <programlisting>#!/bin/sh +# +# pstf - Converteert groff's troffgegevens naar PS, drukt vervolgens af. +# Geïnstalleerd in /usr/local/libexec/pstf +# +exec grops | /usr/local/libexec/lprps "$@"</programlisting> + + <para>Bovenstaande script maakt eveneens gebruik van + <command>lprps</command> om de communicatie met een printer + af te handelen. Als een printer op een parallelle poort + is aangesloten, ziet het er als volgt uit:</para> + + <programlisting>#!/bin/sh +# +# pstf - Converteert groff's troff naar PS, drukt vervolgens af. +# Geïnstalleerd in /usr/local/libexec/pstf +# +exec grops</programlisting> + + <para>Dat is alles. In <filename>/etc/printcap</filename> + moet het volgende toegevoegd worden om het filter + beschikbaar te maken:</para> - <para></para> + <programlisting>:tf=/usr/local/libexec/pstf:</programlisting> + + <para>Hieronder een voorbeeld waarvan FORTRAN-programmeurs + waarschijnlijk tranen in hun ogen krijgen: een + FORTRAN-tekstfilter voor een willekeurige printer die in + staat is platte tekst af te drukken. Het filter wordt + actief gemaakt voor <literal>teak</literal>:</para> + + <programlisting>#!/bin/sh +# +# hprf - FORTRAN tekstfilter voor LaserJet 3si: +# Geïnstalleerd in /usr/local/libexec/hprf +# + +printf "\033&k2G" && fpr && printf "\033&l0H" && + exit 0 +exit 2</programlisting> + + <para>De onderstaande regel wordt toegevoegd aan + <filename>/etc/printcap</filename> voor de printer + <literal>teak</literal> om het filter beschikbaar te + maken:</para> + + <programlisting>:rf=/usr/local/libexec/hprf:</programlisting> + + <para>Het laatste voorbeeld is wellicht meer complex. Er + wordt een DVI-filter toegevoegd voor de eerder genoemde + LaserJet printer <literal>teak</literal>. Eerst het + makkelijke gedeelte: in <filename>/etc/printcap</filename> + wordt de locatie van de DVI-filter opgegeven:</para> + + <programlisting>:df=/usr/local/libexec/hpdf:</programlisting> + + <para>Nu het moeilijke gedeelte: het schrijven van het + filter. Daarvoor is een + DVI-naar-LaserJet/PCL conversieprogramma nodig. De &os; + <link linkend="ports">Portscollectie</link> heeft er een: + <command>dvi2xx</command>. Door dit package te installeren + komt het programma dat nodig is beschikbaar, + <command>dvilj2p</command>, waarmee DVI geconverteerd kan + worden naar LaserJet IIp, LaserJet III en + LaserJet 2000 formaten.</para> + + <para><command>dvilj2p</command> maakt het filter + <command>hpdf</command> redelijk complex, omdat + <command>dvilj2p</command> niet van de standaard invoer kan + lezen. Het wil werken met een bestandsnaam. Nog lastiger + is dat de bestandsnaam moet eindigen op + <filename>.dvi</filename>, zodat moeilijk gebruik + gemaakt kan worden van <filename>/dev/fd/0</filename> als + standaard. Dit probleem kan omzeild worden door een + (symbolische) link aan te maken van een tijdelijk bestand + (eindigend op <filename>.dvi</filename>) naar + <filename>/dev/fd/0</filename>. Hiermee wordt + <command>dvilj2p</command> gedwongen van de standaard + invoer te lezen.</para> + + <para>De enige andere hobbel die genomen moet worden, is dat + <filename>/tmp</filename> niet gebruikt kan worden als + tijdelijke link. Symbolische links zijn eigendom van de + gebruiker en groep <username>bin</username>. Het filter + wordt uitgevoerd door de gebruiker + <username>daemon</username>. De map + <filename>/tmp</filename> heeft het sticky-bit aan + staan. Het filter kan wel de link aanmaken, maar het is + niet mogelijk de link te verwijderen als de opdracht is + uitgevoerd, omdat de link eigendom is van een andere + gebruiker.</para> + + <para>In plaats hiervan maakt het filter een symbolische link + aan in de huidige werkmap, de wachtrijmap (als opgegeven in + de optie <literal>sd</literal> in + <filename>/etc/printcap</filename>). Dit is een perfecte + plaats voor filters om hun werk te doen. Zeker gezien er + (soms) meer vrije schijfruimte is in de wachtrijmap dan + onder <filename>/tmp</filename>.</para> + + <para>Dit is het uiteindelijke filter:</para> + + <programlisting>#!/bin/sh +# +# hpdf - Druk DVI gegevens af op een HP/PCL printer +# Geïnstalleerd in /usr/local/libexec/hpdf + +PATH=/usr/local/bin:$PATH; export PATH + +# +# Definieer een functie om tijdelijke bestanden op te ruimen. Deze +# staan in de huidige map; de wachtrijmap voor de printer. +# +cleanup() { + rm -f hpdf$$.dvi +} + +# +# Definieer een functie om fatale fouten te verwerken: geef de +# opgegeven boodschap weer en sluit af met 2. Afsluiten met 2 vertelt +# LPD niet nog eens te proberen de afdrukopdracht af te drukken. +# +fatal() { + echo "$@" 1>&2 + cleanup + exit 2 +} + +# +# Als de gebruiker de opdracht annuleert, stuurt LPD een SIGINT, dus +# ondervang SIGINT (en enkele andere signalen) om onze rommel op te +# ruimen. +# +trap cleanup 1 2 15 + +# +# Voor de zekerheid bestaande tijdelijke bestanden opruimen +# +cleanup + +# +# Link het DVI invoerbestand aan de standaard invoer (het af te +# drukken bestand). +# +ln -s /dev/fd/0 hpdf$$.dvi || fatal "Cannot symlink /dev/fd/0" + +# +# Make LF = CR+LF +# +printf "\033&k2G" || fatal "Cannot initialize printer" + +# +# Converteer en druk af. De retourneerwaarde van dvilj2p lijkt niet +# betrouwbaar, dus negeren we het. +# +dvilj2p -M1 -q -e- dfhp$$.dvi + +# +# Opruimen en afsluiten +# +cleanup +exit 0</programlisting> </sect4> <sect4 id="printing-advanced-autoconv"> - <title>* Geautomatiseerde conversie: een alternatief voor - conversie filters</title> + <title>Automatische conversie: een alternatief voor + conversiefilters</title> + + <para>Al deze conversiefilters bieden vele mogelijkheden voor + afdrukomgevingen, maar dwingen de gebruiker aan te geven + (op de &man.lpr.1; commandoregel) welk filter gebruikt + moet worden. Als gebruikers niet zo vaardig zijn in het + gebruik van computers, wordt het al snel vervelend steeds + aan te moeten geven welk filter gebruikt moet worden. + Vervelender is echter wanneer een gebruiker een verkeerd + filter gebruikt voor een bepaald bestandsformaat. Het + resultaat kan zijn dat een printer honderden pagina's + papier uitspuugt.</para> + + <para>In plaats van het installeren van conversiefilters, is + het te proberen om het (standaard) tekstfilter het + bestandstype van het af te drukken bestand te laten + detecteren en dan automatisch het juiste conversiefilter + aan te laten roepen. Programma's als + <command>file</command> kunnen hierbij handig zijn. Voor + <emphasis>sommige</emphasis> bestandsformaten kan het + moeilijk zijn de verschillen te ontdekken en voor deze + bestanden kan alsnog een conversiefilter beschikbaar worden + gesteld.</para> + + <indexterm><primary>apsfilter</primary></indexterm> - <para></para> + <indexterm> + <primary>afdrukken</primary> + + <secondary>filters</secondary> + + <tertiary>apsfilter</tertiary> + </indexterm> + + <para>De &os; <link linkend="ports">Portscollectie</link> + heeft een tekstfilter die automatisch bestanden + converteert: <command>apsfilter</command>. Het detecteert + platte tekst, &postscript; en DVI-bestanden, voert de + juiste conversie uit en druk de bestanden af.</para> </sect4> </sect3> <sect3 id="printing-advanced-of"> - <title>* Output filters</title> + <title>Uitvoerfilters</title> + + <para>Het wachtrijsysteem <application>LPD</application> + ondersteunt een ander type filter waar nog geen aandacht aan + is besteed: een uitvoerfilter. Een uitvoerfilter is bedoeld + om alleen platte tekst af te drukken, net als een + tekstfilter, maar met veel vereenvoudigingen. Wanneer een + uitvoerfilter wordt gebruikt, maar geen tekstfilter, + dan:</para> + + <itemizedlist> + <listitem> + <para>start <application>LPD</application> een + uitvoerfilter voor de gehele opdracht, in plaats van voor + elk bestand in de opdracht;</para> + </listitem> + + <listitem> + <para>biedt <application>LPD</application> de uitvoerfilter + niet de voorziening van het identificeren van het begin + of eind van de bestanden in de afdrukopdracht;</para> + </listitem> + + <listitem> + <para>stuurt <application>LPD</application> de + gebruikersnaam en de hostnaam niet door aan het filter. + Het is dus niet bedoeld om een afdrukadministratie bij + te houden. In feite zijn er maar twee argumenten:</para> + + <cmdsynopsis> + <command>filter-name</command> + <arg choice="plain">-w<replaceable>width</replaceable></arg> + <arg choice="plain">-l<replaceable>length</replaceable></arg> + </cmdsynopsis> + + <para>Hierbij is <replaceable>width</replaceable> afkomstig + van de optie <literal>pw</literal> en + <replaceable>length</replaceable> afkomstig van de optie + <literal>pl</literal> voor de betreffende printer.</para> + </listitem> + </itemizedlist> + + <para>De eenvoud van een uitvoerfilter is verleidelijk. Als + elk bestand in een afdrukopdracht op een nieuwe pagina moet + beginnen, is een uitvoerfilter <emphasis>niet + geschikt</emphasis>. In dat geval dient een tekstfilter + (ook wel invoerfilter) gebruikt te worden (zie <link + linkend="printing-textfilter">Tekstfilter + installeren</link>. Verder is een uitvoerfilter eigenlijk + <emphasis>veel ingewikkelder</emphasis>, omdat de te + verwerken bytestroom gecontroleerd moet worden op speciale + tekens en steeds signalen naar zichzelf moet sturen in + opdracht van <application>LPD</application>.</para> + + <para>Een uitvoerfiler is <emphasis>noodzakelijk</emphasis> als + voorbladen gewenst zijn en het nodig is om escape-reeksen of + andere initialisatietekens te sturen voor het afdrukken van + het voorblad. Maar het is tevens + <emphasis>nutteloos</emphasis> als het voorblad voor rekening + van de afkomstige gebruiker moet komen, aangezien + <application>LPD</application> geen gebruiker of + hostinformatie naar het uitvoerfilter stuurt.</para> + + <para>Op een enkele printer staat + <application>LPD</application> het gebruik van zowel een + uitvoerfilter als van een tekst of andere filter toe. In + deze gevallen start <application>LPD</application> het + uitvoerfilter alleen voor het afdrukken van het voorblad (zie + <link + linkend="printing-advanced-header-pages">Voorbladen</link>). + <application>LPD</application> verwacht vervolgens van het + uitvoerfilter dat deze <emphasis>zichzelf stopt</emphasis> + door twee bytes naar het filter te sturen: ASCII 031 gevolgd + door ASCII 001. Als een uitvoerfilter deze twee bytes ziet + (031, 001), moet die stoppen door een + <literal>SIGSTOP</literal> naar zichzelf te sturen. Als + <application>LPD</application> klaar is met het uitvoeren van + alle andere filters, dan herstart deze het uitvoerfilter door + er een <literal>SIGCONT</literal> naar toe te sturen.</para> + + <para>Als er wel een uitvoerfilter, maar + <emphasis>geen</emphasis> tekstfilter is en + <application>LPD</application> is niet bezig met het + verwerken van een opdracht met platte tekst, dan gebruikt + <application>LPD</application> het uitvoerfilter voor het + afdrukken van de opdracht. Zoals eerder vermeld, drukt de + uitvoerfilter elk bestand van de opdracht achter elkaar + af zonder pagina-einden of andere signalen voor + paginavoortgang. Dit is waarschijnlijk + <emphasis>niet</emphasis> gewenst. In bijna alle gevallen is + een tekstfilter nodig.</para> - <para></para> + <para>Het programma <command>lpf</command>, dat eerder + geïntoduceerd is als tekstfilter, kan ook worden + uitgevoerd als uitvoerfilter. Als een ad-hoc uitvoerfilter + nodig is, maar het schrijven van de bytedetectie en + signaalverzending code niet wenselijk is, dan is + <command>lpf</command> het proberen waard. + <command>lpf</command> kan ook opgenomen worden in een + shellscript om initialisatiecode af te handelen die eventueel + nodig is voor een printer.</para> </sect3> <sect3 id="printing-advanced-lpf"> - <title>* <command>lpf</command>: een tekstfilter</title> + <title><command>lpf</command>: een tekstfilter</title> - <para></para> + <para>Het programma <filename>/usr/libexec/lpr/lpf</filename> + uit de gecompileerde &os; distributie is een tekstfilter + (invoerfilter) die uitvoer kan inspringen (een opdracht + gegeven met <command>lpr -i</command>), karakters onveranderd + kan doorlaten (een opdracht gegeven met <command>lpr + -l</command>), de printpositie voor backspaces en tabs in + de opdracht kan aanpassen en afgedrukte pagina's kan + administreren. Het kan ook functioneren als + uitvoerfilter.</para> + + <para><command>lpf</command> is geschikt voor vele + afdrukomgevingen. Hoewel het zelf niet in staat is + initialisatiesequenties naar een printer te sturen, is het + vrij eenvoudig om een shellscript te schrijven dat de + initialisatie doet en vervolgens <command>lpf</command> + aanroept.</para> + + <indexterm><primary>pagina-administratie</primary></indexterm> + + <indexterm> + <primary>administreren</primary> + + <secondary>printer</secondary> + </indexterm> + + <para>Als <command>lpf</command> afgedrukte pagina's moet + administreren, is het nodig om de juiste waarden in te vullen + voor de opties <literal>pw</literal> en + <literal>pl</literal> in het bestand + <filename>/etc/printcap</filename>. Deze waarden worden + gebruikt om te bepalen hoeveel tekst er op een pagina past en + hoeveel pagina's er in een afdrukopdracht zijn afgedrukt. + Zie <link linkend="printing-advanced-acct">Printergebruik + administreren</link> voor meer informatie.</para> </sect3> </sect2> <sect2 id="printing-advanced-header-pages"> - <title>* Voorbladen</title> + <title>Voorbladen</title> + + <para>Als er <emphasis>veel</emphasis> gebruikers zijn die + allemaal verschillende printers gebruiken, dan is het te + overwegen gebruik te maken van <emphasis>voorbladen</emphasis> + als noodzakelijk kwaad.</para> + + <indexterm> + <primary>bannerpagina's</primary> + + <see>voorbladen</see> + </indexterm> + + <indexterm><primary>voorbladen</primary></indexterm> + + <para>Voorbladen, in het Engels ook wel bekend als + <emphasis>banner</emphasis> of <emphasis>burst</emphasis> + pagina's, identificeren wie een bepaalde opdracht heeft + afgedrukt. Ze worden meestal bedrukt met grote, dikgedrukte + letters, eventueel met een decoratieve rand, zodat ze in een + stapel afdrukken opvallen tussen de afgedrukte documenten. Ze + maken het gebruikers mogelijk hun afdrukopdracht snel te + vinden. Het nadeel van het gebruik van voorbladen is dat er + een extra blad moet worden afgedrukt voor elke opdracht, + waarmee hun nut niet langer duurt dan een paar minuten. + Uiteindelijk belanden ze in een papierbak of afvalberg. + Voorbladen gaan vooraf aan elke opdracht, niet aan elk bestand + in een opdracht, waardoor de verspilling beperkt blijft.</para> + + <para>Het <application>LPD</application>-systeem kan automatisch + voorbladen afdrukken <emphasis>als</emphasis> een printer + direct platte tekst kan afdrukken. In geval van een + &postscript;-printer, is het nodig een extern programma aan te + roepen om een voorblad te genereren (zie <link + linkend="printing-advanced-header-pages-ps">Voorbladen op + &postscript;-printers</link>.</para> <sect3 id="printing-advanced-header-pages-enabling"> - <title>* Voorbladen aanzetten</title> + <title>Voorbladen afdrukken</title> + + <para>In de sectie <link linkend="printing-simple">Eenvoudige + printerinstallatie</link> is het afdrukken van + voorbladen uitgeschakeld door de optie <literal>sh</literal> + (<quote>suppress header</quote>) in het bestand + <filename>/etc/printcap</filename> op te geven. Om wel + voorbladen af te drukken, hoeft alleen de optie + <literal>sh</literal> verwijderd te worden.</para> + + <para>Dit klinkt wat al te makkelijk, of niet?</para> - <para></para> + <para>Dat klopt. Het <emphasis>kan</emphasis> nodig zijn een + uitvoerfilter op te geven die initialisatiestrings naar een + printer stuurt. Hier is een voorbeeld uitvoerfilter voor + HP PCL-compatible printers:</para> + + <programlisting>#!/bin/sh +# +# hpof - Uivoerfilter voor HP PCL-compatible printers +# Geïnstalleerd in /usr/local/libexec/hpof + +printf "\033&k2G" || exit 2 +exec /usr/libexec/lpr/lpf</programlisting> + + <para>Geef de locatie van het uitvoerfilter op met de optie + <literal>of</literal>. Zie <link + linkend="printing-advanced-of">Uitvoerfilters</link> voor + meer informatie.</para> + + <para>Hier is een voorbeeldbestand + <filename>/etc/printcap</filename> voor de printer + <literal>teak</literal> die eerder is geïntroduceerd;. + Het afdrukken van voorbladen is geactiveerd en bovenstaande + uitvoerfilter is toegevoegd:</para> + + <programlisting># +# /etc/printcap voor host orchid +# +teak|hp|laserjet|HP 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>Als gebruikers nu een opdracht sturen naar + <literal>teak</literal>, wordt er bij elke opdracht een + voorblad afgedrukt. Als gebruikers liever willen zoeken naar + hun afdrukken, dan kunnen ze de voorbladen onderdrukken door + de opdracht te geven met het commando + <command>lpr -h</command>. Zie <link + linkend="printing-lpr-options-misc">Voorbladopties</link> + voor meer opties voor &man.lpr.1;.</para> + + <note> + <para><application>LPD</application> drukt een karakter voor + pagina-einde af na elk voorblad. Als een printer een ander + teken of sequentie gebruikt voor het beëindigen van + een pagina, dan kan dit opgeven worden met de optie + <literal>ff</literal> in + <filename>/etc/printcap</filename>.</para> + </note> </sect3> <sect3 id="printing-advanced-header-pages-controlling"> - <title>* Voorbladen beheren</title> + <title>Voorbladen beheren</title> + + <para>Door het afdrukken van voorbladen aan te zetten, + produceert <application>LPD</application> een <emphasis>lang + voorblad</emphasis> waarop in grote letters de gebruiker, + host en opdracht te lezen zijn. Hier volgt een voorbeeld. + Kelly heeft de opdracht <quote>outline</quote> afgedrukt + vanaf host <hostid>rose</hostid>):</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> geeft een paginabegin na + deze tekst, zodat de opdracht op een nieuwe pagina begint + (tenzij de optie <literal>sf</literal> (<emphasis>suppress + form feeds</emphasis>, <quote>onderdruk paginabegin</quote>) + is toegevoegd bij de desbetreffende printer in + <filename>/etc/printcap</filename>).</para> + + <para>Als dit wenselijk is, kan <application>LPD</application> + ook een <emphasis>korte tekst</emphasis> op het voorblad + afdrukken; geef hiervoor de optie <literal>sb</literal> + (<emphasis>short banner</emphasis>, <quote>kort + voorblad</quote>) op in het bestand + <filename>/etc/printcap</filename>. Het voorblad + ziet er dan als volgt uit:</para> + + <programlisting>rose:kelly Job: outline Date: Sun Sep 17 11:07:51 1995</programlisting> + + <para>Standaard drukt <application>LPD</application> het + voorblad als eerste af en vervolgens de opdracht. Om dat om + te keren, moet de optie <literal>hl</literal> + (<emphasis>header last</emphasis>, <quote>voorblad + laatst</quote>) in + <filename>/etc/printcap</filename> worden opgeven.</para> </sect3> <sect3 id="printing-advanced-header-pages-accounting"> - <title>* Accounting voor voorbladen</title> + <title>Voorbladen administreren</title> + + <para>Het gebruik van <application>LPD</application>'s + ingebouwde voorbladen dwingt een bepaald paradigma af wat + betreft het administreren van printergebruik: voorbladen + moeten <emphasis>gratis</emphasis> zijn.</para> + + <para>Waarom?</para> + + <para>Omdat het uitvoerfilter het enige externe programma is + dat controle heeft als het voorblad afgedrukt wordt dat het + gebruik zou kunnen administeren. Het heeft echter geen + beschikking over informatie over <emphasis>gebruiker of + host</emphasis> of een administratiebestand. Het heeft dus + geen idee wie voor het gebruik moet worden belast. Het + volstaat ook niet om gewoon <quote>één pagina + toe te voegen</quote> aan het tekstfilter of een ander + filter (dat wel beschikt over gebruiker en host informatie), + omdat gebruikers het afdrukken van een voorblad kunnen + onderdrukken met <command>lpr -h</command>. Ze worden dan + aangeslagen voor voorbladen die niet zijn afgedrukt. + Milieubewuste gebruikers gebruiken vast + <command>lpr -h</command>, maar dit kan niet worden + afgedwongen.</para> - <para></para> + <para>Het is <emphasis>ook niet voldoende</emphasis> om elk + filter zijn eigen voorblad te laten genereren (om zo het + gebruik te kunnen administeren). Als gebruikers het + afdrukken van voorbladen willen onderdrukken met + <command>lpr -h</command>, krijgen ze toch een voorblad en + worden er ook voor belast, aangezien + <application>LPD</application> de optie <option>-h</option> + niet doorgeeft aan de filters.</para> + + <para>Wat zijn dan de mogelijkheden?</para> + + <itemizedlist> + <listitem> + <para>Accepteer het paradigma van + <application>LPD</application> en maak voorbladen + gratis;</para> + </listitem> + + <listitem> + <para>Installeer een alternatief voor + <application>LPD</application>, zoals + <application>LPRng</application>. In <link + linkend="printing-lpd-alternatives">Alternatieven voor + het standaard wachtrijsysteem</link> staat meer over + andere afdruksoftware die in plaats van + <application>LPD</application> geïnstalleerd kan + worden;</para> + </listitem> + + <listitem> + <para>Schrijf een <emphasis>slimme</emphasis> + uitvoerfilter. Gewoonlijk is een uitvoerfilter bedoeld + om niet meer te doen dan het initialiseren van een + printer of wat eenvoudige karakterconversie. Het is + geschikt voor voorbladen en opdrachten met platte tekst + (als er een tekstfilter is). Maar als er een tekstfilter + is voor opdrachten met platte tekst, dan start + <application>LPD</application> het uitvoerfilter alleen + voor voorbladen. Het uitvoerfilter kan dan het + voorblad dat <application>LPD</application> genereert + analyseren om te bepalen welke gebruiker en host belast + moeten worden voor het afdrukken van het voorblad. Het + enige probleem is dat het uitvoerfilter nog steeds niet + weet in welk bestand het gebruik moet worden bijgehouden + (de naam van het bestand opgegeven in de + <literal>af</literal> wordt niet meegegeven), maar als + een bekend bestand gebruikt wordt, kan dit in het + uitvoerfiler worden opgeven. Om het parsen af te + handelen kan gebruik gemaakt worden van de optie + <literal>sh</literal> (<emphasis>short header</emphasis>, + <quote>kort voorblad</quote>) in + <filename>/etc/printcap</filename>. Dit kan echter wat + omslachtig zijn en gebruikers waarderen zeker de meer + gulle systeembeheerder die voorbladen gratis + maakt.</para> + </listitem> + </itemizedlist> </sect3> <sect3 id="printing-advanced-header-pages-ps"> - <title>* Voorbladen op &postscript; printers</title> + <title>Voorbladen op &postscript;-printers</title> + + <para>Zoals hierboven beschreven, kan + <application>LPD</application> een voorblad in platte tekst + genereren, dat geschikt is voor de meeste printers. + Natuurlijk kan &postscript; platte tekst niet direct + afdrukken, zodat de voorbladfunctie van + <application>LPD</application> nutteloos is.</para> + + <para>Een voor de hand liggende manier om voorbladen te + krijgen, is elk conversiefilter en tekstfilter zijn eigen + voorblad te laten genereren. De filters moeten gebruik maken + van de argumenten gebruiker en host om een geschikt voorblad + te genereren. Het nadeel van deze methode is dat gebruikers + altijd een voorblad krijgen, ook wanneer zij een opdracht + geven met <command>lpr -h</command>.</para> + + <para>Deze methode wordt nader beschreven. Het volgende script + heeft drie argumenten (gebuikersnaam, hostnaam en de naam van + de opdracht) en maakt een eenvoudig &postscript; + voorblad:</para> + + <programlisting>#!/bin/sh +# +# make-ps-header - genereer een PostScript voorblad op stdout +# Geïnstalleerd in /usr/local/libexec/make-ps-header +# + +# +# Dit zijn PostScript eenheden (72 in een inch). Pas dit aan voor A4 +# of het gebruikte formaat: +# +page_width=612 +page_height=792 +border=72 + +# +# Controleer argumenten +# +if [ $# -ne 3 ]; then + echo "Usage: `basename $0` <user> <host> <job>" 1>&2 + exit 1 +fi + +# +# Bewaar deze, voornamelijk voor de leesbaarheid in de &postscript;-code. +# +user=$1 +host=$2 +job=$3 +date=`date` + +# +# Stuur de &postscript;-code naar stdout. +# +exec cat <<EOF +%!PS + +% +% Vermijd conflicten met de opdracht van de gebruiker die volgt. +% +save + +% +% Maak een dikke, onaangename border in de marge van het papier. +% +$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 + +% +% Toon de gebruikersnaam duidelijk, groot en prominent +% +/Helvetica-Bold findfont 64 scalefont setfont +$page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto +($user) show + +% +% Nu volgen de saaie bijzonderheden +% +/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 + +% +% Dat is alles +% +restore +showpage +EOF</programlisting> + + <para>Nu kan zowel het conversiefilter als het tekstfilter dit + script aanroepen om eerst een voorblad te genereren en + vervolgens de opdracht van de gebruiker af te drukken. Hier + volgt het eerder gebruikte DVI-conversieprogramma, aangepast + om een voorblad te maken:</para> - <para></para> + <programlisting>#!/bin/sh +# +# psdf - DVI naar PostScript printfilter +# Geïnstalleerd in /usr/local/libexec/psdf +# +# Aangeroepen door lpd, wanneer de gebruiker lpr -d uitvoert +# + +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>Merk op hoe het filter eerst de argumentenlijst moet + nagaan om te bepalen wat de gebruikers- en hostnaam zijn. + Dit is gelijk voor de andere conversiefilters. Het + tekstfilter heeft echter een andere set argumenten (zie <link + linkend="printing-advanced-filters">Hoe filters + werken</link>).</para> + + <para>Zoals eerder is beschreven, is het in bovenstaande opzet, + hoewel deze simpel is, niet mogelijk <quote>voorbladen + te onderdrukken</quote> (de optie <option>-h</option> in + <command>lpr</command>). Als gebruikers een boom willen + sparen (of een paar centen bij betaalde voorbladen) dan is + dit dus niet mogelijk, aangezien elke filter een voorblad + afdrukt voor iedere opdracht.</para> + + <para>Om gebruikers in staat te stellen per opdracht voorbladen + te onderdrukken, moet gebruik gemaakt worden van de truc + uit <link + linkend="printing-advanced-header-pages-accounting">Voorbladen + administreren</link>: schrijf een uitvoerfilter dat het door + LPD gegenereerde voorblad inleest en een &postscript; versie + genereert. Als de gebruiker de opdracht geeft met + <command>lpr -h</command>, dan genereert + <application>LPD</application> geen voorblad en het + uitvoerfilter ook niet. Anders leest het uitvoerfilter de + tekst van <application>LPD</application> in en stuurt een + geschikt voorblad in &postscript; naar de printer.</para> + + <para>Voor een &postscript;-printer op een seriële lijn + kan gebruik gemaakt worden van <command>lprps</command>, + dat met een uitvoerfilter wordt geleverd en het bovenstaande + kan doen. Voorbladen worden door <command>psof</command> + niet geteld.</para> </sect3> </sect2> <sect2 id="printing-advanced-network-printers"> - <title>* Printen over een netwerk</title> + <title>Afdrukken via het netwerk</title> + + <indexterm> + <primary>printers</primary> + + <secondary>netwerk</secondary> + </indexterm> + + <indexterm> + <primary>afdrukken via netwerk</primary> + </indexterm> + + <para>&os; ondersteunt afdrukken via het netwerk: het sturen van + opdrachten naar printers op afstand. Afdrukken via een netwerk + betekent over het algemeen twee verschillende dingen:</para> + + <itemizedlist> + <listitem> + <para>Het benaderen van een printer aangesloten op een andere + computer. Een printer met een conventionele + seriële of parallelle verbinding wordt op een bepaalde + computer geïnstalleerd. Vervolgens wordt + <application>LPD</application> zodanig ingesteld dat + afdrukken vanaf andere computers in het netwerk mogelijk + is. In <link + linkend="printing-advanced-network-rm">Printers + geïnstalleerd op andere hosts</link> staat hoe dit + te doen.</para> + </listitem> + + <listitem> + <para>Het benaderen van een printer die direct is aangesloten + op een netwerk. Een printer heeft een netwerkinterface + naast (of in plaats van) een gewone seriële of + parallelle poort. Zo een printer kan als volgt + werken:</para> + + <itemizedlist> + <listitem> + <para>Het begrijpt het <application>LPD</application> + protocol en kan zelfs opdrachten van andere hosts in + de wachtrij plaatsen. In dit geval werkt een printer + als een gewone host die <application>LPD</application> + heeft draaien. Volg de procedure in <link + linkend="printing-advanced-network-rm">Printers + geïnstalleerd op andere hosts</link> om een + dergelijke printer te installeren</para> + </listitem> + + <listitem> + <para>Het kan zijn dat een printer een netwerkverbinding + ondersteunt. In dit geval kan een printer worden + <quote>aangesloten</quote> op een bepaalde host op het + netwerk door deze host verantwoordelijk te maken voor + het plaatsen van opdrachten in een wachtrij en het + versturen van opdrachten naar de printer. In <link + linkend="printing-advanced-network-net-if">Printers + met netwerkinterfaces</link> staan enkele suggesties + om zulke printers te installeren.</para> + </listitem> + </itemizedlist> + </listitem> + </itemizedlist> <sect3 id="printing-advanced-network-rm"> - <title>* Printers geïnstalleerd op externe machine's</title> + <title>Printers geïnstalleerd op andere hosts</title> + + <para>Het wachtrijsysteem <application>LPD</application> heeft + een ingebouwde mogelijkheid om opdrachten naar andere hosts + te sturen die ook <application>LPD</application> draaien (of + een systeem dat compatibel is met + <application>LPD</application>). Deze eigenschap maakt het + mogelijk om een printer op een host te installeren en deze + toegankelijk te maken voor andere hosts. Het werkt ook met + printers die over een netwerkinterface beschikken en het + <application>LPD</application>-protocol begrijpen.</para> + + <para>Om dit soort afdrukken op afstand mogelijk te maken, moet + een printer eerst op een host geïnstalleerd worden, de + <emphasis>printerhost</emphasis>, door de printerinstallatie + te volgen als beschreven in <link + linkend="printing-simple">Eenvoudige + printerinstallatie</link>. Stel desgewenst de printer in + voor geavanceerde taken volgens <link + linkend="printing-advanced">Geavanceerde + printerinstallatie</link>. Test de printer en controleer + of deze werkt met eventueel speciaal ingestelde opties voor + <application>LPD</application>. De <emphasis>local + host</emphasis> moet geauthoriseerd zijn om de + <application>LPD</application>-dienst op de + <emphasis>remote host</emphasis> te gebruiken (zie <link + linkend="printing-advanced-restricting-remote">Opdrachten + van printers op afstand beperken</link>).</para> + + <indexterm> + <primary>printers</primary> + + <secondary>netwerk</secondary> + </indexterm> + + <indexterm><primary>afdrukken via netwerk</primary></indexterm> + + <para>Als een printer een netwerkinterface heeft die compatibel + is met <application>LPD</application>, dan is de + <emphasis>printerhost</emphasis> in onderstaande beschrijving + de printer zelf en de <emphasis>printernaam</emphasis> is de + naam die voor de printer is ingesteld. Meer informatie staat + in de documentatie bij de printer en/of de + printernetwerkinterface.</para> + + <tip> + <para>Bij een HP Laserjet voert de printernaam + <literal>text</literal> automatisch de CRLF-conversie uit. + Het is dan niet nodig het script <filename>hpif</filename> + te gebruiken.</para> + </tip> + + <para>Op hosts die toegang moeten krijgen tot de printer, moet + in <filename>/etc/printcap</filename> een regel worden + toegevoegd met het volgende:</para> - <para></para> + <orderedlist> + <listitem> + <para>Geef de regel een willekeurige naam. Om het + eenvoudig te houden kunnen wellicht het beste dezelfde + namen en aliassen worden gebruikt als op de + printerhost;</para> + </listitem> + + <listitem> + <para>Laat de optie <literal>lp</literal> expliciet leeg + (<literal>:lp=:</literal>);</para> + </listitem> + + <listitem> + <para>Maak een wachtrijmap aan en geef de locatie op met de + optie <literal>sd</literal>. + <application>LPD</application> slaat hier + afdrukopdrachten op alvorens ze naar de printerhost + te sturen;</para> + </listitem> + + <listitem> + <para>Geef de naam van de printerhost op met de optie + <literal>rm</literal>;</para> + </listitem> + + <listitem> + <para>Geef de naam van de printer op de + <emphasis>printerhost</emphasis> op met de optie + <literal>rp</literal>.</para> + </listitem> + </orderedlist> + + <para>Dit is het. Conversiefilters, paginadimensies, + enzovoort, hoeven niet in <filename>/etc/printcap</filename> + opgegeven te worden.</para> + + <para>Hier volgt een voorbeeld. De host <hostid>rose</hostid> + heeft twee printers: <literal>bamboo</literal> en + <literal>rattan</literal>. Gebruikers op de host + <hostid>orchid</hostid> krijgen toegang tot deze printers. + Hier volgt <filename>/etc/printcap</filename> voor + <hostid>orchid</hostid> (uit <link + linkend="printing-advanced-header-pages-enabling">Voorbladen + afdrukken</link>). Er stond in het bestand al een regel voor + de printer <literal>teak</literal>. Voor de twee printers op + de host <hostid>rose</hostid> zijn twee regels + toegevoegd:</para> + + <programlisting># +# /etc/printcap voor host orchid - printers (op afstand) op rose toegevoegd +# + +# +# teak is lokaal - direct aangesloten op orchid: +# +teak|hp|laserjet|HP LaserJet 3Si:\ + :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\ + :if=/usr/local/libexec/ifhp:\ + :vf=/usr/local/libexec/vfhp:\ + :of=/usr/local/libexec/ofhp: + +# +# rattan is aangesloten op rose; stuur opdrachten voor rattan naar rose: +# +rattan|line|diablo|lp|Diablo 630 Line Printer:\ + :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan: + +# +# bamboo is ook aangesloten op: +# +bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ + :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:</programlisting> + + <para>Op <hostid>orchid</hostid> moeten wachtrijmappen + worden aangemaakt:</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>Nu kunnen gebruikers op <hostid>orchid</hostid> afdrukken + op <literal>rattan</literal> en <literal>bamboo</literal>. + Een gebruiker op <hostid>orchid</hostid> geeft bijvoorbeeld + de volgende invoer:</para> + + <screen>&prompt.user; <userinput>lpr -P bamboo -d sushi-review.dvi</userinput></screen> + + <para>Dan kopieert <application>LPD</application> op + <hostid>orchid</hostid> de opdracht naar de wachtrijmap + <filename>/var/spool/lpd/bamboo</filename> en ziet dat het + een DVI-opdracht is. Zodra de host <hostid>rose</hostid> + ruimte heeft in zijn wachtrijmap <literal>bamboo</literal>, + sturen de twee <application>LPD</application>'s het bestand + naar <hostid>rose</hostid>. Het bestand wacht in de wachtrij + van <hostid>rose</hostid> totdat het succesvol is afgedrukt. + Het wordt geconverteerd naar &postscript; (aangezien + <literal>bamboo</literal> een &postscript;-printer is) op + <hostid>rose</hostid>.</para> </sect3> <sect3 id="printing-advanced-network-net-if"> - <title>* Printers met een netwerkaansluiting</title> + <title>Printers met netwerkinterfaces</title> + + <para>Netwerkkaarten voor printers zijn er in twee versies: + een versie die een wachtrij nabootst (de duurdere versies), + of versies die alleen de mogelijkheid geven om er informatie + naar te sturen alsof het een seriële of parallelle poort + is (de goedkopere versies). In <link + linkend="printing-advanced-network-rm">Printers + geïnstalleerd op andere hosts</link> wordt het voor + de duurdere beschreven.</para> + + <para>Het formaat van <filename>/etc/printcap</filename> maakt + het mogelijk om op te geven welke seriële, of parallelle + poort gebruikt moet worden en (in geval van een seriële + poort) de baud-snelheid, of er communicatie moet worden + toegepast, vertragingen voor tabs, conversies voor nieuwe + regelkarakters en meer. Er is geen mogelijkheid om een + verbinding met een printer op te geven die op een TCP/IP of + andere netwerkpoort luistert.</para> + + <para>Om informatie naar een netwerkprinter te sturen, is het + nodig een programma te ontwikkelen dat door tekst- en + conversiefilters kan worden aangeroepen. Hier volgt een + voorbeeld: het script <command>netprint</command> stuurt alle + informatie van de standaard invoer naar een netwerkprinter. + Als eerste argument wordt de hostnaam van de printer + opgegeven en als tweede argument het poortnummer waarmee de + verbinding moet worden opgezet. Er wordt alleen + eenrichtingcommunicatie ondersteund (&os; naar printer). + Veel netwerkprinters ondersteunen tweewegcommunicatie. Het + kan wenselijk zijn hiervan gebruik te maken (om printerstatus + op te vragen, statistieken bij te houden, enzovoort).</para> + + <programlisting>#!/usr/bin/perl +# +# netprint - Tekstfilter voor printer aangesloten op het netwerk +# Geïnstalleerd in /usr/local/libexec/netprint +# +$#ARGV eq 1 || die "Usage: $0 <printer-hostname> <port-number>"; + +$printer_host = $ARGV[0]; +$printer_port = $ARGV[1]; - <para></para> +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>Dit script kan vervolgens in verschillende filters + gebruikt worden. Stel dat een Diablo 750-N matrixprinter op + het netwerk is aangesloten. Op poort 5100 accepteert de + printer informatie om af te drukken. De hostnaam van de + printer is <hostid>scrivener</hostid>. Hier volgt het + tekstfilter voor de printer:</para> + + <programlisting>#!/bin/sh +# +# diablo-if-net - Tekstfilter voor Diablo printer 'scrivener' luistert +# op poort 5100. Geïnstalleerd in /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>* Printer gebruik limieteren</title> + <title>Printergebruik beperken</title> + + <indexterm> + <primary>printers</primary> + + <secondary>toegang beperken</secondary> + </indexterm> + + <para>Nu volgt informatie over het beperken van printergebruik. + Het <application>LPD</application>-systeem maakt het mogelijk + te bepalen wie er toegang heeft tot een printer, zowel lokaal + als op afstand, of meerdere kopieën afgedrukt mogen + worden, hoe lang opdrachten mogen zijn en hoe lang wachtrijen + mogen worden.</para> <sect3 id="printing-advanced-restricting-copies"> - <title>* Meerdere kopieën limieteren</title> + <title>Meerdere kopieën beperken</title> + + <para>Het <application>LPD</application> systeem maakt het heel + makkelijk voor gebruikers om meerdere afdrukken van een + bestand te maken. Gebruikers kunnen opdrachten afdrukken met + bijvoorbeeld <command>lpr -#5</command> en krijgen dan vijf + kopieën van elk bestand in de opdracht. De + systeembeheerder kan beslissen of dit wenselijk is.</para> + + <para>Wanneer meerdere kopieën onwenselijk zijn, kan de + optie <option>-#</option> van &man.lpr.1; worden + uitgeschakeld door de optie <literal>sc</literal> in + <filename>/etc/printcap</filename> op te nemen. Als + gebruikers opdrachten versturen met de optie + <option>-#</option>, zien ze het volgende:</para> + + <screen>lpr: multiple copies are not allowed</screen> + + <para>Als het mogelijk is van andere hosts af te drukken (zie + <link linkend="printing-advanced-network-rm">Printers + geïnstalleerd op andere hosts</link>), moet de optie + <literal>sc</literal> ook in + <filename>/etc/printcap</filename> van de andere hosts + aanwezig zijn. Anders kunnen gebruikers nog steeds + multi-kopie opdrachten van andere hosts sturen.</para> + + <para>Hier volgt een voorbeeld. Hieronder staat + <filename>/etc/printcap</filename> voor de host + <hostid>rose</hostid>. De printer <literal>rattan</literal> + is redelijk krachtig, dus meerdere kopieën zijn + toegestaan. De laserprinter <literal>bamboo</literal> is wat + gevoeliger, dus meerdere kopieë zijn uitgeschakeld door + de optie <literal>sc</literal> toe te voegen:</para> + + <programlisting># +# /etc/printcap voor host rose - beperk meerdere kopieën op bamboo +# +rattan|line|diablo|lp|Diablo 630 Line Printer:\ + :sh:sd=/var/spool/lpd/rattan:\ + :lp=/dev/lpt0:\ + :if=/usr/local/libexec/if-simple: + +bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ + :sh:sd=/var/spool/lpd/bamboo:sc:\ + :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\ + :if=/usr/local/libexec/psif:\ + :df=/usr/local/libexec/psdf:</programlisting> + + <para>Nu moet ook de optie <literal>sc</literal> worden + toegevoegd in <filename>/etc/printcap</filename> van host + <hostid>orchid</hostid> (tegelijk worden meerdere + kopieën voor de printer <literal>teak</literal> + uitgeschakeld):</para> + + <programlisting># +# /etc/printcap voor host orchid - geen meerdere kopieën voor lokale +# printer teak of printer op afstand bamboo +teak|hp|laserjet|HP LaserJet 3Si:\ + :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:sc:\ + :if=/usr/local/libexec/ifhp:\ + :vf=/usr/local/libexec/vfhp:\ + :of=/usr/local/libexec/ofhp: + +rattan|line|diablo|lp|Diablo 630 Line Printer:\ + :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan: + +bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ + :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:sc:</programlisting> - <para></para> + <para>Door de optie <literal>sc</literal> te gebruiken, wordt + het gebruik van <command>lpr -#</command> voorkomen. + Gebruikers kunnen echter &man.lpr.1; meerdere keren + aanroepen of meerdere keren versturen in een opdracht:</para> + + <screen>&prompt.user; <userinput>lpr forsale.sign forsale.sign forsale.sign forsale.sign forsale.sign</userinput></screen> + + <para>Er zijn vele manieren om dit misbruik te voorkomen (onder + andere door het te negeren). Dit wordt hier echter niet + beschreven.</para> </sect3> <sect3 id="printing-advanced-restricting-access"> - <title>* Toegang tot printers limieteren</title> + <title>Printertoegang beperken</title> + + <para>Door gebruik te maken van het &unix; groepmechanisme en + de optie <literal>rg</literal> in + <filename>/etc/printcap</filename> kan geregeld worden wie er + op welke printer kan afdrukken. De gebruikers die toegang + hebben tot een printer moeten in een groep worden geplaatst + en deze groep moet in de optie <literal>rg</literal> worden + genoemd.</para> + + <para>Gebruikers buiten deze groep (inclusief + <username>root</username>) worden begroet met <errorname>lpr: + Not a member of the restricted group</errorname> als ze op + deze beheerde printer willen afdrukken.</para> + + <para>Net als met de optie <literal>sc</literal> + (<emphasis>suppress multiple copies</emphasis>: onderdruk + meerdere kopieën) moet <literal>rg</literal>, indien + wenselijk, ook op andere hosts worden opgegeven die ook + toegang hebben tot printers (zie <link + linkend="printing-advanced-network-rm">Printers + geïnstalleerd op andere hosts</link>).</para> + + <para>In het volgende voorbeeld heeft iedereen toegang tot de + printer <literal>rattan</literal>, maar alleen gebruikers in + de groep <literal>artists</literal> kunnen gebruik maken van + <literal>bamboo</literal>. Hier volgt + <filename>/etc/printcap</filename> voor de host + <hostid>rose</hostid>:</para> + + <programlisting># +# /etc/printcap voor host rose - beperkte toegang voor groep bamboo +# +rattan|line|diablo|lp|Diablo 630 Line Printer:\ + :sh:sd=/var/spool/lpd/rattan:\ + :lp=/dev/lpt0:\ + :if=/usr/local/libexec/if-simple: - <para></para> +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>De andere voorbeeldbestanden + <filename>/etc/printcap</filename> (voor de host + <hostid>orchid</hostid>) worden niet aangepast. Natuurlijk + kan iedereen op <hostid>orchid</hostid> afdrukken op + <hostid>bamboo</hostid>. Het kan zijn dat er sowieso alleen + bepaalde gebruikers op <hostid>orchid</hostid> zijn + toegestaan en dat deze gebruikers toegang mogen hebben tot de + printer. Of wellicht niet.</para> + + <note> + <para>Er kan per printer slechts één groep + worden opgegeven.</para> + </note> </sect3> <sect3 id="printing-advanced-restricting-sizes"> - <title>* De grootte van verstuurde opdrachten beheren</title> + <title>Grootte van afdrukopdrachten bepalen</title> + + <indexterm><primary>afdrukopdrachten</primary></indexterm> + + <para>Als veel gebruikers toegang hebben tot printers kan het + nodig zijn een limiet op te geven voor de grootte van de + bestanden die gebruikers naar een printer kunnen sturen. Er + is immers slechts beperkte ruimte op het bestandssysteem en + er moet ook voldoende ruimte zijn voor opdrachten van andere + gebruikers.</para> + + <indexterm> + <primary>afdrukopdrachten</primary> + + <secondary>beheren</secondary> + </indexterm> - <para></para> + <para><application>LPD</application> heeft de mogelijkheid om + met de optie <literal>mx</literal> een limiet op te geven + voor het maximum aantal bytes van een bestand in een + afdrukopdracht. De eenheden worden opgegeven in + <literal>BUFSIZ</literal> blokken, die 1024 bytes groot zijn. + Een nul voor deze optie betekent geen limiet aan de + bestandsgrootte. Als de optie wordt weggelaten, wordt een + standaardlimiet van 1000 blokken gebruikt.</para> + + <note> + <para>De limiet heeft betrekking op de + <emphasis>bestanden</emphasis> in een opdracht, + <emphasis>niet</emphasis> op de totale grootte van een + opdracht.</para> + </note> + + <para><application>LPD</application> weigert een bestand dat + groter is dan de opgegeven limiet niet. In plaats daarvan + plaatst het zo veel mogelijk van het bestand op de wachtrij, + om dit vervolgens af te drukken. De rest wordt genegeerd. + Of dit gedrag wenselijk is, is onderwerp van debat.</para> + + <para>Nu worden limieten voor de voorbeeldprinters + <literal>rattan</literal> en <literal>bamboo</literal> + opgegeven. Aangezien de &postscript;-bestanden van die + kunstenaars nogal groot dreigen te worden, krijgt deze groep + een limiet van vijf megabyte opgelegd. Er wordt geen limiet + opgelegd voor de platte tekst printer:</para> + + <programlisting># +# /etc/printcap voor host rose +# + +# +# Geen limiet op opdrachtgrootte: +# +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: + +# +# Limiet van vijf 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>Ook hier zijn de limieten alleen van toepassing op + lokale gebruikers. Als toegang tot deze printers van andere + hosts mogelijk is, worden deze gebruikers niet beperkt. Het + is daarom nodig de optie <literal>mx</literal> ook in de + <filename>/etc/printcap</filename> van de betreffende hosts + op te geven. In <link + linkend="printing-advanced-network-rm">Printers + geïnstalleerd op andere hosts</link> staat meer + informatie over afdrukken op andere hosts.</para> + + <para>Er is een andere gespecialiseerde manier om + opdrachtgrootte voor printers op afstand te beperken (zie + <link + linkend="printing-advanced-restricting-remote">Opdrachten + van printers op afstand beperken</link>.</para> </sect3> <sect3 id="printing-advanced-restricting-remote"> - <title>* Opdrachten van externe printers limieteren</title> + <title>Opdrachten van printers op afstand beperken</title> + + <para>Het wachtrijsysteem <application>LPD</application> + beschikt over verschillende methoden om afdrukopdrachten van + hosts op afstand te beperken:</para> + + <variablelist> + <varlistentry> + <term>Hostbeperkingen</term> + + <listitem> + <para>Met de bestanden + <filename>/etc/hosts.equiv</filename> en + <filename>/etc/hosts.lpd</filename> kan worden + ingesteld van welke hosts op afstand een lokale + <application>LPD</application>-opdracht wordt + geaccepteerd. <application>LPD</application> + controleert of een inkomend verzoek afkomstig is van + een host die wordt genoemd in een van deze bestanden. + Zo niet, dan weigert <application>LPD</application> het + verzoek.</para> + + <para>Het formaat van deze bestanden is eenvoudig: + één host per regel. + <filename>/etc/hosts.equiv</filename> wordt ook + gebruikt door het protocol &man.ruserok.3; en heeft + invloed op programma's als &man.rsh.1; en &man.rcp.1;. + Voorzichtigheid is dus geboden.</para> + + <para>Als voorbeeld volgt hier + <filename>/etc/hosts.lpd</filename> voor de host + <hostid>rose</hostid>:</para> - <para></para> + <programlisting>orchid +violet +madrigal.fishbaum.de</programlisting> + + <para>Dit betekent dat <hostid>rose</hostid> verzoeken + accepteert van de hosts <hostid>orchid</hostid>, + <hostid>violet</hostid> en + <hostid role="fqdn">madrigal.fishbaum.de</hostid>. + Voor iedere andere host die verbinding probeert te + maken met <application>LPD</application> op + <hostid>rose</hostid>, wordt de opdracht + geweigerd.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>Omvangbeperkingen</term> + + <listitem> + <para>De hoeveelheid vrije ruimte die over moet blijven + op een bestandssysteem waar een wachtrij zich bevindt + kan ook worden ingesteld. Hiervoor moet een bestand + met de naam <filename>minfree</filename> in de + wachtrijmap worden aangemaakt. In dit bestand kan + een getal worden gezet dat het aantal schijfblokken + (512 bytes) aan vrije ruimte aangeeft dat beschikbaar + moet blijven wil een opdracht worden + geaccepteerd.</para> + + <para>Hiermee kan worden gegarandeerd dat gebruikers op + afstand een bestandssysteem niet vol kunnen schrijven. + Ook kan hierdoor een soort voorrang worden gegeven aan + lokale gebruikers: zij kunnen nog opdrachten plaatsen + als de vrije schijfruimte al lang beneden de opgegeven + limiet uit <filename>minfree</filename> is + gekomen.</para> + + <para>Als voorbeeld wordt een bestand + <filename>minfree</filename> voor de printer + <literal>bamboo</literal> toegevoegd. In + <filename>/etc/printcap</filename> staat de juiste + wachtrijmap:</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>De wachtrijmap wordt opgegeven met de optie + <literal>sd</literal>. Er wordt een limiet van drie + megabyte ingesteld (wat gelijk staat aan 6144 + schijfblokken) voor de hoeveelheid vrije schijfruimte + die op het bestandssysteem beschikbaar moet zijn + voordat <application>LPD</application> een opdracht op + afstand accepteert:</para> + + <screen>&prompt.root; <userinput>echo 6144 > /var/spool/lpd/bamboo/minfree + </userinput></screen> + </listitem> + </varlistentry> + + <varlistentry> + <term>Gebruikersbeperkingen</term> + + <listitem> + <para>Met de optie <literal>rs</literal> in + <filename>/etc/printcap</filename> kan worden geregeld + welke gebruikers op afstand kunnen afdrukken op lokale + printers. Als <literal>rs</literal> voorkomt voor + een lokale printer accepteert + <application>LPD</application> opdrachten van hosts op + afstand <emphasis>als</emphasis> de gebruiker die de + opdracht wil plaatsen ook een account heeft met + dezelfde gebruikersnaam op de lokale host. Anders + weigert <application>LPD</application> de + opdracht.</para> + + <para>Deze optie is met name nuttig in een omgeving waar + (bijvoorbeeld) verschillende afdelingen een netwerk + delen en gebruikers de grenzen van de afdeling + overschrijden. Door ze een account te geven op een + systeem kunnen ze de aangesloten printers gebruiken + vanaf het systeem van hun eigen afdeling. Wanneer ze + <emphasis>alleen</emphasis> gebruik mogen maken van de + printers en niet van overige diensten op de computer, + kunnen <quote>tokenaccounts</quote> worden aangemaakt, + zonder thuismap en met een nutteloze shell als + <filename>/usr/bin/false</filename>.</para> + </listitem> + </varlistentry> + </variablelist> </sect3> </sect2> <sect2 id="printing-advanced-acct"> - <title>* Accounting voor printer gebruik</title> + <title>Printergebruik administreren</title> + + <indexterm> + <primary>administratie</primary> + + <secondary>printer</secondary> + </indexterm> + + <para>Het kan nodig zijn om afdrukken te doorbelasten. Inkt en + papier kosten geld en er zijn onderhoudskosten. Printers + zitten vol met bewegende delen en hebben de neiging kapot te + gaan. Nu is er gekeken naar de printers, het gebruikerspatroon + en de onderhoudskosten en op basis hiervan is een prijs + vastgesteld per pagina (of per centimeter, per meter, of per + wat dan ook). Hoe wordt nu een administratie bijgehouden van + gemaakte afdrukken?</para> + + <para>Het slechte nieuws is dat het wachtrijsysteem + <application>LPD</application> hierbij niet echt helpt. Het + administreren van afdrukken is erg afhankelijk van het type + printer, het afdrukformaat en de wensen die een + systeembeheerder heeft ten aanzien van het doorbelasten van + printergebruik.</para> + + <para>Om het administreren te implementeren, is het nodig om + aanpassingen te maken in de tekstfilter (om platte tekst + opdrachten te belasten) en de conversiefilters (om opdrachten + in andere bestandsformaten te belasten), om pagina's te tellen, + of de printer te vragen hoeveel pagina's er zijn afgedrukt. + Het volstaat niet om het eenvoudige uitvoerfilter te gebruiken, + aangezien dit niet in staat is het gebruik te administreren. + Zie <link + linkend="printing-advanced-filter-intro">Filters</link>.</para> + + <para>In het algemeen zijn er twee manieren om gebruik te + administreren:</para> + + <itemizedlist> + <listitem> + <para><emphasis>Periodiek administreren</emphasis> is de meer + gebruikelijke manier, omdat het waarschijnlijk makkelijker + is. Als iemand een opdracht afdrukt, schrijft het filter + de gebruiker, host en het aantal pagina's in een + administratiebestand. Elke maand, semester, jaar, of + een andere gewenste periode kunnen de + administratiebestanden verzameld worden om het aantal + afgedrukte pagina's op te tellen en het gebruik in rekening + te brengen. De logboekbestanden kunnen vervolgens + geschoond worden, zodat met een schone lei de volgende + periode begonnen kan worden.</para> + </listitem> + + <listitem> + <para><emphasis>Directe administratie</emphasis> is minder + gebruikelijk, waarschijnlijk omdat het moeilijker is. Met + deze methode zorgen de filters ervoor dat gebruikers voor + hun printergebruik worden afrekend op het moment dat ze er + gebruik van maken. Net als schijfquota is de administratie + onmiddelijk. Hiermee wordt voorkomen dat gebruikers kunnen + afdrukken wanneer ze over hun limiet zijn gegaan. Ook + biedt dit de mogelijkheid voor gebruikers om hun + afdrukquotum te controleren, of aan te passen. Deze + methode vereist databasecode om gebruikers en hun quota bij + te houden.</para> + </listitem> + </itemizedlist> + + <para>Het wachtrijsysteem <application>LPD</application> + ondersteunt beide methoden op eenvoudige wijze. Aangezien de + filters moeten worden aangeleverd (meestal), moet ook de code + voor de administratie worden geleverd. Er is echter een + voordeel: er is grote flexibiliteit in de administratiemethode. + Zo kan bijvoorbeeld gekozen worden tussen periodieke of directe + administratie. Er kan gekozen worden welke informatie + opgeslagen wordt: gebruikersnamen, hostnamen, type opdracht, + aantal afgedrukte pagina's, hoe lang het afdrukken duurde, + enzovoort. Dit alles kan worden gedaan door de filters aan te + passen.</para> <sect3> - <title>* Quick and Dirty printer accounting</title> + <title>Kort door de bocht printeradministratie</title> + + <para>&os; wordt met twee programma's geleverd waarmee + periodieke administratie direct kan worden opgezet. Het zijn + het tekstfilter <command>lpf</command>, beschreven in <link + linkend="printing-advanced-lpf">lpf: een + tekstfilter</link> en &man.pac.8;, een programma dat posten + uit administratiebestanden verzamelt en optelt.</para> + + <para>Zoals beschreven in de sectie over filters (<link + linkend="printing-advanced-filters">Filters</link>), roept + <application>LPD</application> de tekst- en conversiefilters + aan met de naam van het administratiebestand als argument. + De filters kunnen dit argument gebruiken om te bepalen in + welk bestand de gegevens voor de administratie moeten worden + weggeschreven. De naam van dit bestand is afkomstig van de + optie <literal>af</literal> uit + <filename>/etc/printcap</filename>. Als er geen absoluut pad + wordt opgegeven, dan is de locatie relatief aan de + wachtrijmap.</para> + + <para><application>LPD</application> start + <command>lpf</command> met paginabreedte en -lengte + argumenten (afkomstig uit de opties <literal>pw</literal> en + <literal>pl</literal>). <command>lpf</command> + gebruikt deze argumenten om te bepalen hoeveel papier er + gebruikt zal worden. Nadat het bestand naar de printer is + gestuurd, schrijft het een post in het administratiebestand. + De posten zien er als volgt uit:</para> + + <programlisting>2.00 rose:andy +3.00 rose:kelly +3.00 orchid:mary +5.00 orchid:mary +2.00 orchid:zhang</programlisting> + + <para>Aangezien <command>lpf</command> geen ingebouwde logica + voor bestandslocking kent, moet voor elke printer een apart + administratiebestand gebruikt worden. Twee + <command>lpf</command>s kunnen elkaars posten corrumperen als + ze tegelijk in hetzelfde bestand schrijven. De optie + <literal>af=acct</literal> in + <filename>/etc/printcap</filename> biedt een makkelijke + manier om er zeker van te zijn dat aparte bestanden worden + gebruikt. Dan bevindt elk administratiebestand zich in de + wachtrijmap van de betreffende printer en krijgt de naam + <filename>acct</filename> krijgen</para> + + <para>Wanneer het tijd is om met gebruikers af te rekenen voor + hun afdrukken, kan het programma &man.pac.8; gedraaid worden. + Hiervoor dient het programma in de wachtrijmap aangeroepen te + worden. Het resultaat is een dollar-centrische + samenvatting, zoals de volgende:</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>Dit zijn de argumenten die &man.pac.8; verwacht:</para> + + <variablelist> + <varlistentry> + <term><option>-P<replaceable>printer</replaceable></option></term> + + <listitem> + <para>De <replaceable>printer</replaceable> waarvoor een + samenvatting moet worden gegenereerd. Deze optie werkt + alleen als er een absoluut pad is gegeven in de optie + <literal>af</literal> in + <filename>/etc/printcap</filename>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-c</option></term> + + <listitem> + <para>Sorteer de uitvoer op kosten, in plaats van + alfabetisch op gebruikersnaam.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-m</option></term> + + <listitem> + <para>Negeer de hostnamen in het administratiebestand. + Met deze optie is de gebruiker + <username>smith</username> op host + <hostid>alpha</hostid> dezelfde gebruiker als + <username>smith</username> op host + <hostid>gamma</hostid>. Zonder deze optie zijn het + verschillende gebruikers.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-p<replaceable>prijs</replaceable></option></term> + + <listitem> + <para>Bereken de prijs met + <replaceable>prijs</replaceable> dollar per pagina of + per voet, in plaats van de prijs uit de optie + <literal>pc</literal> in + <filename>/etc/printcap</filename> of twee cent (de + standaard). De <replaceable>prijs</replaceable> kan + worden opgegeven als een decimaal getal.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-r</option></term> - <para></para> + <listitem> + <para>Keer de sorteervolgorde om.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-s</option></term> + + <listitem> + <para>Maak een bestand met een samenvatting van de + administratie en leeg het administratiebestand.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable>namen</replaceable> + <replaceable>…</replaceable></term> + + <listitem> + <para>Druk de administratiegegevens alleen af voor + gebruikersnamen <replaceable>namen</replaceable>.</para> + </listitem> + </varlistentry> + </variablelist> + + <para>In de standaard samenvatting die &man.pac.8; genereert, + is het aantal pagina's te zien dat iedere gebruiker vanaf een + bepaalde host heeft afgedrukt. Wanneer de hostname niet + van belang is (bijvoorbeeld omdat gebruikers iedere host + kunnen gebruiken), gebruik dan <command>pac -m</command> om + de volgende samenvatting te genereren:</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>Om het verschuldigde bedrag te berekenen gebruikt + &man.pac.8 de optie <literal>pc</literal> uit + <filename>/etc/printcap</filename> (standaard aantal van 200 + of 2 cent per pagina). Specificeer, in honderden + centen, de prijs per pagina of per voet die berekent moet + worden. Deze waarde kan worden aangepast door &man.pac.8; + aan te roepen met de optie <option>-p</option>. De eenheden + van de optie <option>-p</option> zijn echter in dollars, niet + in honderden centen. Het onderstaande zorgt er bijvoorbeeld + voor dat elke pagina 1 dollar en 50 cent kost. Zo kunnen + echt grote winsten worden behaald:</para> + + <screen>&prompt.root; <userinput>pac -p1.50</userinput></screen> + + <para>Tenslotte kan met <command>pac -s</command> de + samenvatting worden opgeslagen in een bestand dat dezelfde + naam krijgt als het administratiebestand van de printer, maar + dan met <literal>_sum</literal> toegevoegd aan de naam. + Vervolgens wordt het administratiebestand geleegd. Als + &man.pac.8; opnieuw wordt aangeroepen, herleest &man.pac.8; + het samenvattingsbestand om de startwaarden te bepalen en + telt daar de informatie bij op van het standaard + administratiebestand.</para> </sect3> <sect3> - <title>* Hoe kun je geprinte pagina's tellen?</title> + <title>Hoe kan het aantal afgedrukte pagina's worden + geteld?</title> + + <para>Om ook maar de minste nauwkeurigheid bij het + administreren te verkrijgen, is het nodig te weten hoeveel + papier een afdrukopdracht gebruikt. Dit is het centrale + probleem van het bijhouden van printerstatistieken.</para> + + <para>Voor opdrachten met platte tekst is het probleem niet zo + moeilijk op te lossen: het aantal regels in een opdracht + wordt geteld en vergeleken met het aantal regels per pagina + dat door een printer wordt ondersteund. Hierbij moet niet + worden vergeten dat backspaces in het bestand regels + overschrijven en dat lange logische regels worden afgedrukt + als meerdere fysieke regels.</para> + + <para>Het tekstfilter <command>lpf</command> + (geïntroduceerd in <link + linkend="printing-advanced-lpf">lpf: een + tekstfilter</link>) houdt met deze zaken rekening bij het + administreren. Als het nodig is een tekstfilter te schrijven + dat ook het printergebruik moet bijhouden, dan is het nuttig + de broncode van <command>lpf</command> te bestuderen.</para> - <para></para> + <para>Hoe worden andere bestandsformaten dan verwerkt?</para> + + <para>Voor een DVI-naar-LaserJet, of DVI-naar-&postscript; + conversie kan het filter de diagnostische uitvoer van + <command>dvilj</command> of <command>dvips</command> bekijken + om te bepalen hoeveel pagina's er zijn geconverteerd. Voor + andere formaten kan hetzelfde worden gedaan met behulp van de + betreffende conversieprogramma's.</para> + + <para>Deze methoden hebben echter als nadeel dat een printer + eventueel niet alle pagina's ook daadwerkelijk afdrukt. Zo + kan het papier vast komen te zitten, de toner opraken of de + printer ontploffen, terwijl de gebruiker toch moet + betalen.</para> + + <para>Dus, wat kan hieraan worden gedaan?</para> + + <para>Er is slechts één + <emphasis>betrouwbare</emphasis> manier om + <emphasis>nauwkeurig</emphasis> te administreren. Dat is + met behulp van een printer die kan vertellen hoeveel papier + er is gebruikt. Deze moet vervolgens worden aangesloten + met een seriële lijn, of een netwerkverbinding. Bijna + alle &postscript;-printers hebben deze mogelijkheid, andere + modellen en merken mogelijk ook (bijvoorbeeld Imagen + netwerklaserprinters). De filters dienen voor deze printers + aangepast te worden om het papierverbruik na elke opdracht te + achterhalen en de administratieve informatie + <emphasis>alleen</emphasis> op deze waarde te baseren. Er is + geen noodzaak om foutgevoelig regels te tellen of bestanden + te analyseren.</para> + + <para>Natuurlijk kan een beheerder ook vrijgevig zijn en alle + afdrukken gratis maken.</para> </sect3> </sect2> </sect1> <sect1 id="printing-using"> - <title>* Printers gebruiken</title> + <title>Printers gebruiken</title> + + <indexterm> + <primary>printers</primary> + + <secondary>gebruik</secondary> + </indexterm> + + <para>Hieronder wordt beschreven hoe printers die onder &os; + geïnstalleerd zijn gebruikt moeten worden. Nu volgt een + overzicht van de commando's op gebruikersniveau:</para> + + <variablelist> + <varlistentry> + <term>&man.lpr.1;</term> + + <listitem> + <para>Druk opdrachten af</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>&man.lpq.1;</term> + + <listitem> + <para>Controleer printerwachtrijen</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>&man.lprm.1;</term> + + <listitem> + <para>Verwijder opdrachten uit de wachtrij van een + printer</para> + </listitem> + </varlistentry> + </variablelist> + + <para>Er is ook een administratief commando, &man.lpc.8;, + beschreven in <link linkend="printing-lpc">Printers + beheren</link>, dat gebruikt wordt om printers en hun + wachtrijen in te stellen.</para> + + <para>Alledrie de commando's &man.lpr.1;, &man.lprm.1; en + &man.lpq.1; accepteren een optie + <option>-P<replaceable>printernaam</replaceable></option> om aan + te geven op welke printer uit <filename>/etc/printcap</filename> + een opdracht van toepassing is. Dit biedt de mogelijkheid + opdrachten te versturen, verwijderen en controleren voor + verschillende printers. Als <option>-P</option> niet wordt + gebruikt, werken deze commando's op de printer gedefinieerd in de + omgevingsvariabele <envar>PRINTER</envar>. Tot slot, wanneer + de omgevingsvariabele <envar>PRINTER</envar> niet is + gedefinieerd, wordt standaard verwezen naar de printer met de + naam <literal>lp</literal>.</para> <sect2 id="printing-lpr"> - <title>* Print opdrachten</title> + <title>Opdrachten afdrukken</title> + + <para>Om bestanden af te drukken:</para> + + <screen>&prompt.user; <userinput>lpr <replaceable>bestandsnaam</replaceable> <replaceable>...</replaceable></userinput></screen> + + <indexterm><primary>afdrukken</primary></indexterm> + + <para>Dit drukt elk van de opgegeven bestanden af op de standaard + printer. Als geen bestanden worden opgegeven, drukt + &man.lpr.1; de standaard invoer af. De volgende opdracht drukt + bijvoorbeeld een paar belangrijke systeembestanden af:</para> + + <screen>&prompt.user; <userinput>lpr /etc/host.conf /etc/hosts.equiv</userinput></screen> + + <para>Om een specifieke printer te selecteren:</para> + + <screen>&prompt.user; <userinput>lpr -P <replaceable>printernaam</replaceable> <replaceable>bestandsnaam</replaceable> <replaceable>...</replaceable></userinput></screen> + + <para>Dit voorbeeld drukt een lange opgave van de huidige + map af op de printer <literal>rattan</literal>:</para> + + <screen>&prompt.user; <userinput>ls -l | lpr -P rattan</userinput></screen> + + <para>Omdat er geen bestanden worden meegegeven aan het commando + &man.lpr.1;, drukt <command>lpr</command> de gegevens af + die het van de standaard invoer leest: de uitvoer van het + commando <command>ls -l</command>.</para> - <para></para> + <para>&man.lpr.1; accepteert ook een breed scala aan opties + om de vorm aan te passen, bestandsconversies toe te passen, + meerdere kopieën af te drukken, enzovoort. Meer + informatie staat in <link + linkend="printing-lpr-options">Afdrukopties</link>.</para> </sect2> <sect2 id="printing-lpq"> - <title>* Opdrachten controleren</title> + <title>Opdrachten controleren</title> - <para></para> + <indexterm><primary>afdrukopdrachten</primary></indexterm> + + <para>Als &man.lpr.1; wordt gebruikt om af te drukken, dan + worden de gegevens die afdrukt moet worden in een pakketje + samengevoegd dat een <quote>afdrukopdracht</quote> wordt + genoemd en naar het wachtrijsysteem + <application>LPD</application> gestuurd. Elke printer heeft + een wachtrij met opdrachten van alle gebruikers. Een printer + drukt deze opdrachten op volgorde van binnenkomst af.</para> + + <para>De wachtrij voor de standaardprinter kan worden weergegeven + met &man.lpq.1;. Voor een specifieke printer moet de optie + <option>-P</option> meegegeven worden. Het volgende commando + toont de wachtrij van printer <literal>bamboo</literal>:</para> + + <screen>&prompt.user; <userinput>lpq -P bamboo</userinput></screen> + + <para>Hieronder volgt een voorbeeld van de uitvoer van het + commando <command>lpq</command>:</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>Dit laat drie opdrachten zien in de wachtrij voor + <literal>bamboo</literal>. De eerste opdracht, gegeven door + gebruiker <username>kelly</username>, heeft opdrachtnummer 9 + gekregen. Elke opdracht voor een printer krijgt een uniek + opdrachtnummer. Dit nummer kan in de meeste gevallen genegeerd + worden, maar is nodig om een opdracht te annuleren. In <link + linkend="printing-lprm">Opdrachten verwijderen</link> staan + meer details.</para> + + <para>Opdrachtnummer negen bestaat uit twee bestanden; meerdere + bestanden opgegeven naar &man.lpr.1;, worden als + één enkele opdracht behandeld. Het is de actieve + opdracht (<literal>active</literal> onder de kolom + <quote>Rank</quote>), wat betekent dat de printer deze opdracht + momenteel aan het afdrukken is. De tweede opdracht bestaat uit + gegevens doorgegeven aan &man.lpr.1; als standaard invoer. De + derde opdracht is afkomstig van gebruiker + <username>mary</username>. Het is een veel grotere opdracht. + De bestandsnaam van het bestand dat ze probeert af te drukken + is te lang voor het overzicht, daarom toont &man.lpq.1; drie + puntjes.</para> + + <para>De allereerste regel uitvoer van &man.lpq.1; is ook handig: + die vertelt wat de printer momenteel aan het doen is; dat wil + zeggen, wat <application>LPD</application> denkt dat de printer + aan het doen is.</para> + + <para>Het commando &man.lpq.1; ondersteunt ook een optie + <option>-l</option> om een gedetailleerd, lang overzicht te + geven. Hieronder volgt voorbeelduitvoer van + <command>lpq -l</command>:</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>* Opdrachten verwijderen</title> + <title>Opdrachten verwijderen</title> + + <para>Een gebruiker die van gedachten verandert over een af te + drukken opdracht, kan een opdracht uit een wachtrij halen met + het commando &man.lprm.1;. Vaak kan met &man.lprm.1; zelfs een + actieve opdracht worden verwijderd, maar een deel of alles van + de opdracht kan desondanks toch worden afgedrukt.</para> - <para></para> + <para>Om een opdracht van de standaardprinter te verwijderen + dient eerst met &man.lpq.1; het opdrachtnummer gevonden te + worden. Typ vervolgens:</para> + + <screen>&prompt.user; <userinput>lprm <replaceable>opdrachtnummer</replaceable></userinput></screen> + + <para>Om een opdracht van een specifieke printer te verwijderen, + moet de optie <option>-P</option> worden toegevoegd. Het + volgende commando verwijdert opdrachtnummer 10 uit de wachtrij + van printer <literal>bamboo</literal>:</para> + + <screen>&prompt.user; <userinput>lprm -P bamboo 10</userinput></screen> + + <para>Het commando &man.lprm.1; heeft een aantal + snelkoppelingen:</para> + + <variablelist> + <varlistentry> + <term>lprm -</term> + + <listitem> + <para>Verwijder alle opdrachten (voor de standaardprinter) + van de huidige gebruiker.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>lprm <replaceable>gebruiker</replaceable></term> + + <listitem> + <para>Verwijder alle opdrachten (voor de standaardprinter) + die van <replaceable>gebruiker</replaceable> zijn. De + superuser kan opdrachten van andere gebruikers + verwijderen. Andere gebruikers kunnen alleen hun eigen + opdrachten verwijderen.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>lprm</term> + + <listitem> + <para>Zonder een opdrachtnummer, gebruikersnaam of + <option>-</option> op de opdrachtregel, verwijdert + &man.lprm.1; de huidige actieve opdracht van de huidige + gebruiker op de standaard printer. Alleen de superuser + kan iedere actieve opdracht verwijderen.</para> + </listitem> + </varlistentry> + </variablelist> + + <para>Gebruik de optie <option>-P</option> met bovenstaande + snelkoppelingen om een specifieke printer in plaats van de + standaard printer te selecteren. Het volgende voorbeeld + verwijdert alle opdrachten van de huidige gebruiker uit de + wachtrij van printer <literal>rattan</literal>:</para> + + <screen>&prompt.user; <userinput>lprm -P rattan -</userinput></screen> + + <note> + <para>Als in een netwerkomgeving wordt gewerkt, staat + &man.lprm.1; alleen toe opdrachten te verwijderen vanaf + hosts waarvan de afdrukopdrachten zijn gegeven, ook als + dezelfde printer vanaf andere hosts bereikbaar is. Het + volgende voorbeeld demonstreert dit:</para> + + <screen>&prompt.user; <userinput>lpr -P rattan mijnbestand</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>* Voorbij platte tekst: print opties</title> + <title>Meer dan platte tekst: afdrukopties</title> + + <para>Het commando &man.lpr.1; ondersteunt een aantal opties voor + de opmaak van platte tekst, het converteren van grafische en + andere bestandsformaten, het afdrukken van meerdere + kopieën, afwikkeling van een opdracht en meer. In deze + sectie worden die opties beschreven.</para> <sect3 id="printing-lpr-options-format"> - <title>* Formaat en conversie opties</title> + <title>Opties voor opmaak en conversie</title> + + <para>De volgende opties voor &man.lpr.1; zorgen voor de opmaak + van de bestanden in de opdracht. Gebruik deze opties als de + opdracht geen platte tekst bevat of als platte tekst + opgemaakt dient te worden met behulp van &man.pr.1;.</para> + + <indexterm><primary>&tex;</primary></indexterm> + + <para>Het volgende commando drukt bijvoorbeeld een DVI-bestand + af (van het &tex; typesettingsysteem) met de naam + <filename>fish-report.dvi</filename> op de printer + <literal>bamboo</literal>:</para> + + <screen>&prompt.user; <userinput>lpr -P bamboo -d fish-report.dvi</userinput></screen> + + <para>Deze opties zijn van toepassing op alle bestanden in de + opdracht. Het is dus niet mogelijk om bijvoorbeeld DVI- en + ditroff-bestanden in een opdracht samen te voegen. In plaats + hiervan moeten deze bestanden als aparte opdrachten worden + gegeven, elk met een andere conversie-optie.</para> + + <note> + <para>Al deze opties, behalve <option>-p</option> en + <option>-T</option>, vereisen dat er conversiefilters zijn + geïnstalleerd voor een printer. De optie + <option>-d</option> vereist bijvoorbeeld de DVI + conversiefilter. In <link + linkend="printing-advanced-convfilters">Conversiefilters</link> + staan de details beschreven.</para> + </note> + + <variablelist> + <varlistentry> + <term><option>-c</option></term> + + <listitem> + <para>Afdrukken van cifplot-bestanden.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-d</option></term> + + <listitem> + <para>Afdrukken van DVI-bestanden.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-f</option></term> - <para></para> + <listitem> + <para>Afdrukken van FORTRAN tekstbestanden.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-g</option></term> + + <listitem> + <para>Afdrukken van plotgegevens.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-i <replaceable>aantal</replaceable></option></term> + + <listitem> + <para>De uitvoer wordt <replaceable>aantal</replaceable> + kolommen ingesprongen. Als + <replaceable>nummer</replaceable> wordt weggelaten, + wordt acht kolommen ingesprongen. Deze optie werkt + alleen met bepaalde conversiefilters.</para> + + <note> + <para>Plaats geen spatie tussen de <option>-i</option> + en het nummer.</para> + </note> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-l</option></term> + + <listitem> + <para>Drukt letterlijke tekstgegevens af, inclusief + controlkarakters.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-n</option></term> + + <listitem> + <para>Afdrukken van ditroff (apparaat onafhankelijke + troff) gegevens.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-p</term> + + <listitem> + <para>Opmaak van platte tekst met &man.pr.1; alvorens af + te drukken. Zie &man.pr.1; voor meer + informatie.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-T <replaceable>titel</replaceable></option></term> + + <listitem> + <para>Gebruik <replaceable>titel</replaceable> op de + &man.pr.1; koptekst in plaats van de bestandsnaam. + Deze optie heeft alleen effect in combinatie met de + optie <option>-p</option>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-t</option></term> + + <listitem> + <para>Afdrukken van troffgegevens.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-v</option></term> + + <listitem> + <para>Afdrukken van rastergegevens.</para> + </listitem> + </varlistentry> + </variablelist> + + <para>In het volgende voorbeeld wordt een mooi opgemaakte + versie van de &man.ls.1; handleiding afgedrukt op de + standaardprinter:</para> + + <screen>&prompt.user; <userinput>zcat /usr/share/man/man1/ls.1.gz | troff -t -man | lpr -t</userinput></screen> + + <para>Het commando &man.zcat.1; pakt de broncode van de + &man.ls.1; handleiding uit en geeft het door aan het commando + &man.troff.1;, dat de broncode opmaakt, er GNU troff van + maakt en dit doorstuurt naar &man.lpr.1;, dat de opdracht + naar de <application>LPD</application> wachtrij stuurt. + Omdat de optie <option>-t</option> meegeven wordt aan + &man.lpr.1;, converteert het wachtrijsysteem de GNU troff + uitvoer naar een formaat dat de standaardprinter begrijpt als + de opdracht wordt afgedrukt.</para> </sect3> <sect3 id="printing-lpr-options-job-handling"> - <title>* Opdracht afhandeling opties</title> + <title>Opties voor opdrachtafhandeling</title> + + <para>De volgende opties voor &man.lpr.1; geven + <application>LPD</application> aan de opdracht speciaal te + behandelen:</para> + + <variablelist> + <varlistentry> + <term>-# <replaceable>kopieën</replaceable></term> + + <listitem> + <para>Produceer een aantal van + <replaceable>kopieën</replaceable> kopieën + van elk bestand in de opdracht, in plaats van + één kopie. Een beheerder kan deze optie + uitschakelen om slijtage van de printer te voorkomen en + gebruik van een kopieerapparaat aan te moedigen. Zie + <link + linkend="printing-advanced-restricting-copies">Meerdere + kopieën beperken</link>.</para> + + <para>Dit voorbeeld drukt drie kopieën af van + <filename>parser.c</filename> gevolgd door drie + kopieën van <filename>parser.h</filename> op de + standaardprinter:</para> + + <screen>&prompt.user; <userinput>lpr -#3 parser.c parser.h</userinput></screen> + </listitem> + </varlistentry> - <para></para> + <varlistentry> + <term>-m</term> + + <listitem> + <para>Stuur een e-mail na voltooiïng van de + afdrukopdracht. Met deze optie stuurt het + <application>LPD</application>-systeem een e-mail als + een opdracht is afgehandeld. In dit bericht vertelt + het of de opdracht succesvol is uitgevoerd of dat er + een fout was met (vaak) de aard van de fout.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-s</term> + + <listitem> + <para>Kopieer de bestanden niet naar de wachtrijmap, + maar maak in plaats hiervan een symbolische + link.</para> + + <para>Bij het afdrukken van een grote opdracht is het + handig van deze optie gebruik te maken. Het spaart + ruimte in de wachtrijmap (het kan zijn dat de opdracht + de vrije ruimte verbruikt in het bestandssysteem waarin + de wachtrijmap zich bevindt). Het bespaart ook tijd, + omdat <application>LPD</application> niet elke byte van + de opdracht naar de wachtrijmap hoeft te + kopieëren.</para> + + <para>Er is echter een nadeel: aangezien + <application>LPD</application> het originele bestand + nodig heeft, is het niet mogelijk dit te wijzigen, of + te verwijderen totdat het is afgedrukt.</para> + + <note> + <para>Bij het afdrukken op een printer in een netwerk, + moet <application>LPD</application> een bestand + uiteindelijk toch kopieëren van een lokale host + naar een netwerkhost. De optie <option>-s</option> + bespaart dus ruimte in een lokale wachtrijmap, niet + in die van een host in een netwerk. Het blijft + echter nuttig.</para> + </note> + </listitem> + </varlistentry> + + <varlistentry> + <term>-r</term> + + <listitem> + <para>Verwijder bestanden in een opdracht na ze naar een + wachtrij gekopieerd te hebben of na ze te hebben + afgedrukt als de optie <option>-s</option> is gebruikt. + Wees voorzichtig met deze optie!</para> + </listitem> + </varlistentry> + </variablelist> </sect3> <sect3 id="printing-lpr-options-misc"> - <title>* Voorblad opties</title> + <title>Voorbladopties</title> + + <para>Deze opties voor &man.lpr.1; passen de tekst aan die + gewoonlijk op het voorblad van een opdracht verschijnt. Deze + opties hebben geen effect als het afdrukken van voorbladen + wordt onderdrukt op een gebruikte printer. Zie <link + linkend="printing-advanced-header-pages">Voorbladen</link> + voor meer informatie over het opzetten van voorbladen.</para> + + <variablelist> + <varlistentry> + <term>-C <replaceable>tekst</replaceable></term> + + <listitem> + <para>Vervang de hostnaam op het voorblad door + <replaceable>tekst</replaceable>. De hostnaam is + gewoonlijk de naam van de host waarvan de opdracht is + verstuurd.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-J <replaceable>tekst</replaceable></term> + + <listitem> + <para>Vervang de naam van de opdracht op het voorblad + door <replaceable>tekst</replaceable>. De naam van de + opdracht is standaard de naam van het eerste bestand in + de opdracht of <filename>stdin</filename> als de + standaard uitvoer wordt afgedrukt.</para> + </listitem> + </varlistentry> - <para></para> + <varlistentry> + <term>-h</term> + + <listitem> + <para>Druk geen voorblad af.</para> + + <note> + <para>Bij sommige installaties kan het zijn dat deze + optie geen effect heeft door de manier waarop de + voorbladen worden gegenereerd. Zie <link + linkend="printing-advanced-header-pages">Voorbladen</link> + voor de details.</para> + </note> + </listitem> + </varlistentry> + </variablelist> </sect3> </sect2> <sect2 id="printing-lpc"> - <title>* Printers beheren</title> + <title>Printers beheren</title> + + <para>De beheerder van de printers in een netwerk heeft deze + moeten installeren, opzetten en testen. Met het commando + &man.lpc.8; kan een beheerder op nog meer manieren communiceren + met printers. Met &man.lpc.8; is het mogelijk om:</para> + + <itemizedlist> + <listitem> + <para>Printers te starten en te stoppen;</para> + </listitem> + + <listitem> + <para>Wachtrijen aan en uit te zetten;</para> + </listitem> + + <listitem> + <para>De volgorde van opdrachten in elke wachtrij + aan te passen.</para> + </listitem> + </itemizedlist> + + <para>Ten eerste een opmerking over terminologie: als een + printer is <emphasis>gestopt</emphasis>, drukt die niets uit + een wachtrij af. Gebruikers kunnen nog steeds opdrachten + geven, maar opdrachten wachten in een wachtrij totdat de + bijbehorende printer is <emphasis>gestart</emphasis> of als de + wachtrij vrij is.</para> + + <para>Als een wachtrij is <emphasis>uitgeschakeld</emphasis>, + kan geen enkele gebruiker (behalve <username>root</username>) + opdrachten naar een printer versturen. Een + <emphasis>ingeschakelde</emphasis> wachtrij accepteert + opdrachten. Een printer met een uitgeschakelde wachtrij kan + worden <emphasis>gestart</emphasis> en drukt dan alle + afdrukopdrachten in de wachtrij af tot deze leeg is.</para> + + <para>In het algemeen is het nodig + <username>root</username>-rechten te hebben om het commando + &man.lpc.8; te gebruiken. Gewone gebruikers kunnen het + commando &man.lpc.8; gebruiken om een printerstatus op te + vragen en om een vastgelopen printer te herstarten.</para> + + <para>Nu volgt een samenvatting van de &man.lpc.8; commando's. + De meeste commando's accepteren een argument + <replaceable>printernaam</replaceable>, om aan te geven op + welke printer te werken. Om op alle printers te werken die in + <filename>/etc/printcap</filename> genoemd worden, kan + <literal>all</literal> worden gebruikt als + <replaceable>printernaam</replaceable>.</para> + + <variablelist> + <varlistentry> + <term><command>abort + <replaceable>printernaam</replaceable></command></term> + + <listitem> + <para>Annuleer de huidige opdracht en stop de printer. + Gebruikers kunnen nog steeds opdrachten versturen als + de wachtrij is ingeschakeld.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><command>clean + <replaceable>printernaam</replaceable></command></term> - <para></para> + <listitem> + <para>Verwijder oude bestanden uit de wachtrijmap van + de betreffende printer. Het kan weleens gebeuren dat de + bestanden waaruit een opdracht bestaat niet juist worden + verwijderd door <application>LPD</application>. Dit + gebeurt bijvoorbeeld wanneer er fouten zijn opgetreden + tijdens het afdrukken of tijdens grote administratieve + activiteit. Dit commando vindt en verwijdert bestanden + die niet in de wachtrijmap thuishoren.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><command>disable + <replaceable>printernaam</replaceable></command></term> + + <listitem> + <para>Nieuwe opdrachten kunnen niet meer in de wachtrij + worden geplaatst. Als de printer nog draait, drukt die + de opdrachten die zich nog in de wachtrij bevinden + af. De superuser (<username>root</username>) kan + altijd opdrachten versturen, ook naar een uitgeschakelde + wachtrij.</para> + + <para>Dit commando is handig bij het testen van een nieuwe + printer of een filterinstallatie: schakel de wachtrij uit + en verstuur als <username>root</username> opdrachten. + Andere gebruikers kunnen geen opdrachten versturen todat + het testen is voltooid en de wachtrij weer is + ingeschakeld met het commando + <command>enable</command>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><command>down <replaceable>printernaam</replaceable> + <replaceable>boodschap</replaceable></command></term> + + <listitem> + <para>Schakel een printer uit. Equivalent aan + <command>disable</command> gevolgd door + <command>stop</command>. De + <replaceable>boodschap</replaceable> verschijnt als de + status van de printer als een gebruiker de wachtrij van + de printer controleert met &man.lpq.1; of de status + met <command>lpc status</command>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><command>enable + <replaceable>printernaam</replaceable></command></term> + + <listitem> + <para>Schakel de wachtrij van een printer in. Gebruikers + kunnen opdrachten versturen, maar de printer drukt ze pas + af als deze is gestart.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><command>help + <replaceable>commandonaam</replaceable></command></term> + + <listitem> + <para>Geef hulp over het commando + <replaceable>commandonaam</replaceable>. Zonder + <replaceable>commandonaam</replaceable>, wordt een + samenvatting van de beschikbare commando's + getoond.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><command>restart + <replaceable>printernaam</replaceable></command></term> + + <listitem> + <para>Start de printer. Gewone gebruikers kunnen dit + commando gebruiken als door een uitzonderlijke + omstandigheid <application>LPD</application> hangt, maar + ze kunnen een printer niet starten die gestopt is met + een van de commando's <command>stop</command> of + <command>down</command>. Het commando + <command>restart</command> is equivalent aan + <command>abort</command> gevolgd door + <command>start</command>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><command>start + <replaceable>printernaam</replaceable></command></term> + + <listitem> + <para>Start de printer. De printer drukt opdrachten in + zijn wachtrij af.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><command>stop + <replaceable>printernaam</replaceable></command></term> + + <listitem> + <para>Stop de printer. De printer maakt de huidige + opdracht af en drukt opdrachten in de wachtrij niet af. + Gebruikers kunnen nog steeds opdrachten versturen naar + een ingeschakelde wachtrij, ook al is de printer + gestopt.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><command>topq <replaceable>printernaam</replaceable> + <replaceable>opdracht-of-gebruikersnaam</replaceable></command></term> + + <listitem> + <para>Herschik de wachtrij voor + <replaceable>printernaam</replaceable> door de opdrachten + met de opgegeven <replaceable>opdracht</replaceable> + nummers of opdrachten van + <replaceable>gebruikersnaam</replaceable> bovenaan de + wachtrij te plaatsen. Voor dit commando is het niet + mogelijk <literal>all</literal> te gebruiken als + <replaceable>printernaam</replaceable>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><command>up + <replaceable>printernaam</replaceable></command></term> + + <listitem> + <para>Schakel een printer in. Het omgekeerde van het + commando <command>down</command>. Equivalent aan + <command>start</command> gevolgd door + <command>enable</command>.</para> + </listitem> + </varlistentry> + </variablelist> + + <para>&man.lpc.8; accepteert bovenstaande commando's op de + opdrachtregel. Als er geen commando's worden gegeven, + schakelt &man.lpc.8; over op een interactieve modus, waar + opdrachten gegeven kunnen worden totdat het commando + <command>exit</command>, <command>quit</command> of + end-of-file wordt gegeven.</para> </sect2> </sect1> <sect1 id="printing-lpd-alternatives"> - <title>* Alternatieven voor de standaard spooler</title> + <title>Alternatieven voor het standaard wachtrijsysteem</title> + + <para>Na het lezen van deze handleiding, heeft de lezer zo'n beetje + alles gelezen wat er te leren valt over het wachtrijsysteem + <application>LPD</application> zoals het te vinden + is in &os;. Er zijn veel tekortkomingen te onderkennen, wat + vanzelf leidt tot de vraag: <quote>Welke andere wachtrijsystemen + zijn er beschikbaar (en werken onder &os;)?</quote></para> + + <variablelist> + <varlistentry> + <term>LPRng</term> + + <indexterm><primary>LPRng</primary></indexterm> + + <listitem> + <para><application>LPRng</application>, dat <quote>LPR: the + Next Generation</quote> betekent, is een compleet + herschreven PLP. Patrick Powell en Justin Mason (de + voornaamste beheerder van PLP) hebben samengewerkt om + <application>LPRng</application> te maken. De thuispagina + voor <application>LPRng</application> is <ulink + url="http://www.lprng.org/"></ulink>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>CUPS</term> + + <indexterm><primary>CUPS</primary></indexterm> - <para></para> + <listitem> + <para><application>CUPS</application>, het Common UNIX + Printing System, voorziet in een porteerbare printlaag voor + &unix;-achtige besturingssystemen. Het is ontwikkeld door + Easy Software Product, om een standaard afdrukoplossing + voor alle &unix;-producenten en gebruikers te + promoten.</para> + + <para><application>CUPS</application> gebruikt het Internet + Printing Protocol (<acronym>IPP</acronym>) als basis voor + het beheren van afdrukopdrachten en wachtrijen. De + protocollen Line Printer Daemon (<acronym>LPD</acronym>), + Server Message Block (<acronym>SMB</acronym>) en AppSocket + (ook bekend als JetDirect) worden ook ondersteund met + minder functionaliteit. CUPS biedt bladeren naar + netwerkprinters en &postscript; Printer Description + (<acronym>PPD</acronym>) gebaseerde afdrukopties om + real-world printing onder &unix; te ondersteunen.</para> + + <para>De thuispagina voor <application>CUPS</application> is + <ulink url="http://www.cups.org/"></ulink>.</para> + </listitem> + </varlistentry> + </variablelist> </sect1> <sect1 id="printing-troubleshooting"> - <title>* Problemen oplossen</title> + <title>Problemen oplossen</title> + + <para>Na het uitvoeren van een simpele test met &man.lptest.1; is + mogelijk een van onderstaande resultaten verkregen, in plaats + van de juiste uitvoer:</para> + + <variablelist> + <varlistentry> + <term>Het werkte na enige tijd of er kwam geen volle + pagina.</term> + + <listitem> + <para>De printer drukte bovenstaande af, maar wachtte enige + tijd zonder iets te doen. Het was zelfs nodig om een + PRINT REMAINING, of FORM FEED-knop op te printer in te + drukken om enig resultaat te krijgen.</para> + + <para>Als dit het geval is, dan stond de printer + waarschijnlijk te wachten of er nog meer gegevens van de + opdracht zouden komen, alvorens iets af te drukken. Om dit + probleem op te lossen, kan het tekstfilter worden aangepast + zodat deze een FORM FEED-karakter (of wat er ook nodig is) + naar de printer stuurt. Dit is meestal voldoende om een + printer zover te krijgen om tekst af te drukken die zich + nog in de interne buffer bevindt. Het is ook nuttig om er + zeker van te zijn dat elke afdrukopdracht eindigt op een + hele pagina, zodat de volgende opdracht niet ergens midden + op de laatste pagina van de vorige opdracht begint.</para> + + <para>De volgende vervanging voor het shellscript + <filename>/usr/local/libexec/if-simple</filename> drukt een + form feed nadat de opdracht naar een printer is + gestuurd:</para> + + <programlisting>#!/bin/sh +# +# if-simple - Eenvoudige tekst inputfilter voor lpd +# Geïinstalleerd in /usr/local/libexec/if-simple +# +# Kopieert eenvoudig stdin naar stdout. Negeer alle filter argumenten. +# Schrijft een form feed karakter (\f) na het afdrukken van de opdracht. + +/bin/cat && printf "\f" && exit 0 +exit 2</programlisting> + </listitem> + </varlistentry> + + <varlistentry> + <term>De opdracht produceerde een getrapt effect.</term> + + <listitem> + <para>Het resultaat ziet er als volgt uit:</para> + + <programlisting>!"#$%&'()*+,-./01234 + "#$%&'()*+,-./012345 + #$%&'()*+,-./0123456</programlisting> + + <indexterm><primary>MS-DOS</primary></indexterm> + + <indexterm><primary>OS/2</primary></indexterm> + + <indexterm><primary>ASCII</primary></indexterm> + + <para>Dit krijgen slachtoffers van het + <emphasis>trap effect</emphasis> te zien. Het wordt + veroorzaakt door conflicterende interpretaties van de + karakters die een regeleinde aangeven. &unix;-achtige + besturingssystemen gebruiken een enkel karakter: ASCII code + 10, de line feed (LF). &ms-dos;, &os2; en andere + besturingssystemen gebruiken twee karakters: ASCII code 10 + <emphasis>en</emphasis> ASCII code 13 (de carriage return, + CR). Veel printers gebruiken de &ms-dos;-conventie voor + het representeren van regeleinden.</para> + + <para>Als onder &os; wordt afgedrukt, bevat de tekst alleen + het line feed-karakter. Na het zien van een line + feed-karakter vervolgt de printer zijn werk op de volgende + regel, maar behoudt dezelfde horizontale positie op de + pagina voor het afdrukken van het volgende teken. Hier is + de carriage return voor bedoeld: om het volgende karakter + af te drukken aan de linkerkant van de pagina.</para> + + <para>Dit is wat &os; wil dat de printer doet:</para> + + <informaltable frame="none" pgwide="1"> + <tgroup cols="2"> + <tbody> + <row> + <entry>Printer ontvangt CR</entry> + <entry>Printer drukt CR af</entry> + </row> + + <row> + <entry>Printer ontvangt LF</entry> + <entry>Printer drukt CR + LF af</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Hier volgen een aantal manieren om dit te + bereiken:</para> + + <itemizedlist> + <listitem> + <para>Gebruik de instellingentoetsen of het + bedieningspaneel van de printer om de interpretatie van + deze karakters aan te passen. Controleer de + handleiding van de printer om uit te vinden hoe dit + moet.</para> + + <note> + <para>Als een systeem in een ander besturingssysteem + dan &os; wordt opgestart, kan het nodig zijn een + printer <emphasis>opnieuw</emphasis> in te stellen, + zodat die een interpretatie voor CR en LF karakters + gebruikt die bij dat andere besturingssysteem horen. + Het kan de voorkeur genieten een van onderstaande + oplossingen te gebruiken.</para> + </note> + </listitem> + + <listitem> + <para>Zorg dat het seriële line stuurprogramma van + &os; automatisch LF naar CR+LF converteert. Dit werkt + natuulijk <emphasis>alleen</emphasis> voor printers op + een seriële poort. Gebruik de optie + <literal>ms#</literal> en zet de modus + <literal>onlcr</literal> in het bestand + <filename>/etc/printcap</filename> voor de printer om + deze functionaliteit in te schakelen.</para> + </listitem> + + <listitem> + <para>Stuur een <emphasis>escapecode</emphasis> naar een + printer om tijdelijk LF karakters anders te behandelen. + Raadpleeg hiervoor de handleiding van de printer om + escapecodes te achterhalen die de printer ondersteunt. + Als de juiste escapecode is gevonden, moet de + tekstfilter worden aangepast zodat deze eerst de code + stuurt en vervolgens de afdrukopdracht.</para> + + <indexterm><primary>PCL</primary></indexterm> - <para></para> + <para>Hier volgt een eenvoudig tekstfilter voor printers + die HP PCL escapecodes begrijpen. Dit filter zorgt dat + een printer LF karakters behandelt als LF en CR, + vervolgens verstuurt het de opdracht en tot slot een + form feed om de laatste pagina in de opdracht uit te + voeren. Het zou met alle HP printers moeten + werken.</para> + + <programlisting>#!/bin/sh +# +# hpif - Eenvoudig tekst invoerfilter voor lpd voor HP PCL printers +# Geïnstalleerd in /usr/local/libexec/hpif +# +# Kopieert eenvoudig stdin naar stdout. Negeert alle filterargumenten. +# Vertelt de printer om LF te zien als CR+LF. +# Werpt de pagina uit na voltooiïng. + +printf "\033&k2G" && cat && printf "\033&l0H" && exit 0 +exit 2</programlisting> + + <para>Nu volgt een voorbeeldbestand + <filename>/etc/printcap</filename> voor host + <hostid>orchid</hostid>. Er is een printer aangesloten + op de eerste parallelle poort; een HP LaserJet 3Si, + genaamd <literal>teak</literal>. Die gebruikt + bovenstaand script als tekstfilter:</para> + + <programlisting># +# /etc/printcap voor host orchid +# +teak|hp|laserjet|HP LaserJet 3Si:\ + :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\ + :if=/usr/local/libexec/hpif:</programlisting> + </listitem> + </itemizedlist> + </listitem> + </varlistentry> + + <varlistentry> + <term>De regels zijn over elkaar afgedrukt.</term> + + <listitem> + <para>De printer is nooit een regel opgeschoven. Alle regels + tekst lopen over elkaar en zijn op dezelfde regel + afgedrukt.</para> + + <para>Dit probleem is het <quote>omgekeerde</quote> van het + trap effect, zoals boven beschreven en is veel zeldzamer. + Ergens worden de LF karakters die &os; gebruikt om een + regel te eindigen gezien als CR karakters om de + afdruklocatie te verplaatsen naar de linkerkant van het + papier, zonder óók een regel naar beneden te + gaan.</para> + + <para>Gebruik de instellingtoetsen, of het bedieningspaneel + van de printer om de volgende interpretatie van LF en CR af + te dwingen:</para> + + <informaltable frame="none" pgwide="1"> + <tgroup cols="2"> + <thead> + <row> + <entry>Printer ontvangt</entry> + <entry>Printer drukt af</entry> + </row> + </thead> + + <tbody> + <row> + <entry>CR</entry> + <entry>CR</entry> + </row> + + <row> + <entry>LF</entry> + <entry>CR + LF</entry> + </row> + </tbody> + </tgroup> + </informaltable> + </listitem> + </varlistentry> + + <varlistentry> + <term>De printer is karakters kwijt.</term> + + <listitem> + <para>Tijdens het afdrukken heeft de printer een paar + karakters per regel niet afgedrukt. Het kan zijn dat het + probleem erger werd naarmate de printer zijn werk deed, + steeds meer karakters verliezend.</para> + + <para>Het probleem is dat de printer de snelheid waarmee de + computer gegevens over een seriële lijn stuurt niet + bij kan houden (dit probleem zou zich niet voor moeten doen + met printers op een parallelle poort). Er zijn twee + manieren om dit probleem te verhelpen:</para> + + <itemizedlist> + <listitem> + <para>Als de printer XON/XOFF flow control ondersteunt, + zorg dan dat &os; dit gebruikt door de modus + <literal>ixon</literal> in de optie + <literal>ms#</literal> te specificeren.</para> + </listitem> + + <listitem> + <para>Als de printer carrier flow control ondersteunt, + specificeer dan de modus <literal>crtscts</literal> in + de optie <literal>ms#</literal>. Zorg dat de bedrading + van de kabel die printer met de computer verbindt juist + is voor carrier flow control.</para> + </listitem> + </itemizedlist> + </listitem> + </varlistentry> + + <varlistentry> + <term>Er werd onzin afgedrukt.</term> + + <listitem> + <para>Het lijkt alsof de printer willekeurige onzin afdrukte + en niet de gewenste tekst.</para> + + <para>Dit is meestal een ander symptoom van verkeerde + communicatieparameters voor een seriële printer. + Controleer de bps-snelheid in de optie + <literal>br</literal> en de instelling voor partiteit in de + optie <literal>ms#</literal>. Wees er zeker van dat de + printer dezelfde instellingen gebruikt als in het bestand + <filename>/etc/printcap</filename> worden opgegeven.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>Er gebeurde niets.</term> + + <listitem> + <para>Als er niets gebeurde, ligt het probleem waarschijnlijk + bij &os; en niet bij de hardware. Voeg de optie + logboekbestand (<literal>lf</literal>) toe in + <filename>/etc/printcap</filename> voor de betreffende + printer. Hier is bijvoorbeeld de definitie voor + <literal>rattan</literal> met de optie + <literal>lf</literal>:</para> + + <programlisting>rattan|line|diablo|lp|Diablo 630 Line Printer:\ + :sh:sd=/var/spool/lpd/rattan:\ + :lp=/dev/lpt0:\ + :if=/usr/local/libexec/if-simple:\ + :lf=/var/log/rattan.log</programlisting> + + <para>Probeer vervolgens nogmaals af te drukken. Controleer + het logboekbestand (in dit voorbeeld + <filename>/var/log/rattan.log</filename>) op mogelijke + foutmeldingen. Probeer op basis van deze melding het + probleem te verhelpen.</para> + + <para>Aks er geen optie <literal>lf</literal> is opgegeven, + gebruikt <application>LPD</application> + <filename>/dev/console</filename> als standaard.</para> + </listitem> + </varlistentry> + </variablelist> </sect1> </chapter> -<!-- +<!-- Local Variables: mode: sgml sgml-declaration: "../chapter.decl" diff --git a/nl_NL.ISO8859-1/books/handbook/security/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/security/chapter.sgml index e1d978ec17..27225bbc05 100644 --- a/nl_NL.ISO8859-1/books/handbook/security/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/security/chapter.sgml @@ -2,8 +2,8 @@ The FreeBSD Dutch Documentation Project $FreeBSD$ - $FreeBSDnl: nl_NL.ISO8859-1/books/handbook/security/chapter.sgml,v 1.77 2005/10/04 21:04:27 siebrand Exp $ - gebaseerd op: 1.282 + $FreeBSDnl: doc/nl_NL.ISO8859-1/books/handbook/security/chapter.sgml,v 1.78 2005/12/10 23:40:58 siebrand Exp $ + gebaseerd op: 1.283 --> <chapter id="security"> @@ -4160,15 +4160,15 @@ options IPSEC_ESP</programlisting> <para>Er zijn een aantal daemons beschikbaar voor het bijhouden van beveiligingssamenwerking in &os;. In dit artikel wordt - beschreven hoe dat met racoon gaat. racoon zit in de &os; - Portscollectie in de security/ categorie en kan op de - gebruikelijke manier geïnstalleerd worden.</para> + beschreven hoe dat met racoon gaat. racoon is in de &os; + Portscollectie beschikbaar vanuit <filename + role="package">security/ipsec-tools</filename>.</para> <indexterm><primary>racoon</primary></indexterm> - <para><filename role="package">security/racoon</filename> moet - draaien op beide gateway hosts. Op iedere host moet het - <acronym>IP</acronym> adres van de andere kant van het VPN + <para><application>Racoon</application> moet draaien op beide + gateway hosts. Op iedere host moet het + <acronym>IP</acronym>-adres van de andere kant van het VPN ingesteld worden en een geheime sleutel (die door de gebruiker zelf is gekozen en die hetzelfde moet zijn op beide gateways).</para> @@ -4513,7 +4513,7 @@ options IPSEC_ESP</programlisting> <listitem> <para>Installeer <filename - role="package">security/racoon</filename>. Wijzig + role="package">security/ipsec-tools</filename>. Wijzig <filename>${PREFIX}/etc/racoon/psk.txt</filename> op beide gateway hosts en voeg een regel toe voor het <acronym>IP</acronym> adres van de host aan de andere diff --git a/nl_NL.ISO8859-1/books/handbook/x11/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/x11/chapter.sgml index 5df83b0ba2..4a682fa1ad 100644 --- a/nl_NL.ISO8859-1/books/handbook/x11/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/x11/chapter.sgml @@ -2,8 +2,8 @@ The FreeBSD Dutch Documentation Project $FreeBSD$ - $FreeBSDnl: nl_NL.ISO8859-1/books/handbook/x11/chapter.sgml,v 1.38 2005/10/04 21:25:55 siebrand Exp $ - Gebaseerd op: 1.167 + $FreeBSDnl: doc/nl_NL.ISO8859-1/books/handbook/x11/chapter.sgml,v 1.39 2005/12/18 11:59:03 siebrand Exp $ + Gebaseerd op: 1.168 --> <chapter id="x11"> @@ -1297,10 +1297,11 @@ EndSection</programlisting> <application>XDM</application> gestuurde schermen wordt het protocol X Display Manager Connection Protocol (XDMCP) gebruikt. Het bestand is een set regels die XDMCP - verbindingen met andere machines bestuurt. Standaard mag - iedere client een verbinding maken. Zolang - <filename>xdm-config</filename> niet is aangepast om - verbindingen te accepteren is dat geen probleem.</para> + verbindingen met andere machines bestuurt. Het wordt + genegeerd, tenzij <filename>xdm-config</filename> is + gewijzigd zodat er wordt geluisterd naar inkomende + verbindingen. Standaard wordt het clients niet toegestaan te + verbinden.</para> </sect3> <sect3> |