Система печати cups linux

Система печати CUPS в Linux

Практически все сервисные подсистемы, будь то графическая подсистема X Window, службы резервного копирования и т. д., для операционной системы (ОС) Linux, как и сама ОС построены на модели «клиент-сервер». Не стала исключением и служба печати, такая как CUPS. На сегодняшний день эта система является самой популярной для UNIX-подобных систем. А также активно развивается и поддерживается разработчиками. В данной статье речь пойдёт о том, что собой представляет система печати CUPS в целом. О принципах её работы, а также об особенностях её использования. Поскольку это может помочь как обычным пользователям, так и администраторам UNIX/Linux при использовании принтеров. Да и вообще задач печати.

Что собой представляет CUPS?

Система печати CUPS – это обычный веб-сервер (cupsd) и веб-клиенты, взаимодействующие между собой по протоколу HTTP. На самом деле обмен данными происходит по протоколу IPP (Internet Printing Protocol). Который является тем же HTTP, в который добавлена поддержка печати. В основе взаимодействия лежат отправка клиентами своих заданий с помощью метода POST протокола HTTP (IPP), а также запросы соответствующих статусов по методу GET всё по тому же протоколу.

По-умолчанию сервер cupsd работает по порту 631. Поскольку это типичный веб-сервер, то для него доступен веб-интерфейс для администрирования. Достаточно в любом браузере перейти по адресу http://хост_печати:631. В локальной системе это будет адрес http://localhost:631. Естественно, если сконфигурировать сеть и требуемые виртуальные хосты для работы с SSL (для должной безопасности или секретности), то можно также использовать и соответствующий порт для доступа к админке CUPS: https://хост_печати:433.

Также для администрирования cupsd существуют и обычные команды. Обычно над такими командами создаются соответствующие «обёртки» в виде графических утилит. Они доступны «из коробки» для любой графической среды. Соответствующие разделы обычно находятся в составе главных утилит по настройке системы. Также управление печатью и принтерами доступно через виджеты и апплеты рабочего стола. К примеру в GNOME или KDE.

Как работает CUPS?

Как уже было отмечено, сервер cupsd хоть и поддерживает использование командной оболочки для своего управления, всё же имеющийся веб-интерфейс более удобен. Но более консервативные пользователи или администраторы, которым лень настраивать/запускать X-сервер, могут легко обойтись и интерфейсом командной строки. Например, чтобы распечатать документ таким способом, следует выполнить команду:

Команда lpr передаст копию файла week_report.pdf на сервер cupsd. Который в свою очередь формирует для принтера очередь печати. Как только принтер будет доступен (готов для печати), сервер cupsd начнёт последовательную обработку очереди. В процессе работы CUPS читает файл документа, а также файл описания принтера (PPD-файл) для получения сведений о том, какие действия необходимо дополнительно выполнять, чтобы конкретный документ был корректно распечатан.

Процесс формирования задания для печати системой CUPS также довольно примечателен. Дело в том, что прежде чем задание будет сформировано, оно должно пройти сквозь конвейер подготовки. Который состоит из специализированных фильтров. Каждый из таких фильтров задаёт, в частности, некоторые параметры печати. Например, если пользователем было задано, чтобы на одном листе печаталось несколько страниц, то будет применён соответствующий фильтр и в итоге задание печати будет иметь определённый формат, зависящий от исходных параметров, заданных пользователем. Фильтры могут выполнять самые различные функции, например помогают принтерам выполнять растеризацию печатаемых изображений или просто инициализировать сам принтер.

Заключительным и важным этапом в работе системы CUPS является передача сформированного задания через внутренний интерфейс с узла (на котором работает сервер cupsd) непосредственно на принтер через поддерживаемый протокол и/или сетевой интерфейс, например через Ethernet. В обратном направлении передаются сведения о состоянии задания. Следующая команда выводит все доступные внутренние интерфейсы, через которые возможно взаимодействие с принтером:

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

Очереди печати

Для клиентов системы CUPS есть возможность управлять очередями печати, которые уже сформированы сервером cupsd. Таким образом можно откладывать задания, отменять, изменять их приоритет и даже переносить их между разными очередями.

Для получения информации об имеющихся заданиях и их состояниях существует команда:

Именно из её вывода можно получить номер (или идентификатор) задания, который потом используется для управления этим заданием. Таким образом осуществляется непосредственное управление очередями печати. К примеру, для того, чтобы отменить какое-либо задание в очереди следует выполнить команду:

