# Параметры &CUPS;, пока не доступные из Центра управления &kde;.

В данной главе описывается, как можно изменить параметры &CUPS;, которые пока ещё недоступны через графический интерфейс.

## Возможности &CUPS;

&kdeprint; поддерживает все наиболее часто используемые возможности &CUPS;.

- Он позволяет добавлять и удалять принтеры, изменять их свойства, настраивать, проверять и т. д.

- Возможно также управление печатью отдельных документов: отмена печати, приостановка, возобновление, перемещение задания в очередь другого принтера.

- Настройка &CUPS; без использования Центра управления &kde;.

## Получение справки по системе &CUPS; во время работы с ней

Большую часть сведений о системе &CUPS; можно получить с помощью любого обозревателя Интернета (даже текстового). Для этого введите в обозревателе адрес http://localhost:631/, и вам будет предоставлена ссылка на имеющуюся на вашем компьютере документацию по &CUPS; (в форматах HTML и PDF).

Для настройки &CUPS; помимо &kdeprint; можно использовать также обозреватель Интернета и множество программ, запускаемых из командной строки. Программы, запускаемые из командной строки, предоставляют наиболее широкие возможности по настройке &CUPS;. При настройке с помощью обозревателя возможности несколько ограничены.

&kdeprint;, как и обозреватель Интернета, не позволяет контролировать все настройки &CUPS;, т.к. по мере разработки &CUPS; новые возможности добавляются сначала в программы, вызываемые из командной строки. После установки &CUPS; рекомендуется обновить документацию к ней, так как в документации содержатся сведения о новых возможностях.

В зависимости от того, каким образом вы обновляли &CUPS;, ваш файл с настройками, возможно, обновлён не был; по этой причине новая, более мощная версия &CUPS;, вероятно, не будет использовать все имеющиеся возможности, т.к. они не будут включены в файле настройки.

Полный список имеющихся файлов и документации всегда можно найти в Руководстве по администрированию &CUPS; (http://localhost:631/sam.html#FILES). В строке адреса обозревателя &konqueror; введите `man:/lpadmin` или `man:/cupsd.conf`, чтобы получить справку по самым важным командам и по формату файла настройки соответственно. В документах, которые отобразит &konqueror;, также будут содержаться ссылки на другие файлы справки и дополнительную документацию.

### Другие источники информации о &CUPS;

Чтобы найти установленную в вашем компьютере документацию по &CUPS;, воспользуйтесь следующей командой:

    vasiliy@dom:~
    > 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

## Настройка &CUPS; из командной строки

Ниже приведены некоторые возможности, которые доступны только с помощью команд, запускаемых из командной строки.

### Разрешение и запрещение доступа к принтеру отдельным пользователям

При установке принтера (или изменении его свойств) с помощью команд, запускаемых из командной строки, вы можете разрешить или запретить отдельному пользователю доступ к заданному принтеру. Для этого воспользуйтесь следующей командой:

    lpadmin -pHeidelbergDigimaster9110 -v lpd:/10.160.16.99/mqueue -u allow:vasiliy,masha,lena -E -P /home/vasiliy/PPDs/DVHV.ppd

С помощью такой команды вы разрешите доступ к принтеру только трём указанным пользователям. Если какой-либо другой пользователь попытается воспользоваться этим принтером, ему будет показано сообщение об ошибке.

    lpadmin -p HeidelbergDigimaster9110 -v lpd:/10.160.16.99/mqueue -u deny:vladimir,boss,ivan -E -P /home/vasiliy/PPDs/DVHV.ppd

С помощью этой команды вы запретите доступ к принтеру только трём указанным пользователям, таким образом разрешая его всем остальным. Если пользователь, доступ которому запрещён, попытается воспользоваться этим принтером, ему будет показано сообщение об ошибке.

На данный момент невозможно использование обоих вышеприведённых вариантов одновременно; в будущих версиях такая возможность будет реализована с помощью объединения пользователей в группы.

### Задание ограничений на использование отдельных принтеров

Иногда бывает необходимо установить ограничение на использование определённого принтера. Например, вам может понадобиться задать максимальное количество страниц или максимальный объём данных, который пользователи могут выводить на данном принтере.

Задать ограничения на количество страниц или объём данных можно во время установки принтера или впоследствии, при его настройке. Для этого воспользуйтесь ключом `-o` команды `lpadmin`. Ниже приведены дополнительные сведения по заданию ограничений (на момент написания данного руководства в официальной документации по &CUPS; данные сведения отсутствовали):

- &CUPS; позволяет задать ограничения на количество страниц и на объём данных, которые пользователи могут выводить на каждом установленном принтере.

- Ограничения действуют для всех, однако задаются исходя из расчёта на одного пользователя.

- При использовании ограничений на количество страниц учитываются также и разделительные страницы (если они используются).

- Таким образом, например, возможно установить ограничение в 20 страниц в день для каждого пользователя определённого принтера; однако нельзя установить ограничение для всех за исключением пользователей Vasiliy и root.

- Для настройки ограничений воспользуйтесь ключами `job-k-limit`, `job-page-limit` и `job-quota-period`.

- Ключ `job-quota-period` позволяет задать промежуток времени, в течение которого ограничение действует (данное значение указывается в секундах; так, в одних сутках 60x60x24 = 86400 секунд, в одной неделе - 60x60x24x7 = 604800, а в месяце - 60x60x24x30 = 2592300).

- Для включения ограничений необходимо, чтобы указанный промежуток времени, а также по крайней мере одно заданное значение (количество страниц или объём данных) было ненулевым.

- Если параметр `job-k-limit` равен нулю (он равен нулю по умолчанию), это означает, что ограничение снято.

- Если параметр `job-page-limit` равен нулю (он равен нулю по умолчанию), это означает, что ограничение снято.

- Если параметр `job-quota-period` равен нулю, это означает, что счётчик напечатанных страниц или объёма данных не будет сбрасываться через определённый промежуток времени (то есть система будет учитывать все напечатанные страницы с начала использования).

#### Примеры правильного использования программы lpadmin:

В данном примере задаётся как ограничение на объём данных, так и промежуток времени, через который счётчик выведенных данных следует сбрасывать:

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

Таким образом для каждого пользователя принтера danka_infotec_4850 устанавливается предел в 1 Мб данных в неделю.

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

Таким образом для каждого пользователя принтера danka_infotec_4105 устанавливается предел в 100 страниц в неделю.

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

Таким образом для каждого пользователя принтера danka_infotec_P450 устанавливается предел одновременно в 1 Мб в неделю и в 100 страниц в неделю. За одну неделю пользователь не сможет напечатать ни больше одного мегабайта, ни больше ста страниц.

#### Примеры неправильного использования программы lpadmin:

Ниже приведены примеры неправильного использования программы lpadmin (в каждом случае не указан один из двух необходимых параметров: промежуток времени и ограничение по количеству страниц или объёму данных):

    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

#### Сообщения об ошибках

При превышении установленного ограничения на количество страниц или объём данных пользователю будет показано сообщение об ошибке (client-error-not-possible).

### Поддержка печати из &Windows; (так называемых raw принтеров)

Для того, чтобы &CUPS; поддерживал печать необрабатываемых (raw) документов с компьютеров, работающих под управлением &Windows;, для каждого принтера, на котором предполагается печатать, необходимо отключить обработку печатаемых документов. Для этого воспользуйтесь командой `lpadmin` (причём указывать файл &PPD; не следует):

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

Под необрабатываемыми (raw) очередями понимается то, что файл, отправленный на печать, никак не преобразуется в другой формат. Это нужно, например, когда клиенты &Windows; печатают через &CUPS; на PCL-принтер, открытый для клиентского доступа Samba-сервером. В этом случае &Windows;-драйвер принтера сгенерирует уже готовый к печати документ, и &CUPS; не будет сам обрабатывать печатаемый документ. Это бы только испортило сам документ. Поэтому существует возможность использовать команду `lpadmin` без &PPD;, чтобы &CUPS; не осуществлял никакой обработки документа.

## Разрешение проблем &CUPS; с помощью &kdeprint;

Данный раздел руководства по &kdeprint; составлен из вопросов пользователей &kdeprint;, а также ответов на них других пользователей.

### Сообщения об ошибках

Что означает сообщение client-error-bad-request?

&CUPS; не может обработать файл, который пользователь послал на печать. Такое сообщение часто появляется при посылке пустого файла.

Что означает сообщение client-error-not-possible?

Пользователь не имеет достаточных привилегий для печати на данном принтере. Возможно также, что пользователь превысил установленные ограничения (объём данных или количество страниц).

Что означает сообщение client-error-not-found?

Пользователь пытается получить доступ к несуществующем ресурсу сервера &CUPS;; например, он может попытаться напечатать несуществующий файл, или доступ к файлу может быть запрещён.

### Вопросы и ответы

Возможна ли повторная печать уже выполненных заданий?

Повторная печать выполненных заданий возможна. Для этого в файл `/etc/cups/cupsd.conf` необходимо добавить следующую строку: set `PreserveJobFiles True`.

Как отключить список выполненных заданий, отображаемый при настройке с помощью обозревателя Интернета?

Данный раздел руководства ещё не готов.

Как ведётся учёт напечатанных страниц?

Для учёта напечатанных страниц &CUPS; обрабатывает каждый документ фильтром pstops. Результат работы этого фильтра можно перенаправить на обработку другим фильтрам (например pstoraster, а после него - rastertopcl) или послать прямо на печать (если принтер поддерживает команды &PostScript;).

Учёт страниц ведётся как для сетевых принтеров, так и для принтеров, подключённых с помощью параллельного или последовательного портов, а также с помощью USB. Для правильной работы pstops необходимо, чтобы на вход ему подавались команды &PostScript; в формате DSC (Document Structuring Convention - стандартная структура документа). При выводе каждой страницы pstops записывает сведения о ней (время печати, имя пользователя, номер и название задания, адрес принтера, количество копий, объём данных) в файл `/var/log/cups/page_log`.

Примечание: хотелось бы изменить программу webalizer таким образом, чтобы она читала файл page_log и выводила сведения о количестве напечатанных каждым пользователем страниц. Кто-нибудь возьмётся помочь?

Ошибки при учёте страниц могут возникать в следующих случаях:

- Бумага застряла в принтере, и выполнение задания было автоматически отменено (выполнение задания также может быть отменено, если данные поступают в неверном формате).

- Количество страниц, которое &CUPS; отображает для каждого необрабатываемого документа, напечатанного из &Windows;, равно единице.

Таким образом, учёт напечатанных страниц в &CUPS; не всегда абсолютно точен, а может быть и вовсе неточен. Единственный счётчик страниц, который может предоставить точные сведения, находится в самом принтере. Только немногие принтеры позволяют получить данные с этого счётчика по протоколу SNMP (Simple Network Management Protocol - протокол управления сетями). К сожалению, в крупных сетях с большим количеством принтеров не существует абсолютно надёжного средства учёта страниц.

Почему учёт страниц не работает при печати из &Windows;?

Драйверы принтеров, поставляемые с &Windows;, посылают документ на печать в формате, готовом к отправке на принтер. Обработка таких данных с помощью фильтра невозможна. (Так как pstops - фильтр, производящий подсчёт страниц - работает только с данными в формате &PostScript;.) Для каждого необрабатываемого документа, напечатанного из &Windows;, количество страниц устанавливается в единицу.

Как получить список доступных настроек принтера или файла &PPD;?

Обратитесь к документации по команде `lpoptions`. Эта команда позволяет получить список настроек любого доступного принтера (подключённого к вашему компьютеру или сетевого).

Команда такого вида: ``lpoptions` `-p` `HitachiDDP70MicroPress` `-l`` - позволяет получить список доступных настроек принтера HitachiDDP70MicroPress (настройки читаются из файла &PPD;). При этом система &CUPS; должна быть включена как на удалённом компьютере, так и на локальном.

Как интерпретировать полученный список настроек?

Обычно драйвер принтера показывает настройки в удобочитаемом виде. Однако иногда бывает необходимо изменить какой-либо параметр, который не входит в стандарт &PostScript;. Ниже приведён пример изменения такого нестандартного параметра.

Принтер Hitachi DDP70 позволяет печатать с двух сторон. Необходимо узнать, как включить режим двусторонней печати. Следует ли использовать параметр duplex, Duplex или что-либо другое? Чтобы получить ответ на этот вопрос, воспользуйтесь командой такого вида:

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

Будет выведена следующая строка:

    TR-Duplex/Duplex: False *True

Её следует понимать таким образом:

- название нужного нам параметра - `TR-Duplex`;

- после косой черты указан перевод этого параметра (Duplex); таким вы будете его видеть при настройке с помощью графической среды или обозревателя Интернета;

- этому параметру можно присвоить два значения: `False` (выключено) или `True` (включено);

- сейчас значение этого параметра - `True` (включено); текущее значение отмечено звёздочкой `*`.

Чтобы временно изменить данное значение и напечатать документ только на одной стороне, воспользуйтейсь такой командой:

    lpr -P Hitachi_DDP70_ClusterPrintingSystem -o TR-Duplex=False /путь/к/печатаемому/документу

Как получить список доступных настроек в удобочитаемом виде?

Для этого необходимо воспользоваться командой `lphelp`. (На момент написания данного руководства документация по команде `lphelp` отсутствует.)

    lphelp infotecP450

Эта команда предоставит вам список всех доступных параметров заданного принтера в убодочитаемом виде, а также укажет значение и способ применения каждого из них. Вы также можете получить список параметров сразу нескольких принтеров:

    lphelp infotec7410color DANKA_fullcolor_D2000 HP_ColorLaserJet8550

Вместо названия принтера также можно указать файл &PPD;:

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

### Разрешение проблем

Ниже приведён список наиболее часто встречающихся проблем:

Неверно работает принтер 3-lp-duplex.

Названия принтеров должны начинаться с буквы и могут быть длиной до 128 символов. Допускается использование букв латинского алфавита, цифр и знаков подчёркивания. Использование дефисов может стать причиной неверной работы принтера. Также следует учесть, что в названиях принтеров не имеет значения, являются ли буквы строчными или прописными. Таким образом, название Best_of_Danka идентично названию best_of_danka или BEST_OF_DANKA.

Не удаётся получить удалённый доступ к принтеру, подключённому к компьютеру под управлением &Windows;. Выдаётся сообщение Unable to connect to SAMBA host: Success.

Убедитесь, что у вас есть соответствующие привилегии для печати на этом принтере.

Файлы, которые были посланы на печать на принтер lp, иногда странным образом исчезают, а потом печатаются на совершенно другом принтере.

Название lp скорее всего также используется другими, поэтому при включённом параметре ImplicitClasses On &CUPS; будет рассматривать все принтеры с одинаковыми именами как принадлежащие к одному классу. Таким образом, документ будет послан первому же доступному принтеру.

Чтобы избежать такой ситуации, давайте сетевым принтерам уникальные имена. (Не забывайте также, что при неправильной настройке любой принтер, подключённый к компьютеру, может стать доступен всей сети.)