Контактная информация

По всем интересующим вас вопросам связывайтесь при помощи контактной информации приведенной на этой странице!

skype: metsof
email: accusser@gmail.com

В социальных сетях...

Форма обратной связи

Авторизация

Статьи об операционной системе Linux

Сайдбар

Сервер печати на Linux

19 янв. 2014

Для обработки и буферизации заданий вывода информации на печать и для преобразования данных печати в формат принтера в Linux применяется программный пакет CUPS (Common UNIX Printing System). Он используется почти во всех дистрибутивах, о нем и пойдет речь в этом разделе.

Возможно, вас удивляет то, что о такой элементарной теме, как печать, я решил поговорить только в конце книги. Причина в том, что управление печатью в Linux происходит с помощью сетевой службы. Любой принтер, настроенный для работы в Linux, при соответствующей конфигурации также может использоваться для печати другими компьютерами, расположенными в локальной сети.

Работать с локальным принтером несложно, у вас это получится даже без прочтения данного раздела. Информация, содержащаяся далее, адресована в первую очередь тем пользователям, которые хотят понять базовые концепции, на которых построена система печати в Linux.

Недоступные принтеры. Если какой-либо принтер временно недоступен (например, он может быть выключен), то CUPS переводит задачу в режим ожидания. Иначе говоря, CUPS запоминает, что в настоящее время принтером пользоваться нельзя. Проблема заключается в том, что если позже принтер будет включен (или подключен к сети), то CUPS может «не заметить», что принтер снова доступен. Вам придется специально возобновить взаимодействие системы и принтера. Такая возможность предусмотрена во всех пользовательских интерфейсах CUPS. Кроме того, это можно сделатьспомощьюкоманды cupsenable имя_принтера или Ipadmin -Е -р имя_принтера.

Чтобы исключить возможность возникновения такой проблемы, добавьте в файл /etc/cups/printers.conf при описании принтера строку ErrorPolicy retry-job. Все больше конфигурационных инструментов CUPS используют эту настройку по умолчанию.

Ход печати



PostScript. Вся философия печатной работы в Linux/UNIX основана на принтерах PostScript. PostScrip — это язык программирования, предназначенный для описания содержимого страниц. Принтеры, приспособленные к работе с PostScript, ожидают данных именно в этом формате. Почти все программы Linux, в которых имеется функция вывода на печать, посылают принтеру данные в формате PostScript.

Преимущество PostScript перед другими форматами заключается в том, что при описании используется векторный формат, то есть качество остается хорошим при любом разрешении. Один и тот же файл PostScript будет отпечатан тем четче, чем большее разрешение обеспечивает принтер, поэтому рассматриваемый формат занимает лидирующее место не только в UNIX, но и в современном печатном деле вообще.

Устройства для печати



Проще всего распечатывать информацию, имея принтер PostScript. Пользователь root посылает файл PostScript командой cp на устройство того интерфейса, к которому подключен принтер.

<code>root# cp файл-ps /dev/lpO (Параллельный интерфейс)

root# cp файл-ps /dev/ttySO (Последовательный интерфейс) root# cp файл-ps /dev/usb/lpO (USB-интерфейс)</code>

Спулинг печати



Как правило, информацию должен выводить на печать не только администратор, но и обычные пользователи, причем работающие не только на локальном компьютере, к которому подключен принтер, но и на любом компьютере локальной сети. И никто из этих пользователей не хотел бы возиться с именами устройств, хотя обычным пользователям доступ к файлам устройств обычно закрыт. Решением проблем такого рода занимаются так называемые системы спулинга печати (spooling systems). Они решают несколько задач:

— предоставляют простые в использовании команды, которые дают возможность распечатывать информацию, указывая не название устройства, а просто имя принтера;

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

— они позволяют подключать к одному компьютеру несколько принтеров и управлять этими устройствами; О если одновременно поступает несколько заданий печати, эти задания буферизуются, образуя так называемые очереди печати (print queues), и выполняются по мере того, как принтер оказывается свободен; О кроме того, системы спулинга печати способны выполнять некоторые дополнительные функции, например протоколировать, с какого компьютера сколько информации распечатывается.

Наиболее современной и популярной системой спулинга в Linux является CUPS. Раньше вместо CUPS применялись, например, BSD-LPD или LPRng. Независимо от того, какую систему спулинга вы применяете, команда для распечатки файла всегда выглядит одинаково:

user$ lpr -Pимя файл


Здесь имя — это имя принтера (точнее говоря, имя очереди печати). Если не указать параметр -P, то печать происходит на принтере, указанном по умолчанию.

Фильтр печати (Ghostscript)


До сих пор мы предполагали, что пользователь работает с принтером PostScript. Но на практике гораздо чаще встречаются такие принтеры, которые не поддерживают PostScript. Чтобы в Linux работали и они, потребуется преобразовать файл из PostScript в формат конкретного принтера. Внутри системы для этого используется программа Ghostscript, или gs.

За вызов gs отвечает так называемый фильтр. Это программа (сценарий), обрабатывает данные ввода и выдает данные вывода. В частности, для обеспечения процесса печати фильтр должен передавать gs правильные параметры (имя модели принтера, нужное разрешение, нужный размер страницы и т. д). Программа постранично преобразует данные PostScript в растровый формат и передает их дальше — вместе с командами печати, полученными от принтера.

При работе Ghostscript обращается к внешнему драйверу принтера. Важнейший проект по разработке драйверов для Linux называется Gutenprint (ранее — Gimp-print): gutenprint.sourceforge.net/.

Фильтр документов



В настоящее время практически все файлы распечатываются в формате PostScript, но иногда бывает нужно распечатать и обычный текстовый или графический файл. Разумеется, текстовый файл можно загрузить в редактор, из которого файл будет отправлен на печать в формате PostScript. Графические файлы также можно преобразовать в PostScript с помощью специального конвертера.

Еще удобнее было бы просто выполнять для таких файлов команду lpr «файл». Чтобы этот механизм работал, система спулинга пытается распознать тип файла, выводимого на печать.

Если это удается сделать и формат файла не PostScript, то файл преобразуется в PostScript с помощью специальных программ. Вызов таких команд преобразования производится через сценарий-фильтр.

Все вместе



Итак, вы подключили к компьютеру струйный принтер (не PostScript) и правильно сконфигурировали его. Имя принтера — pluto. Теперь вы хотите распечатать графический файл mypicture.png и выполняете следующую команду:

user$ lpr -Ppluto mypicture.png


После этого происходят следующие операции:
— lpr передает файл в спулинг-систему CUPS;

— CUPS передает файл на фильтр;

— фильтр распознает тип файла (PNG) и преобразует растровый рисунок в формат PostScript;

— данные PostScript передаются Ghostscript, который преобразует их в тот формат, с которым работает принтер pluto;

— после того как принтер pluto напечатает все находящиеся в очереди файлы, он распечатает и изображение mypicture.png.

Внутренняя организация CUPS


Как и большинство других сетевых функций, CUPS является фоновым процессом (демоном). Демон печати cupsd запускается системой Init-V.

Конфигурационные файлы



В старых системах печати почти вся конфигурация систем печати осуществлялась в файле /etc/printcap. В CUPS этот файл не играет практически никакой роли. Ради обеспечения совместимости он все еще присутствует в системе, но в нем содержится только актуальный список очередей печати (и никаких дополнительных параметров). Вся конфигурация CUPS происходит в файлах каталога /etc/cups.
Важнейшие файлы.

Конфигурационные файлы в /etc/cups

Содержание — classes.conf
Определение всех классов — cupsd.conf
Центральный файл конфигурации CUPS — Ipoptions
Изменения по сравнению с базовой конфигурацией — mime.convs
Фильтр, применяемый для обработки файлов различных типов — mime.types
Типы файлов для преобразования в PostScript — printers.conf
Определение всех принтеров — ppd/MMA.ppd
Конфигурация очереди печати имя — ~/.cups/lpoptions

Персональные настройки (KDE)



В cupsd.conf настраиваются различные установочные каталоги, определяются порт демона CUPS для протокола печати через Интернет (IPP), параметры просмотра принтеров, параметры безопасности, права доступа для клиентов в сети (allow/deny) и т. д.

В каталоге /etc/cups/ppd для каждого имени принтера, приведенного в printers. conf, содержится соответствующий файл PPD. В нем сохраняются все параметры печати (модель принтера и драйвера, такие настройки, как размер бумаги и разрешение и т. д.).

Когда администратор изменяет параметры печати или настройки (размер бумаги, разрешение печати, вертикальный или горизонтальный формат и т. д.), эти изменения сохраняются в файле lpoptions. Изменения действуют для всех пользователей, которые сами не внесли на своем компьютере других изменений. Пользовательские изменения сохраняются в ~/.cups/lpoptions.

В mime.types хранится список всех типов документов, автоматически распознаваемых CUPS и конвертируемых в формат PostScript. В mime.convs указывается, какой фильтр должен применяться (фильтры должны находиться в /usr/lib/cups/ filter и представлять собой исполняемые файлы).

ВНИМАНИЕ



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

Файлы PPD (описание принтеров PostScript)


Для CUPS каждый принтер является принтером PostScript. Детали, характерные для данного языка — размер полей, разрешение принтера, команды для вызова различных дополнительных функций (например, подача бумаги), особенности (дуплексная печать) и т. д., сохраняются в файлах PPD (PostScript Printer Definition). Формат PPD был разработан компанией Adobe и также применяется на компьютерах Apple и Windows.

Поскольку на самом деле далеко не каждый принтер является устройством PostScript, в файлах CUPS-PPD в виде комментария также содержатся нужная команда GhostScript и все параметры, необходимые для того, чтобы gs могла преобразовать файл PostScript в формат принтера. Далее приведен фрагмент файла PPD для струйного принтера HP DeskJet 6980:

<code>*PPD-Adobe: "4.3" *Manufacturer: "HP"

*ModelName: "HP Deskjet 6980 Series hpijs" *FoomaticIDs: "HP-DeskJet_5650 hpijs"

*FoomaticRIPCommandLine: "gs -q -dBATCH -dPARANOIDSAFER -dQUIET -dNOPAUSE -sDEVICE=ijs -sIjsServer=hpijs£AmC -dljsUseOutputFD» -sOutputFile=- -"</code>

Эта информация получена из базы данных ppds.dat, в которой содержатся все известные CUPS записи PPD. Двоичный файл ppds.dat может, в зависимости от дистрибутива, находиться, например, в каталоге /var/cache/cups. Если вашего принтера в этой базе данных нет и вам не удастся найти совместимую модель, попробуйте найти подходящий PPD-файл в Интернете.

При распечатке файла CUPS сначала преобразует его в формат PostScript. Затем CUPS извлекает из PPD-файла параметр GhostScript для нужного принтера, вызывает gs, которая, в свою очередь, преобразует PostScript в формат нужного принтера. Полученные в итоге файлы отправляются на устройство печати.

HPLIP



Компания Hewlett-Packard в рамках проекта HP Linux Imaging and Printing (кратко — HPLIP) сама разрабатывает свободные драйверы для многих принтеров, сканеров и многофункциональных устройств. В качестве лицензии обычно применяется GPL, менее часто — MIT или BSD. Такая активная поддержка свободного ПО — достойный пример для всей компьютерной индустрии. Поскольку многие принтеры HP совместимы с CUPS и без HPLIP, использовать функции HPLIP обычно необязательно.

Для HPLIP существует графический пользовательский интерфейс hplip-toolbox, который во многих дистрибутивах находится в отдельном пакете (например, hplip-gui в Ubuntu) и может быть установлен дополнительно. Программа самостоятельно распознает подключенные устройства HP, помогает при их конфигурации и применении. Интерфейс hp-toolbox может в числе прочего отображать количество чернил в картридже для многих струйных принтеров HP — такая функция не предусмотрена в самой системе CUPS.

IPP



CUPS поддерживает IPP (протокол печати через Интернет). Этот протокол намного упрощает работу с принтерами в сети из компьютеров Linux (см. также раздел 20.10). IPP поддерживается во всех распространенных операционных системах.

Для совместимости со старыми системами печати в CUPS также предоставляется традиционный демон lpd системы BSD-LPD. Для этого при необходимости запускается программа cups-lpd с помощью xinetd или другого демона службы Интернета. Конфигурация xinetd описана в man cups-lpd.

Спулинг



Все файлы, отосланные на печать, буферизуются в каталоге /var/spool/cups/*, пока печать не завершится. Следите за тем, чтобы данные спула не потерялись при перезапуске Linux. После перезапуска cupsd проверяет, не осталось ли файлов, ожидающих вывода на печать, и снова пытается передать их на принтер.

Библиотека TCP-Wrapper



Как правило, доступ к CUPS регулируется только в /etc/cups/cupsd.conf. Но CUPS может быть скомпилирован и так, что дополнительно применяется библиотека TCP-Wrapper, например в SUSE. Чтобы проверить, так ли это, выполните команду ldd:

<code>user$ ldd /usr/sbin/cupsd | grep wrap

libwrap.so.O => /lib64/Ubwrap.so.O (0x00007fa6e5c6a000)
</code>

В этом случае CUPS будет работать лишь при условии, что это не запрещено в /etc/hosts.deny и прямо разрешено в /etc/hosts.allow (по умолчанию). Но если вы сами изменяете оба файла, не забывайте о CUPS (запись cupsd).

Веб-интерфейс CUPS



В принципе конфигурационные файлы CUPS можно изменять в текстовом редакторе. Что касается некоторых базовых настроек, они, может быть, и практичны, но я не рекомендую этим заниматься, так как процесс очень сложен. Лучше использовать конфигурационные инструменты для локального компьютера (то есть графический пользовательский интерфейс) или веб-интерфейс CUPS.

Если у вас иа сервере не установлен графический пользовательский интерфейс, можете воспользоваться текстовым браузером (например, lynx). Но более удобно было бы изменить cups.conf так, чтобы доступ к CUPS также был возможен с другого компьютера, находящегося в локальной сети. Для обеспечения большей безопасности заблокируйте выход из локальной сети через порт 631 брандмауэром:
<code># Изменения в /etc/cups/cups.conf

# Порт 631 заменяет настройку 'Listen localhost:631' Port 631

«Location />

Allow @LOCAL

</Location> «Location /admin>

Allow @LOCAL

</Location>

«Location /admin/conf>

Allow @LOCAL

</Location></code>


Чтобы измененные настройки вступили в силу, CUPS должен заново считать конфигурацию:
root# /etc/init.d/cupsys reload


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

Администрирование CUPS с помощью команд



Как правило, при работе с принтером используются соответствующие окна тех или иных программ (OpenOffice, Firefox и т. д.), а для управления заданиями печати — соответствующие инструменты Gnome или KDE. Если вы любите работать с командной строкой, можете воспользоваться различными командами, позволяющими печатать файлы и управлять задачами принтера. Эти команды полезны в первую очередь в тех случаях, когда вы хотите автоматизировать выполнение задач принтера с помощью сценариев.

Команды lpr, lpq, lprmи lpc предоставляются не только в CUPS, но и в BSD-LPD и LPRng. Это своего рода общий знаменатель для всех систем спулинга. Но обратите внимание и на то, что в разных системах различные параметры различаются.

Команда lpr



С помощью команды lpr файл распечатывается. Если у вас настроено несколько принтеров, укажите параметром -P без пробелов название очереди печати. На принтере, заданном по умолчанию, параметр -P можно не использовать.

user$ lpr -Pимя файл

Если файл, предназначенный для печати, уже преобразован в формат конкретного принтера, сообщите lpr дополнительный параметр -l. Тогда команда будет действовать в обход обычной системы фильтрации и пошлет файлы на принтер в неизменном виде. Если на принтерах, совместимых с PostScript, нужно распечатать файлы PostScript, то подобная операция может сэкономить вам массу времени.

С помощью канала команду lpr можно использовать и для того, чтобы распечатать вывод другой команды. Следующая команда распечатывает список файлов, выводимый ls, на принтере, заданном по умолчанию:

user$ ls -l *.tex | lpr

Вместо lpr также можно использовать команду lp (ее синтаксис описан в man 1 lp). Эта команда должна облегчить жизнь тем, кто переходит к работе с CUPS после использования System-V (это другая система спулинга, но в Linux она не играет никакой роли).

Команды Ipq, Iprm



Все задания печати, которые нельзя выполнить сразу, буферизуются и помещаются в очередь (по одной очереди на каждый из настроенных принтеров). Чтобы просмотреть содержимое очереди, выполните команду lpq -Pимя.

Задачи принтера, которые вы поставили сами, можно снова удалить с помощью команды lprm -Pимя id, после чего нужно будет задать название очереди и ID-номер задачи. Чтобы узнать верный номер, выполните lpq.

<code>user$ lpq

FS-1800+ is not ready

Priority Owner Job File(s) Total volume

1st kofler 20 evince-print 17408 Bytes

2nd kofler 21 evince-print 16384 Bytes

user$ lprm 20 user$ lprm 21
</code>

Команда Ipc


Команда lpc позволяет более детально контролировать процесс печати. После ее выполнения вы попадаете в интерактивную рабочую среду, в которой можете выполнять команды status, help и т. д. Команда topq изменяет положение задачи печати в листе ожидания. В качестве параметров указывается имя принтера и номер задачи. Часть команд lpc (в том числе topq) может выполняться лишь администратором. Команды exit, bye или quit завершают работу lpc.

Команды Ipstat, Ipinfo, Ipadmin, Ipoptions


Команда lpstat выводит информацию обо всех принтерах, доступных для CUPS; lpinfo дает список всех доступных устройств печати и драйверов к ним. С помощью lpadmin производится настройка нового принтера или удаляется имеющаяся конфигурация npHHTepa;lpoptions отображает параметры принтеров CUPS или изменяет эти параметры.

user$ lpoptions -o PageSize=A4


CUPS отключает принтеры, которые недоступны. Чтобы снова активизировать принтер, выполните одну из двух следующих команд:

user$ lpadmin -E имяпринтера user$ accept имя принтера


Если хотите специально отменить принтер, используйте команду reject:

user$ reject имя принтера

Читайте так же:
CUPS: конфигурация принтера






Подпишитесь на рассылку! Никакого спама, только обновления!!!

Комментарии (0)


    Услуги по MODX Revolution

    Посмотреть все услуги

    Техническая оптимизация сайта

    Подробнее & Заказать

    Создание сайта на MODX Revolution

    Подробнее & Заказать

    Перенос сайта на MODX Revolution

    Подробнее & Заказать

    Продвижение сайта на MODX

    Подробнее & Заказать