# &CUPS; inställningar för närvarande inte tillgängliga via &kcontrol;

Det här kapitlet ger dig några tips om ytterligare inställningsmöjligheter som kanske inte är tillgängliga via &kdeprint;s grafiska gränssnitt för &CUPS;.

## Översikt över funktioner som tillhandahålls

Alla de oftast använda funktionerna som &CUPS; tillhandahåller stöds av &kdeprint;.

- Skrivarhantering stöds: lägga till, ta bort, ändra, anpassa, testa, inaktivera, aktivera ...

- Jobbhantering stöds: avbryta, stanna, återstarta, flytta till annan skrivare

- Utskriftsalternativ: för full styrning enligt &CUPS;.

## Var man hittar hjälp när &CUPS; används

Mycket information om de interna funktionerna i &CUPS; är tillgänglig genom webbgränssnittet, som &CUPS; alltid kommer att stödja. Det fungerar med alla webbläsare (ja, till och med textbaserade). Gå bara till http://localhost:631/ från början. Här hittar du en länk till lokalt tillgänglig &CUPS;-dokumentation med HTML och PDF om &CUPS; är nytt för dig.

&CUPS; är tillgängligt på andra sätt än genom &kdeprint;: kommandoraden och webbgränssnittet är två inbyggda &CUPS;-gränssnitt. De många kommandoradsverktygen ger sammantaget störst kontroll över &CUPS;. Webbgränssnittet är bara en delmängd av de tillgängliga alternativen för inställning eller styrning.

Det här är också sant för &kdeprint;. I allmänhet, allteftersom &CUPS; utvecklas, implementeras de flesta nya funktioner genom kommandoraden. Försäkra dig om att du kontrollerar de senaste versionerna av manualsidorna för &CUPS; för att vara uppdaterad med nya funktioner efter installation av en ny version.

Beroende på metoden du använder för att uppdatera &CUPS;, kanske din aktiva konfigurationsfil inte har bytts ut mot en ny. Därför kanske inte den nya, mer kapabla &CUPS;-demonen kanske inte har fått reda på de nya funktionerna som ska användas från den gamla konfigurationsfilen.

En fullständig lista på tillgängliga filer och manualsidor ska alltid finnas i &CUPS; handbok för programvaruadministration (http://localhost:631/sam.html#FILES). Skriv `man:/lpadmin` och `man:/cupsd.conf` i &konqueror;s platsrad för att få reda på mer om det viktigaste kommandot och konfigurationsfilen. Du kände väl redan till &konqueror;s utmärkta möjlighet att visa de traditionella &UNIX; manualsidorna, eller hur? Läs det här. Härifrån kan du gå till mer intressanta tips och länkar till andra manualsidor och dokumentation.

### Hur man hittar manualsidor som hör till &CUPS;

Här är ett sätt att ta reda på vilka manualsidor som hör till &CUPS; som finns på systemet:

    kurt@transmeta:~
    > apropos cups

    cups-calibrate (8)- ESP Printer Calibration Tool
    lpstat (1)        - print cups status information
    cups-lpd (8)      - receive print jobs + report printer status to lpd clients
    classes.conf (5)  - class configuration file for cups
    backend (1)       - cups backend transmission interfaces
    filter (1)        - cups file conversion filter interfaces
    cups-polld (8)    - cups printer polling daemon
    mime.types (5)    - mime type description file for cups
    cupsd (8)         - common unix printing system daemon
    lpadmin (8)       - configure cups printers and classes
    cupsd.conf (5)    - server configuration file for cups
    mime.convs (5)    - mime type conversion file for cups
    printers.conf (5) - printer configuration file for cups
    mime.convs (5)    - mime type conversion file for cups
    cups-polld (8)    - cups printer polling daemon
    lpstat (1)        - print cups status information
    backend (1)       - cups backend transmission interfaces
    mime.types (5)    - mime type description file for cups
    cupsd (8)         - common unix printing system daemon
    lpadmin (8)       - configure cups printers and classes
    printers.conf (5) - printer configuration file for cups
    cupsd.conf (5)    - server configuration file for cups
    filter (1)        - cups file conversion filter interfaces

## Utanför &kdeprint;: Tips & trick med &CUPS; på kommandoraden

Här är några exempel på alternativ som för närvarande bara är tillgängliga om du använder kommandoraden.

### Tillåta eller neka åtkomst till skrivare för vissa användare

När du installerar (eller ändrar) en skrivare via kommandoraden, kan du antingen neka eller tillåta användning av skrivaren för vissa användare:

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

tillåter användning av den här (tro mig: utmärkta och professionella) skrivaren bara för de tre nämnda användarna, och nekar på samma gång alla andra att använda den. Om en annan användare vill skriva ut på DigiMastern via den här &CUPS;-servern, får han ett felmeddelande som lyder ungefär som 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

nekar användning av samma skrivare för de tre nämnda användarna, och tillåter på samma gång alla andra att använda den. Om en nekad användare vill skriva ut på DigiMastern via den här &CUPS;-servern, får han ett felmeddelande som lyder ungefär som client-error-not-possible.

Bara en av de två alternativen kan användas samtidigt, för närvarande finns det inget stöd för ett liknande alternativ baserat på varje grupp. Det här kommer att implementeras i framtiden.

### Att tillämpa kvotering för vissa skrivare

Ibland vill du tillämpa kvotering för vissa skrivare. Med kvotering kan du ange övre gränser för antalet sidor eller mängden data som ska skrivas ut under en viss tid för en viss skrivare.

Kvotering kan ställas in med väljaren `-o` när en skrivare installeras med kommandot `lpadmin`, eller senare för en redan befintlig skrivare. Det som följer är några hållpunkter (som saknas i den officiella &CUPS;-dokumentationen när det här skrivs):

- För &CUPS; kan du ha kvotering baserad på sidantal och filstorlek för enskilda skrivare.

- Kvoter beräknas separat för varje användare (så en uppsättning med gränser gäller för alla användare med den aktuella skrivaren).

- Kvoter innefattar försättsblad (om de används).

- Det här betyder att du kan begränsa varje användare till 20 sidor per dag på en dyr skrivare, men du kan inte begränsa alla användare utom `Kurt` eller `root`.

- Alternativen `job-k-limit`, `job-page-limit`, och `job-quota-period` kan anges när en skrivare ställs in.

- `job-quota-period` ställer in tidsintervallet för beräkning av kvoter (intervall beräknas i sekunder, så en dag är 60x60x24=86.400, en vecka är 60x60x24x7=604.800, och en månad är 60x60x24x30=2.592.000 sekunder.)

- För att kvotering ska gälla, måste tidsperioden och minst en jobbgräns anges skilda från noll.

- Normalvärdet 0 för `job-k-limit` anger att det inte finns någon gräns.

- Normalvärdet 0 för `job-page-limit` anger att det inte finns någon gräns.

- Normalvärdet 0 för `job-quota-period` anger att gränserna gäller för alla jobb som har skrivits ut av en användare, och fortfarande är kända av systemet.

#### Fungerade exempel:

Fungerar, eftersom tidsperiod och en eller båda jobbgränserna anges

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

Det här anger en gräns på 1 Mibyte för filstorleken (totalt) för varje användare av den befintliga skrivaren `danka_infotec_4850` under en vecka.

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

Det här anger en gräns på 100 sidor (totalt) för varje användare av den befintliga skrivaren `danka_infotec_4105` under en vecka.

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

Det här anger en kombinerad gräns på 1 Mibyte (totalt) och 100 sidor (totalt) för varje användare av den befintliga skrivaren `danka_infotec_P450` under en vecka. Den gräns som nås först gäller.

#### Exempel som inte fungerar

fungerar INTE, eftersom bara en, tidsperiod eller jobbgräns anges

    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

#### Motsvarande felmeddelanden

När en användare når sin kvoteringsgräns får han meddelandet client-error-not-possible, när han vill skriva ut.

### Att installera en obehandlad skrivare

Det finns olika sätt att definiera en obehandlad skrivare. Ett bekvämt sätt är att använda kommandot `lpadmin`. Bara låt bli att definiera en &PPD;-fil att använda för skrivaren och den blir då en obehandlad skrivare:

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

Obehandlade skrivarköer är de som inte rör utskriftsfilen för att omvandla den till ett annat filformat. Du behöver till exempel det här för utskrift från &Windows;-klienter via Samba genom en &CUPS;-server till en PCL-skrivare. I detta fall skapar &Windows; utskriftsdrivrutinen det färdiga utskriftsformatet för målskrivaren och filtrering genom &CUPS;-filter skulle bara göra skada. Under vissa omständigheter (om du vill vara säker på att filen skickas ofiltrerad till skrivaren från &CUPS;) passar kommandot `lpadmin` utan en &PPD; bra.

## Felsökning av &CUPS; i &kdeprint;

Det här avsnittet i &kdeprint;s handbok kommer att växa med läsarnas återmatning. Det här är bara påbörjat.

### Felmeddelanden

Vad betyder felmeddelandet client-error-bad-request?

Användaren skickade en fil till &CUPS; som servern inte kunde behandla. Du får det också om du skickar en tom fil.

Och client-error-not-possible?

Användaren får antingen inte skriva ut på en viss skrivare eller har nått sin kvot (baserad på filstorlek och/eller antal sidor)

Vad gäller för client-error-not-found?

Användaren försökte komma åt en resurs som inte finns på &CUPS; servern, som att skriva ut en fil som inte finns, eller en som du inte har behörighet att läsa.

### Vanliga frågor

Varför kan jag inte starta om mina jobb?

För att kunna starta om dina avslutade jobb från webbgränssnittet, behövs en inställning i filen `/etc/cups/cupsd.conf`: skriv in `PreserveJobFiles True`.

Hur blir jag av med den långa listan av färdiga jobb i webbgränssnittet?

Att göra.

Hur fungerar sidbokföring?

&CUPS; gör sidbokföring genom att skicka nästan alla jobb genom filtret pstops. Detta utför, bland annat, räkning av sidor. Utmatning från det här filtret kan skickas vidare till andra filter (som pstoraster --> rastertopcl) eller skickas direkt till skrivaren (om den är en &PostScript;-skrivare).

Hur som helst, så fungerar det här på samma sätt för nätverks-, parallell-, serie- eller USB-skrivare. För att pstops ska fungera, behöver det &PostScript; som följer (eller nästan följer) Document Structuring Conventions (DSC, dokumentstrukturkonventioner) som indata. Det beräknar alltså sidorna under filtrering på utskriftsservern och skriver information om varenda enskild sida (vilken tid, vilken användare, vilket jobb-ID och namn, vilken skrivare, hur många kopior av olika sidor i dokumentet, hur många Kibyte) till `/var/log/cups/page_log`.

Förresten: på min personliga önskelista finns ett hack av webalizer för att läsa och analysera page_log och ge liknande utmatning. Någon?

Det ger dock inte riktiga resultat i följande fall:

- Pappret fastnar i skrivare och kanske slängs därför jobbet (verklig erfarenhet, eller kanske slängs jobbet på grund av problem med dataformatet)

- Jobb som skrivs ut som obehandlade räknas alltid med en storlek på en sida (och kanske flera kopior).

Därför är sidbokföringen i &CUPS; bara ungefärlig (i många fall utmärkt eller minst lika bra, i andra fall ganska dålig). Den enda säkra räkningen är den som görs av skrivarens interna räknare (eftersom det är den du betalar för, om du använder betala per sida eller liknande). Vissa skrivare, men långt ifrån de flesta, kan tillfrågas om den här informationen via SNMP (Simple Network Management Protocol). Det här betyder att i större nätverk med många olika skrivare finns det helt enkelt inget helt tillförlitligt och noggrant verktyg för sidbokföring!

Varför fungerar inte sidbokföring med &Windows;-klienter?

Jobb från &Windows;-klienter måste nästan alltid skickas som obehandlade. Varför? Om &CUPS; fungerar som utskriftsserver för &Windows;-klienter som använder den egna ursprungliga &Windows;-drivrutinen för målskrivarenheten, garanteras den riktiga formateringen av jobbet redan på klienten. Därför får inte servern röra det utan måste skriva obehandlat. Ingen filtrering görs därför (och det är inte ens möjligt, eftersom indata från klienten inte är &PostScript; som pstops förväntar sig), alltså blir det ingen sidräkning annat än det förvalda värdet 1.

Hur får jag en lista på alla tillgängliga alternativ för en viss skrivare eller &PPD;-fil?

Se manualsidan för kommandot `lpoptions`. Du kan undersöka alla alternativ i de tillgängliga skrivarna för en dator med &CUPS;. Det är inte nödvändigt att skrivaren är installerad lokalt, om bara skrivaren är lokalt tillgänglig (genom funktionen med skrivarbläddring i &CUPS;), fungerar det också med fjärrskrivare.

Att fråga efter en skrivares alternativ genom att skriva in ``lpoptions` `-p` `HitachiDDP70MicroPress` `-l`` ger en lång lista på alla tillgängliga alternativ som läses från &PPD;-filen för den angivna Hitachi-skrivaren (i mitt fall installerad på fjärrservern Transmeta). Fjärrservern `Transmeta` och dess &CUPS;-demon samt den lokala &CUPS;-demonen måste vara igång för att det här ska lyckas.

Hur tolkar jag listan som hämtas med kommandot `lpoptions`?

Du vet väl att det är lagligt för tillverkare av &PostScript;-skrivare att definiera sina egna interna namn och procedurer till och med för &PostScript; standardalternativ. Om bara drivrutinen kan hämta alternativet från &PPD;:n och visa det för användaren så att han förstår det, är allt Ok. Men vad ska du göra, om du vill använda något obskyrt skrivaralternativ på kommandoraden? Hur tar man reda på dess exakta syntax?

Låt oss ta ett exempel. Att titta på Hitachis DDP70-skrivare och hur den implementerar dubbelsidig utskrift är ganska upplysande. Hur kan du ange dubbelsidig utskrift? duplex eller Duplex? Eller något helt annat?

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

Det här ger utmatningen

    TR-Duplex/Duplex: False *True

Det här ska tolkas som följer:

- Namnet på det efterfrågade alternativet är `TR-Duplex`:

- Efter snedstrecket ser du översättningen av alternativet, som det visas i ett grafiskt gränssnitt eller webbgränssnitt (Duplex):

- Alternativet kan ha ett av två värden `False` (falsk) eller `True` (sann):

- Den nuvarande inställningen är `True` som känns igen genom markeringen med en stjärna `*`.

För att överskrida den nuvarande normalinställningen (dubbelsidigt) och skriva ett jobb enkelsidigt, måste du använda följande kommando:

    lpr -P Hitachi_DDP70_ClusterPrintingSystem -o TR-Duplex=False /sökväg/till/ditt/utskriftsjobb

Hur får jag en snyggt formaterad lista på tillgängliga alternativ för en viss skrivare eller &PPD;?

Använd kommandot `lphelp` som kan vara installerat lokalt på systemet. Det finns ingen manualsida för `lphelp` ännu.

    lphelp infotecP450

Det här listar tillgängliga alternativ för den namngivna skrivaren. Det är formaterat på ett snyggt sätt och förklarar varje alternativ och hur det används. Du kan efterfråga olika skrivares alternativ på samma gång:

    lphelp infotec7410color DANKA_fullcolor_D2000 HP_ColorLaserJet8550

Det här fungerar också med &PPD;-filer. Ange bara sökvägen till &PPD;-filen:

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

### Att lösa problem

Inget system är perfekt. Här är några vanliga fällor som en del har trillat i.

Min skrivare som heter 3-lp-duplex uppträder felaktigt ibland. Vad är det som är fel?

Skrivarnamnen som används av &CUPS; måste börja med en bokstav och får innehålla upp till 128 bokstäver, siffror och understreck. Att använda bindestreck kan leda till problem. Angående namngivning: skrivarnamn i &CUPS; tar inte hänsyn till små och stora bokstäver. En skrivare som heter `Bäst_av_Danka` är samma som `bäst_av_danka` eller `BÄST_AV_DANKA`. (Det här är ett krav från &IPP;, som &CUPS; följer helt och hållet).

Varför får jag "kan inte ansluta till SAMBA-värddator: lyckades" med delade skrivare från &Windows; med åtkomst via Samba?

Är behörigheterna på &Windows;-fjärrdatorn korrekt inställda för dig? Har du verkligen behörighet att skriva på den delade &Windows;-skrivaren?

Filerna för skrivaren `lp` försvinner ibland på ett mystiskt sätt, och två dagar senare får jag reda på att de skrevs ut på en skrivare som står tre våningar under mitt kontor. Vad händer?

Tro mig, det är mycket osannolikt att din skrivare är den enda med namnet `lp`. Kanske ställer &CUPS; till det för dig. Eftersom du kan ha inställningen ImplicitClasses On aktiverad, försöker &CUPS; lägga alla skrivare som den ser på nätverket i en klass som heter lp. Alla jobb som är avsedda för lp skickas till den här klassen och den först tillgängliga medlemmen skriver ut det. Så om den här trevliga personen (som lyssnade noga när du prisade &CUPS; och &kdeprint;) installerade &CUPS; och började leta runt i systemet... fattar du?

Lyd mitt råd: välj ett unikt namn för alla nätverksskrivare! (kom ihåg att den som är ansluten till din parallellport också är en nätverksskrivare för övriga världen om du inte tar hand om dina inställningar).