From ca761b969e158b47460e2a69e580af9bafdbca41 Mon Sep 17 00:00:00 2001 From: Remko Lodder Date: Sun, 18 Dec 2005 20:46:54 +0000 Subject: [PATCH] MFen: cutting-edge 1.219 -> 1.220 desktop 1.62 -> 1.63 disks 1.241 -> 1.242 geom 1.12 -> 1.16 mirrors 1.391 -> 1.398 multimedia 1.111 -> 1.113 network-servers 1.71 -> 1.72 pgpkeys 1.277 -> 1.285 security 1.282 -> 1.283 x11 1.167 -> 1.168 Obtained from: The FreeBSD Dutch Documentation Project (Siebrand Mazeland) Initial translations: printing placeholder -> 1.95 Obtained from: The FreeBSD Dutch Documentation Project Translated by: Lodewijk Koopman --- .../books/handbook/cutting-edge/chapter.sgml | 26 +- .../books/handbook/desktop/chapter.sgml | 9 +- .../books/handbook/disks/chapter.sgml | 107 +- .../books/handbook/geom/chapter.sgml | 10 +- .../books/handbook/mirrors/chapter.sgml | 120 +- .../books/handbook/multimedia/chapter.sgml | 81 +- .../handbook/network-servers/chapter.sgml | 4 +- .../books/handbook/pgpkeys/chapter.sgml | 80 +- .../books/handbook/printing/chapter.sgml | 5286 ++++++++++++++++- .../books/handbook/security/chapter.sgml | 18 +- .../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 --> @@ -755,8 +755,9 @@ daar redelijke waardes in te vullen voor een systeem. Een typische gebruiker wil waarschijnlijk de regels - CFLAGS en NOPROFILE - uit /usr/share/examples/etc/make.conf + CFLAGS en NO_PROFILE (of + NOPROFILE in &os; 5.X en ouder) uit + /usr/share/examples/etc/make.conf (/etc/defaults/make.conf in &os; 4.X) kopieren naar /etc/make.conf en het commentaar verwijderen. @@ -978,14 +979,14 @@ Script done, … /etc/make.conf. Deze optie biedt een alternatief om deze opties in te stellen. - &prompt.root; make -DNOPROFILE doel + &prompt.root; make -DNO_PROFILE doel 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 /etc/make.conf: - NOPROFILE= true # Avoid compiling profiled libraries + NO_PROFILE= true # Avoid compiling profiled libraries doel geeft &man.make.1; aan wat er gedaan moet worden. Elke @@ -1183,12 +1184,12 @@ Script done, … Als bijvoorbeeld het volgende commando is uitgevoerd: - &prompt.root; make -DNOPROFILE buildworld + &prompt.root; make -DNO_PROFILE buildworld Dan moet het resultaat geïnstalleerd worden met: - &prompt.root; make -DNOPROFILE installworld + &prompt.root; make -DNO_PROFILE installworld Anders wordt geprobeerd geprofileerde bibliotheken te installeren die niet gebouwd zijn tijdens de fase @@ -1731,7 +1732,12 @@ Script done, … … fix the problem … &prompt.root; cd /usr/src -&prompt.root; make -DNOCLEAN all +&prompt.root; make -DNO_CLEAN all + + + Gebruik in &os; 5.X en ouder + -DNOCLEAN. + Dit maakt het werk van de vorige make buildworld niet ongedaan. @@ -1777,7 +1783,7 @@ Building everything.. Zet profiling uit (voeg - NOPROFILE=true toe aan + NO_PROFILE=true toe aan /etc/make.conf). Het is zeer waarschijnlijk niet nodig; 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 --> @@ -356,10 +356,7 @@ Opera 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 Opera website. + emulatie. De &os; package versie van Opera wordt zo geïnstalleerd: 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 --> @@ -2579,6 +2579,109 @@ sa0(ncr1:4:0): Logical unit is in process of becoming ready + + + + + Lowell + Gilbert + Oorspronkelijk werk van + + + + + + Back-up strategieën + + Het eerste wat nodig is voor het ontwepken van een + back-upplan, is er voor te zorgen dat de volgende mogelijke + problemen worden ondervangen: + + + + Schijffalen + + + + Per ongeluk verwijderde bestanden + + + + Willekeurige bestandscorruptie + + + + Complete machinevernietiging (door bijvoorbeeld brand), + inclusief de vernietiging van lokaal beschikbare + back-ups. + + + + 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. + + Een aantal technieken in de gereedschapskist zijn: + + + + 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. + + + + Snapshots van bestandssystemen. Dit werkt eigenlijk + alleen in het geval bestanden per ongelijk verwijderd worden, + maar het kan in dat geval erg handig + zijn en het werkt snel en eenvoudig. + + + + 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 + RAID. Voor het herstellen van per ongeluk + verwijderde bestanden is het vergelijkbaar aan + UFS snapshots, maar dat hangt af van + persoonlijke voorkeuren. + + + + RAID. 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. + + + + 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. + + + + 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. + + Back-upbeginselen 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 --> @@ -169,7 +169,7 @@ Zorg ervoor dat er een mountpunt beschikbaar is. Als dit volume een rootpartitie wordt, gebruikt dan tijdelijk een ander mountpunt zoals /mnt. + role="directory">/mnt: &prompt.root; mkdir /mnt @@ -334,7 +334,7 @@ Done. op het mountpunt /mnt: - &prompt.root mount /dev/mirror/gm0s1a /mnt + &prompt.root; mount /dev/mirror/gm0s1a /mnt Verplaats nu alle gegevens van de bootschijf naar dit nieuwe bestandssysteem. In dit voorbeeld worden &man.dump.8; en @@ -383,7 +383,7 @@ Done. Voeg de volgende regel toe aan de nieuwe - /boot/loader.conf: + /boot/loader.conf: &prompt.root; echo 'geom_mirror_load="YES"' >> /mnt/boot/loader.conf 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 - Iets uitchecken uit -CURRENT (&man.ls.1;) en dat weer - verwijderen: + Iets uitchecken uit -CURRENT (&man.ls.1;): - &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs + &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs &prompt.user; cvs login At the prompt, enter the password anoncvs. -&prompt.user; cvs co ls -&prompt.user; cvs release -d ls -&prompt.user; cvs logout +&prompt.user; cvs co ls @@ -514,39 +511,34 @@ Warning: Permanently added 'anoncvs.freebsd.org' (DSA) to the list of known host - 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: - &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs + &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs &prompt.user; cvs login At the prompt, enter the password anoncvs. -&prompt.user; cvs co -rRELENG_3 ls -&prompt.user; cvs release -d ls -&prompt.user; cvs logout +&prompt.user; cvs co -rRELENG_6 ls Een lijst wijzigingen maken (als unified diffs) voor &man.ls.1; - &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs + &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs &prompt.user; cvs login At the prompt, enter the password anoncvs. -&prompt.user; cvs rdiff -u -rRELENG_3_0_0_RELEASE -rRELENG_3_4_0_RELEASE ls -&prompt.user; cvs logout +&prompt.user; cvs rdiff -u -rRELENG_5_3_0_RELEASE -rRELENG_5_4_0_RELEASE ls Uitzoeken welke modulenamen gebruikt kunnen worden: - &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs + &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs &prompt.user; cvs login At the prompt, enter the password anoncvs. &prompt.user; cvs co modules -&prompt.user; more modules/modules -&prompt.user; cvs release -d modules -&prompt.user; cvs logout +&prompt.user; more modules/modules @@ -2476,18 +2468,17 @@ doc/zh_* HTTP. Net als CVSup gebruikt - portsnap een + Portsnap een pull-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 - portsnap te draaien om de updates op - te halen ofwel een taak in cron in te - stellen om de updates regelmatig automatisch op te laten - halen. + &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. Om technische redenen werkt - portsnap de portsstructuur in + Portsnap de portsstructuur in /usr/ports/ niet direct live bij. In plaats daarvan werkt het met een gecomprimeerde kopie van de portsstructuur die standaard in @@ -2496,7 +2487,7 @@ doc/zh_* portsstructuur bij te werken. - Als portsnap is + Als Portsnap is geïnstalleerd uit de &os; Portscollectie, dan is de standaardlocatie voor het gecomprimeerde snapshot /usr/local/portsnap/ in plaats van @@ -2508,7 +2499,7 @@ doc/zh_* Installatie In &os; 6.0 en nieuwere versies, is - portsnap onderdeel van het &os; + Portsnap onderdeel van het &os; basissysteem. In oudere versies van &os; kan het geïnstalleerd worden met de port sysutils/portsnap. @@ -2524,7 +2515,7 @@ doc/zh_* staan in de handboekpagina van &man.portsnap.conf.5;. - Als portsnap is + Als Portsnap is geïnstalleerd uit de Portscollectie, dan wordt als instellingenbestand /usr/local/etc/portsnap.conf gebruikt in @@ -2543,12 +2534,11 @@ doc/zh_* <application>Portsnap</application> voor de eerste keer draaien - De eerste keer dat portsnap - wordt gedraaid, moet het een gecomprimeerde snapshot van de - complete portsstructuur downloaden naar - /var/db/portsnap/ (of + De eerste keer dat &man.portsnap.8; wordt gedraaid, moet + het een gecomprimeerde snapshot van de complete portsstructuur + downloaden naar /var/db/portsnap/ (of /usr/local/portsnap/ als - portsnap geïnstalleerd is uit + Portsnap geïnstalleerd is uit de Portscollectie). Dit is een download van ongeveer 36 MB. @@ -2560,10 +2550,18 @@ doc/zh_* gebeuren, zelfs als er al een portsstructuur bestaat in die map (bijvoorbeeld door gebruik van CVSup), omdat hiermee een - uitgangspunt wordt gemaakt dat - portsnap gebruikt om later te - bepalen welke delen van de portsstructuur bijgewerkt moeten - worden. + uitgangspunt wordt gemaakt dat portsnap + gebruikt om later te bepalen welke delen van de portsstructuur + bijgewerkt moeten worden. + + + In de standaard installatie wordt /usr/ports niet aangemaakt. + Maak deze map aan alvorens + portsnap te gebruiken: + + &prompt.root; mkdir /usr/ports + &prompt.root; portsnap extract @@ -2578,17 +2576,15 @@ doc/zh_* gecomprimeerde updates voor het snapshot (fetch) en die gebruiken om de live portsstructuur bij te werken (update). - Deze twee stappen kunnen door - portsnap in een enkel commando - worden uitgevoerd: + Deze twee stappen kunnen door portsnap in + een enkel commando worden uitgevoerd: &prompt.root; portsnap fetch update - Sommige oudere versies van - portsnap ondersteunen deze - syntaxis niet. Als het bovenstaande niet werkt, probeer - dan het volgende: + Sommige oudere versies van portsnap + ondersteunen deze syntaxis niet. Als het bovenstaande niet + werkt, probeer dan het volgende: &prompt.root; portsnap fetch &prompt.root; portsnap update @@ -2599,11 +2595,11 @@ doc/zh_* Portsnap draaien vanuit cron Om het probleem dat hordes gebruikers inhameren op de - servers voor portsnap te voorkomen, + servers voor Portsnap te voorkomen, draait portsnap fetch niet vanuit een - cron-opdracht. In plaats daarvan is het - commando portsnap cron beschikbaar, dat - een willekeurige periode wacht, tot 3600 seconden, voordat de + &man.cron.8;-opdracht. In plaats daarvan is het commando + portsnap cron beschikbaar, dat een + willekeurige periode wacht, tot 3600 seconden, voordat de updates worden opgehaald. Daarnaast wordt het sterk aangeraden om @@ -2613,8 +2609,8 @@ doc/zh_* 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 mee te - geven aan portsnap. Natuurlijk is - het op een later moment nodig om, als portsnap -I + geven aan portsnap. Natuurlijk is het op + een later moment nodig om, als portsnap -I update draait vanuit de cron, portsnap update te draaien zonder de vlag om de rest van de structuur bij te @@ -2622,26 +2618,26 @@ doc/zh_* Door de volgende regel toe te voegen aan /etc/crontab werkt - portsnap zijn gecomprimeerde + Portsnap zijn gecomprimeerde snapshot bij, worden de INDEX-bestanden in /usr/ports/ bijgewerkt en wordt er een e-mail verzonden als er ports zijn die bijgewerkt moeten worden: - 0 3 * * * root portsnap -I cron update && pkg_version -vIL= + 0 3 * * * root portsnap -I cron update && pkg_version -vIL= Als een systeemklok niet is ingesteld op de lokale - tijdzone, vervang 3 dan door een + tijdzone, vervang 3 dan door een willekeurige waarde tussen 0 en 23 om de belasting op de - servers voor portsnap zo + servers voor Portsnap zo evenwichtig mogelijk te verdelen. Sommige oudere versie van - portsnap bieden geen ondersteuning - voor het opgeven van meerdere commando's, zoals bijvoorbeeld + portsnap bieden geen ondersteuning voor + het opgeven van meerdere commando's, zoals bijvoorbeeld cron update, in dezelde aanroep van portsnap. Als de regel hierboven faalt, probeer portsnap -I cron update dan te @@ -2704,6 +2700,16 @@ doc/zh_* + + RELENG_6_0 + + + De releasetak voor &os;-6.0, alleen gebruikt voor + beveiligingswaarschuwingen en andere kritische + aanpassingen. + + + RELENG_5 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 --> @@ -869,18 +869,17 @@ link acd0 rdvd 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: + 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: - option CPU_ENABLE_SSE -option USER_LDT + option CPU_ENABLE_SSE - option USER_LDT bestaat niet in - &os; 5.X. + In &os; 4.X dient option USER_LDT + toegevoegd te worden aan het bestand met kernelinstellingen. + In &os; 5.X en later bestaat deze optie niet. Om de gedeeld geheugen interface van X11 te verbeteren, @@ -1443,52 +1442,44 @@ zoom=yes De software transcode is geen speler, maar een verzameling hulpprogramma's voor het - hercoderen van .avi en - .mpg bestanden. Met + hercoderen van video- en audiobestanden. Met transcode wordt het mogelijk om videobestanden samen te voegen, kapotte bestanden te repareren en commandoregelprogramma's te gebruiken met stdin/stdout stream interfaces. - Net als MPlayer is - transcode bijzonder experimentele - software die vanuit de port multimedia/transcode gebouwd moet - worden. Er zijn veel opties voor make - beschikbaar en daaruit worden de volgende aangeraden: + Tijdens het bouwen van de port multimedia/transcode kan een + groot aantal opties opgegeven worden en de volgende + commandoregel wordt geadviseerd om + transcode te bouwen: - &prompt.root; make WITH_LIBMPEG2=yes + &prompt.root; make WITH_OPTIMIZED_CFLAGS=yes WITH_LIBA52=yes WITH_LAME=yes WITH_OGG=yes \ +WITH_MJPEG=yes -DWITH_XVID=yes - Als ook multimedia/avifile wordt - geïnstalleerd, dan dient WITH_AVIFILE - aan de make commandoregel te worden - toegevoegd: + De geadviseerde instellingen zijn toereikend voor de + meeste gebruikers. - &prompt.root; make WITH_AVIFILE=yes WITH_LIBMPEG2=yes + Om de mogelijkheden van transcode te + illustreren volgt nu een voorbeeld van hoe een DivX-bestand + om te zetten in een PAL MPEG-1-bestand (PAL VCD): - Hieronder staan twee voorbeelden beschreven waarin - transcode 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. + &prompt.user; transcode -i input.avi -V --export_prof vcd-pal -o output_vcd +&prompt.user; mplex -f 1 -o output_vcd.mpg output_vcd.m1v output_vcd.mpa - &prompt.user; transcode -i input.vob -x vob -V -Z 320x240 \ --y opendivx -N 0x55 -o output.avi - - &prompt.user; transcode -i input.vob -x vob -V -Z 320x240 \ --y mpeg -N 0x55 -o output.tmp -&prompt.user; tcmplex -o output.mpg -i output.tmp.m1v -p output.tmp.mpa -m 1 + Het resulterende MPEG-bestand, + output_vcd.mpg, is klaar om afgespeeld + te worden met MPlayer. 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 multimedia/vcdimager en sysutils/cdrdao te + installeren. Er is een hulppagina voor transcode, - maar er is weinig documentatie voor de verschillende - tc* programma's (zoals - tcmplex) die ook zijn geïnstalleerd. - Voor ieder commando is wel de commandoregeloptie - beschikbaar, waarmee een korte - beschrijving voor het gebruik van het programma wordt - getoond. + maar kijk ook op transcode + wiki voor meer informatie en voorbeelden. Als de twee vergeleken worden, draait transcode 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 --> 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 @@ &a.core-secretary; &pgpkey.core-secretary; + + + &a.portmgr-secretary; + &pgpkey.portmgr-secretary; + @@ -127,6 +132,11 @@ &pgpkey.damien; + + &a.tdb; + &pgpkey.tdb; + + &a.mbr; &pgpkey.mbr; @@ -167,6 +177,11 @@ &pgpkey.wilko; + + &a.oleg; + &pgpkey.oleg; + + &a.jcamou; &pgpkey.jcamou; @@ -337,11 +352,6 @@ &pgpkey.billf; - - &a.patrick; - &pgpkey.patrick; - - &a.gioria; &pgpkey.gioria; @@ -507,11 +517,6 @@ &pgpkey.mlaier; - - &a.alex; - &pgpkey.alex; - - &a.erwin; &pgpkey.erwin; @@ -612,6 +617,11 @@ &pgpkey.dwmalone; + + &a.sem; + &pgpkey.sem; + + &a.ehaupt; &pgpkey.ehaupt; @@ -647,11 +657,6 @@ &pgpkey.sanpei; - - &a.jim; - &pgpkey.jim; - - &a.marcel; &pgpkey.marcel; @@ -732,9 +737,9 @@ &pgpkey.den; - - &a.pirzyk; - &pgpkey.pirzyk; + + &a.gerald; + &pgpkey.gerald; @@ -767,6 +772,11 @@ &pgpkey.dfr; + + &a.rees; + &pgpkey.rees; + + &a.trhodes; &pgpkey.trhodes; @@ -777,11 +787,6 @@ &pgpkey.benno; - - &a.paul; - &pgpkey.paul; - - &a.roberto; &pgpkey.roberto; @@ -847,11 +852,6 @@ &pgpkey.vanilla; - - &a.cshumway; - &pgpkey.cshumway; - - &a.demon; &pgpkey.demon; @@ -867,6 +867,11 @@ &pgpkey.scop; + + &a.anray; + &pgpkey.anray; + + &a.glebius; &pgpkey.glebius; @@ -892,11 +897,6 @@ &pgpkey.sobomax; - - &a.dcs; - &pgpkey.dcs; - - &a.brian; &pgpkey.brian; @@ -972,11 +972,6 @@ &pgpkey.flz; - - &a.viny; - &pgpkey.viny; - - &a.ume; &pgpkey.ume; @@ -1012,6 +1007,11 @@ &pgpkey.joerg; + + &a.emax; + &pgpkey.emax; + + &a.bz; &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 @@ @@ -10,16 +12,14 @@ Sean Kelly - Bijgedragen door + Bijdrage van - Jim Mock - Herstructureerd en geupdate door - + Geherstructureerd en bijgewerkt door @@ -28,376 +28,5408 @@ Koopman Vertaald door - - * Printen + + Afdrukken - * Samenvatting + Overzicht - + wachtrijsysteem LPD + + afdrukken + + &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. + + &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 + voorbladen af, zodat duidelijk is van wie de + afdruk is en nog veel meer. + + Na het lezen van dit hoofdstuk weet de lezer: + + + + Hoe het &os; afdrukwachtrijsysteem moet worden + ingesteld; + + + + 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; + + + + Hoe voorbladen kunnen worden afgedrukt; + + + + Hoe er op printers die op andere computers zijn + aangesloten kan worden afgedrukt; + + + + Hoe er op printers die direct op het netwerk zijn + aangesloten kan worden afgedrukt; + + + + Hoe afdrukbeperkingen kunnen worden opgelegd, zoals het + beperken van de grootte van de afdrukopdracht, en bepaalde + gebruikers verbieden af te drukken; + + + + Hoe afdrukstatistieken kunnen worden bijgehouden en het + printergebruik in de gaten kan worden gehouden; + + + + Hoe problemen met afdrukken kunnen worden + opgelost. + + + + Aangeraden voorkennis: + + + + Hoe een nieuwe kernel wordt ingesteld, gebouwd en + geïnstalleerd (). + + - * Inleiding + Inleiding + + Om printers onder &os; te kunnen gebruiken moeten ze + kunnen werken met het Berkeley line afdrukwachtrijsysteem, ook + wel bekend als het wachtrijsysteem + LPD. Dit is het standaard + afdruksysteem onder &os;. Dit hoofdstuk introduceert het + wachtrijsysteem LPD, vaak simpelweg + LPD genoemd en begeleidt bij het + instellen. + + Als de gebruiker al bekend is met + LPD of een ander + afdrukwachtrijsysteem, dan kan verder worden lezen vanaf Standaardinstallatie. + + LPD regelt alles met betrekking + tot de printer van een host. Het is verantwoordelijk voor een + aantal zaken: + + + + Het regelt de toegang tot aangesloten printers en + printers die op andere hosts op het netwerk zijn + aangesloten; + + + afdrukopdrachten + + + Het geeft gebruikers de mogelijkheid bestanden aan te + bieden die afgedrukt moeten worden; deze aangeboden bestanden + worden afdrukopdrachten genoemd; + + + + Het voorkomt dat gebruikers tegelijkertijd een printer + benaderen door een wachtrij bij te + houden voor elke printer; + + + + Het kan voorbladen afdukken (in het + Engels ook wel bekend als banner, of + burst pagina's) zodat gebruikers hun + afdruk tussen andere afdrukken makkelijk terug kunnen + vinden; + + + + Het handelt de communicatie af voor printers die op een + seriële poort zijn aangesloten; + + + + Het kan afdrukopdrachten over een netwerk versturen naar + een LPD wachtrij op een andere + host; + + + + Het kan speciale filters aanroepen die afdrukopdrachten + converteren voor verschillende printertalen of + afdrukmogelijkheden; + + + + Het houdt statistieken bij van het printergebruik. + + + + Middels een instellingenbestand + (/etc/printcap) en door speciale filters + beschikbaar te stellen, kan het LPD + systeem alle, of enkele van bovenstaande taken uitvoeren + op een grote verscheidenheid aan afdrukhardware. - * Waarom je het wachtrijsysteem zou moeten - gebruiken + Waarom het wachtrijsysteem gebruikt zou moet + worden - + 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: + + + + LPD afdrukopdrachten in de + achtergrond afhandelt. Dan is het niet nodig te wachten + tot de gegevens naar de printer zijn verzonden; + + + &tex; + + + LPD 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; + + + + 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. + + - * Standaard opzet + Standaardinstallatie + + Om printers met het LPD + wachtrijsysteem te kunnen gebruiken, dienen zowel de + printerhardware als de LPD software + geïnstalleerd te worden. Dit document beschrijft deze + installatie in twee stappen: + + + + In het onderdeel Eenvoudige + printerinstallatie staat hoe een printer moet worden + aangesloten, hoe LPD er mee kan + communiceren en hoe tekstbestanden afgedrukt kunnen + worden. + + + + In Geavanceerde + printerinstallatie staat beschreven hoe een scala + aan bestandsformaten afgedrukt kan worden, hoe voorbladen + kunnen worden afgedrukt en hoe statistieken van de printer + kunnen worden bijgehouden. + + - * Eenvoudige printer opzet + Eenvoudige printerinstallatie + + Nu wordt toegelicht hoe de printerhardware en de + LPD software ingesteld moeten worden + om een printer te kunnen gebruiken. Het behandelt de + basis: + + + + Hardware-instelling + geeft een aantal aanwijzingen voor het aansluiten van een + printer op een poort van een computer. + + + + Software-instellingen + toont hoe het instellingenbestand + (/etc/printcap) voor het + LPD-systeem moet worden + opgezet. + + + + Hoe een printer geïnstalleerd moet worden die via een + netwerkprotocol gegevens ontvangt, in plaats van een + seriële of parallelle poort, staat in Printers met + netwerkinterfaces. + + Hoewel dit onderdeel Eenvoudige + printerinstallatie heet, is het redelijk complex. De + printer met de computer en het + LPD-systeem laten samenwerken is het + moeilijkste. De geavanceerde opties, zoals voorbladen en + statistieken, zijn relatief makkelijk als de printer eenmaal + werkt. - * Hardware Setup + Hardware-instelling + + 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. + + Als een printer al is aangesloten en succesvol is + gebruikt onder een ander besturingssysteem, dan kan + waarschijnlijk verder gelezen worden in Software-instellingen. - * Poorten en kabels + Poorten en kabels - + De printers die tegenwoordig voor PC's verkocht worden + hebben eigenlijk altijd een van de volgende drie + poorten: + + + + printers + + serieel + + + + Seriële 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. + + + + printers + + parallel + + + + Parallelle 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. + + + centronics + + parallelle printers + + + Parallelle poorten staan ook wel bekend als + Centronics poorten, genoemd naar het + soort aansluiting op de printer. + + + + printers + + USB + + + + 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. + + + 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. + + &postscript; + + 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. + + &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. - * Parallel poorten + Parallelle poorten - + 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. + + Onthoud op welke parallelle poort de printer is + aangesloten. De eerste parallelle poort heet onder &os; + ppc0, de tweede + ppc1, enzovoort. De benaming voor + de printer gaat analoog: /dev/lpt0 + voor de printer op de eerste parallelle poort + enzovoort. - * Seriële poorten + Seriële poorten - + 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. + + Als onduidelijk is wat de juiste seriële + kabel is, kan een van onderstaande opties + geprobeerd worden: + + + + Een modemkabel 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 + DTE-naar-DCE-kabel. + + + null-modem kabel + + + Een null-modem 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 + DTE-to-DTE-kabel. + + + + Een + seriële printerkabel, 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. + + + + baud rate + + pariteit + + + flow-control protocol + + + 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 bps (bits per seconde, soms + baud) 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 in-band of + software) flow-control. Onthoud deze + instellingen voor de hier op volgende + software-instellingen. - * Software setup + Software-instellingen + + Nu wordt beschreven welke software-instellingen nodig + zijn om onder &os; af te drukken met behulp van het + wachtrijsysteem LPD. + + Een overzicht van de te doorlopen stappen: + + + + Maak, indien nodig, de kernel geschikt voor de poort + die door de printer wordt gebruikt. In Kernelinstellingen is + te lezen hoe dit gedaan kan worden. + + + + Stel de communicatievorm voor de parallelle poort in, + als gebruik wordt gemaakt van een parallelle printer. In + Communicatietype + instellen voor een parallelle poort staan de + details. + + + + Test of het besturingssysteem gegevens naar de + printer kan sturen. In Printercommunicatie + controleren staat een aantal suggesties. + + + + Stel LPD in voor de + printer door /etc/printcap aan te + passen. Dat wordt later in het hoofdstuk + beschreven. + + - * Kernel configuratie + Kernelinstellingen - + 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. + + Om te achterhalen of een huidige kernel een + seriële poort ondersteunt: + + &prompt.root; grep sioN /var/run/dmesg.boot + + Hier is N het aantal + seriële poorten, beginnende bij nul. Als de uitvoer + op het volgende lijkt, dan wordt de poort door een kernel + ondersteund: + + sio2 at port 0x3e8-0x3ef irq 5 on isa +sio2: type 16550A + + Om te achterhalen of een kernel een parallelle + poort ondersteunt: + + &prompt.root; grep ppcN /var/run/dmesg.boot + + Hier is N het aantal + parallelle poorten beginnende bij nul. Als de uitvoer er + ongeveer als volgt uit ziet, dan wordt de poort door een + kernel ondersteund: + + 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 + + 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. + + In het onderdeel over kernelinstellingen staat meer + informatie om ondersteuning voor een seriële poort toe + te voegen. Lees de betreffende en de + volgende sectie om ondersteuning voor een parallelle poort + toe te voegen. - * Het toevoegen van <filename>/dev</filename> bestanden - voor de poorten + Ingangen in <filename>/dev</filename> toevoegen voor + poorten + + + &os; 5.0 beschikt over het bestandssysteem + devfs dat automatisch apparaatnodes + creëert wanneer deze nodig zijn. Als een versie van + &os; wordt gebruikt die devfs aan heeft + staan, dan kan deze sectie overgeslagen worden. + + + 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 /dev. + + Volg onderstaande stappen om een ingang in + /dev voor een poort toe te + voegen: + + + + Wordt root met &man.su.1;. Geef + het root-wachtwoord als daar om + wordt gevraagd. + + + + Ga naar de map /dev: + + &prompt.root; cd /dev + + + + Geef in: + + &prompt.root; ./MAKEDEV poort + + Hier is poort de + apparaatingang voor de poort die wordt aangemaakt. + Gebruik lpt0 voor de printer op de + eerste parallelle poort, lpt1 voor de + printer op de tweede poort, enzovoort. Gebruik + ttyd0 voor de eerste seriële + poort, ttyd1 voor de tweede, + enzovoort. + + + + Voer het volgende commando uit om vast te stellen of + de apparaatingang is aangemaakt: + + &prompt.root; ls -l poort + + + - * Het communicatietype instellen voor de parallelle + <title>Communicatietype instellen voor een parallelle poort - + Wanneer een parallelle poort wordt gebruikt, kan + worden aangegeven of &os; voor de printer + interrupt-gestuurde of polled 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;. + + + + De interrupt-gestuurde + 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. + + + + Bij de polled methode vraagt + het besturingssysteem met vaste intervallen aan de + printer of deze klaar is om gegevens te ontvangen. Als + de printer antwoordt met klaar, stuurt + de kernel meer gegevens. + + + + 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. + + Het communicatietype kan op twee manieren worden + ingesteld: door de kernel in te stellen of door gebruik te + maken van &man.lptcontrol.8;. + + Het communicatietype instellen door de kernel + aan te passen: + + + + Pas het kernelinstellingenbestand aan. Zoek naar + een ppc0 ingang. Gebruik + ppc1 voor het opzetten van een + tweede parallelle poort. Gebruik + ppc2 voor de derde poort, + enzovoort. + + + + Voeg onder &os; 4.X het + irq nummer toe om gebruik te + maken van interrupt-gestuurde modus: + + device ppc0 at isa? irq N + + Hier is N het IRQ + nummer voor een parallelle poort van de + computer. + + Wijzig voor &os; 5.X de volgende + regel in /boot/device.hints en + vervang N door het + juiste IRQ nummer: + + hint.ppc.0.irq="N" + + Het kernelinstellingenbestand moet ook het + stuurprogramma &man.ppc.4; bevatten: + + device ppc + + + + Voeg het irq nummer niet toe + om gebruik te maken van polled modus. + + Gebruik voor &os; 4.X de volgende regel + in het kernelinstellingenbestand: + + device ppc0 at isa? + + Verwijder voor &os; 5.X de onderstaande + regel in + /boot/device.hints: + + hint.ppc.0.irq="N" + + 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. + + + + + + Sla het bestand op. Maak en installeer de nieuwe + kernel en herstart de computer. In De &os;-kernel + instellen staan meer details. + + + + Communictatietype instellen met + &man.lptcontrol.8;: + + + + Voer het volgende commando uit om + lptN op + interrupt-gestuurde modus in te stellen.: + + &prompt.root; lptcontrol -i -d /dev/lptN + + + + Voer het volgende commando uit om + lptN op + polled modus in te stellen. + + &prompt.root; lptcontrol -p -d /dev/lptN + + + + Zet deze commando's in het bestand + /etc/rc.local zodat het + communicatietype juist wordt ingesteld bij het opstarten. + In &man.lptcontrol.8; staat meer informatie. - * Het controleren van de printercommunicatie + Printercommunicatie controleren + + 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. + + 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. + + &postscript; + + Voor &postscript; (of andere op taal gebaseerde) + printers, is een meer geavanceerde test nodig. Een + eenvoudig &postscript;-programma zoals het volgende + volstaat: + + %!PS +100 100 moveto 300 300 lineto stroke +310 310 moveto /Helvetica findfont 12 scalefont setfont +(Werkt dit?) show +showpage + + Bovenstaande &postscript;-code kan in een bestand + worden opgeslagen en in de voorbeelden in de volgende + paragrafen gebruikt worden. + + PCL + + + 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. + - * Het controleren van een parallelle printer + Parallelle printer controleren - + + printers + + parallel + + + In deze sectie wordt beschreven hoe te controleren of + &os; kan communiceren met een printer die op een + parallelle poort is aangesloten. + + Voer de volgende stappen uit om een printer + op een parallelle poort te testen: + + + + &man.su.1; naar root. + + + + Stuur gegevens naar de printer. + + + + Gebruik &man.lptest.1; als de printer platte + tekst af kan drukken: + + &prompt.root; lptest > /dev/lptN + + Hier is N het + nummer van de parallelle poort, beginnende bij + nul. + + + + Als de printer &postscript; of een andere + printertaal begrijpt, stuur dan een klein + programma naar de printer: + + &prompt.root; cat > /dev/lptN + + Geef het programma regel voor regel + heel nauwkeurig in. Een + regel kan niet worden gewijzigd als er op + RETURN of + ENTER is gedrukt. Geef na het + afronden van de invoer voor het programma het + einde-van-invoer teken. Dit is meestal + CONTROL+D. + + Het programma kan ook in een bestand worden + opgeslagen: + + &prompt.root; cat bestand > /dev/lptN + + Hier is bestand de + naam van het bestand waarin het programma is + opgeslagen dat naar een printer gestuurd kan + worden. + + + + + + Nu moet er iets worden afgedrukt. Tekst die er niet + goed uitziet is geen probleem. Dit wordt later + gerepareerd. - * Het controleren van een seriële printer + Seriële printer controleren - + + printers + + serieel + + + In deze sectie wordt beschreven hoe te controleren of + &os; kan communiceren met een printer die op een + seriële poort is aangesloten. + + Voer de volgende stappen uit om een printer + op de seriële poort te testen: + + + + &man.su.1; naar root. + + + + Voeg de volgende regel toe aan + /etc/remote: + + printer:dv=/dev/poort:br#bps-snelheid:pa=pariteit + + + bits-per-seconde + + + + seriële poort + + + pariteit + + Hier is poort de + apparaatingave voor de seriële poort + (ttyd0, ttyd1, + enzovoort), bps-snelheid + is het aantal bits per seconde waarop de printer + communiceert en pariteit + is de pariteit die door de printer wordt vereist + (even, odd, + none of + zero). + + Hier volgt een voorbeeldregel voor een printer + verbonden met een seriële lijn op de derde + seriële poort op 19200 bps, zonder + pariteit: + + printer:dv=/dev/ttyd2:br#19200:pa=none + + + + Maak verbinding met de printer met + &man.tip.1;: + + &prompt.root; tip printer + + Als dit niet werkt, pas dan + /etc/remote opnieuw aan en + probeer gebruik te maken van + /dev/cuaaN + in plaats van + /dev/ttydN. + + + + Stuur gegevens naar de printer. + + + + Gebruik &man.lptest.1; als de printer platte + tekst af kan drukken: + + &prompt.user; $lptest + + + + Als de printer &postscript; of een andere + printertaal begrijpt, stuur dan een klein + programma naar de printer. Geef het programma + regel voor regel heel + nauwkeurig 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 + CONTROL+D. + + Het programma kan ook in een bestand worden + opgeslagen: + + &prompt.user; >bestand + + Hier is bestand 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. + + + + + + Nu moet er iets worden afgedrukt. Tekst die er niet + niet goed uitziet is geen probleem. Dit wordt later + gerepareerd. - * De wachtrij aanzetten: het - <filename>/etc/printcap</filename> bestand + De wachtrij aanzetten: + <filename>/etc/printcap</filename> + + 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 LPD ingesteld + worden zodat de toegang tot de printer wordt geregeld. + + LPD wordt ingesteld door het + bestand /etc/printcap aan te passen. + Het wachtrijsysteem LPD leest + dit bestand iedere keer dat het systeem wordt aangeroepen + zodat wijzigingen direct van toepassing zijn. + + + printers + + mogelijkheden + + + De opmaak van het bestand &man.printcap.5; is voor de + hand liggend. Met een willekeurige tekstverwerker kunnen + wijzigen in /etc/printcap aangebracht + worden. De opmaak is identiek aan die van andere bestanden + die voor dergelijke instellingen worden gebruik, zoals + /usr/share/misc/termcap en + /etc/remote. In &man.cgetent.3; staat + een uitgebreid overzicht van dit formaat. + + De vereenvoudigde instellingen bestaan uit de volgende + stappen: + + + + Kies een naam (en een paar handige aliassen) voor de + printer en voeg ze toe aan + /etc/printcap. In Printernaamgeving + staat meer informatie over het toekennen van een naam aan + een printer. + + + voorbladen + + + Het afdrukken van voorbladen (standaard) kan uitgezet + worden met de optie sh. In Voorbladen + onderdrukken staat meer informatie. + + + + Maak een wachtrijmap aan en specificeer de locatie + door middel van de optie sd. In + Wachtrijmap + aanmaken staat meer informatie. + + + + Bepaal welke ingave in /dev voor + de printer wordt gebruikt en geef dit in + /etc/printcap aan door gebruik te + maken van de opte lp. In Printerapparaat + identificeren staat meer informatie. Als de + printer is aangesloten op een seriële poort moeten + de communicatieparameters worden ingesteld met de optie + ms#. Dit wordt beschreven in Communicatieparameters + voor het wachtrijsysteem instellen. + + + + Installeer een filter voor platte tekst. In Tekstfilter + installeren staan details. + + + + Test de instellingen door iets met &man.lpr.1; af te + druken. Details staan in Printer uitproberen en + Problemen + oplossen. + + + + + 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. + + + Gebruikers verwachten vaak dat ze platte tekst naar + printers op een systeem kunnen sturen. Programma's die + LPD 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 Platte tekst + op &postscript;-printers afdrukken staat hoe dit in + zijn werk gaat. - * Printernaamgeving + Printernaamgeving - + 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. + + Ten minste één van de printers die in + /etc/printcap worden genoemd moet het + alias lp hebben. Dit is de + standaardnaam voor de printer. Als gebruikers de + omgevingsvariabele PRINTER niet ingesteld + hebben en ook geen printernaam specificeren als ze + LPD gebruiken, dan wordt + standaard de printer lp gebruikt. + + Het is verder gebruikelijk om het laaste alias zo te + kiezen dat het een volledige beschrijving van de printer + is, inclusief merk en model. + + Als een naam en een aantal aliassen zijn gekozen, + kunnen ze aan /etc/printcap 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. + + In het volgende voorbeeld is de beginsituatie een + uitgekleed /etc/printcap waarin twee + printers worden gedefinieerd (een Diablo 630 lineprinter + en een Panasonic KX-P4455 + &postscript;-laserprinter): + + # +# /etc/printcap voor host rose +# +rattan|line|diablo|lp|Diablo 630 Line Printer: + +bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4: + + In dit voorbeeld heet de eerste printer + rattan en heeft de volgende aliassen: + line, diablo, + lp en Diablo 630 Line + Printer. Omdat deze printer het alias + lp heeft, is het de standaard printer. + De tweede printer heet bamboo en heeft + de aliassen ps, PS, + S, panasonic en + Panasonic KX-P4455 PostScript + v51.4. - * Voorbladen onderdrukken + Voorbladen onderdrukken - + + afdrukken + + voorbladen + + + Het wachtrijsysteem LPD + drukt standaard een voorblad 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. + + Om voorbladen te onderdrukken, wordt de optie + sh toegevoegd voor de relevante printer + in /etc/printcap. Hieronder staat een + voorbeeld van /etc/printcap met de + optie sh: + + # +# /etc/printcap voor host rose - nergens worden voorbladen afgedrukt +# +rattan|line|diablo|lp|Diablo 630 Line Printer:\ + :sh: + +bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ + :sh: + + 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. - * Het aanmaken van de wachtrijdirectory + Wachtrijmap aanmaken - + printer wachtrij + + afdrukopdrachten + + De volgende stap in deze eenvoudige opzet is het + aanmaken van een wachtrijmap. 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. + + Vanwege het veranderlijke karakter van wachtrijmappen + is het gebruikelijk om deze mappen onder + /var/spool 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;. + + Het is ook gebruikelijk om de naam van de map overeen + te laten komen met die van de printer, zoals onder is + weergegeven: + + &prompt.root; mkdir /var/spool/printernaam + + 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 + LPD. In dit voorbeeld wordt dat + gedaan voor de printers rattan en + bamboo: + + &prompt.root; mkdir /var/spool/lpd +&prompt.root; mkdir /var/spool/lpd/rattan +&prompt.root; mkdir /var/spool/lpd/bamboo + + + 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: + + &prompt.root; chown daemon:daemon /var/spool/lpd/rattan +&prompt.root; chown daemon:daemon /var/spool/lpd/bamboo +&prompt.root; chmod 770 /var/spool/lpd/rattan +&prompt.root; chmod 770 /var/spool/lpd/bamboo + + + Tenslotte moet LPD verteld + worden dat deze mappen bestaan. Dit kan met het bestand + /etc/printcap. De locatie van de + wachtrijmap wordt opgegeven met de optie + sd: + + # +# /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: + + 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. + + Als geen wachtrijmap wordt opgegeven met + sd, dan wordt standaard + /var/spool/lpd gebruikt. - * Het printerdevice identificeren + Printerapparaat identificeren - + In Ingangen in + /dev toevoegen voor poorten is + bepaald welke ingang in de map /dev + door &os; wordt gebruikt om met een printer te + comminiceren. Nu moet LPD 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). + + Geef de locatie van de ingang in + /dev op in + /etc/printcap door gebruik te maken + van de optie lp. + + In het huidige voorbeeld wordt aangenomen dat + rattan op de eerste parallelle poort is + aangesloten en bamboo op de zesde + seriële poort. Hier volgen de toevoegingen voor + /etc/printcap: + + # +# /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: + +bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ + :sh:sd=/var/spool/lpd/bamboo:\ + :lp=/dev/ttyd5: + + Als voor een printer de optie lp + niet wordt gebruikt in /etc/printcap, + dan gebruikt LPD standaard + /dev/lp. Momenteel bestaat + /dev/lp niet in &os;. + + Als de te installeren printer is aangesloten op een + parallelle poort, dan staan verdere instructies in Tekstfilter + installeren. In andere gevallen kunnen de + instructies in de volgende paragraaf gevold worden. - * Het configureren van communicatieparameters voor het - wachtrijsysteem + Communicatieparameters voor het wachtrijsysteem + instellen - + + printers + + serieel + + + Voor printers die zijn aangesloten op een seriële + poort kan LPD de bps-snelheid, + pariteit en andere seriële communicatie parameters + instellen voor het filterprogramma dat gegevens naar een + printer stuurt. Dit is gunstig omdat: + + + + De verschillende communicatieparameters + uitgeprobeerd kunnen worden door + /etc/printcap aan te passen. Het + is niet nodig het filterprogramma opnieuw te + compileren; + + + + Het wachtrijsysteem kan hetzelfde filter gebruiken + voor verschillende printers die mogelijk verschillende + seriële communicatie-instellingen hebben. + + + + Met de volgende opties in + /etc/printcap kunnen seriële + communicatieparameters worden ingesteld voor het apparaat + waar lp naar verwijst: + + + + br#bps-snelheid + + + Stelt de communicatiesnelheid van het apparaat in + op bps-snelheid, waarbij + bps-snelheid 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. + + + + + ms#stty-modus + + + Bepaalt de opties voor het geval het + printerapparaat een terminal is. In &man.stty.1; + staat uitleg over de beschikbare opties. + + + + + Als LPD het apparaat opent + dat met lp is opgegeven, worden de + eigenschappen van het apparaat bepaald door de optie + ms#. Met name van belang zijn de modi + parenb, parodd, + cs5, cs6, + cs7, cs8, + cstopb, crtscts en + ixon. Deze worden uitgelegd in + &man.stty.1;. + + 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 + -parenb, 8-bit tekens met + cs8, geen modem controle met + clocal en hardware flow controle met + crtscts: + + 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: - * Een tekstfilter installeren + Tekstfilter installeren - + + afdrukken + + filters + + + Nu kan LPD verteld worden + welke tekstfilters gebruikt moeten worden bij het versturen + van afdrukopdrachten. Een tekstfilter + is een programma dat LPD + aanroept als het een afdrukopdracht krijgt. Wanneer + LPD 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 lp + 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 Filters staat + meer informatie over het tekstfilter. + + Voor deze eenvoudige printerinstallatie kan het + tekstfilter een klein shellscript zijn dat + /bin/cat aanroept om de afdrukopdracht + naar de printer te sturen. &os; wordt geleverd met een + ander filter, lpf, 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 lpf wordt + uitgebreid beschreven in lpf: een + tekstfilter. + + Nu wordt eerst het shellscript + /usr/local/libexec/if-simple gemaakt + dat als simpel tekstfilter dient. Plaats de volgende tekst + in het bestand met een tekstverwerker naar keuze: + + #!/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 + + Zorg dat het bestand uitvoerbaar is: + + &prompt.root; chmod 555 /usr/local/libexec/if-simple + + Zorg dat LPD het filter + gebruikt door dit aan te geven met de optie + if in + /etc/printcap. Nu volgt hoe dit te + doen voor de twee printers uit het voorbeeld: + + # +# /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: + + + Een kopie van het script + if-simple staat in de map /usr/share/examples/printing. + - * <application>LPD</application> aanzetten + <application>LPD</application> aanzetten - + &man.lpd.8; wordt gestart vanuit + /etc/rc door de variabele + lpd_enable. Standaard staat deze + variabele op NO. Als dit nog niet is + gedaan, voeg dan de volgende regel toe aan + /etc/rc.conf en herstart de + computer: + + lpd_enable="YES" + + Of voer het commando &man.lpd.8; uit: + + &prompt.root; lpd - * De printer uitproberen + Printer uitproberen - + Nu volgt het laatste onderdeel van de eenvoudige + LPD 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. + + Het programma &man.lpr.1; is te combineren met het + programma &man.lptest.1; uit Printercommunicatie + controleren om tekst te genereren. + + Om de eenvoudige + LPD installatie te + testen: + + &prompt.root; lptest 20 5 | lpr -Pprinternaam + + Hier is printernaam de naam + van een printer (of een alias) die in + /etc/printcap wordt genoemd. De + standaard printer kan worden getest door bij het aanroepen + van &man.lpr.1; de optie 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: lpr + bestand. + + 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: + + !"#$%&'()*+,-./01234 +"#$%&'()*+,-./012345 +#$%&'()*+,-./0123456 +$%&'()*+,-./01234567 +%&'()*+,-./012345678 + + 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: lptest 80 + 60, drukt 60 regels af met elk 80 + karakters. + + Als de printer niet werkt, lees dan verder in Problemen + oplossen. - * Geavanceerde printer instellingen + Geavanceerde printerinstallatie + + 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. - * Filters + Filters + + + afdrukken + + filters + + + Hoewel LPD veel van het + afdrukwerk afhandelt (netwerkverkeer, wachtrijafhandeling, + toegangscontrole, enzovoort), wordt het + echte 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 (Tekstfilter + installeren). + + 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 + de beheerder 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. + + &os; heeft een ingebouwd filter, + /usr/libexec/lpr/lpf, 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; Portscollectie. + + Hieronder wordt het volgende beschreven: + + + + In Hoe + filters werken staat een overzicht van de rol die + een filter speelt in het afdrukproces. Lees dat onderdeel + om een indruk te krijgen wat er onder de + motorkap gebeurt als + LPD filters gebruikt. Deze + kennis helpt mogelijke problemen te voorkomen of op te + lossen als meerdere filters worden geïnstalleerd voor + printers; + + + + LPD 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 Platte tekst + op &postscript;-printers afdrukken staat wat er + kan worden gedaan om dit probleem te verhelpen. Lees + verder in dit onderdeel als het om &postscript;-printers + gaat; + + + + Voor veel programma's is &postscript; een populair + uitvoerformaat. Sommige mensen schrijven &postscript; code + zelfs direct. &postscript;-printers zijn echter kostbaar. + In &postscript; + simuleren op niet-&postscript;-printers staat hoe + de tekstfilter van een printer aangepast moet worden zodat + die &postscript; accepteert en afdrukt op een + niet-&postscript;-printer. Dit + onderdeel is van toepassing voor + niet-&postscript;-printers; + + + + In Conversiefilters + 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 lpr -t kunnen invoeren om + troff gegevens af te drukken, lpr -d om + &tex; DVI gegevens af te drukken of lpr + -v om rasterplaatjes af te drukken, enzovoorts. + Het wordt aangeraden deze sectie te lezen; + + + + In Uitvoerfilters + wordt een niet vaak gebruikte functionaliteit van + LPD behandeld: uitvoerfilters. + Tenzij voorbladen worden afgedrukt (Voorbladen), + kan deze sectie waarschijnlijk overgeslagen worden; + + + + lpf: een + tekstfilter beschrijft lpf, 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 lpf. + + + + + Een kopie van de scripts die hieronder worden beschreven, + staan in de map /usr/share/examples/printing. + - * Hoe filters werken + Hoe filters werken - + Zoals eerder genoemd, is een filter een programma dat + wordt uitgevoerd door LPD voor het + afhandelen van het apparaatafhankelijke deel van de + communicatie met een printer. + + Als LPD 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 lf in + /etc/printcap of standaard + /dev/console). + + + troff + + + Welk filter LPD start en de + argumenten van het filter hangen af van wat er in het bestand + /etc/printcap wordt opgegeven en de + argumenten die de gebruiker geeft op de &man.lpr.1; + commandoregel. Als een gebruiker bijvoorbeeld + lpr -t ingeeft, start + LPD het filter troff, zoals wordt + opgegeven via de optie tf voor de + betreffende printer. Als een gebruiker platte tekst wilt + afdrukken, dan wordt het filter if gestart + (dit klopt bijna: zie Uitvoerfilters voor + de details). + + Er zijn drie soorten filters die in + /etc/printcap kunnen worden + opgegeven: + + + + Het tekstfilter, dat in de + LPD documentatie verwarrend + genoeg input filter wordt genoemd, + verwerkt het afdrukken van gewone tekst. Beschouw het + als de standaard filter. LPD + 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: + + + filter-name + -c + -wwidth + -llength + -iindent + -n login + -h host + acct-file + + + + + + + + wordt gebruikt als de afdrukopdracht is + gegeven met lpr -l + + + + + width + + + is de waarde van de optie + pw (page + width: pagina breedte), zoals + opgegeven in + /etc/printcap, standaard + 132 + + + + + length + + + is de waarde van de optie + pl (page + length: paginalengte), standaard + 66 + + + + + indent + + + geeft aan hoeveel wordt ingesprongen door + lpr -i, standaard 0 + + + + + login + + + de gebruikersnaam van de gebruiker die de + afdrukopdracht gaf + + + + + host + + + de hostnaam waar de afdrukopdracht gegeven + is + + + + + acct-file + + + de naam van het administratiebestand zoals + opgegeven via de optie + af. + + + + + + + afdrukken + + filters + + + + Een conversiefilter 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 Conversiefilters + beschreven. Conversiefilters zijn ook nodig om + printergebruik te administreren, mocht dat nodig zijn. + Conversiefilters worden met de volgende argumenten + aangeroepen: + + + filter-name + -xpixel-width + -ypixel-height + -n login + -h host + acct-file + + + Hier is pixel-width de + waarde van de de optie px (standaard + 0) en pixel-height is de + waarde van de optie py (standaard + 0). + + + + Het uitvoerfilter wordt alleen + gebruikt als er geen tekstfilter is of als er voorbladen + worden afgedrukt. De ervaring leert dat uitvoerfilters + zelden worden gebruikt. In sectie Uitvoerfilters + worden ze beschreven Er zijn slechts twee argumenten die + aan een uitvoerfilter worden meegegeven: + + + filter-name + -wwidth + -llength + + + Die zijn identiek aan de argumenten + en van het + tekstfilter. + + + + Filters moeten afsluiten met de + volgende waarde: + + + + exit 0 + + + Als het filter een bestand succesvol heeft + afgedrukt. + + + + + exit 1 + + + Als het filter niet geslaagd is om een bestand af + te drukken, maar wil dat LPD + het nogmaals probeert. LPD + herstart het filter als die afsluit met deze + status. + + + + + exit 2 + + + Als het filter niet geslaagd is om een bestand af + te drukken, maar niet wil dat + LPD het nogmaals probeert. + LPD verwijdert het bestand + uit de wachtrij. + + + + + Het tekstfilter dat bij &os; wordt geleverd, + /usr/libexec/lpr/lpf, 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. + + 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. - * Platte tekst op &postscript; printers afdrukken + Platte tekst op &postscript;-printers afdrukken - + afdrukopdrachten + + 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. + + 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 %! (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. + + Hoe gaat dat werken? + + + printers + + serieel + + + Voor seriële printers kan het meest eenvoudig + lprps geïnstalleerd worden. + lprps 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: toner bijna op of + papier vastgelopen). Maar + belangrijker, het omvat het programma psif + dat bepaalt of een binnenkomende opdracht platte tekst is en + textps (dat ook geleverd wordt met + lprps) om opdrachten om te zetten naar + &postscript;. Vervolgens wordt een opdracht met + lprps naar een printer gestuurd. + + lprps is onderdeel van de &os; + Portscollectie. De software kan + natuurlijk ook handmatig gedownload, gecompileerd en + geïnstalleerd worden. Nadat lprps is + geïnstalleerd moet de installatielocatie ervan aan + psif worden doorgeven dat onderdeel is van + lprps. Als lprps is + geïnstalleerd via de Portscollectie, gebruik dan + het volgende voor de seriële &postscript;-printer in + /etc/printcap: + + :if=/usr/local/libexec/psif: + + Ook moet de optie rw worden opgeven, + die LPD vertelt om een printer in + read-write modus te openen. + + Als een parallelle &postscript;-printer wordt ingesteld + (en dus geen tweewegcommunicatie toegepast kan worden met de + printer, zoals vereist door lprps), dan + kan het volgende shellscript gebruikt worden als + tekstfilter: + + #!/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 + + In bovenstaand script is textps een + programma dat geïnstalleerd is om platte tekst om te + zetten naar &postscript;. Elk tekst-naar-&postscript; + programma volstaat. De &os; Portscollectie bevat een uitgebreid + tekst-naar-&postscript;-programma, a2ps, + dat wellicht handig is om te gebruiken. - * &postscript; simuleren op niet &postscript; - printers + &postscript; simuleren op + niet-&postscript;-printers - + + &postscript; + + emuleren + + + + Ghostscript + + + &postscript; is de facto de + standaard voor op hoge kwaliteit typesetten en afdrukken. + &postscript; is echter een dure + standaard. Gelukkig heeft Aladdin Enterprises een gratis + &postscript; kloon, Ghostscript, + 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. + + Ghostscript is beschikbaar via de &os; Portscollectie. Het kan ook vrij + makkelijk gedownload, gecompileerd en geïnstalleerd + worden. + + 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. + + Een voorbeeld: het volgende script is een tekstfilter + voor HP DeskJet 500 printers. Voor andere printers moet het + argument argument voor het commando + gs (Ghostscript) vervangen worden. (Met + gs -h wordt een lijst met apparaten + getoond worden die de huidige Ghostscript installatie + ondersteunt.) + + #!/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 + + Tot slot moet LPD op de hoogte + gebracht worden van het filter via de optie + if: + + :if=/usr/local/libexec/ifhp: + + Dat is alles. Nu kan lpr plain.text + en lpr watdanook.ps ingevoerd worden en + beiden worden juist afgedrukt. - * Conversie filters + Conversiefilters + + Na de eenvoudige installatie, zoals beschreven in Eenvoudige + printerinstallatie, te hebben voltooid, is het + waarschijnlijk wenselijk om conversiefilters te installeren + voor favoriete bestandsformaten (naast platte + ASCII-tekst). - * Waarom conversie filters installeren? + Waarom conversiefilters installeren? - + + &tex; + + DVI bestanden afdrukken + + + 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: + + &prompt.user; dvips zeewieranalyse.dvi +&prompt.user; lpr zeewieranalyse.ps + + Na installatie van een conversiefilter voor + DVI-bestanden kan deze handmatige conversie overgeslagen + worden door LPD de conversie te + laten uitvoeren. Elke keer als een DVI-bestand wordt + afgedrukt, hoeft alleen de volgende opdracht gegeven te + worden: + + &prompt.user; lpr -d zeewieranalyse.dvi + + LPD voert de + DVI-bestandsconversie uit door te + geven. In Opties voor opmaak + en conversie staat een lijst van + conversie-opties. + + Voor elke conversie-optie moet een + conversiefilter geïnstalleerd + worden en moet in /etc/printcap de + locatie worden opgegeven. Een conversiefilter is als de + tekstfilter voor de eenvoudige printerinstallatie (Tekstfilter + installeren), behalve dat in plaats van platte + tekst af te drukken, de conversiefilter het bestand + converteert naar een formaat dat een printer + begrijpt. - * Welke conversie filters moet ik installeren? + Welke conversiefilters installeren? - + 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. + + De volgende tabel geeft een samenvatting van filters + waarmee LPD kan werken, hoe ze + in /etc/printcap kunnen worden + aangeroepen en hoe ze met lpr kunnen + worden aangeroepen: + + + + + + Bestandsformaat + + /etc/printcap + optie + + lpr optie + + + + + + cifplot + + cf + + + + + + DVI + + df + + + + + + plot + + gf + + + + + + ditroff + + nf + + + + + + FORTRAN-tekst + + rf + + + + + + troff + + tf + + + + + + raster + + vf + + + + + + platte tekst + + if + + geen, , of + + + + + + + In het voorbeeld waarbij lpr -d + wordt gebruikt, moet voor de printer een optie + df gedefinieerd staan in + /etc/printcap. + + FORTRAN + + 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 + gf en gebruikers kunnen + geïnstrueerd worden om lpr -g te + gebruiken om Printerleaf bestanden af te drukken. - * Conversie filters installeren + Conversiefilters installeren - + Aangezien conversiefilters programma's zijn die niet + vallen onder de &os; basisinstallatie, kunnen ze het best + onder /usr/local geplaatst worden. De + map /usr/local/libexec is een + veelgebruikte locatie, omdat hier programma's te vinden + zijn die alleen door LPD + gebruikt worden. Gewone gebruikers hoeven ze nooit te + gebruiken. + + Om een conversiefilter te activeren, moet de + bestandslocatie onder de juiste optie voor de betreffende + printer in /etc/printcap opgegeven + worden. + + In het onderstaande voorbeeld wordt de + DVI-conversiefilter toegevoegd onder de sectie van de + printer bamboo. Hieronder staat opnieuw + het voorbeeldbestand /etc/printcap, nu + met de nieuwe optie df voor de printer + bamboo: + + # +# /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: + + De DVI filter is een shellscript met de naam + /usr/local/libexec/psdf. Het script + ziet er als volgt uit: + + #!/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 "$@" + + Dit script roept dvips in + filtermodus aan (het argument) op de + standaard uitvoer, de af te drukken opdracht. Vervolgens + start het &postscript; afdrukfilter + lprps (zie Platte tekst op + &postscript;-printers afdrukken) met de argumenten + die LPD aan het script + doorgeeft. lprps gebruikt deze + argumenten om de afgedrukte pagina's te + administreren. - * Meer conversie filters voorbeelden + Meer conversiefilter voorbeelden - + 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. + + Dit voorbeeldscript is een raster (eigenlijk een + GIF-bestand) conversiefilter voor een HP LaserJet III-Si + printer: + + #!/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 + + 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. + + Een /etc/printcap bestand dat + bovenstaand filter gebruikt ziet er als volgt uit: + + # +# /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: + + Het volgende script is een conversiefilter voor troff + gegevens afkomstig van het groff typesettingsysteem voor + de &postscript;-printer bamboo: + + #!/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 "$@" + + Bovenstaande script maakt eveneens gebruik van + lprps om de communicatie met een printer + af te handelen. Als een printer op een parallelle poort + is aangesloten, ziet het er als volgt uit: + + #!/bin/sh +# +# pstf - Converteert groff's troff naar PS, drukt vervolgens af. +# Geïnstalleerd in /usr/local/libexec/pstf +# +exec grops + + Dat is alles. In /etc/printcap + moet het volgende toegevoegd worden om het filter + beschikbaar te maken: + + :tf=/usr/local/libexec/pstf: + + 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 teak: + + #!/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 + + De onderstaande regel wordt toegevoegd aan + /etc/printcap voor de printer + teak om het filter beschikbaar te + maken: + + :rf=/usr/local/libexec/hprf: + + Het laatste voorbeeld is wellicht meer complex. Er + wordt een DVI-filter toegevoegd voor de eerder genoemde + LaserJet printer teak. Eerst het + makkelijke gedeelte: in /etc/printcap + wordt de locatie van de DVI-filter opgegeven: + + :df=/usr/local/libexec/hpdf: + + Nu het moeilijke gedeelte: het schrijven van het + filter. Daarvoor is een + DVI-naar-LaserJet/PCL conversieprogramma nodig. De &os; + Portscollectie heeft er een: + dvi2xx. Door dit package te installeren + komt het programma dat nodig is beschikbaar, + dvilj2p, waarmee DVI geconverteerd kan + worden naar LaserJet IIp, LaserJet III en + LaserJet 2000 formaten. + + dvilj2p maakt het filter + hpdf redelijk complex, omdat + dvilj2p niet van de standaard invoer kan + lezen. Het wil werken met een bestandsnaam. Nog lastiger + is dat de bestandsnaam moet eindigen op + .dvi, zodat moeilijk gebruik + gemaakt kan worden van /dev/fd/0 als + standaard. Dit probleem kan omzeild worden door een + (symbolische) link aan te maken van een tijdelijk bestand + (eindigend op .dvi) naar + /dev/fd/0. Hiermee wordt + dvilj2p gedwongen van de standaard + invoer te lezen. + + De enige andere hobbel die genomen moet worden, is dat + /tmp niet gebruikt kan worden als + tijdelijke link. Symbolische links zijn eigendom van de + gebruiker en groep bin. Het filter + wordt uitgevoerd door de gebruiker + daemon. De map + /tmp 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. + + In plaats hiervan maakt het filter een symbolische link + aan in de huidige werkmap, de wachtrijmap (als opgegeven in + de optie sd in + /etc/printcap). 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 /tmp. + + Dit is het uiteindelijke filter: + + #!/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 - * Geautomatiseerde conversie: een alternatief voor - conversie filters + Automatische conversie: een alternatief voor + conversiefilters - + 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. + + 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 + file kunnen hierbij handig zijn. Voor + sommige bestandsformaten kan het + moeilijk zijn de verschillen te ontdekken en voor deze + bestanden kan alsnog een conversiefilter beschikbaar worden + gesteld. + + apsfilter + + + afdrukken + + filters + + apsfilter + + + De &os; Portscollectie + heeft een tekstfilter die automatisch bestanden + converteert: apsfilter. Het detecteert + platte tekst, &postscript; en DVI-bestanden, voert de + juiste conversie uit en druk de bestanden af. - * Output filters + Uitvoerfilters - + Het wachtrijsysteem LPD + 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: + + + + start LPD een + uitvoerfilter voor de gehele opdracht, in plaats van voor + elk bestand in de opdracht; + + + + biedt LPD de uitvoerfilter + niet de voorziening van het identificeren van het begin + of eind van de bestanden in de afdrukopdracht; + + + + stuurt LPD 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: + + + filter-name + -wwidth + -llength + + + Hierbij is width afkomstig + van de optie pw en + length afkomstig van de optie + pl voor de betreffende printer. + + + + De eenvoud van een uitvoerfilter is verleidelijk. Als + elk bestand in een afdrukopdracht op een nieuwe pagina moet + beginnen, is een uitvoerfilter niet + geschikt. In dat geval dient een tekstfilter + (ook wel invoerfilter) gebruikt te worden (zie Tekstfilter + installeren. Verder is een uitvoerfilter eigenlijk + veel ingewikkelder, omdat de te + verwerken bytestroom gecontroleerd moet worden op speciale + tekens en steeds signalen naar zichzelf moet sturen in + opdracht van LPD. + + Een uitvoerfiler is noodzakelijk 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 + nutteloos als het voorblad voor rekening + van de afkomstige gebruiker moet komen, aangezien + LPD geen gebruiker of + hostinformatie naar het uitvoerfilter stuurt. + + Op een enkele printer staat + LPD het gebruik van zowel een + uitvoerfilter als van een tekst of andere filter toe. In + deze gevallen start LPD het + uitvoerfilter alleen voor het afdrukken van het voorblad (zie + Voorbladen). + LPD verwacht vervolgens van het + uitvoerfilter dat deze zichzelf stopt + 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 + SIGSTOP naar zichzelf te sturen. Als + LPD klaar is met het uitvoeren van + alle andere filters, dan herstart deze het uitvoerfilter door + er een SIGCONT naar toe te sturen. + + Als er wel een uitvoerfilter, maar + geen tekstfilter is en + LPD is niet bezig met het + verwerken van een opdracht met platte tekst, dan gebruikt + LPD 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 + niet gewenst. In bijna alle gevallen is + een tekstfilter nodig. + + Het programma lpf, 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 + lpf het proberen waard. + lpf kan ook opgenomen worden in een + shellscript om initialisatiecode af te handelen die eventueel + nodig is voor een printer. - * <command>lpf</command>: een tekstfilter + <command>lpf</command>: een tekstfilter - + Het programma /usr/libexec/lpr/lpf + uit de gecompileerde &os; distributie is een tekstfilter + (invoerfilter) die uitvoer kan inspringen (een opdracht + gegeven met lpr -i), karakters onveranderd + kan doorlaten (een opdracht gegeven met lpr + -l), de printpositie voor backspaces en tabs in + de opdracht kan aanpassen en afgedrukte pagina's kan + administreren. Het kan ook functioneren als + uitvoerfilter. + + lpf 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 lpf + aanroept. + + pagina-administratie + + + administreren + + printer + + + Als lpf afgedrukte pagina's moet + administreren, is het nodig om de juiste waarden in te vullen + voor de opties pw en + pl in het bestand + /etc/printcap. 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 Printergebruik + administreren voor meer informatie. - * Voorbladen + Voorbladen + + Als er veel gebruikers zijn die + allemaal verschillende printers gebruiken, dan is het te + overwegen gebruik te maken van voorbladen + als noodzakelijk kwaad. + + + bannerpagina's + + voorbladen + + + voorbladen + + Voorbladen, in het Engels ook wel bekend als + banner of burst + 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. + + Het LPD-systeem kan automatisch + voorbladen afdrukken als 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 Voorbladen op + &postscript;-printers. - * Voorbladen aanzetten + Voorbladen afdrukken - + In de sectie Eenvoudige + printerinstallatie is het afdrukken van + voorbladen uitgeschakeld door de optie sh + (suppress header) in het bestand + /etc/printcap op te geven. Om wel + voorbladen af te drukken, hoeft alleen de optie + sh verwijderd te worden. + + Dit klinkt wat al te makkelijk, of niet? + + Dat klopt. Het kan nodig zijn een + uitvoerfilter op te geven die initialisatiestrings naar een + printer stuurt. Hier is een voorbeeld uitvoerfilter voor + HP PCL-compatible printers: + + #!/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 + + Geef de locatie van het uitvoerfilter op met de optie + of. Zie Uitvoerfilters voor + meer informatie. + + Hier is een voorbeeldbestand + /etc/printcap voor de printer + teak die eerder is geïntroduceerd;. + Het afdrukken van voorbladen is geactiveerd en bovenstaande + uitvoerfilter is toegevoegd: + + # +# /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: + + Als gebruikers nu een opdracht sturen naar + teak, 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 + lpr -h. Zie Voorbladopties + voor meer opties voor &man.lpr.1;. + + + LPD 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 + ff in + /etc/printcap. + - * Voorbladen beheren + Voorbladen beheren - + Door het afdrukken van voorbladen aan te zetten, + produceert LPD een lang + voorblad waarop in grote letters de gebruiker, + host en opdracht te lezen zijn. Hier volgt een voorbeeld. + Kelly heeft de opdracht outline afgedrukt + vanaf host rose): + + k ll ll + k l l + k l l + k k eeee l l y y + k k e e l l y y + k k eeeeee l l y y + kk k e l l y y + k k e e l l y yy + k k eeee lll lll yyy y + y + y y + yyyy + + + ll + t l i + t l + oooo u u ttttt l ii n nnn eeee + o o u u t l i nn n e e + o o u u t l i n n eeeeee + o o u u t l i n n e + o o u uu t t l i n n e e + oooo uuu u tt lll iii n n eeee + + + + + + + + + + r rrr oooo ssss eeee + rr r o o s s e e + r o o ss eeeeee + r o o ss e + r o o s s e e + r oooo ssss eeee + + + + + + + + Job: outline + Date: Sun Sep 17 11:04:58 1995 + + LPD geeft een paginabegin na + deze tekst, zodat de opdracht op een nieuwe pagina begint + (tenzij de optie sf (suppress + form feeds, onderdruk paginabegin) + is toegevoegd bij de desbetreffende printer in + /etc/printcap). + + Als dit wenselijk is, kan LPD + ook een korte tekst op het voorblad + afdrukken; geef hiervoor de optie sb + (short banner, kort + voorblad) op in het bestand + /etc/printcap. Het voorblad + ziet er dan als volgt uit: + + rose:kelly Job: outline Date: Sun Sep 17 11:07:51 1995 + + Standaard drukt LPD het + voorblad als eerste af en vervolgens de opdracht. Om dat om + te keren, moet de optie hl + (header last, voorblad + laatst) in + /etc/printcap worden opgeven. - * Accounting voor voorbladen + Voorbladen administreren - + Het gebruik van LPD's + ingebouwde voorbladen dwingt een bepaald paradigma af wat + betreft het administreren van printergebruik: voorbladen + moeten gratis zijn. + + Waarom? + + 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 gebruiker of + host of een administratiebestand. Het heeft dus + geen idee wie voor het gebruik moet worden belast. Het + volstaat ook niet om gewoon één pagina + toe te voegen 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 lpr -h. Ze worden dan + aangeslagen voor voorbladen die niet zijn afgedrukt. + Milieubewuste gebruikers gebruiken vast + lpr -h, maar dit kan niet worden + afgedwongen. + + Het is ook niet voldoende 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 + lpr -h, krijgen ze toch een voorblad en + worden er ook voor belast, aangezien + LPD de optie + niet doorgeeft aan de filters. + + Wat zijn dan de mogelijkheden? + + + + Accepteer het paradigma van + LPD en maak voorbladen + gratis; + + + + Installeer een alternatief voor + LPD, zoals + LPRng. In Alternatieven voor + het standaard wachtrijsysteem staat meer over + andere afdruksoftware die in plaats van + LPD geïnstalleerd kan + worden; + + + + Schrijf een slimme + 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 + LPD het uitvoerfilter alleen + voor voorbladen. Het uitvoerfilter kan dan het + voorblad dat LPD 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 + af 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 + sh (short header, + kort voorblad) in + /etc/printcap. Dit kan echter wat + omslachtig zijn en gebruikers waarderen zeker de meer + gulle systeembeheerder die voorbladen gratis + maakt. + + - * Voorbladen op &postscript; printers + Voorbladen op &postscript;-printers - + Zoals hierboven beschreven, kan + LPD 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 + LPD nutteloos is. + + 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 lpr -h. + + 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: + + #!/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 + + 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: + + #!/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 + + 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 Hoe filters + werken). + + Zoals eerder is beschreven, is het in bovenstaande opzet, + hoewel deze simpel is, niet mogelijk voorbladen + te onderdrukken (de optie in + lpr). 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. + + Om gebruikers in staat te stellen per opdracht voorbladen + te onderdrukken, moet gebruik gemaakt worden van de truc + uit Voorbladen + administreren: schrijf een uitvoerfilter dat het door + LPD gegenereerde voorblad inleest en een &postscript; versie + genereert. Als de gebruiker de opdracht geeft met + lpr -h, dan genereert + LPD geen voorblad en het + uitvoerfilter ook niet. Anders leest het uitvoerfilter de + tekst van LPD in en stuurt een + geschikt voorblad in &postscript; naar de printer. + + Voor een &postscript;-printer op een seriële lijn + kan gebruik gemaakt worden van lprps, + dat met een uitvoerfilter wordt geleverd en het bovenstaande + kan doen. Voorbladen worden door psof + niet geteld. - * Printen over een netwerk + Afdrukken via het netwerk + + + printers + + netwerk + + + + afdrukken via netwerk + + + &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: + + + + 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 + LPD zodanig ingesteld dat + afdrukken vanaf andere computers in het netwerk mogelijk + is. In Printers + geïnstalleerd op andere hosts staat hoe dit + te doen. + + + + 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: + + + + Het begrijpt het LPD + protocol en kan zelfs opdrachten van andere hosts in + de wachtrij plaatsen. In dit geval werkt een printer + als een gewone host die LPD + heeft draaien. Volg de procedure in Printers + geïnstalleerd op andere hosts om een + dergelijke printer te installeren + + + + Het kan zijn dat een printer een netwerkverbinding + ondersteunt. In dit geval kan een printer worden + aangesloten 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 Printers + met netwerkinterfaces staan enkele suggesties + om zulke printers te installeren. + + + + - * Printers geïnstalleerd op externe machine's + Printers geïnstalleerd op andere hosts - + Het wachtrijsysteem LPD heeft + een ingebouwde mogelijkheid om opdrachten naar andere hosts + te sturen die ook LPD draaien (of + een systeem dat compatibel is met + LPD). 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 + LPD-protocol begrijpen. + + Om dit soort afdrukken op afstand mogelijk te maken, moet + een printer eerst op een host geïnstalleerd worden, de + printerhost, door de printerinstallatie + te volgen als beschreven in Eenvoudige + printerinstallatie. Stel desgewenst de printer in + voor geavanceerde taken volgens Geavanceerde + printerinstallatie. Test de printer en controleer + of deze werkt met eventueel speciaal ingestelde opties voor + LPD. De local + host moet geauthoriseerd zijn om de + LPD-dienst op de + remote host te gebruiken (zie Opdrachten + van printers op afstand beperken). + + + printers + + netwerk + + + afdrukken via netwerk + + Als een printer een netwerkinterface heeft die compatibel + is met LPD, dan is de + printerhost in onderstaande beschrijving + de printer zelf en de printernaam is de + naam die voor de printer is ingesteld. Meer informatie staat + in de documentatie bij de printer en/of de + printernetwerkinterface. + + + Bij een HP Laserjet voert de printernaam + text automatisch de CRLF-conversie uit. + Het is dan niet nodig het script hpif + te gebruiken. + + + Op hosts die toegang moeten krijgen tot de printer, moet + in /etc/printcap een regel worden + toegevoegd met het volgende: + + + + 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; + + + + Laat de optie lp expliciet leeg + (:lp=:); + + + + Maak een wachtrijmap aan en geef de locatie op met de + optie sd. + LPD slaat hier + afdrukopdrachten op alvorens ze naar de printerhost + te sturen; + + + + Geef de naam van de printerhost op met de optie + rm; + + + + Geef de naam van de printer op de + printerhost op met de optie + rp. + + + + Dit is het. Conversiefilters, paginadimensies, + enzovoort, hoeven niet in /etc/printcap + opgegeven te worden. + + Hier volgt een voorbeeld. De host rose + heeft twee printers: bamboo en + rattan. Gebruikers op de host + orchid krijgen toegang tot deze printers. + Hier volgt /etc/printcap voor + orchid (uit Voorbladen + afdrukken). Er stond in het bestand al een regel voor + de printer teak. Voor de twee printers op + de host rose zijn twee regels + toegevoegd: + + # +# /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: + + Op orchid moeten wachtrijmappen + worden aangemaakt: + + &prompt.root; mkdir -p /var/spool/lpd/rattan /var/spool/lpd/bamboo +&prompt.root; chmod 770 /var/spool/lpd/rattan /var/spool/lpd/bamboo +&prompt.root; chown daemon:daemon /var/spool/lpd/rattan /var/spool/lpd/bamboo + + Nu kunnen gebruikers op orchid afdrukken + op rattan en bamboo. + Een gebruiker op orchid geeft bijvoorbeeld + de volgende invoer: + + &prompt.user; lpr -P bamboo -d sushi-review.dvi + + Dan kopieert LPD op + orchid de opdracht naar de wachtrijmap + /var/spool/lpd/bamboo en ziet dat het + een DVI-opdracht is. Zodra de host rose + ruimte heeft in zijn wachtrijmap bamboo, + sturen de twee LPD's het bestand + naar rose. Het bestand wacht in de wachtrij + van rose totdat het succesvol is afgedrukt. + Het wordt geconverteerd naar &postscript; (aangezien + bamboo een &postscript;-printer is) op + rose. - * Printers met een netwerkaansluiting + Printers met netwerkinterfaces - + 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 Printers + geïnstalleerd op andere hosts wordt het voor + de duurdere beschreven. + + Het formaat van /etc/printcap 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. + + 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 netprint 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). + + #!/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]; + +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; + + 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 scrivener. Hier volgt het + tekstfilter voor de printer: + + #!/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 - * Printer gebruik limieteren + Printergebruik beperken + + + printers + + toegang beperken + + + Nu volgt informatie over het beperken van printergebruik. + Het LPD-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. - * Meerdere kopieën limieteren + Meerdere kopieën beperken - + Het LPD systeem maakt het heel + makkelijk voor gebruikers om meerdere afdrukken van een + bestand te maken. Gebruikers kunnen opdrachten afdrukken met + bijvoorbeeld lpr -#5 en krijgen dan vijf + kopieën van elk bestand in de opdracht. De + systeembeheerder kan beslissen of dit wenselijk is. + + Wanneer meerdere kopieën onwenselijk zijn, kan de + optie van &man.lpr.1; worden + uitgeschakeld door de optie sc in + /etc/printcap op te nemen. Als + gebruikers opdrachten versturen met de optie + , zien ze het volgende: + + lpr: multiple copies are not allowed + + Als het mogelijk is van andere hosts af te drukken (zie + Printers + geïnstalleerd op andere hosts), moet de optie + sc ook in + /etc/printcap van de andere hosts + aanwezig zijn. Anders kunnen gebruikers nog steeds + multi-kopie opdrachten van andere hosts sturen. + + Hier volgt een voorbeeld. Hieronder staat + /etc/printcap voor de host + rose. De printer rattan + is redelijk krachtig, dus meerdere kopieën zijn + toegestaan. De laserprinter bamboo is wat + gevoeliger, dus meerdere kopieë zijn uitgeschakeld door + de optie sc toe te voegen: + + # +# /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: + + Nu moet ook de optie sc worden + toegevoegd in /etc/printcap van host + orchid (tegelijk worden meerdere + kopieën voor de printer teak + uitgeschakeld): + + # +# /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: + + Door de optie sc te gebruiken, wordt + het gebruik van lpr -# voorkomen. + Gebruikers kunnen echter &man.lpr.1; meerdere keren + aanroepen of meerdere keren versturen in een opdracht: + + &prompt.user; lpr forsale.sign forsale.sign forsale.sign forsale.sign forsale.sign + + Er zijn vele manieren om dit misbruik te voorkomen (onder + andere door het te negeren). Dit wordt hier echter niet + beschreven. - * Toegang tot printers limieteren + Printertoegang beperken - + Door gebruik te maken van het &unix; groepmechanisme en + de optie rg in + /etc/printcap 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 rg worden + genoemd. + + Gebruikers buiten deze groep (inclusief + root) worden begroet met lpr: + Not a member of the restricted group als ze op + deze beheerde printer willen afdrukken. + + Net als met de optie sc + (suppress multiple copies: onderdruk + meerdere kopieën) moet rg, indien + wenselijk, ook op andere hosts worden opgegeven die ook + toegang hebben tot printers (zie Printers + geïnstalleerd op andere hosts). + + In het volgende voorbeeld heeft iedereen toegang tot de + printer rattan, maar alleen gebruikers in + de groep artists kunnen gebruik maken van + bamboo. Hier volgt + /etc/printcap voor de host + rose: + + # +# /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: + +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: + + De andere voorbeeldbestanden + /etc/printcap (voor de host + orchid) worden niet aangepast. Natuurlijk + kan iedereen op orchid afdrukken op + bamboo. Het kan zijn dat er sowieso alleen + bepaalde gebruikers op orchid zijn + toegestaan en dat deze gebruikers toegang mogen hebben tot de + printer. Of wellicht niet. + + + Er kan per printer slechts één groep + worden opgegeven. + - * De grootte van verstuurde opdrachten beheren + Grootte van afdrukopdrachten bepalen - + afdrukopdrachten + + 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. + + + afdrukopdrachten + + beheren + + + LPD heeft de mogelijkheid om + met de optie mx een limiet op te geven + voor het maximum aantal bytes van een bestand in een + afdrukopdracht. De eenheden worden opgegeven in + BUFSIZ 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. + + + De limiet heeft betrekking op de + bestanden in een opdracht, + niet op de totale grootte van een + opdracht. + + + LPD 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. + + Nu worden limieten voor de voorbeeldprinters + rattan en bamboo + 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: + + # +# /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: + + 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 mx ook in de + /etc/printcap van de betreffende hosts + op te geven. In Printers + geïnstalleerd op andere hosts staat meer + informatie over afdrukken op andere hosts. + + Er is een andere gespecialiseerde manier om + opdrachtgrootte voor printers op afstand te beperken (zie + Opdrachten + van printers op afstand beperken. - * Opdrachten van externe printers limieteren + Opdrachten van printers op afstand beperken - + Het wachtrijsysteem LPD + beschikt over verschillende methoden om afdrukopdrachten van + hosts op afstand te beperken: + + + + Hostbeperkingen + + + Met de bestanden + /etc/hosts.equiv en + /etc/hosts.lpd kan worden + ingesteld van welke hosts op afstand een lokale + LPD-opdracht wordt + geaccepteerd. LPD + controleert of een inkomend verzoek afkomstig is van + een host die wordt genoemd in een van deze bestanden. + Zo niet, dan weigert LPD het + verzoek. + + Het formaat van deze bestanden is eenvoudig: + één host per regel. + /etc/hosts.equiv 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. + + Als voorbeeld volgt hier + /etc/hosts.lpd voor de host + rose: + + orchid +violet +madrigal.fishbaum.de + + Dit betekent dat rose verzoeken + accepteert van de hosts orchid, + violet en + madrigal.fishbaum.de. + Voor iedere andere host die verbinding probeert te + maken met LPD op + rose, wordt de opdracht + geweigerd. + + + + + Omvangbeperkingen + + + 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 minfree 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. + + 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 minfree is + gekomen. + + Als voorbeeld wordt een bestand + minfree voor de printer + bamboo toegevoegd. In + /etc/printcap staat de juiste + wachtrijmap: + + 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: + + De wachtrijmap wordt opgegeven met de optie + sd. 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 LPD een opdracht op + afstand accepteert: + + &prompt.root; echo 6144 > /var/spool/lpd/bamboo/minfree + + + + + + Gebruikersbeperkingen + + + Met de optie rs in + /etc/printcap kan worden geregeld + welke gebruikers op afstand kunnen afdrukken op lokale + printers. Als rs voorkomt voor + een lokale printer accepteert + LPD opdrachten van hosts op + afstand als de gebruiker die de + opdracht wil plaatsen ook een account heeft met + dezelfde gebruikersnaam op de lokale host. Anders + weigert LPD de + opdracht. + + 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 + alleen gebruik mogen maken van de + printers en niet van overige diensten op de computer, + kunnen tokenaccounts worden aangemaakt, + zonder thuismap en met een nutteloze shell als + /usr/bin/false. + + + - * Accounting voor printer gebruik + Printergebruik administreren + + + administratie + + printer + + + 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? + + Het slechte nieuws is dat het wachtrijsysteem + LPD 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. + + 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 Filters. + + In het algemeen zijn er twee manieren om gebruik te + administreren: + + + + Periodiek administreren 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. + + + + Directe administratie 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. + + + + Het wachtrijsysteem LPD + 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. - * Quick and Dirty printer accounting + Kort door de bocht printeradministratie - + &os; wordt met twee programma's geleverd waarmee + periodieke administratie direct kan worden opgezet. Het zijn + het tekstfilter lpf, beschreven in lpf: een + tekstfilter en &man.pac.8;, een programma dat posten + uit administratiebestanden verzamelt en optelt. + + Zoals beschreven in de sectie over filters (Filters), roept + LPD 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 af uit + /etc/printcap. Als er geen absoluut pad + wordt opgegeven, dan is de locatie relatief aan de + wachtrijmap. + + LPD start + lpf met paginabreedte en -lengte + argumenten (afkomstig uit de opties pw en + pl). lpf + 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: + + 2.00 rose:andy +3.00 rose:kelly +3.00 orchid:mary +5.00 orchid:mary +2.00 orchid:zhang + + Aangezien lpf geen ingebouwde logica + voor bestandslocking kent, moet voor elke printer een apart + administratiebestand gebruikt worden. Twee + lpfs kunnen elkaars posten corrumperen als + ze tegelijk in hetzelfde bestand schrijven. De optie + af=acct in + /etc/printcap 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 + acct krijgen + + 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: + + 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 + + Dit zijn de argumenten die &man.pac.8; verwacht: + + + + + + + De printer waarvoor een + samenvatting moet worden gegenereerd. Deze optie werkt + alleen als er een absoluut pad is gegeven in de optie + af in + /etc/printcap. + + + + + + + + Sorteer de uitvoer op kosten, in plaats van + alfabetisch op gebruikersnaam. + + + + + + + + Negeer de hostnamen in het administratiebestand. + Met deze optie is de gebruiker + smith op host + alpha dezelfde gebruiker als + smith op host + gamma. Zonder deze optie zijn het + verschillende gebruikers. + + + + + + + + Bereken de prijs met + prijs dollar per pagina of + per voet, in plaats van de prijs uit de optie + pc in + /etc/printcap of twee cent (de + standaard). De prijs kan + worden opgegeven als een decimaal getal. + + + + + + + + Keer de sorteervolgorde om. + + + + + + + + Maak een bestand met een samenvatting van de + administratie en leeg het administratiebestand. + + + + + namen + + + + Druk de administratiegegevens alleen af voor + gebruikersnamen namen. + + + + + 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 pac -m om + de volgende samenvatting te genereren: + + 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 + + Om het verschuldigde bedrag te berekenen gebruikt + &man.pac.8 de optie pc uit + /etc/printcap (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 . De eenheden + van de optie 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: + + &prompt.root; pac -p1.50 + + Tenslotte kan met pac -s de + samenvatting worden opgeslagen in een bestand dat dezelfde + naam krijgt als het administratiebestand van de printer, maar + dan met _sum 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. - * Hoe kun je geprinte pagina's tellen? + Hoe kan het aantal afgedrukte pagina's worden + geteld? - + 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. + + 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. + + Het tekstfilter lpf + (geïntroduceerd in lpf: een + tekstfilter) 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 lpf te bestuderen. + + Hoe worden andere bestandsformaten dan verwerkt? + + Voor een DVI-naar-LaserJet, of DVI-naar-&postscript; + conversie kan het filter de diagnostische uitvoer van + dvilj of dvips bekijken + om te bepalen hoeveel pagina's er zijn geconverteerd. Voor + andere formaten kan hetzelfde worden gedaan met behulp van de + betreffende conversieprogramma's. + + 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. + + Dus, wat kan hieraan worden gedaan? + + Er is slechts één + betrouwbare manier om + nauwkeurig 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 + alleen op deze waarde te baseren. Er is + geen noodzaak om foutgevoelig regels te tellen of bestanden + te analyseren. + + Natuurlijk kan een beheerder ook vrijgevig zijn en alle + afdrukken gratis maken. - * Printers gebruiken + Printers gebruiken + + + printers + + gebruik + + + Hieronder wordt beschreven hoe printers die onder &os; + geïnstalleerd zijn gebruikt moeten worden. Nu volgt een + overzicht van de commando's op gebruikersniveau: + + + + &man.lpr.1; + + + Druk opdrachten af + + + + + &man.lpq.1; + + + Controleer printerwachtrijen + + + + + &man.lprm.1; + + + Verwijder opdrachten uit de wachtrij van een + printer + + + + + Er is ook een administratief commando, &man.lpc.8;, + beschreven in Printers + beheren, dat gebruikt wordt om printers en hun + wachtrijen in te stellen. + + Alledrie de commando's &man.lpr.1;, &man.lprm.1; en + &man.lpq.1; accepteren een optie + om aan + te geven op welke printer uit /etc/printcap + een opdracht van toepassing is. Dit biedt de mogelijkheid + opdrachten te versturen, verwijderen en controleren voor + verschillende printers. Als niet wordt + gebruikt, werken deze commando's op de printer gedefinieerd in de + omgevingsvariabele PRINTER. Tot slot, wanneer + de omgevingsvariabele PRINTER niet is + gedefinieerd, wordt standaard verwezen naar de printer met de + naam lp. - * Print opdrachten + Opdrachten afdrukken - + Om bestanden af te drukken: + + &prompt.user; lpr bestandsnaam ... + + afdrukken + + 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: + + &prompt.user; lpr /etc/host.conf /etc/hosts.equiv + + Om een specifieke printer te selecteren: + + &prompt.user; lpr -P printernaam bestandsnaam ... + + Dit voorbeeld drukt een lange opgave van de huidige + map af op de printer rattan: + + &prompt.user; ls -l | lpr -P rattan + + Omdat er geen bestanden worden meegegeven aan het commando + &man.lpr.1;, drukt lpr de gegevens af + die het van de standaard invoer leest: de uitvoer van het + commando ls -l. + + &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 Afdrukopties. - * Opdrachten controleren + Opdrachten controleren - + afdrukopdrachten + + Als &man.lpr.1; wordt gebruikt om af te drukken, dan + worden de gegevens die afdrukt moet worden in een pakketje + samengevoegd dat een afdrukopdracht wordt + genoemd en naar het wachtrijsysteem + LPD gestuurd. Elke printer heeft + een wachtrij met opdrachten van alle gebruikers. Een printer + drukt deze opdrachten op volgorde van binnenkomst af. + + De wachtrij voor de standaardprinter kan worden weergegeven + met &man.lpq.1;. Voor een specifieke printer moet de optie + meegegeven worden. Het volgende commando + toont de wachtrij van printer bamboo: + + &prompt.user; lpq -P bamboo + + Hieronder volgt een voorbeeld van de uitvoer van het + commando lpq: + + bamboo is ready and printing +Rank Owner Job Files Total Size +active kelly 9 /etc/host.conf, /etc/hosts.equiv 88 bytes +2nd kelly 10 (standard input) 1635 bytes +3rd mary 11 ... 78519 bytes + + Dit laat drie opdrachten zien in de wachtrij voor + bamboo. De eerste opdracht, gegeven door + gebruiker kelly, 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 Opdrachten verwijderen staan + meer details. + + Opdrachtnummer negen bestaat uit twee bestanden; meerdere + bestanden opgegeven naar &man.lpr.1;, worden als + één enkele opdracht behandeld. Het is de actieve + opdracht (active onder de kolom + Rank), 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 + mary. 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. + + 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 LPD denkt dat de printer + aan het doen is. + + Het commando &man.lpq.1; ondersteunt ook een optie + om een gedetailleerd, lang overzicht te + geven. Hieronder volgt voorbeelduitvoer van + lpq -l: + + 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 - * Opdrachten verwijderen + Opdrachten verwijderen - + 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. + + Om een opdracht van de standaardprinter te verwijderen + dient eerst met &man.lpq.1; het opdrachtnummer gevonden te + worden. Typ vervolgens: + + &prompt.user; lprm opdrachtnummer + + Om een opdracht van een specifieke printer te verwijderen, + moet de optie worden toegevoegd. Het + volgende commando verwijdert opdrachtnummer 10 uit de wachtrij + van printer bamboo: + + &prompt.user; lprm -P bamboo 10 + + Het commando &man.lprm.1; heeft een aantal + snelkoppelingen: + + + + lprm - + + + Verwijder alle opdrachten (voor de standaardprinter) + van de huidige gebruiker. + + + + + lprm gebruiker + + + Verwijder alle opdrachten (voor de standaardprinter) + die van gebruiker zijn. De + superuser kan opdrachten van andere gebruikers + verwijderen. Andere gebruikers kunnen alleen hun eigen + opdrachten verwijderen. + + + + + lprm + + + Zonder een opdrachtnummer, gebruikersnaam of + 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. + + + + + Gebruik de optie 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 rattan: + + &prompt.user; lprm -P rattan - + + + 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: + + &prompt.user; lpr -P rattan mijnbestand +&prompt.user; rlogin orchid +&prompt.user; lpq -P rattan +Rank Owner Job Files Total Size +active seeyan 12 ... 49123 bytes +2nd kelly 13 myfile 12 bytes +&prompt.user; lprm -P rattan 13 +rose: Permission denied +&prompt.user; logout +&prompt.user; lprm -P rattan 13 +dfA013rose dequeued +cfA013rose dequeued + + - * Voorbij platte tekst: print opties + Meer dan platte tekst: afdrukopties + + 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. - * Formaat en conversie opties + Opties voor opmaak en conversie - + 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;. + + &tex; + + Het volgende commando drukt bijvoorbeeld een DVI-bestand + af (van het &tex; typesettingsysteem) met de naam + fish-report.dvi op de printer + bamboo: + + &prompt.user; lpr -P bamboo -d fish-report.dvi + + 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. + + + Al deze opties, behalve en + , vereisen dat er conversiefilters zijn + geïnstalleerd voor een printer. De optie + vereist bijvoorbeeld de DVI + conversiefilter. In Conversiefilters + staan de details beschreven. + + + + + + + + Afdrukken van cifplot-bestanden. + + + + + + + + Afdrukken van DVI-bestanden. + + + + + + + + Afdrukken van FORTRAN tekstbestanden. + + + + + + + + Afdrukken van plotgegevens. + + + + + + + + De uitvoer wordt aantal + kolommen ingesprongen. Als + nummer wordt weggelaten, + wordt acht kolommen ingesprongen. Deze optie werkt + alleen met bepaalde conversiefilters. + + + Plaats geen spatie tussen de + en het nummer. + + + + + + + + + Drukt letterlijke tekstgegevens af, inclusief + controlkarakters. + + + + + + + + Afdrukken van ditroff (apparaat onafhankelijke + troff) gegevens. + + + + + -p + + + Opmaak van platte tekst met &man.pr.1; alvorens af + te drukken. Zie &man.pr.1; voor meer + informatie. + + + + + + + + Gebruik titel op de + &man.pr.1; koptekst in plaats van de bestandsnaam. + Deze optie heeft alleen effect in combinatie met de + optie . + + + + + + + + Afdrukken van troffgegevens. + + + + + + + + Afdrukken van rastergegevens. + + + + + In het volgende voorbeeld wordt een mooi opgemaakte + versie van de &man.ls.1; handleiding afgedrukt op de + standaardprinter: + + &prompt.user; zcat /usr/share/man/man1/ls.1.gz | troff -t -man | lpr -t + + 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 LPD wachtrij stuurt. + Omdat de optie 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. - * Opdracht afhandeling opties + Opties voor opdrachtafhandeling - + De volgende opties voor &man.lpr.1; geven + LPD aan de opdracht speciaal te + behandelen: + + + + -# kopieën + + + Produceer een aantal van + kopieën 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 + Meerdere + kopieën beperken. + + Dit voorbeeld drukt drie kopieën af van + parser.c gevolgd door drie + kopieën van parser.h op de + standaardprinter: + + &prompt.user; lpr -#3 parser.c parser.h + + + + + -m + + + Stuur een e-mail na voltooiïng van de + afdrukopdracht. Met deze optie stuurt het + LPD-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. + + + + + -s + + + Kopieer de bestanden niet naar de wachtrijmap, + maar maak in plaats hiervan een symbolische + link. + + 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 LPD niet elke byte van + de opdracht naar de wachtrijmap hoeft te + kopieëren. + + Er is echter een nadeel: aangezien + LPD het originele bestand + nodig heeft, is het niet mogelijk dit te wijzigen, of + te verwijderen totdat het is afgedrukt. + + + Bij het afdrukken op een printer in een netwerk, + moet LPD een bestand + uiteindelijk toch kopieëren van een lokale host + naar een netwerkhost. De optie + bespaart dus ruimte in een lokale wachtrijmap, niet + in die van een host in een netwerk. Het blijft + echter nuttig. + + + + + + -r + + + Verwijder bestanden in een opdracht na ze naar een + wachtrij gekopieerd te hebben of na ze te hebben + afgedrukt als de optie is gebruikt. + Wees voorzichtig met deze optie! + + + - * Voorblad opties + Voorbladopties - + 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 Voorbladen + voor meer informatie over het opzetten van voorbladen. + + + + -C tekst + + + Vervang de hostnaam op het voorblad door + tekst. De hostnaam is + gewoonlijk de naam van de host waarvan de opdracht is + verstuurd. + + + + + -J tekst + + + Vervang de naam van de opdracht op het voorblad + door tekst. De naam van de + opdracht is standaard de naam van het eerste bestand in + de opdracht of stdin als de + standaard uitvoer wordt afgedrukt. + + + + + -h + + + Druk geen voorblad af. + + + Bij sommige installaties kan het zijn dat deze + optie geen effect heeft door de manier waarop de + voorbladen worden gegenereerd. Zie Voorbladen + voor de details. + + + + - * Printers beheren + Printers beheren - + 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: + + + + Printers te starten en te stoppen; + + + + Wachtrijen aan en uit te zetten; + + + + De volgorde van opdrachten in elke wachtrij + aan te passen. + + + + Ten eerste een opmerking over terminologie: als een + printer is gestopt, drukt die niets uit + een wachtrij af. Gebruikers kunnen nog steeds opdrachten + geven, maar opdrachten wachten in een wachtrij totdat de + bijbehorende printer is gestart of als de + wachtrij vrij is. + + Als een wachtrij is uitgeschakeld, + kan geen enkele gebruiker (behalve root) + opdrachten naar een printer versturen. Een + ingeschakelde wachtrij accepteert + opdrachten. Een printer met een uitgeschakelde wachtrij kan + worden gestart en drukt dan alle + afdrukopdrachten in de wachtrij af tot deze leeg is. + + In het algemeen is het nodig + root-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. + + Nu volgt een samenvatting van de &man.lpc.8; commando's. + De meeste commando's accepteren een argument + printernaam, om aan te geven op + welke printer te werken. Om op alle printers te werken die in + /etc/printcap genoemd worden, kan + all worden gebruikt als + printernaam. + + + + abort + printernaam + + + Annuleer de huidige opdracht en stop de printer. + Gebruikers kunnen nog steeds opdrachten versturen als + de wachtrij is ingeschakeld. + + + + + clean + printernaam + + + 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 LPD. 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. + + + + + disable + printernaam + + + 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 (root) kan + altijd opdrachten versturen, ook naar een uitgeschakelde + wachtrij. + + Dit commando is handig bij het testen van een nieuwe + printer of een filterinstallatie: schakel de wachtrij uit + en verstuur als root opdrachten. + Andere gebruikers kunnen geen opdrachten versturen todat + het testen is voltooid en de wachtrij weer is + ingeschakeld met het commando + enable. + + + + + down printernaam + boodschap + + + Schakel een printer uit. Equivalent aan + disable gevolgd door + stop. De + boodschap verschijnt als de + status van de printer als een gebruiker de wachtrij van + de printer controleert met &man.lpq.1; of de status + met lpc status. + + + + + enable + printernaam + + + Schakel de wachtrij van een printer in. Gebruikers + kunnen opdrachten versturen, maar de printer drukt ze pas + af als deze is gestart. + + + + + help + commandonaam + + + Geef hulp over het commando + commandonaam. Zonder + commandonaam, wordt een + samenvatting van de beschikbare commando's + getoond. + + + + + restart + printernaam + + + Start de printer. Gewone gebruikers kunnen dit + commando gebruiken als door een uitzonderlijke + omstandigheid LPD hangt, maar + ze kunnen een printer niet starten die gestopt is met + een van de commando's stop of + down. Het commando + restart is equivalent aan + abort gevolgd door + start. + + + + + start + printernaam + + + Start de printer. De printer drukt opdrachten in + zijn wachtrij af. + + + + + stop + printernaam + + + 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. + + + + + topq printernaam + opdracht-of-gebruikersnaam + + + Herschik de wachtrij voor + printernaam door de opdrachten + met de opgegeven opdracht + nummers of opdrachten van + gebruikersnaam bovenaan de + wachtrij te plaatsen. Voor dit commando is het niet + mogelijk all te gebruiken als + printernaam. + + + + + up + printernaam + + + Schakel een printer in. Het omgekeerde van het + commando down. Equivalent aan + start gevolgd door + enable. + + + + + &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 + exit, quit of + end-of-file wordt gegeven. - * Alternatieven voor de standaard spooler + Alternatieven voor het standaard wachtrijsysteem - + Na het lezen van deze handleiding, heeft de lezer zo'n beetje + alles gelezen wat er te leren valt over het wachtrijsysteem + LPD zoals het te vinden + is in &os;. Er zijn veel tekortkomingen te onderkennen, wat + vanzelf leidt tot de vraag: Welke andere wachtrijsystemen + zijn er beschikbaar (en werken onder &os;)? + + + + LPRng + + LPRng + + + LPRng, dat LPR: the + Next Generation betekent, is een compleet + herschreven PLP. Patrick Powell en Justin Mason (de + voornaamste beheerder van PLP) hebben samengewerkt om + LPRng te maken. De thuispagina + voor LPRng is . + + + + + CUPS + + CUPS + + + CUPS, 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. + + CUPS gebruikt het Internet + Printing Protocol (IPP) als basis voor + het beheren van afdrukopdrachten en wachtrijen. De + protocollen Line Printer Daemon (LPD), + Server Message Block (SMB) en AppSocket + (ook bekend als JetDirect) worden ook ondersteund met + minder functionaliteit. CUPS biedt bladeren naar + netwerkprinters en &postscript; Printer Description + (PPD) gebaseerde afdrukopties om + real-world printing onder &unix; te ondersteunen. + + De thuispagina voor CUPS is + . + + + - * Problemen oplossen + Problemen oplossen - + Na het uitvoeren van een simpele test met &man.lptest.1; is + mogelijk een van onderstaande resultaten verkregen, in plaats + van de juiste uitvoer: + + + + Het werkte na enige tijd of er kwam geen volle + pagina. + + + 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. + + 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. + + De volgende vervanging voor het shellscript + /usr/local/libexec/if-simple drukt een + form feed nadat de opdracht naar een printer is + gestuurd: + + #!/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 + + + + + De opdracht produceerde een getrapt effect. + + + Het resultaat ziet er als volgt uit: + + !"#$%&'()*+,-./01234 + "#$%&'()*+,-./012345 + #$%&'()*+,-./0123456 + + MS-DOS + + OS/2 + + ASCII + + Dit krijgen slachtoffers van het + trap effect 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 + en ASCII code 13 (de carriage return, + CR). Veel printers gebruiken de &ms-dos;-conventie voor + het representeren van regeleinden. + + 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. + + Dit is wat &os; wil dat de printer doet: + + + + + + Printer ontvangt CR + Printer drukt CR af + + + + Printer ontvangt LF + Printer drukt CR + LF af + + + + + + Hier volgen een aantal manieren om dit te + bereiken: + + + + 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. + + + Als een systeem in een ander besturingssysteem + dan &os; wordt opgestart, kan het nodig zijn een + printer opnieuw 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. + + + + + Zorg dat het seriële line stuurprogramma van + &os; automatisch LF naar CR+LF converteert. Dit werkt + natuulijk alleen voor printers op + een seriële poort. Gebruik de optie + ms# en zet de modus + onlcr in het bestand + /etc/printcap voor de printer om + deze functionaliteit in te schakelen. + + + + Stuur een escapecode 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. + + PCL + + 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. + + #!/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 + + Nu volgt een voorbeeldbestand + /etc/printcap voor host + orchid. Er is een printer aangesloten + op de eerste parallelle poort; een HP LaserJet 3Si, + genaamd teak. Die gebruikt + bovenstaand script als tekstfilter: + + # +# /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: + + + + + + + De regels zijn over elkaar afgedrukt. + + + De printer is nooit een regel opgeschoven. Alle regels + tekst lopen over elkaar en zijn op dezelfde regel + afgedrukt. + + Dit probleem is het omgekeerde 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. + + Gebruik de instellingtoetsen, of het bedieningspaneel + van de printer om de volgende interpretatie van LF en CR af + te dwingen: + + + + + + Printer ontvangt + Printer drukt af + + + + + + CR + CR + + + + LF + CR + LF + + + + + + + + + De printer is karakters kwijt. + + + 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. + + 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: + + + + Als de printer XON/XOFF flow control ondersteunt, + zorg dan dat &os; dit gebruikt door de modus + ixon in de optie + ms# te specificeren. + + + + Als de printer carrier flow control ondersteunt, + specificeer dan de modus crtscts in + de optie ms#. Zorg dat de bedrading + van de kabel die printer met de computer verbindt juist + is voor carrier flow control. + + + + + + + Er werd onzin afgedrukt. + + + Het lijkt alsof de printer willekeurige onzin afdrukte + en niet de gewenste tekst. + + Dit is meestal een ander symptoom van verkeerde + communicatieparameters voor een seriële printer. + Controleer de bps-snelheid in de optie + br en de instelling voor partiteit in de + optie ms#. Wees er zeker van dat de + printer dezelfde instellingen gebruikt als in het bestand + /etc/printcap worden opgegeven. + + + + + Er gebeurde niets. + + + Als er niets gebeurde, ligt het probleem waarschijnlijk + bij &os; en niet bij de hardware. Voeg de optie + logboekbestand (lf) toe in + /etc/printcap voor de betreffende + printer. Hier is bijvoorbeeld de definitie voor + rattan met de optie + lf: + + rattan|line|diablo|lp|Diablo 630 Line Printer:\ + :sh:sd=/var/spool/lpd/rattan:\ + :lp=/dev/lpt0:\ + :if=/usr/local/libexec/if-simple:\ + :lf=/var/log/rattan.log + + Probeer vervolgens nogmaals af te drukken. Controleer + het logboekbestand (in dit voorbeeld + /var/log/rattan.log) op mogelijke + foutmeldingen. Probeer op basis van deze melding het + probleem te verhelpen. + + Aks er geen optie lf is opgegeven, + gebruikt LPD + /dev/console als standaard. + + + - @@ -4160,15 +4160,15 @@ options IPSEC_ESP 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. + beschreven hoe dat met racoon gaat. racoon is in de &os; + Portscollectie beschikbaar vanuit security/ipsec-tools. racoon - security/racoon moet - draaien op beide gateway hosts. Op iedere host moet het - IP adres van de andere kant van het VPN + Racoon moet draaien op beide + gateway hosts. Op iedere host moet het + IP-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). @@ -4513,7 +4513,7 @@ options IPSEC_ESP Installeer security/racoon. Wijzig + role="package">security/ipsec-tools. Wijzig ${PREFIX}/etc/racoon/psk.txt op beide gateway hosts en voeg een regel toe voor het IP 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 --> @@ -1297,10 +1297,11 @@ EndSection XDM 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 - xdm-config niet is aangepast om - verbindingen te accepteren is dat geen probleem. + verbindingen met andere machines bestuurt. Het wordt + genegeerd, tenzij xdm-config is + gewijzigd zodat er wordt geluisterd naar inkomende + verbindingen. Standaard wordt het clients niet toegestaan te + verbinden.