Что такое cups в линукс

Обновлено: 04.07.2024

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

Управление сервером CUPS

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

По-умолчанию, так сказать «из коробки» файл cupsd.conf очень детально комментирован и разобраться с теми или иными опциями особого труда не составляет. Чтение конфигурации производится сервером cupsd только в момент запуска. Поэтому после внесения и сохранения сделанных настроек необходимо перезапустить cupsd. Это можно сделать стандартным для Linux образом, выполнив команду:

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

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

Когда в сети имеются несколько принтеров, которые по объективным причинам не могут быть подключены к одному компьютеру или когда принтеры не подключены непосредственно к тому компьютеру, на котором работает главный сервер CUPS, то целесообразно настроить сервер cupsd, так, чтобы он мог принимать задания на печать из сети. По-умолчанию CUPS работает с локально установленными принтерами, а для того, чтобы она могла обрабатывать задания из сети, в конфигурационном файле cupsd.conf нужно внести некоторые изменения. Для начала, в секции Location:

нужно добавить ещё одну директиву «Allow From». В итоге должно получиться:

Таким образом, в качестве адреса сети может выступать IP-адрес (например 192.168.0.0), для которой следует обслуживать задания. После этого следует указать директиву BrowseAddress:

Она задаёт адрес и порт для рассылки информации об обслуживаемых сервером cupsd принтерах всем компьютерам из указанной с помощью директивы «Allow From» сети.

Конфигурирование в автоматическом режиме

В большинстве случаев при добавлении новых принтеров система CUPS способна самостоятельно определить, что в систему устанавливается новый принтер. В самом сложном случае придётся выполнить эту процедуру вручную через веб-интерфейс системы CUPS и пройти через несколько несложных этапов установки и настройки принтера. Это всецело заменяет работу того самого «удобного» установочного ПО (программного обеспечения). Которое поставляется производителями принтеров для систем Windows и Mac OS, но обходит стороной (довольно часто) системы Linux.

Если CUPS сконфигурирована так, что автоматически могут распознаваться принтеры, подключаемые к другим компьютерам в сети (и даже из других подсетей). То центральный сервер cupsd просто получит уведомление об этом и сможет обслуживать новые принтеры. Причём об этом будут «знать» все сконфигурированные клиенты данной сети и даже подсетей. Это возможно благодаря тому, что на каждом компьютере, на котором установлена и запущена система CUPS работает свой сервер cupsd, который обменивается (если задана соответствующая конфигурация) информацией о «своих» принтерах с серверами на других машинах, предоставляя общий пул принтеров в сети.

Это очень удобно, ведь в большинстве случаев нет необходимости добавлять новый локальный или даже удалённый принтер в перечень доступных устройств печати для локальной машины или копировать его PDD-файл.

Конфигурирование сетевых принтеров

Для этой задачи в системах Linux нет ничего необычного. В данном случае даже используемая система печати особой роли не играет, поскольку сетевая конфигурация сводится к заданию IP-адреса собственно, принтеру. Сделать это можно двумя способами:

  • использовать DHCP-сервер, который автоматически будет «выдавать» сетевым устройствам, в том числе и подключенным к сети принтерам их IP-адреса;
  • использовать статический IP-адрес для принтера, заданный вручную.

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

Некоторые модели принтеров даже предоставляют красивый и удобный веб-интерфейс для конфигурации. Однако задействовать его можно только после того как IP-адрес для принтера задан и он доступен в сети.

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

Первая команда добавляет локально подключенный принтер (через параллельный интерфейс) под именем localprinter. Подключая его через порт /dev/lp0. А вторая команда добавляет сетевой принтер netprinter. Подключая его через IP-адрес 192.168.0.5. При этом в обоих случаях для каждого устройства указываются универсальные URI-идентификаторы (составляющие адрес подключения) и PPD-файл (PostScript Printer Description). Доступный из набора таких файлов в каталоге /usr/share/cups/model.

Теперь, если сервер cups настроен как сетевой сервер печати. То добавленные принтеры станут доступными для всей сети. При этом перезапуск cupsd не требуется.

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

Как можно видеть, в URI-идентификаторах могут использоваться передаваемые параметры. Чтобы узнать, какие устройства печати доступны системе CUPS, а также понятный ей список типов URI-идентификаторов. Можно воспользоваться командой lpinfo -v:

Классы принтеров

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

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

Как видно, специальной команды для задания класса нет — он существует когда в него добавлен принтер. В системе CUPS также можно задавать нескольким принтерам одинаковые имена и при этом они будут считаться объединёнными в один класс. Такие вот интеллектуальные способности у CUPS.

Отключение принтеров

Иногда необходимо временно сделать принтер недоступным для печати. Т. е. чтобы сервер cupsd не удалял его из своего пула обслуживания, а просто не отправлял на него задания от клиентов. Такие ситуации возникают, когда принтер нужно временно отсоединить для обслуживания. Чтобы полностью удалить принтер (или класс) следует использовать команду:

Для контроля над выходной частью очереди печати (на стороне принтера) предназначены команды cupsdisable и cupsenable – которые выключают и включают выход соответственно. Для управления состоянием входа очереди предназначены команды reject и accept.

Если принтер становится «недоступным » на длительное время (например унесли на ремонт или обслуживание). То целесообразнее использовать отключение его от его очереди, т. е.:

Если же точно известно, что принтер будет недоступен около двадцати минут (пока будет производится замена картриджа). То можно использовать команду:

Чтобы легче запомнить и надёжнее применять эти команды в зависимости от ситуации. Нужно понимать, что отклоняются (reject) и принимаются (accept) задания очереди. А отключаются (cupsdisable) и включаются (cupsenable) только устройства — т. е. принтеры. Совсем неразумно использовать команду cupsdisable, если принтер недоступен длительное время. При этом на него поступают (через вход очереди) задания, которые скорее всего не выполнятся. Команда reject в данном случае предпочтительнее.

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

Команда Назначение
cups-config Выводит информацию об API-интерфейсе, компиляторе, каталоге и канале связи системы CUPS.
cupsdconf Утилита для конфигурирования.
cupsdisable Отключает печать принтера или класса.
cupsenable Включает печать принтера или класса.
lpinfo Показывает доступные устройства или драйверы.
lpoptions Отображает или устанавливает опции и параметры по умолчанию принтера.
Ippasswd Добавляет, изменяет или удаляет пароли дайджеста.

По каждой из этих команд можно получить подробную справку из интерактивного справочного руководства. Используя команду man команда.

Заключение

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

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

Эта статья содержит инструкции по совместному использованию принтеров между системами, будь то между двумя системами GNU/Linux или между системой GNU/Linux и Microsoft Windows.

Contents

Создание класса для нескольких принтеров

'Класс' в CUPS имеет значение группы. Когда у вас есть несколько принтеров, подключенных к одному серверу CUPS, вы можете захотеть их сбалансировать (задания на печать автоматически помещаются в очередь для разных принтеров). Это также дает преимущество в том, что пользователи на удаленной машине работают с одним 'принтером'. Что особенно полезно, когда один принтер вышел из строя, вы просто исключаете его из класса, но для конечных пользователей ничего не изменится - печать заданий, поставленных на другой принтер сервером CUPS, продолжает обрабатываться. Создание и управление классами можно выполнять из веб-интерфейса CUPS.

Внутри систем GNU/Linux

Сервер можно настраивать с помощью веб-интерфейса или путем ручного редактирования файла /etc/cups/cupsd.conf . Смотрите статью CUPS (Русский) для настройки клиента.

Использование веб-интерфейса

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

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

Ручная настройка

На сервере (тот, который управляет и подсоединён к принтеру) разрешите доступ к серверу, изменив строчки с тэгом Location. Например:

Также убедитесь, что серверу для адресации доступен IP-адрес клиента:

Есть другие возможности для настройки, включая автоматические способы, которые детально описаны в Использование сетевых принтеров и cupsd.conf(5) .

После внесения каких-либо изменений перезапустите службу org.cups.cupsd .

Если CUPS запускается с помощью активации сокета, создайте drop-in сниппет для org.cups.cupsd.socket , чтобы активация сокета работала и с удаленными подключениями:

Включение обнаружения

Чтобы включить отображение (обнаружение) общего принтера, необходимо установить Avahi и запустить его на сервере. Если вам не нужно обнаружения принтера, тогда Avahi не требуется ни на сервере, ни на клиенте.