Для получения информации о текущем состоянии сервера cupsd существует команда:

Использование нескольких принтеров

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

Читайте также:  Windows form заданного размера

Или можно воспользоваться командой lpoptions, которая задаёт параметры работы (и использования) принтера по-умолчанию для текущей учётной записи пользователя:

Настройки, устанавливаемые по-умолчанию для пользователей хранятся в их домашних каталогах в файле

/lpoptions. А для учётной записи администратора, для тех же целей существует файл /etc/cups/lpoptions.

Несколько экземпляров одного принтера

Система CUPS позволяет использовать один и тот же принтер для различных целей, определяя для него несколько режимов работы. Распространённым случаем является печать на одном принтере черновых (для экономии краски или тонера) и законченных документов с высококачественной печатью.

Всё, что нужно — это задать для принтера несколько его экземпляров со своими настройками, которые можно определить отдельно, как для «самостоятельного» принтера. Например, следующая команда для принтера ML-2010:

создаст для него экземпляр ML-2010/2up, который настроен таким образом, что будет печатать две страницы на листе, да ещё и добавлять к ним титульные страницы. Теперь для печати можно использовать команду lpr в следующем виде:

Как видно, ключ -P задаёт используемый принтер, в данном случае созданный экземпляр ML2010/2up для печати двух страниц на листе с соответствующими титульными страницами.

Печать по сети

Система CUPS обладает хорошей гибкостью для адаптации и развёртыванию в сетях. На каждом компьютере в сети работают свои сервера cupsd, которые при должной настройке можно заставить обмениваться информацией между собой. Благодаря этому возможен доступ к удалённым принтерам. Причём к тем, что находятся даже в других посетях. Все настройки для этого делаются в файле /etc/cups/cupsd.conf. Кроме того, этого же можно добиться, активировав соответствующие опции через веб-интерфейс сервера CUPS.

Пусть требуется, чтобы к серверам john (192.168.1.5) и michael (192.168.2.7). Которые находятся в разных подсетях, можно было получить доступ для печати из третьей подсети 192.168.3. Решением является организация «подчинённого» сервера печати (к примеру bob на 192.168.3.8). Путём добавления в его файл конфигурации cupsd.conf следующих строк:

Как видно, первые две строки указывают «подчинённому» серверу bob запрашивать информацию у серверов john и michael о принтерах в их собственных подсетях. В третьей строке задаётся инструкция для предоставления полученной от john и michael информации о принтерах внутри подсети сервера bob.

Система CUPS довольно функциональная и позволяет решать широкий спектр задач, как например:

  • задание нескольких очередей для одного принтера со своими параметрами по-умолчанию;
  • балансировка нагрузки между несколькими принтерами с помощью отдельного сервера;
  • организация нескольких серверов для работы с несколькими экземплярами одного и того же принтера;
  • поддержка клиентов Windows;

и многое другое.

Заключение

В заключении следует отметить, что при рассмотрении приводимых в примерах команд подробно не рассматривались сами команды. Поскольку эта информация не является принципиальной или труднодоступной. Обо всех интересующих деталях можно подробнее узнать, используя справочные руководства, например посредством команды man lpoptions. Сама же процедура настройки системы печати даже в сложных сетях трудностей обычно не вызывает. Если нет проблем с драйверами самих принтеров. Сама же система CUPS очень надёжна и стабильна. Не говоря уже о её гибкости и возможностях масштабирования. Неудивительно, что именно системой CUPS комплектуются все современные дистрибутивы Linux по-умолчанию.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Сервер печати CUPS

Содержание

Сервер печати CUPS

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

CUPS управляет заданиями печати и обеспечивает сетевую печать с использованием стандарта IPP (интернет протокол печати), поддерживая огромный список принтеров от матричных до лазерных и любых других. CUPS также поддерживает PostScript описание принтеров (PPD) и автоопределение сетевых принтеров, а также простую настройку и администрирование через web интерфейс.

Установка

Для установки CUPS на ваш Ubuntu компьютер просто используйте sudo для выполнения команды apt-get, передав ей названия пакетов в качестве параметра. Полная установка CUPS содержит много зависимостей, но они все могут быть определены в одной команде. Введите следующее в терминале для установки CUPS:

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

