# Opcje systemu &CUPS;, aktualnie niedostępne przez &kcontrol;

W tym rozdziale znajdziesz kilka wskazówek dotyczących dalszych możliwości konfiguracji, które mogą być niedostępne dla systemu &CUPS; z interfejsu &GUI; programu &kdeprint;.

## Przegląd dostępnych możliwości

Wszystkie najczęściej używane opcje i funkcje, których dostarcza system &CUPS;, są obsługiwane przez &kdeprint;.

- Zarządzanie drukarką: dodawanie, odłączanie, przenoszenie, modyfikowanie, konfigurowanie, testowanie, wyłączanie, włączanie...

- Zarządzanie trybem pracy: anulowanie, wstrzymywanie, przenoszenie, udostępnianie innej drukarki.

- Opcje drukowania: całkowita kontrola zapewniona przez &CUPS;.

## Gdzie znaleźć pomoc podczas pracy z &CUPS;

Dużo informacji o pracy systemu &CUPS; jest dostępnych z interfejsu sieciowego, który zawsze jest obsługiwany przez &CUPS;. Działa on z każdą wyszukiwarką (nawet tekstową). Na początek przejdź do http://localhost:631/. Tam znajdziesz łącze do aktualnie dostępnej dokumentacji &CUPS; w formatach HTML i PDF.

&CUPS; jest dostępny poprzez inne środki niż &kdeprint;: wiersz poleceń i wyszukiwarka to dwa bliźniacze interfejsy &CUPS;. Wiele narzędzi wiersza poleceń dokłada się do opcji kontroli, jakie masz, korzystając z systemu &CUPS;. Interfejs sieciowy to tylko jedna z dostępnych możliwości konfiguracji i sprawiwania kontroli.

Dotyczy to również programu &kdeprint;. W miarę rozwoju &CUPS;, wiele nowych możliwości będzie najpierw dostępnych z wiersza poleceń. Aby nadążać za zmianami, sprawdzaj najnowsze wersje strony dokumentacji systemowej dla &CUPS;.

W zależności od metody uaktualniania &CUPS;, plik konfiguracyjny mógł nie zostać zastąpiony nowym; tak więc demon &CUPS; może nie być poinformowanym przez stary plik konfiguracyjny o możliwości wykorzystania nowych właściwości.