Чтобы включить отображение, выберите Показывать общие принтеры, подключенные к этой системе в веб-интерфейсе, или вручную включите Browsing и введите BrowseAddress:

затем перезапустите службу org.cups.cupsd .

Обратите внимание, что "обнаружение" на сервере - другая вещь по сравнению с "обнаружением" на удаленном сетевом хосте. На сервере печати cupsd предоставляет поддержку протокола DNS-SD, который транслируется avahi-daemon . Служба cups-browsed не нужна на сервере печати за исключением, если будет транслироваться старый протокол CUPS'а, или если сервер печати также будет "обнаруживать" другие сетевые принтеры. На удаленном сетевом хосте служба cups-browsed требуется для "обнаружения" сетевой трансляции служб печати, а также запущенная служба cups-browsed будет автоматически запускать cupsd .

Служба org.cups.cupsd.service запускается автоматически при подключении USB-принтера, но это может быть не так для других типов подключений. Если cupsd не запущен, тогда avahi-daemon не транслирует службу печати, поэтому в этом случае service-файл юнита systemd должен быть изменен при запуске во время загрузки, а затем служба снова должна быть "включена/установлена" с новой зависимостью. Чтобы сделать это, отредактируйте раздел файла службы [Install] , добавив зависимость WantedBy=default.target , а затем включите и запустите службу org.cups.cupsd.service .

Между GNU/Linux и Windows

Сервер Linux - клиент Windows

После настройки сервера установите драйвера для принтера на компьютере под управлением Windows. Если принтер сервера CUPS настроен на использование собственных драйверов вместо raw (raw - когда cups просто передает на принтер полученное задание для печати без какой-либо обработки), вы можете просто выбрать общий драйвер postscript для клиента Windows (например, 'HP Color LaserJet 8500 PS' либо 'Xerox DocuTech 135 PS2', либо 'Microsoft PS Class driver').

Общий доступ с помощью Bonjour

Службы печати Bonjour позволяет клиентам Windows легко подключаться к серверам печати Unix с включенным обнаружением.

Общий доступ с помощью IPP

Internet Printing Protocol является широко поддерживаемым стандартом среди операционных систем, который также прост в настройке. Он имеет функцию переадресации портов, туннелирования и т.д.

Примечание: Возможно, вам придется добавить Internet Printing Client в Windows (Панель управления > Программы > Включение или отключение компонентов Windows > Службы печати и документов)

На компьютере с Windows, перейдите в Панель управления > Просмотр устройств и принтеров и выберите в контекстном меню 'Добавить принтер'. Если у вас Windows 10, нажмите кнопку "Принтер, который я хочу, не указан". Далее, выберите 'Выбрать общий принтер по имени' и тип расположения принтера:

(Где hostname - это имя хоста или IP-адрес сервера GNU/Linux, а printer_name - это имя подключенного принтера. Вы также можете использовать полное доменное имя сервера, если оно есть, но вам может потребоваться установить ServerAlias my_fully_qualified_domain_name в /etc/cups/cupsd.conf , чтобы это заработало).

Общий доступ с помощью Samba

Samba - реализация протокола обмена файлами Windows и принтерами, даже самых старых.

Обратите внимание, что общий доступ с помощью Samba обычно более сложный для настройки и сопровождения.

Для настройки Samba на сервере Linux, отредактируйте файл /etc/samba/smb.conf , это даст возможность предоставить общий доступ к принтерам. Файл smb.conf может содержать примерно следующее:

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

Учтите, что при таких настройках, должна существовать учетная запись с правами доступа к принтеру. Для публичного принтера установите guest ok в yes, и удалите строку valid users. Для добавления учетных записей, создайте действующую учетную запись GNU/Linux, а затем установите на Samba-сервере пароль. Например:


Затем перезапустите демон Samba:

Естественно, имеется множество дополнительных настроек сервера печати Samba, поэтому, для получения дополнительной информации, следует обратиться к справочной документации Samba и CUPS. Образцы и примеры можно посмотреть в файле smb.conf.example .

Сервер Windows - клиент Linux

