# &CUPS;-valgmuligheder der for øjeblikket ikke er tilgængelige gennem &kcontrol;

Dette kapitel giver dig nogle vink om yderligere indstillingsmuligheder som muligvis ikke er tilgængelige gennem &kdeprint;'s &GUI;-grænseflade til &CUPS;.

## Overblik over egenskaberne

Alle de mest ofte brugte egenskaber og funktioner &CUPS; har er understøttede i &kdeprint;.

- Printerhåndtering er understøttet: tilføj, fjern, ændr, indstil, test, deaktivér, aktivér ...

- Job-håndtering er understøttet: annullér, hold, slip fri, flyt til anden printer

- Udskriftstilvalg: for fuld kontrol som giver af &CUPS;.

## Hvor findes hjælp med brug af &CUPS;

En masse information om de indre funktioner i &CUPS; er tilgængelige gennem net-grænsefladen som &CUPS; altid vil understøttet. Den virker med en vilkårlig browser (ja, selv tekst-baserede). Gå blot til http://localhost:631/ til en begyndelse. Der finder du et link til den lokalt tilgængelige &CUPS;-dokumentation i HTML og PDF hvis du er ny bruger af &CUPS;.

&CUPS; er tilgængelig gennem andre metoder end &kdeprint;: kommandolinje og browser er to indfødte &CUPS;-grænseflader. De mange kommandolinje-redskaber giver i alt den mest fuldstændige kontrol der findes for &CUPS;. www-grænsefladen er kun en delmængde af alle tilgængelige indstillings eller kontrolmuligheder.

Dette er også sandt for &kdeprint;. Generelt, når &CUPS; udvikles, vil de fleste egenskaber først blive implementeret gennem kommandolinjen. Sørg for at tjekke de seneste versioner af man-sider for &CUPS; for at være opdateret med nye egenskaber efter du installerer en ny udgave.

Afhængig af din opdateringsmetode for &CUPS;, er din aktive indstillingsfil muligvis ikke blevet erstattet af en ny; så din nye, mere ydedygtige &CUPS;-dæmon er måske ikke blevet fortalt af den gamle indstillingsfil om de nye egenskaber der kan bruges.

En fuldstændig liste af tilgængelige filer og man-sider skulle altid være i &CUPS;'s "Software Administrator Manual" (http://localhost:631/sam.html#FILES. Skriv følgende i &konqueror; &URL;/stedfelt `man:/lpadmin` og `man:/cupsd.conf` for at finde ud af de vigtigste kommando- og indstillingsfiler. Du kendte allerede til &konqueror;'s behagelige måde at vise dig de traditionelle &UNIX; man-sider gjorde du ikke? Læs dette. Derfra vil du finde flere interessante vink og link til andre man-sider og dokumentation.

### Hvordan findes &CUPS;-relaterede man-sider

Her er en måde at finde ud af hvilke &CUPS;-relaterede man-sider der er på dit system:

    kurt@transmeta:~
    > apropos cups

    cups-calibrate (8)- ESP Printerkalibreringsværktøj
    lpstat (1)        - udskriv cups statusinformation
    cups-lpd (8)      - modtag udskriftsjobs + rapportér printerstatus til lpd-klienter
    classes.conf (5)  - klasse-indstillingsfil for cups
    backend (1)       - cups-program transmissionsgrænseflader
    filter (1)        - cups filkonverteringsfilter-grænseflader
    cups-polld (8)    - cups printer-trækdæmon
    mime.types (5)    - mimetype beskrivelsesfil for cups
    cupsd (8)         - common unix printing system daemon
    lpadmin (8)       - indstil cups-printere og klasser
    cupsd.conf (5)    - server indstillingsfil for cups
    mime.convs (5)    - mimetype konverteringsfil for cups
    printers.conf (5) - printerindstillingsfil for cups
    mime.convs (5)    - mimetype konverteringsfil for cups
    cups-polld (8)    - cups printer trækdæmon

## Udenfor &kdeprint;: Vink & Tips og Tricks med &CUPS; på kommandolinjen

Her er nogle få eksempler på tilvalg der for øjeblikket kun er tilgængelige hvis du bruger kommandolinjen.

### Tillad eller nægt printeradgang for visse brugere

Når en printer installeres (eller ændres) gennem kommandolinjen, kan du enten nægte eller tillade brugen af denne printer for bestemte brugere:

    lpadmin -pHeidelbergDigimaster9110 -v lpd:/10.160.16.99/mqueue -u allow:kurt,sylvi,hansjoerg -E -P /home/kurt/PPDs/DVHV.ppd