При необходимости решения проблем, вы можете получить доступ к ошибкам сервера CUPS через файл журнала /var/log/cups/error_log. Если журнал ошибок не дает достаточно информации для решения какой-либо проблемы, уровень журналирования CUPS можно повысить изменением директивы LogLevel в файле настроек (описывается ниже) до debug или даже debug2 со стандартного info, что будет сохранять в журнал абсолютно все. Если вы проведете такое изменение, не забудьте вернуть все обратно после решения проблемы, чтобы избежать излишнего разрастания файла журнала.

Настройка

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

Скопируйте и защитите от записи файл /etc/cups/cupsd.conf.original с помощью следующих команд в терминале:

Читайте также:  Windows 10 папка избранное

1. ServerAdmin: Для настройки email адреса назначенного администратора CUPS сервера, просто откройте на редактирование файл /etc/cups/cupsd.conf с помощью своего любимого текстового редактора, и добавьте или измените строку ServerAdmin соответствующим образом. Например, если вы администратор CUPS сервера и ваш email адрес ‘bjoy@somebigco.com’, вам следует изменить строку ServerAdmin следующим образом:

2. Listen: В Ubuntu по умолчанию установленный CUPS сервер слушает только интерфейс обратной петли по адресу 127.0.0.1. Чтобы заставить CUPS сервер прослушивать актуальный IP адрес сетевого адаптера, вы должны указать сетевое имя или пару IP адрес/порт добавочной директивой Listen. Например, если ваш сервер находится в локальной сети с IP адресом 192.168.10.250 и вы хотите сделать его доступным для других систем в этой подсети, отредактируйте /etc/cups/cupsd.conf, добавив директиву Listen, как показано ниже:

В приведенном примере вы можете закомментировать или удалить ссылки на адрес обратной петли (127.0.0.1), если вы не хотите, чтобы cupsd прослушивал этот интерфейс, а только Ethernet интерфейсы локальной сети. Чтобы разрешить прослушивать все сетевые интерфейсы, назначенные определенному сетевому имении, включая обратную петлю, вы можете создать такую запись Listen для имени (например) socrates:

или опустить директиву Listen и использовать вместо нее Port:

Для дополнительных примеров по директивам в файле настройки CUPS, смотрите ассоциированную страницу системного руководства, введя в терминале следующую команду:

Web интерфейс

Чтобы выполнить административную задачу через web интерфейс, вы должны либо разрешить учетную запись root на своем сервере, либо авторизоваться как пользователь из группы lpadmin. По соображениям безопасности CUPS не авторизует пользователей с пустыми паролями.

Чтобы добавить пользователя в группу lpadmin, выполните в терминале следующую команду:

Дальнейшая документация доступна через закладку Documentation/Help web интерфейса.

Источник

CUPS (Русский)

CUPS — это стандартная система печати с открытым исходным кодом, разработанная Apple Inc. для MacOS® и других UNIX®-подобных операционных систем.

Contents

Установка

Если вы намерены «распечатать» в документ PDF, тогда вам необходимо установить пакет cups-pdf . По умолчанию файлы PDF хранятся в /var/spool/cups-pdf/имя_пользователя . Местоположение можно изменить в /etc/cups/cups-pdf.conf .

Сокет-активация

cups предоставляет юнит cups.socket . Если сокет cups.socket включен (а служба cups.service отключена), systemd не будет запускать CUPS сразу, а просто будет слушать соответствующие сокеты. Затем всякий раз, когда программа пытается обратиться к одному из этих сокетов, systemd будет запускать службу cups.service и прозрачно передавать управление этими портами процессу CUPS.

Таким образом, CUPS запускается только тогда, когда программа хочет его использовать.

Интерфейсы подключения

Дополнительные шаги для обнаружения принтера приведены ниже для различных интерфейсов подключения.

Чтобы узнать, обнаружен ли ваш USB-принтер:

Параллельный порт

Чтобы использовать принтер с параллельным портом, требуются модули ядра lp , parport и parport_pc .

Чтобы обнаружить или предоставить общий доступ к принтерам с помощью DNS-SD/mDNS, настройте разрешение имени узла .local через Avahi и перезапустите службу cups.service .

Для предоставления общего доступа к принтерам с помощью Samba, например, если система должна быть сервером печати для клиентов Windows, необходим пакет samba .

Драйверы принтеров

Драйверы для принтеров можно получить из любого из источников, приведенных ниже. Смотрите CUPS/Принтероспецифичные проблемы для неполного списка драйверов, которые работают.