Важно: Любые особые символы в URI принтера должны быть соответствующим образом процитированы, или, если в имени вашего принтера Windows или в пароле есть пробелы, тогда CUPS выдаст ошибку "lpadmin: Bad device-uri".

smb://BEN-DESKTOP/HP Color LaserJet CP1510 series PCL6

Такая строка может быть получена в результате выполнения следующей команды:

Общий доступ с помощью LPD

В Windows 7, 8 и 10 имеется интегрированный LPD-сервер, то, возможно, будет намного проще использовать именно его, поскольку не придется для клиента устанавливать Samba, а на сервере - можно будет обойтись без сложных настроек. Это можно включить в разделе Службы печати и документов, находящего в Панель управления -> Программы -> Включение или отключение компонентов Windows. В свойствах принтера должен быть включен общий доступ. Используйте общее имя без особых символов, таких как пробел, запятые и др.

Затем, принтер можно будет добавить в CUPS просто выбрав протокол LPD. Адресс принтера будет выглядеть следующим образом:

Перед добавлением вам, скорее всего, понадобиться установить для своей модели принтера соответствующий драйвер. Драйвера Generic PostScript или RAW тоже должны работать.

Общий доступ с помощью IPP

Как и в предыдущем случае, для организации общего доступа к принтерам протокол IPP является предпочтительным, но он работает только с версиями Windows Server. Версия Windows Server (например Server 2016) включаюет поддержку IPP (функции "Службы печати и документов", служба "Интернет-печати"). Клиентские версии (например, Windows 10) включают поддержку только клиента IPP и не поддерживают совместный доступ через IPP.

Общий доступ с помощью Samba

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

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

В следующем разделе будут описаны настройки клиента с обоими (cupsd и smbd) запущенными демонами.

Настройка через веб-интерфейс

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

Затем, просто зайдите в веб-интерфейс CUPS и добавьте новый принтер. В качестве устройства выберите "Windows Printer via SAMBA".

Для местоположения устройства, выберите:

Или, если пароля нет:

Убедитесь, что пользователь действительно имеет доступ к принтеру на компьютере Windows, и выберите соответствующие драйверы. Если компьютер находится в домене, убедитесь, что в имени пользователя присутствует домен:

Ручная настройка

При ручной настройке: остановите демон CUPS и добавьте свой принтер в /etc/cups/printers.conf , который, к примеру, может выглядеть так:

Перезапустите демон CUPS и распечатайте тестовую страницу.

Поиск URI для серверов печати Windows

Иногда имя хоста Windows (усеченно) меньше предстоящего точного URI устройства (расположение устройства) (Sometimes Windows is a little less than forthcoming about exact device URIs (device locations)). Если возникли проблемы с указанием правильного расположения устройства в CUPS, выполните следующую команду, чтобы вывести список всех общих ресурсов, доступных для определенного имени пользователя windows:

В этом списке будет отображаться только общие URI для определенного имени пользователя Windows в локальной подсети локальной сети, если Samba настроен и работает правильно. Команда должна вернуть что-то вроде этого:

Здесь требуется первая часть последней строки - ресурс, соответствующий описанию принтера. Поэтому для печати на принтер EPSON Stylus введите:

Удаленное управление

Чтобы дать удаленным хостам доступ к одному из этих уровней, добавьте оператор Allow в этот уровень. Оператор Allow может принимать одну или несколько форм, перечисленных ниже:

Отрицательный оператор также может быть использован. Например, чтобы предоставить полный доступ ко всем хостам на локальных сетевых интерфейсах, отредактируйте /etc/cups/cupsd.conf :

The factual accuracy of this article or section is disputed.

Reason: CUPS автоматически создает сертификат, поэтому это не должно быть проблемой. (Discuss in Talk:CUPS (Русский)/Printer sharing (Русский))

Вам также может потребоваться добавить:

Это должно помочь избежать ошибки: 426 - Upgrade Required when using the CUPS web interface from a remote machine.

Kerberos

Если вы используете поддержку NSS в Samba winbind, вы можете добавить имя группы AD в /etc/cups/cups-files.conf - в следующем примере sysadmin может быть группой AD:

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

Общие советы по устранению неполадок смотрите в CUPS/Решение проблем.

Ошибки разрешений в Windows

