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

1. Hvad betyder client-error-bad-request?
2. Og client-error-not-possible?
3. Hvad med client-error-not-found?
1.

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.

2.

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)

3.

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

1. Hvorfor kan jeg ikke genstarte mine job?
2. Hvordan slipper jeg af med den lange liste af færdige job i netgrænsefladen?
3. Hvordan virker sidekontering?
4. Hvorfor virker sidekontering ikke for Windows-klienter?
5. Hvordan får jeg en liste af tilgængelige tilvalg for en given printer eller PPD-fil?
6. Hvordan læser jeg listen der modtages fra lpoptions-kommandoen?
7. Hvordan får jeg en pænt formateret liste af tilgængelige tilvalg for en given printer eller PPD?
1.

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.

2.

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

TODO

3.

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 “” tælles altid som størrelse på 1 side (og måske flere kopier).

Derfor er sidekonteringen i CUPSkun” 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!

4.

Hvorfor virker sidekontering ikke for Windows®-klienter?

Fra Windows®-klienter skal jobbene næsten altid sendes som “”. 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”.

5.

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 CUPSprintersøgnings”egenskaben), 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.

6.

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
7.

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.

1. Min printer der hedder 3-lp-duplex opfører sig mærkeligt. Hvad er der galt?
2. Hvorfor får jeg en Unable to connect to SAMBA host: Success med mine printershares fra Windows med adgang via Samba?
3. 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?
1.

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).

2.

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?

3.

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).