Для управления принтером CUPS требуется файл PPD, а для большинства принтеров — некоторые фильтры. Подробнее о том, как CUPS использует PPD и фильтры, смотрите на [1].

Список принтеров OpenPrinting содержит рекомендации для драйверов для многих принтеров. Он также поставляет файлы PPD для каждого принтера, но большинство из них доступны через foomatic или рекомендованный пакет драйверов.

Когда файлы PPD предоставляются CUPS, тогда сервер CUPS будет регенерировать файлы PPD и сохранять их в /etc/cups/ppd/ .

CUPS обеспечивает поддержку принтеров AirPrint и IPP Everywhere.

Фильтры OpenPrinting CUPS

Рабочая группа OpenPrinting в Linux Foundation предоставляет cups-filters. Это бэкэнды, фильтры и другие двоичные файлы, которые когда-то были частью CUPS, но больше не поддерживаются Apple. Они доступны в пакете cups-filters , который является зависимостью для cups .

Для принтеров Non-PostScript требуется установить ghostscript . Для ghostscript также может потребоваться gsfonts .

Foomatic

Рабочая группа foomatic в OpenPrinting в Linux Foundation предоставляет PPD для многих драйверов принтеров, как свободных, так и проприетарных. Для получения дополнительной информации о том, что делает foomatic, смотрите Обзор foomatic от разработчиков.

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

  • foomatic-db — коллекция файлов XML, используемая foomatic-db-engine для генерации файлов PPD.
  • foomatic-db-ppds — прекомпилированные файлы PPD.
  • foomatic-db-nonfree — коллекция файлов XML под несвободными лицензиями от производителей принтеров, используемая foomatic-db-engine для генерации файлов PPD.
  • foomatic-db-nonfree-ppds — прекомпилированные файлы PPD под несвободными лицензиями.

Для PPD foomatic могут потребоваться дополнительные фильтры, такие как min12xxw AUR .

Gutenprint

Проект Gutenprint предоставляет драйвера для Canon, Epson, Lexmark, Sony, Olympus, и принтеров PCL для использования с CUPS и GIMP.

Специфические для производителя драйвера

Многие производители принтеров поставляют свои собственные драйверы Linux. Они часто доступны в официальных хранилищах Arch или в AUR.

Некоторые из этих драйверов описаны более подробно в CUPS/Принтероспецифичные проблемы.

URI принтера

Ниже перечислены дополнительные шаги для ручного создания URI, если это необходимо. Для некоторых принтеров или драйверов нужны особые URI, описанные в CUPS/Принтероспецифичные проблемы.

Читайте также:  Windows user environment error

CUPS должен иметь возможность автоматически генерировать URI для USB-принтеров, например usb://HP/DESKJET%20940C?serial=CN16E6C364BH .

Если этого не происходит, смотрите CUPS/Решение проблем#USB-принтеры для получения информации об устранении неполадок.

Параллельный порт

URI должен иметь вид parallel:device . Например, если принтер подключен к /dev/lp0 , используйте parallel:/dev/lp0 . Если вы используете адаптер USB для параллельного порта, используйте parallel:/dev/usb/lp0 в качестве URI принтера.

Если вы настроили Avahi, как в #Сеть, CUPS должен определить URI принтера. Вы также можете использовать avahi-discover , чтобы найти имя вашего принтера и его адрес (например, BRN30055C6B4C7A.local/10.10.0.155:631 ).

URI также можно создать вручную, не используя Avahi. Список доступных схем URI для сетевых принтеров доступен в документации CUPS. Поскольку точные данные URI отличаются между принтерами, проверьте руководство принтера или CUPS/Принтероспецифичные проблемы.

URI для сетевых принтеров SMB описаны на справочной странице smbspool(8) .

К удаленным серверам печати CUPS можно получить доступ через URI формы ipp://hostname:631/printers/queue_name . Подробнее о настройке удаленного сервера печати смотрите CUPS/Printer sharing#Between GNU/Linux systems [ссылка недействительна: раздел не найден] .

Смотрите CUPS/Решение проблем#Проблемы с сетью для получения дополнительной информации о проблемах и их решений.

Использование

CUPS можно полностью контролировать с помощью инструментов командной строки (CLI) из пакетов lp* и cups*. В качестве альтернативы можно использовать #Веб интерфейс или одно из нескольких #Приложения с GUI.

  • Имя принтера — короткое, но описательное имя, используемое в системе для идентификации принтера. Это имя не должно содержать пробелов или специальных символов. Например, принтер, соответствующий HP LaserJet 5P, может быть назван «hpljet5p». С каждым физическим принтером можно связать более одной очереди.
  • Расположение — это описание физического расположения принтера (например, «спальня», или «кухня»). Это помогает поддерживать несколько принтеров.
  • Описание — полное описание принтера. Обычно используется полное имя принтера (например, «HP LaserJet 5P»).

Инструменты CLI

Смотрите локальную документацию CUPS для получения дополнительных сведений об инструментах командной строки.

This article or section needs language, wiki syntax or style improvements. See Help:Style for reference.

Имя принтера зависит от тебя. Например:

Проверка cостояния принтера Отключение принтера Включение принтера Настройка принтера для приема заданий Удаление принтера

Сначала настройте принтер для отклонения всех входящих записей:

Затем отключите его.

Наконец, удалите его.

Печать файла Проверка очереди Очистка очереди

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

Сервером CUPS можно полностью управлять через веб-интерфейс, доступный по адресу http://localhost:631/.

Для выполнения административных задач требуется аутентификация веб-интерфейса. Аутентифицируйте себя либо как root , либо убедитесь, что ваш пользователь входит в группу с полномочиями управления принтерами, для получения дополнительной информации смотрите #Настройка.

Перейдите на вкладку Администрирование.

Изменение существующих принтеров

Перейдите на вкладку Принтеры и выберите принтер для изменения.

Перейдите на вкладку Принтеры и выберите принтер.

Приложения с GUI

Если у вашего пользователя нет достаточных привилегий для администрирования CUPS, приложения будут запрашивать пароль root при запуске. Чтобы предоставить пользователям права администратора без необходимости доступа root, смотрите #Настройка.

Настройка

Настройки сервера CUPS находятся в /etc/cups/cupsd.conf и /etc/cups/cups-files.conf (смотрите cupsd.conf(5) и cups-files.conf(5) ). После редактирования любого из этих файлов, перезапустите cups.service , чтобы применить произведенные изменения. Настройки по умолчанию подходят для большинства пользователей.

Группы с правами администрирования принтера определены в SystemGroup в /etc/cups/cups-files.conf . Группы sys и root используется по умолчанию.

Пакет cups собран с поддержкой libpaper и значением по умолчанию для формата бумаги Письмо для файла libpaper. Чтобы избежать необходимости изменять размер бумаги для каждого принтера, отредактируйте /etc/papersize и задайте размер бумаги по умолчанию для вашей системы. Для получения дополнительной информации смотрите papersize(5) .

По умолчанию все журналы отправляются в файлы в /var/log/cups/ . Изменив значения директив AccessLog , ErrorLog и PageLog в /etc/cups/cups-files.conf на syslog , то CUPS сможет отправлять логи в журнал systemd. Смотрите вики-страницу fedora для получения информации об исходном предлагаемом изменении.

cups-browsed

This article or section is out of date.

CUPS может использовать Avahi для обнаружения неизвестных общих принтеров в вашей сети. Это может быть полезно в крупных сетях, где сервер неизвестен. Чтобы использовать эту функцию, настройте разрешение .local hostname и запустите службы avahi-daemon.service и cups-browsed.service . Задания отправляются непосредственно на принтер без какой-либо обработки, поэтому созданные очереди могут не работать, однако для принтеров, не требущих драйверов, такие как те, которые поддерживают IPP Everywhere или AirPrint все должно работать из коробки.

Серверы печати и удаленное администрирование

Разрешение аутентификации администратора через PolicyKit

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

Вот пример, который позволяет членам группы wheel управлять принтерами без пароля:

Без локального сервера CUPS

CUPS можно настроить для прямого подключения к удаленным серверам принтеров вместо запуска локального сервера печати. Для этого потребуется установить пакет libcups . Некоторым приложениям по-прежнему потребуется пакет cups для печати.

Чтобы использовать удаленный сервер CUPS, установите переменную окружения CUPS_SERVER в printerserver.mydomain:port . Например, если вы хотите использовать другой сервер печати для одного экземпляра Firefox (замените printserver.mydomain:port на имя/порт своего сервера печати):

Решение проблем

Для получения дополнительной информации смотрите CUPS/Решение проблем.

Источник

Оцените статью