Некоторые пользователи исправили ошибки 'NT_STATUS_ACCESS_DENIED' (Windows клиенты), используя несколько иной синтаксис:

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 запускается только тогда, когда программа хочет его использовать.

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

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

  • Вспомогательные программы CUPS запускаются с использованием пользователя и группы cups . Это позволяет им получать доступ к файлам принтера и читать файлы конфигурации в /etc/cups/ , которые принадлежат группе cups .
  • До cups версии 2.2.6-2, вместо группы cups использовалась группа lp . После обновления файлы в /etc/cups должны принадлежать группе cups , а в файле /etc/cups/cups-files.conf должно быть прописано User 209 и Group 209 .

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

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

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

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

Примечание: DNS-SD поддерживается только при использовании Avahi. CUPS не поддерживает использование systemd-resolved для DNS-SD. Для получения дополнительной информации смотрите CUPS issue 5452.

Для предоставления общего доступа к принтерам с помощью 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.

Примечание: Когда пакет Gutenprint обновился, принтеры, использующие драйвера Gutenprint, будут остановлены, пока вы не выполните от суперпользователя команду cups-genppdupdate и не перезапустите CUPS. Команда cups-genppdupdate обновит файлы PPD для всех настроенных принтеров. Для получения дополнительной информации смотрите cups-genppdupdate(8) .

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

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

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

URI принтера

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

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

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

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

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

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

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

  • Имя принтера - короткое, но описательное имя, используемое в системе для идентификации принтера. Это имя не должно содержать пробелов или специальных символов. Например, принтер, соответствующий 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.

Reason: Нестандартное использование списков определений, комментариев в командной строке. (Discuss in Talk:CUPS (Русский)) Список устройств Список моделей Добавление нового принтера

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

Примечание: При указании PPD используйте только имя файла, а не полный путь (например, pxlmono.ppd вместо /usr/share/ppd/cupsfilters/pxlmono.ppd ) Установите принтер по умолчанию Изменение параметров

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

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

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

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

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

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

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

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

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

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

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

Настройка

Настройки сервера 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.

Reason: cups-browsed.service не требуется для обнаружения принтеров, объявленных через DNS-SD, что делается сейчас через cups.service . Служба требуется только для обнаружения принтеров на сервере LDAP и тех, которые используют устаревший протокол CUPS (серверы CUPS ≤ 1.5). (Discuss in Talk:CUPS (Русский))

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

  • Поиск сетевых принтеров может значительно увеличить время, необходимое для загрузки вашего компьютера.
  • Служба cups-browsed.service необходима только для динамического добавления и удаления принтеров, когда они появляются и исчезают из сети. Она не требуется, если вы просто хотите добавить сетевой принтер с поддержкой DNS-SD/mDNS в CUPS.

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

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

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

Примечание: Возможно, вам понадобится установить cups-pk-helper для работы с этими правилами.

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

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

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

This article or section is out of date.

CUPS is the standards-based, open source printing system currently developed by Apple Inc. for macOS® and other UNIX®-like operating systems.

Contents

Installation

Optionally, install the cups-pdf package if you intend to "print" into a PDF document. By default, PDF files are stored in /var/spool/cups-pdf/username/ . The location can be changed in /etc/cups/cups-pdf.conf .

Then enable and start cups.service or alternatively use socket activation to only start CUPS when a program wants to use the service.

Socket activation

cups provides a cups.socket unit. If cups.socket is enabled (and cups.service is disabled), systemd will not start CUPS immediately; it will just listen to the appropriate sockets. Then, whenever a program attempts to connect to one of these CUPS sockets, systemd will start cups.service and transparently hand over control of these ports to the CUPS process.

Print steps

It is important to know how CUPS works if wanting to solve related issues:

  1. An application sends a PDF file to CUPS when 'print' has been selected (in case the application sends another format, it is converted to PDF first).
  2. CUPS then looks at the printer's PPD file (printer description file) and figures out what filters it needs to use to convert the PDF file to a language that the printer understands (like PJL, PCL, bitmap or native PDF).
  3. The filter converts the PDF file to a format understood by the printer.
  4. Then it is sent to the back-end. For example, if the printer is connected to a USB port, it uses the USB back-end.

Connection interfaces