Kompletna lista dostępnych plików i stron dokumentacji systemowej, powinna zawsze znajdować się w Podręczniku Administratora Programu &CUPS; (http://localhost:631/sam.html#FILES. W pasku adresu &konqueror-dopelniacz; wpisz `man:/lpadmin` i `man:/cupsd.conf`, aby znaleźć najważniejsze polecenia i pliki konfiguracyjne. Wiesz już o miłej właściwości &konqueror;a, jaką jest pokazywanie stron dokumentacji systemowej &UNIX;a, prawda? Przeczytaj je. Znajdziesz tam więcej interesujących porad i łączy do innych stron dokumentacji systemowych.

### Jak znaleźć pokrewne strony dokumentacji systemowej &CUPS;

Tutaj pokazujemy, jak sprawdzić, które pokrewne strony dokumentacji &CUPS; znajdują sie w Twoim systemie:

    kurt@transmeta:~
    > apropos cups

    cups-calibrate (8)- narzędzie ESP kalibrowania drukarki
    lpstat (1)        - podaj informację o stanie drukowania
    cups-lpd (8)      - przyjmuj zadania drukowania i informuj klientów lpd o statusie drukarki
    classes.conf (5)  - plik konfiguracyjny klasy dla cups
    backend (1)       - interfejsy cups do przesyłania danych
    filter (1)        - filtry cups do konwertowania plików
    cups-polld (8)    - tryb odpytywania o dostępne drukarki
    mime.types (5)    - plik opisujacy pliki typu mime
    cupsd (8)         - demon cups
    lpadmin (8)       - konfiguracja klas i drukarek cups
    cupsd.conf (5)    - plik konfiguracyjny serwera dla cups
    mime.convs (5)    - plik konfiguracyjny plików typu mime
    printers.conf (5) - plik konfiguracji drukarki
    mime.convs (5)    - plik konfiguracyjny plików typu mime
    cups-polld (8)    - demon cups odpytujący drukarki
    lpstat (1)        - podaje informację o stanie drukowania
    backend (1)       - interfejs cups transmisji protokołu
    mime.types (5)    - plik opisujący pliki typu mime
    cupsd (8)         - demon cups
    lpadmin (8)       - konfiguracja klas i drukarek cups
    printers.conf (5) - plik konfiguracyjny drukarki dla cups
    cupsd.conf (5)    - plik konfiguracyjny serwera dla cups
    filter (1)        - filtry cups do konwertowania plików

## Poza &kdeprint;: wskazówki & porady dotyczące wiersza poleceń &CUPS;

Tutaj znajdziesz kilka przykładowych możliwości, jakie obecnie są dostępne tylko z wiersza poleceń.

### Udostępnianie lub blokowanie dostępu do drukarki określonym użytkownikom

Instalując (lub modyfikując) drukarkę poprzez wiersz poleceń, możesz udostępnić, lub zakazać dostępu do tej drukarki określonym użytkownikom:

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

zezwoli na korzystanie z tej (wierzcie mi: bardzo ładnej i bardzo profesjonalnej) drukarki tylko trzem wspomnianym użytkownikom i - jednocześnie - odmówi tego prawa wszystkim innym. Jeśli inny użytkownik zechce drukować na DigiMaster przez ten serwer &CUPS;, otrzyma wiadomość o błędzie 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

zablokuje możliwość korzystania z tej samej drukarki tym samy trzem wspomnianym użytkownikom, jednocześnie udostępniając ją wszystkim pozostałym. Jeśli zablokowany użytkownik zechce drukować na DigiMaster przez ten serwer &CUPS;, otrzyma wiadomość o błędzie client-error-not-possible.

Jednocześnie możesz użyć tylko jednej z tych opcji; obecnie niedostępna jest podobna opcja dotycząca grup. Będzie ona jednak dodana w przyszłości.

### Nakładanie limitów na określone drukarki

Czasami chcesz nałożyć limit dla konkretnych drukarek. Możesz określić górną granicę ilości stron, lub danych, jakie mogą być wydrukowane w konkretnym czasie przez konkretną drukarkę.

Limity mogą być określone przez opcję `-o` podczas instalacji drukarki, komendą `lpadmin`, lub później, dla już zainstalowanej drukarki. Poniżej znajdziesz kilka wskazówek, których nie znajdziesz w oficjalnej dokumentacji &CUPS;:

- W systemie &CUPS; możesz określać limity stron i ilości danych dla poszczególnych drukarek.

- Limity są obliczane indywidualnie dla każdego użytkownika (tak więc pojedyncza seria limitów dotyczy wszystkich użytkowników konkretnej drukarki).

- Limity dotyczą także stron banerowych (jeśli używa się takich).

- To oznacza: możesz ograniczyć każdego użytkownika do drukowania 20 stron dziennie na drogiej drukarce, ale nie możesz nałożyć ograniczenia na każdego użytkownika, za wyjątkiem Kurt lub root.

- Masz do wykorzystania trzy opcje nakładania limitów: `job-k-limit`, `job-page-limit` i `job-quota-period`.

- `job-quota-period` określa przedział czasowy dla obliczania limitu (przedział jest określany w sekundach; tak więc dzień to 60x60x24=86.400, tydzień to 60x60x24x7=604,800, a miesiąc to 60x60x24x30=2.592.000 sekund.)

- Aby określić limity, okres czasu plus przynajmniej jeden limit zadań nie może być ustawiony na zero.

- Domyślna wartość 0 dla `job-k-limit` określa brak limitu.

- Domyślna wartość 0 dla `job-page-limit` określa brak limitu.

- Domyślna wartość 0 dla `job-quota-period` określa, że limity dotyczą wszystkich zadań, które były drukowane przez użytkownika i które wciąż są rozpoznawane przez system.

#### Przykłady:

Przypadek limitu podwójnego: okres czasu plus jeden lub obydwa limity dotyczące zadań

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

Ta komenda określa limit rozmiaru pliku na 1 MB (w sumie) dla każdego użytkownika drukarki danka_infotec_4850 w przeciągu tygodnia.

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

Ta komenda nakłada limit 100 stron (w sumie) na każdego użytkownika drukarki danka_infotec_4105 w przeciągu tygodnia.

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

Ta komenda określa złożony limit 1 MB (w sumie) i 100 stron (w sumie) dla każdego użytkownika drukarki danka_infotec_P450 w przeciągu tygodnia.

#### Przykłady:

Przypadek limitu pojedynczego: określony jest okres czasu lub limit dotyczący zadania

    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

#### Wiadomość o błędzie

Kiedy użytkownik wyczerpie limit, podczas próby drukowania otrzyma wiadomość o błędzie client-error-not-possible.

### Instalacja drukarki typu raw

Istnieją różne sposoby na zdefiniowanie drukarki typu raw. Jedną z wygodniejszych metod jest użycie komendy `lpadmin`. Jeśli nie skorzystasz z pliku &PPD; do obsługi tej drukarki, będzie ona urządzeniem typu raw:

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

Kolejki drukarek typu raw nie zmieniają pliku drukowania i nie przekształcają go w inny format pliku. Przydaje się to na przykład, kiedy drukujesz z systemu &Windows; via Samba przez serwer &CUPS; do drukarki PCL: w tym przypadku sterownik drukarki systemu &Windows; generuje gotowy format pliku drukowania dla drukarki docelowej i przepuszczanie go przez filtry &CUPS; wyrządziłoby tylko szkodę. W takich warunkach (jeśli chcesz upewnić się, że plik dotarł do drukarki nieprzefiltrowany przez &CUPS;) przydatne okazuje się polecenie `lpadmin` bez &PPD;.

## Rozwiązywanie problemów dotyczących &CUPS; i &kdeprint;

Ta część Podręcznika &kdeprint; będzie odpowiedzią na problemy użytkowników. To tylko skromny początek.

### Wiadomość o błędzie

Co znaczy client-error-bad-request?

Użytkownik wysłał do systemu &CUPS; plik, którego serwer nie mógł przetworzyć. Taką wiadomość otrzymasz również, jeśli wysłałeś pusty plik.

A client-error-not-possible?

Użytkownik albo nie ma prawa dostępu do określonej drukarki, albo wykorzystał już swój limit (oparty na rozmiarze pliku lub ilości stron)

Co z client-error-not-found?

Użytkownik próbował dostać się do nieistniejącego źródła na serwerze &CUPS;, na przykład przez próbę druku nieistniejącego pliku, lub takiego, do którego nie ma prawa dostępu.

### Pytania i odpowiedzi

Dlaczego nie mogę zrestartować zadań?

Aby móc zrestartować ukończone zadania z interfejsu sieciowego, potrzebujesz odpowiednich ustawień w pliku `/etc/cups/cupsd.conf`: ustaw `PreserveJobFiles True`.

Jak mogę pozbyć się długiej listy zakończonych zadań w interfejsie sieciowym?

Do zrobienia

Jak działa obliczanie stron?

&CUPS; dokonuje obliczania stron dzięki przepuszczaniu każdego zadania przez filtr pstops. Między innymi przelicza on też strony. Dane wyjściowe z tego filtra mogą być doprowadzone do innych filtrów (jak pstoraster --> rastertopcl), lub wysłane bezpośrednio do drukarki (jeśli jest to drukarka &PostScript;owa).

W każdym przypadku działa to dla drukarek sieciowych, równoległych, szeregowych i USB tak samo. Aby pstops działał, potrzebuje on DSC (Document Structuring Convention) zgodnego z &PostScript; (lub bliskiego odpowiednika) jako wejścia. Tak więc oblicza on strony podczas filtrowania na serwerze drukowania i zapisuje dane o każdej stronie (godzinę, użytkownika, ID zadania i nazwę, która drukarka, ile kopii jakich stron dokumentu, ile kilobajtów?) w pliku `/var/log/cups/page_log`.

Przy okazji: na mojej osobistej liście życzeń jest przerobienie Webalizera tak, aby czytał i analizował page_log i dawał podobny wynik. Ktoś chętny?

Nie daje on jednak poprawnych wyników w następujących przypadkach:

- Drukarka się zacina i być może dlatego odrzuca zadanie (przypadek z życia; albo może odrzuca zadanie z powodu problemu z formatem danych)

- Zadania drukowane jako raw zawsze są liczone jako jedna strona (i być może wielokrotne kopie).

Dlatego obliczanie stron w &CUPS; jest tylko przybliżone (w wielu przypadkach doskonałe lub co najmniej dobre, ale czasami niewystarczające). Jedyne wiarygodne obliczanie wydruku jest dokonywane przez wewnętrzny licznik drukarki. Niektóre drukarki mogą być zdalnie zapytane o tą informację przez SNMP (Simple Network Management Protocol). To znaczy, że w większej sieci z wieloma różnymi drukarkami nie ma żadnego narzędzia, które dokładnie i niezawodnie obliczałoby strony!

Dlaczego obliczanie stron nie działa pod klientem &Windows;?

Zadania z systemu &Windows; prawie zawsze muszą być wysyłane jako raw. Dlaczego? Jeśli &CUPS; pracuje jako serwer drukowania dla klientów &Windows;, używając oryginalnych sterowników systemu &Windows; dla docelowego urządzenia drukującego, gwarantuje to poprawne formatowanie zadania; dlatego serwer nie powinien nic zmieniać i drukować w trybie raw. Dlatego też nie dochodzi do filtrowania danych (nie jest to nawet możliwe, ponieważ dane wejściowe nie są &PostScript;owe, jak oczekuje pstops), czyli nie ma miejsca liczenie stron, prócz domyślnego 1.

Jak mogę znaleźć listę dostępnych opcji dla danej drukarki, lub pliku &PPD;?

Zobacz stronę dokumentacji systemowej dla komendy `lpoptions`. Możesz przestudiować uaktywnione pole systemu &CUPS; pod kątem każdej opcji dla dostępnych drukarek. Nie musisz mieć lokalnie zainstalowanej drukarki. Dopóki drukarka jest dostępna lokalnie (przez opcję wyszukiwania drukarki systemu &CUPS;), będzie ona również pracowała jako sieciowa.

Aby zapytać o opcje drukarki, wpisanie ``lpoptions` `-p` `HitachiDDP70MicroPress` `-l`` poda długą listę wszystkich dostępnych opcji, odczytanych z pliku &PPD; dla danej drukarki Hitachi (w moim przypadku zainstalowanej na serwerze sieciowym transmeta). Serwer sieciowy Transmeta i jego demon &CUPS;, podobnie jak demon &CUPS; na komputerze lokalnym, musi być uruchomiony, aby operacja zakończyła się sukcesem.

Jak mam czytać wykaz otrzymany przez komendę `lpoptions`?

Wiesz, że legalnym działaniem producentów drukarek &PostScript;owych jest określanie własnych, wewnętrznych nazw i procedur nawet dla standardowych opcji &PostScript;owych. Dopóki sterownik jest w stanie uzyskać opcje od &PPD; i przekazać je w zrozumiały sposób użytkownikowi, wszystko jest w porządku. Ale co Ty zrobisz, jeśli chcesz użyć jakiejś mało znanej opcji drukarki w wierszu poleceń? Jak znajdziesz jej dokładną składnię?

Zobaczmy to na przykładzie. Spójrzmy na drukarkę Hitachi's DDP70 i na to, jak wdraża drukowanie obustronne. Jak byś powiedział, jak drukować dwustronnie? duplex czy Duplex? A może jeszcze inaczej?.

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

To prowadzi do wyniku

    TR-Duplex/Duplex: False *True

Zinterpretujmy to tak:

- Nazwa badanej opcji to `TR-Duplex`;

- Po ukośniku widzisz tłumaczenie opcji, jakie powinno być pokazane w &GUI;, lub w interfejsie sieciowym (Duplex);

- Opcja może przyjąć jedną z dwóch wartości `False` lub `True`;

- Obecne ustawienie `True` jest rozpoznane przez zaznaczenie gwiazdką `*`.

Aby zmienić obecne ustawienie domyślne (duplex) i przejść do trybu drukowania jednostronnego (simplex), musisz użyć następującej komendy:

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

Jak mogę otrzymać ładnie sformatowany wykaz dostępnych opcji dla danej drukarki, lub &PPD;?

Użyj komendy `lphelp`, która może być zainstalowana lokalnie w systemie. Nie ma jeszcze strony dokumentacji systemowej dla `lphelp`.

    lphelp infotecP450

Ta komenda podaje listę dostępnych opcji dla danej drukarki. Wykaz jest ładnie sformatowany, wyjaśnia każdą dostępną opcję i jak jej używać. Możesz od razu zapytać o opcje różnych drukarek:

    lphelp infotec7410color DANKA_fullcolor_D2000 HP_ColorLaserJet8550

Działa to również z plikami &PPD; files. Określ tylko ścieżkę do &PPD;:

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

### Rozwiązywanie problemów

Żaden system nie jest idealny. Tutaj znajdziesz kilka pułapek, w które można wpaść.

Moja drukarka, nazywająca się 3-lp-duplex zachowuje się dziwnie. W czym problem?

Nazwy drukarek używanych w systemie &CUPS; powinny rozpoczynać się literą i mogą zawierać do 128 liter lub liczb. Używanie myślników może powodować problemy. Jak już jesteśmy przy nazwach: nazwy drukarek w &CUPS; nie uwzględniają wielkości liter. Tak więc drukarka nazwana Best_of_Danka będzie tą samą drukarka co best_of_danka, lub BEST_OF_DANKA. (Takie są wymagania &IPP;, z którymi &CUPS; jest całkowicie zgodny).

Dlaczego otrzymuję wiadomość Unable to connect to SAMBA host: Success od drukarki współdzielonej w systemie &Windows;, z którą łączę się poprzez Sambę?

Czy masz prawidłowe ustawienia na komputerze sieciowym z systemem &Windows;? Czy masz udostępnioną drukarkę współdzieloną w systemie &Windows;?

Moje pliki dla drukarki lp czasem tajemniczo znikają, a dwa dni później otrzymuję wiadomość, że zostały wydrukowane na drukarce 3 piętra poniżej mojego biura. O co chodzi?

Wierz mi, jest bardzo mało prawdopodobne, że Twoja drukarka jest jedyną o nazwie lp. Być może &CUPS; zabawia się z Tobą. Jeśli masz aktywne ustawienie ImplicitClasses On, &CUPS; próbuje upchnąć wszystkie drukarki, które widzi w sieci do klasy nazw lp. Wszystkie zadania przeznaczone dla lp są wysyłane do tej klasy i drukuje je pierwsze dostępne urządzenie.

Zastosuj się do rady: wybieraj niepowtarzalną nazwę dla każdej drukarki sieciowej! (Pamiętaj, że drukarka na Twoim porcie równoległym dla reszty świata jest również drukarką sieciową, jeśli nie zadbasz o odpowiednie ustawienia).