vil kun tillade brugen af denne (du kan stole på mig: meget gode og også meget professionelle) printer til de fem nævnte brugere og samtidig nægte adgang for alle andre. Hvis en anden bruger ønsker at udskrive på denne DigiMaster via denne &CUPS;-server, vil han modtage en fejlbesked nogenlunde sådan her client-error-not-possible.

    lpadmin -p HeidelbergDigimaster9110 -v lpd:/10.160.16.99/mqueue -u deny:tackat,boss,waba -E -P /home/kurt/PPDs/DVHV.ppd

vil nægte brugen af denne samme printer til de tre nævnte brugere og samtidig tillade brugen for alle andre. Hvis nægtede brugere ønsker at udskrive på denne DigiMaster via denne &CUPS;-server, vil de modtage en fejlbesked der siger client-error-not-possible.

Kun en af de to muligheder kan bruges på en gang; for øjeblikket er der ingen støtte for at have en lignende valgmulighed pø en pr-gruppe baseret måde. Dette vil blive implementeret i fremtiden.

### Sætning af kvotaer for visse printere

Sommetider ønsker du at sætte kvotaer for visse printere. Med kvotaer kan du sætte øvre grænser for antallet af sider eller mængden af data der kan udskrives over en vis periode til en bestemt printer.

Kvotaer kan sættes med `-o` flaget når en printer installeres, med `lpadmin`-kommandoen eller senere for en allerede eksisterende printer. Følgende er nogle retningslinjer (som mangler i den officielle &CUPS; dokumentation på det tidspunkt dette skrives):

- Med &CUPS; kan du have sidetæller- og filstørrelses-baserede kvotaer for individuelle printere.

- Kvotaer beregnes for hver bruger individuelt (så et enkelt sæt grænser anvendes på alle brugere for den printer det drejer sig om).

- Kvotaer inkluderer bannersider (hvis disse bruges).

- Dette betyder: du kan begrænse hver bruger til 20 sider pr dag på en dyr printer, men du kan ikke begrænse hver bruger undtagen `Erik` eller `root`.

- Der er `job-k-limit`, `job-page-limit` og `job-quota-period`-tilvalg at give når en printer sættes op.

- `job-quota-period` sætter et tidsinterval for kvotaberegning (intervaller bestemmes i sekunder; så en dag er 60x60x24=86.400, en uge er 60x60x24x7=604.800 og en måned er 60x60x24x30=2.592.000 sekunder.)

- For at kvotaer kan blive gennemtvunget må tidsperioden plus mindst en job-grænse sættes til ikke at være nul.

- Standardværdien på 0 for `job-k-limit` angiver at der ingen grænse er.

- Standardværdien på 0 for `job-page-limit` angiver at der ingen grænse er.

- Standardværdien på 0 for `job-quota-limit` angiver at grænserne anvendes på alle job der er blevet udskrevet af en bruger der stadig er kendt på systemet.

#### Fungerende eksempler:

Virker da både tidsperiode og en eller begge job-grænser er definerede

    lpadmin -p danka_infotec_4850 -o job-quota-period=604800 -o job-k-limit=1024

Dette sætter en grænse for filstørrelsen 1 MB (i alt) for hver bruger af den eksisterende printer `danka_infotec_4850` for en uge.

    lpadmin p danka_infotec_4105 -o job-quota-period=604800 -o job-page-limit=100

Dette sætter en grænse på 100 sider (i alt) for hver bruger af den eksisterende printer `danka_infotec_4105` for en uge.

    lpadmin -p danka_infotec_P450 -o job-quota-period=604800 -o job-k-limit=1024 -o job-page-limit=100

Dette sætter en kombineret grænse på 1 MB (i alt) og 100 sider (i alt) for hver bruger af den eksisterende `danka_infotec_P450` for en uge. Den grænse først nås vil få virkning.

#### Ikke fungerende eksempler

Virker IKKE da kun én, tidsperiode eller jobgrænse er defineret)

    lpadmin -p danka_infotec_P320 -o job-quota-period=604800

    lpadmin -p danka_infotec_FullColor -o job-page-limit=100

    lpadmin -p danka_infotec_HiSpeed -o job-k-limit=1024

#### Relaterede fejlmeddelelser

Når en bruger når sin kvotagrænse, vil han få en client-error-not-possible besked, hvis han ønsker at udskrive.

### Installering af en rå printer

Der er forskellige måder at definere en rå printer. En komfortabel måde er at bruge `lpadmin`-kommandoen. Definér blot ikke en &PPD;-fil til at bruge for denne printer, så vil den være en rå:

    lpadmin -p Raw_Danka_infotec -E -v lpd://10.160.16.137/PORT1

Rå printerkøer er dem der ikke berører udskriftsfilen for at lave den om til et andet filformat. Du har for eksempel brug for dette når du udskriver fra &Windows;-klienter via Samba gennem en &CUPS;-server til en PCL-printer: i dette tilfælde vil &Windows;-sidens printerdriver generere den færdige udskriftsfil for mål-printeren og filtrering gennem &CUPS;-filtre ville kun gøre skade. Under visse omstændigheder (hvis du ønsker at sikre dig at filen går til printeren ufiltreret af &CUPS;) så er `lpadmin` uden en &PPD; meget nyttig.

## Problemløsning af &CUPS; i &kdeprint;

Dette afsnit af &kdeprint;-håndbogen vil leve af læsernes tilbagemeldinger. Her er blot en lille begyndelse.

### Fejlmeddelelser

Hvad betyder client-error-bad-request?

Brugeren sendte en fil til &CUPS; som serveren ikke kunne behandle. Du får også dette når du sender en tom fil.

Og client-error-not-possible?

Brugeren har enten ikke lov til at udskrive på en bestemt printer eller har overskredet sin kvota (baseret på filstørrelse og/eller sideantal)

Hvad med client-error-not-found?

Brugeren forsøgte at få adgang til en ikke eksisterende ressource på &CUPS;-serveren, såsom at forsøge at udskrive en ikke eksisterende fil, eller en som du ikke har lov til at læse.

### Spørgsmål og svar

Hvorfor kan jeg ikke genstarte mine job?

For at kunne genstarte din færdige job fra netgrænsefladen, har du brug for indstillingen i `/etc/cups/cupsd.conf` file: set `PreserveJobFiles True`.

Hvordan slipper jeg af med den lange liste af færdige job i netgrænsefladen?

TODO

Hvordan virker sidekontering?

&CUPS; laver udskriftskontering ved at sende næsten hvert job gennem pstops-filteret. Dette laver, blandt andet, sidekonteringen. Uddata fra dette filter kan videreledes gennem andre filtre (såsom pstoraster --> rastertopcl) eller sendes direkte til printeren (hvis det er en &PostScript;-printer).

Under alle omstændigheder virker dette på samme måde for netværks-, parallelle-, serielle eller USB-printere. For at pstops skal kunne virke behøver den DSC-, (Document Structuring Convention) kompatibel &PostScript; (eller næsten-ækvivalent) som inddata. Så den beregner siderne under filtreringen på udskriftsserveren og skriver info om hver enkelt side (hvilket tidspunkt, hvilken bruger, hvilket job-ID og -name, hvilken printer, hvor mange kopier af hvilke sider af dokumentet, hvor mange kilobyte?) til `/var/log/cups/page_log`.

For resten: på min personlige ønskeliste er et hak af webalizer til at læse og analysere page_log og give lignende uddata. Er der nogen hjemme?

Den giver imidlertid ikke rigtige resultater i følgende tilfælde:

- Printeren låser fast og vil derfor smide jobbet væk (rigtig levende erfaring; eller måske smides jobbet væk på grund af problemer med dataformater)

- Job udskrevet som rå tælles altid som størrelse på 1 side (og måske flere kopier).

Derfor er sidekonteringen i &CUPS; kun en approksimation (i mange tilfælde en glimrende eller i det mindste god en, i andre rigtig dårlig). Den eneste troværdige udskriftstæller er den der gøres af den indre printertæller. (For det er den du betaler for, hvis du er på en click price eller lignende.) Nogle, men ganske få, printere kan spørges eksternt om denne information via SNMP (Simple Network Management Protocol). Dette betyder, i et større netværk med mange forskellige printere at der er blot ikke noget fuldstændigt troværdigt og præcist sidekonteringsværktøj!

Hvorfor virker sidekontering ikke for &Windows;-klienter?

Fra &Windows;-klienter skal jobbene næsten altid sendes som rå. Hvorfor? Hvis &CUPS; virker som en udskriftsserver for &Windows;-klienter der bruger den oprindelige indfødte &Windows;-driver måludskriftsenheden, hvilket garanterer den rigtige formatering af jobbet på klienterne allerede; derfor skal serveren ikke røre den men udskrive råt; derfor startes ingen filtrering (dette er end ikke muligt da inddata fra klienterne ikke er &PostScript; som pstops forventer; derfor er der ingen sideoptælling udover en standard på 1.

Hvordan får jeg en liste af tilgængelige tilvalg for en given printer eller &PPD;-fil?

Se man-siden for `lpoptions`-kommandoen. Du kan undersøge en &CUPS;-aktiveret felt for ethvert tilvalg for dens tilgængelige printere. Der er ikke behov for at have printeren installeret lokalt. Når blot printer er tilgængelig lokalt (gennem &CUPS; printersøgningsegenskaben), vil den også virke eksternt.

For at spørge om en printers valgmuligheder skrives ``lpoptions` `-p` `HitachiDDP70MicroPress` `-l`` hvilket vil give en lang liste af alle tilgængelige valg som læst fra &PPD;-filen for den givne Hitachi-Printer (i mit tilfælde installeret på den eksterne server transmeta). Den eksterne server `Transmeta` og dens &CUPS; dæmon så vel som localhosts &CUPS; dæmon skal være oppe og køre for at dette skal lykkes.

Hvordan læser jeg listen der modtages fra `lpoptions`-kommandoen?

Du ved at for fabrikanter af &PostScript;-printere er det lovligt at definere deres egne indre navne og procedurer selv for standard &PostScript;-tilvalg. Når blot driveren kan hente tilvalget fra &PPD;'en og vise den til brugeren på en måde han forstår er alting o.k.. Men hvad gør du hvis du ønsker at bruge et eller andet sjældent printer-tilvalg på kommandolinjen? Hvordan finder du ud af dens nøjagtige syntaks?

Lad os tage et eksempel. Lad os kigge på Hitachi's DDP70 printer og hvordan den implementerer duplex-udskrift er på en eller anden måde afslørende. Hvordan finder du ud af at udskrive på begge sider? duplex eller Duplex? Eller et helt andet navn?.

    lpoptions -h transmeta -p Hitachi_DDP70_ClusterPrintingSystem -l | grep uplex

Dette fører til følgende uddata

    TR-Duplex/Duplex: False *True

Dette skal fortolkes som følger:

- Navnet på det undersøgte tilvalg er `TR-Duplex`;

- Bagved skråstregen ser du oversættelsen af tilvalget, som det vil blive vist i en &GUI;- eller www-grænseflade (Duplex);

- Tilvalget kan tage en af de to værdier `False` eller `True`;

- Den nuværende indstilling er `True` hvilket genkendes ved markeringen med en stjerne `*`.

For at sætte den aktuelle standardindstilling ud af kraft (duplex) og udskrive et job i simplex, skal du bruge følgende kommando:

    lpr -P Hitachi_DDP70_ClusterPrintingSystem -o TR-Duplex=False /path/to/your/printjob

Hvordan får jeg en pænt formateret liste af tilgængelige tilvalg for en given printer eller &PPD;?

Brug `lphelp`-kommandoen som måske er installeret lokalt på dit system. Der er endnu ikke en man-side for `lphelp`.

    lphelp infotecP450

Dette giver en liste af tilgængelige tilvalg for den nævnte printer. Den er pænt formateret og forklarer hvert tilgængeligt tilvalg og hvordan det skal bruges. Du kan spørge til forskellige printeres tilvalg på én gang:

    lphelp infotec7410color DANKA_fullcolor_D2000 HP_ColorLaserJet8550

Dette virker også for &PPD;-filer. Angiv blot stien til &PPD;'en:

    lphelp /home/kurt/PPDs/HP-ColorLaserJet8550.ppd

### Løsning af problemer

Intet system er perfekt. Her er nogle almindeligt sete fælder folk er faldet i.

Min printer der hedder 3-lp-duplex opfører sig mærkeligt. Hvad er der galt?

Printernavne brugt i &CUPS; skal starte med et bogstav og kan indeholde op til 128 bogstaver, tal eller understregninger. Brug af bindestreg kan føre til problemer. Nu vi taler om navngivning: printernavne i &CUPS; er ikke versalfølsomme. Så en printer der hedder `Best_of_Danka` vil være den samme som `best_of_danka` eller `BEST_OF_DANKA`. (Dette er et krav fra &IPP;, som &CUPS; er fuldstændig kompatibel med).

Hvorfor får jeg en Unable to connect to SAMBA host: Success med mine printershares fra &Windows; med adgang via Samba?

Er rettighederne på den eksterne &Windows;-felt sat rigtigt for dig? Har du rent faktisk lov til at udskrive på den &Windows;-delte printer?

Mine filer for printeren `lp` forsvinder sommetider mystisk og to dage senere får jeg at vide at de blev udskrevet på en printer tre etager under mit kontor. Hvad foregår der?

Tro mig, det er højst usandsynligt at din printer er den eneste med navnet `lp`. Måske leger &CUPS; med dig. Da du måske har indstillingen ImplicitClasses On aktiveret, prøver &CUPS; at putte alle printere den ser på netværket ind i en Klasse der hedder lp. Alle job beregnet for lp bliver sendt til denne klasse og det først tilgængelige medlem udskriver den. Så hvis der var denne rare fyr (som lyttede opmærksomt da du roste &CUPS; og &kdeprint; til skyerne) der installerede &CUPS; og rodede rundt i system...er du med?

Modtag mit råd: vælg et entydigt navn for en vilkårlig netværksprinter! (Husk, den på din parallelle port vil også vise sig at være en netværksprinter for resten af verden hvis du ikke passer på med din opsætning).