Additional steps for printer detection are listed below for various connection interfaces.

To see if your USB printer is detected, make sure you have the usbutils package installed, then:

Parallel port

To use a parallel port printer, the lp , parport and parport_pc kernel modules are required.

Network

To discover, make use of discovered or share printers using DNS-SD/mDNS, setup .local hostname resolution with Avahi and restart cups.service .

Note: DNS-SD is only supported when using Avahi. CUPS does not support using systemd-resolved for DNS-SD, see CUPS issue 5452.

To share printers with Samba, e.g. if the system is to be a print server for Windows clients, the samba package will be required.

Printer drivers

This article or section needs expansion.

The drivers for a printer may come from any of the sources shown below. See CUPS/Printer-specific problems for an incomplete list of drivers that others have managed to get working.

To drive a printer, CUPS needs a PPD file and, for most printers, some filters. For details on how CUPS uses PPDs and filters, see [1].

The OpenPrinting Printer List provides driver recommendations for many printers. It also supplies PPD files for each printer, but most are available through foomatic or the recommended driver package.

When a PPD file is provided to CUPS, the CUPS server will regenerate the PPD files and save them in /etc/cups/ppd/ .

CUPS includes support for AirPrint and IPP Everywhere printers.

OpenPrinting CUPS filters

The Linux Foundation's OpenPrinting workgroup provides cups-filters. Those are backends, filters, and other binaries that were once part of CUPS but are no longer maintained by Apple. They are available in the cups-filters package that is a dependency of cups .

Non-PDF printers require ghostscript to be installed. For PostScript printers, gsfonts may also be required.

Foomatic

The Linux Foundation's OpenPrinting workgroup's foomatic provides PPDs for many printer drivers, both free and non-free. For more information about what foomatic does, see Foomatic from the Developer's View.

To use foomatic, install foomatic-db-engine and at least one of:

  • foomatic-db — a collection of XML files used by foomatic-db-engine to generate PPD files.
  • foomatic-db-ppds — prebuilt PPD files.
  • foomatic-db-nonfree — a collection of XML files from printer manufacturers under non-free licenses used by foomatic-db-engine to generate PPD files.
  • foomatic-db-nonfree-ppds — prebuilt PPD files under non-free licenses.

The foomatic PPDs may require additional filters, such as min12xxw AUR .

Gutenprint

The Gutenprint project provides drivers for Canon, Epson, Lexmark, Sony, Olympus, and PCL printers for use with CUPS and GIMP.

Note: When the Gutenprint packages get updated, the printers using Gutenprint drivers will stop working until you run cups-genppdupdate as root and restart CUPS. cups-genppdupdate will update the PPD files of the configured printers, see cups-genppdupdate(8) for more details.

Manufacturer-specific drivers

Many printer manufacturers supply their own Linux drivers. These are often available in the official Arch repositories or in the AUR.

Some of those drivers are described in more detail in CUPS/Printer-specific problems.

Printer URI

Listed below are additional steps to manually generate the URI if required. Some printers or drivers may need a special URI as described in CUPS/Printer-specific problems.

CUPS should be able to automatically generate a URI for USB printers, for example usb://HP/DESKJET%20940C?serial=CN16E6C364BH .

Parallel port

The URI should be of the form parallel:device . For instance, if the printer is connected on /dev/lp0 , use parallel:/dev/lp0 . If you are using a USB to parallel port adapter, use parallel:/dev/usb/lp0 as the printer URI.

Network

The URI can also be generated manually, without using Avahi. A list of the available URI schemes for networked printers is available in the CUPS documentation. As exact details of the URIs differ between printers, check either the manual of the printer or CUPS/Printer-specific problems.

The URI for printers on SMB shares is described in the smbspool(8) man page.

Note: Any special characters in the printer URIs need to be appropriately quoted, or, if your Windows printer name or user passwords have spaces, CUPS will throw a lpadmin: Bad device-uri error.

For example, smb://BEN-DESKTOP/HP Color LaserJet CP1510 series PCL6 becomes smb://BEN-DESKTOP/HP%20Color%20LaserJet%20CP1510%20series%20PCL6 .

This result string can be obtained by running the following command:

Usage

  • The queue name is a short but descriptive name used on the system to identify the queue. This name should not contain spaces or any special characters. For instance, a print queue corresponding to a HP LaserJet 5P could be named "hpljet5p". More than one queue can be associated with each physical printer.
  • The location is a description of the printer's physical location (for instance "bedroom", or "kitchen"). This is to aid in maintaining several printers.
  • The description is a full description of the print queue. A common use is a full printer name (like "HP LaserJet 5P").

CLI tools

See CUPS local documentation for more tips on the command-line tools.

Note: Command-line switches cannot be grouped.

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

Reason: Nonstandard use of definition lists, comments in command line. (Discuss in Talk:CUPS)

The queue_name is up to you. Examples:

  • When specifying the PPD, use just the file name and not the full path (for instance, pxlmono.ppd instead of /usr/share/ppd/cupsfilters/pxlmono.ppd ). Alternatively, the full path can be used with the -P command line switch.
  • As of 2021, many recent printers support driverless printing setup and when specifying -m everywhere , as in the second example above, the printer will be defined and a .ppd file will be created in /etc/cups/ppd/ by querying the printer on the network.

Check the status Deactivate a printer Activate a printer Set the printer to accept jobs Remove a printer.

First set it to reject all incoming entries:

Then disable it:

Finally remove it:

Print a test page Print a file Check the queue Clear the queue View ink levels

Add your user to the lp user group:

Log out and log in again.

For usage information, use:

Web interface

Go to the Administration page.

Modify existing queues

Go to the Printers page, and select a queue to modify.

Go to the Printers page, and select a queue.

GUI applications

Configuration

The CUPS server configuration is located in /etc/cups/cupsd.conf and /etc/cups/cups-files.conf (see cupsd.conf(5) and cups-files.conf(5) ). After editing either file, restart cups.service to apply any changes. The default configuration is sufficient for most users.

Permissions

User groups with printer administration privileges are defined in SystemGroup in the /etc/cups/cups-files.conf . The sys and root and wheel groups are used by default.

CUPS helper programs are run as the cups user and group. This allows the helper programs to access printer devices and read configuration files in /etc/cups/ , which are owned by the cups group.

Note: Prior to cups 2.2.6-2, the lp group was used instead. After the upgrade, the files in /etc/cups should be owned by the cups group and User 209 and Group 209 set in /etc/cups/cups-files.conf .

Default paper size

cups is built with libpaper support and libpaper defaults to the Letter paper size (called PageSize in lpoptions ). To avoid having to change the paper size for each print queue you add, edit /etc/papersize and set your system default paper size. See papersize(5) .

Log files

By default, all logs are sent to files in /var/log/cups/ . By changing the values of the AccessLog , ErrorLog , and PageLog directives in /etc/cups/cups-files.conf to syslog , CUPS can be made to log to the systemd journal instead. See Fedora:Changes/CupsJournalLogging for information on the original proposed change.

cups-browsed

This article or section is out of date.

Reason: cups-browsed.service is not required to discover printers advertised over DNS-SD, that is done by cups.service . The service is only required to discover printers on an LDAP server and those using the legacy CUPS protocol (CUPS servers ≤ 1.5). (Discuss in Talk:CUPS)

CUPS can use Avahi browsing to discover unknown shared printers in your network. This can be useful in large setups where the server is unknown. To use this feature, set up .local hostname resolution, and start both avahi-daemon.service and cups-browsed.service . Jobs are sent directly to the printer without any processing so the created queues may not work, however driverless printers such as those supporting IPP Everywhere or AirPrint should work out of the box.

  • Searching for network printers may significantly increase the time it takes for your computer to boot.
  • cups-browsed.service is only needed to dynamically add and remove printers as they appear and disappear from a network. It is not required if you simply want to add a an DNS-SD/mDNS supporting network printer to CUPS.

Print servers and remote administration

Allowing admin authentication through PolicyKit

PolicyKit can be configured to allow users to configure printers using a GUI without the admin password.

Note: You may need to install cups-pk-helper for working this rules.

Here is an example that allows members of the wheel user group to administer printers without a password:

Without a local CUPS server

CUPS can be configured to directly connect to remote printer servers instead of running a local print server. This requires installation of the libcups package. Some applications will still require the cups package for printing.

Читайте также: