Разное

Отсутствует фильтр печати для принтера linux: Изучение CUPS в linux и решение проблем с печатью в linux/bsd системах

Содержание

Изучение CUPS в linux и решение проблем с печатью в linux/bsd системах

Прекрасная статья с не менее прекрасного сайта о операционной системе Linux: http://www.k-max.name/linux/server-pechati-na-linux-common-unix-printing-system/

Очень рекомендую к прочтению статью и сайт автора 🙂

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

Итак, исторически в Linux было 2 системы печати LPRng и BSD LPD. Данные системы постепенно устаревают и на смену им приходит система печати CUPS, которая разработана как замена вышеуказанных систем и возможности которой гораздо шире. При использовании GUI интерфейса GNOME, KDE или другого, управление принтерами с помощью CUPSосуществляется не сложнее, чем в Windows. В статье я же сделаю упор на работу в консольном режиме и GUI инструменты рассматривать практически не буду (клавиши Ctrl+P (печать в GUI) есть на всех клавиатурах и работают одинаково как в Windows, так и в Linux ).

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

Как система печати Linux обрабатывает файлы

Все мы знаем, что когда печать работает без перебоев, то отправив на печать какой-либо файл о нем можно забыть, пока листы не выйдут на принтере. Но если печать «поломалась», то необходимо понимать принцип работы, чтобы исправить проблему.

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

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

Система печати Linux находится под контролем демона cupsd, который обладает всеми необходимыми привилегиями, чтобы обращаться к принтерам от имени пользователя. Данный демон автоматически загружается при запуске Linux и настраивает систему для корректной работы печати. Все необходимые параметры демон берет из каталога /etc/cups.

В Linux, где установлен CUPS, для печати используются два основных метода. В основе первого

лежат команды lpr и lp (в более новых версиях CUPS). Которые в качестве аргумента принимают имя печатаемого файла и отправляют его на печать на принтер по умолчанию. Данные команды являются «мостиком» ко второму способу печати. В основевторого способа лежат обращения к системным вызовам CUPS. Приложения, использующие данный метод могут не только посылать cupsd информацию, но и получать от демона информацию, о возможностях принтера. В ответ на такой запрос, CUPS возвращает приложению файл в формате PPD (PostScript Printer Definition — описание принтера PostScript). Данные файлы описывают возможности, которыми обладают принтеры (размер страницы, разрешение, ориентация и т.п.). Файлы PPD являются ключевыми компонентами впакете драйверов для принтеров
. Для принтеров, которые не поддерживают язык PostScript, предоставляются PPD-файлы, описывающие возможности через GhostScript.

Совершенно не важно, поддерживает приложение CUPS или нет — после того, как демон cupsd примет задание печати, он поместит его в каталог буфера печати — спулер (обычно —/var/spool/cups) вместе с файлом, описывающим данное задание. Далее cupsd сортирует список заданий и отправляет на принтер одно за другим.

Управление печатью в Linux

Система печати в Linux довольно сложна и настройка обычно происходит либо очень просто (потому что CUPS все сам обнаружит и настроит), либо очень сложно (к примеру попробуйте быстро заставить работать принтер Canon LBP-810 с Linux). Работа печати в Linux основана на нескольких различных пакетах. Основной — это пакет

cups, содержащий демон печати. В большинстве дистрибутивов имеется пакет cups в репозитории. Право выбора, каким образом устанавливать ПО в Linux оставляю вам. Я установил так: apt-get install cups. Данный пакет отлично подхватывает все необходимые зависимости.

Давайте немного разберемся, что же такое PostScript, а что такое GhostScript? Как показывает практика, приложения Linux и UNIX в большинстве случаев генерируют на выходе файлы двух форматов:

Простой текст

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

PostScript

Язык Adobe PostScript — это один из многих языков принтеров. Большинство приложений, использующих сложное форматирование на выходе всегда создают файл формата PostScript.

К сожалению, современные принтеры не все поддерживают язык PostScript (особенно бюджетные модели для дома и малого бизнеса). В связи с этим, файл, полученный от приложения, должен пройти обработку GhostScript. GhostScript — это интерпретатор PostScript, который может размещаться в компьютере, а не в принтере.

Следует заметить, что GhostScript рассматривает все принтеры, как графические устройства. Таким образом, при выводе на печать обычного текстового документа GhostScriptпреобразует текст в растровый рисунок и отправляет этот рисунок принтеру. Это означает, что GhostScript не может использовать шрифты, встроенные в принтер. Это так же означает, что печать документов через GhostScript иногда выполняется более медленно, чем печать тех же документов на драйверах Windows. Хотя в большинстве случаев эта разница практически не заметна, бывают и большие задержки.

Стандартная установка CUPS поддерживает довольно узкий спектр принтеров (хотя, это довольно спорный момент ). Обычно, это модели с поддержкой PostScript и принтеры компаний HP и Epson. Если принтер автоматически не определился, то необходимо посетить сайт производителя принтера для получения пакета драйверов и инструкций об установке принтера в системе Linux.

Подключение и настройка принтеров в Linux

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

. Лучший признак совместимости с Linux — этоналичие поддержки языка PostScript в принтере. Иногда, производители любят заявлять о поддержке PostScript ложно. Под словом «Ложно» необходимо понимать то, что поддержка PostScript реализована не в самом принтере, а в драйверах, поставляемых к принтеру, которые скорее всего рассчитаны на ОС Windows. Примеров можно привести кучу: принтеры компании Canon серии LBP, модели 810, 1120, принтеры компании HP серии LJ 10xx. Чтобы убедиться в поддержке принтера Linux, можно сходить сюда: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/database/databaseintro. На данном сайте можно так же скачать файлы PPD для вашего принтера.

Для подключения принтеров существует несколько интерфейсов, таких как: USB, Ethernet, LPT и COM (последний безбожно устарел). Данным интерфейсам соответствуют устройства

LPT /dev/lp*, COM /dev/ttyS* (вместо звездочек, естественно — цифра, обозначающая номер порта, к которому подключено устройство), для взаимодействия с USB используется дерево каталогов /proc/bus/usb, для Ethernet, естественно — IP.

Прежде чем настроить службы печати в Linux, необходимо убедиться, что соединение с принтером действительно установлено. Наверное, лучше всего это проверить из операционной системы windows, если она у вас установлена 2ой системой. Если нет такой возможности, то давайте попробуем обнаружить наш принетр средствами Linux. Если принтер подключен к LPT, либо COM, то можно выполнить команду для LPT:

cat /etc/fstab > | /dev/lp0 или для com: cat /etc/fstab > | /dev/ttyS0. При этом, на устройстве в лучшем случае должно напечататься содержимое файла, в худшем — мигнуть индикаторы состояния. Если используется порт USB, то можно проверить подключение устройства с помощью командыlsusb, вывод которой должен содержать маркировку принтера. Для Ethetnet соединения, думаю достаточно проверить доступность IP принтера командой ping.

Настройка безопасности CUPS

В отличии от старых систем LPD, управлять системой печати CUPS удобнее через Web. Однако, по умолчанию, настройка доступа к web интерфейсу может быть настроена не корректно. Некоторые дистрибутивы предоставляют свои инструменты управления CUPS. Все настройки CUPS хранятся в файле /etc/cups/cupsd.conf. Данный файл смоделирован по образу файла

Веб сервера Apache. Данному веб серверу я обязательно посвящу обзор. Файл конфигурации cupsd.conf начинается с ряда глобальных параметров директив, которые оформлены в виде пар имя — значение. Для примера, чтобы изменить имя сервера, отправляемое другим системам, необходимо ввести директиву:


SeverName my.ptintserver.local

Данная строка определяет имя сервера как my.printserver.local. Файл конфигурации обладает огромным количеством директив, описание которых выходит далеко за рамки данной статьи. К сожалению, на русском языке я так и не нашел полного описания конфигурационного файла. Могу сказать одно — полный пакет документации можно будет почитать на английском прямо из настроенного веб интерфейса. А так же, документация по конфигурационному файлу доступна тут. Приведу Вам начало своего конфигурационного файла, содержащего глобальные директивы:


Print-server:~# cat /etc/cups/cupsd.conf # указание имени сервера ServerName print-server.domain.local # указание уровня логирования LogLevel warning SystemGroup lpadmin # Разрешить доступ к серверу Port 631 Listen /var/run/cups/cups.sock Listen 192.168.56.3:631 # Включение/выключение функции обзора. Browsing Off #BrowseOrder allow,deny #BrowseAllow all #BrowseAddress @LOCAL # указание типа аутентификации DefaultAuthType Basic  Allow @LOCAL # Доступ к консоли управления только из локальной сети. Order deny,allow   # Доступ к администрированию только с определенной машины Allow From 127.0.0.1 Allow From 192.168.56.10 Order deny,allow   # Доступ к изменению конфига только с аутентификацией, указанной в DefaultAuthType AuthType Default Order deny,allow 

Давайте разберем каждый параметр.Как уже упоминалось выше, ServerName указывает имя сервера печати. LogLevel указывает подробность журналирования (по умолчанию при установке параметр равен info, если возникли какие-то проблемы с CUPS, а в протоколе нет ничего информативного, можно поднять уровень до максимального — debug2), Portуказывает на каком порту будет доступен веб-интерфейс, Listen позволяет указать на каком IP адресе будет доступен веб-интерфейс, а так же прослушиваемый сокет.

Параметры, начинающиеся на Browsing требуют отдельного разговора, они задают настройки «просмотра». В данном случае, под термином просмотр необходимо понимать возможность CUPS обнаруживать принтеры в сети. Данная возможность поддерживается на уровне протокола IPP. Обнаружение происходит посредством широковещательных рассылок, что при большом количестве серверов CUPS или при частом отключении/подключении принтеров может порождать дополнительную нагрузку на сеть. Так же, включение просмотра влечет за собой определенное бремя безопасности. Например, систему настроенную на автоматический поиск легко обмануть, предоставив поддельную информацию о принтерах, а при наличии недочетов в коде CUPS это может привести к негативным последствиям. Давайте разберем указанные параметры:

BrowseAllow и BrowseDeny

Указывают CUPS на стороне клиента адреса, от которых может приниматься или отвергаться, соответственно, информация о принтерах. Формат директив соответствует директивам Allow и Deny. В качестве аргумента для данной директивы может быть как отдельный IP, так и подсеть в формате 10.0.0.0/24 или 10.0.0.0/255.255.255.0 или 10.0.0.0-10.0.0.255, так и значение @LOCAL — обозначающее локальную сеть, а так же имена хостов. Возможно использование нескольких данных директив.

Browsing

Указывает CUPS предоставлять свои серверы в общий доступ, либо нет. Значения может принимать On или Off соответственно.

BrowseAddress

Аналогична BrowseAllow. за исключением того, что она задает КОМУ посылать пакеты, а не от кого принимать.

Далее в конфигурационном файле указана директива DefaultAuthTape, которая указывает механизм аутентификации, который будет использоваться для организации доступа по умолчанию. Basic — указывает использовать логины/пароли от локальной системы. None — указывает не использовать аутентификацию. При указании параметра Digest все пароли будут передаваться в зашифрованном виде, но тогда необходимо создать пользователей CUPS с помощью команды lppasswd, пользователи будут добавлены в файл/etc/cups/passwd.md5.

Существует так же директива AuthClass, которая не присутствует в моем конфигурационном файле. Данная директива определяет, какие группы пользователей могут иметь доступ к подсистеме. Может принимать значения: Anonymous, User, System, Group. Параметр Anonymous указывает, что аутентификация производиться не должна. Параметр User говорит, что любой пользователь системы, корректно указавший имя/пароль может иметь доступ. System — говорит, что доступ к подсистеме могут получить только пользователи — члены системной группы cups. Group указывает возможность пользоваться подсистемой только членам группы, которая должна быть указана в последующей директиве AuthGroupName.

Директива Order определяет порядок предоставления доступа к CUPS по умолчанию. Значение Deny,Allow определяет — отвергать попытки доступа, если право на доступ не указано явно. Если директива имеет значение Allow,Deny, то доступ будет предоставлен, если явно не запрещен.

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

На этом настройку доступа к веб-интерфейсу CUPS считаю законченным. Остальные действия удобней выполнять через браузер. Для доступа к управлению необходимо ввести в веб-браузере строку http://ip.ad.dr.ess:631, в результате, должен появиться интерфейс управления CUPS. Если этого не произошло, попробуйте перечитать статью и проверить Ваши настройки еще раз. Перед манипуляциями с веб-интерфейсом я бы посоветовал сделать копию работающего конфига, потому что после внесения каких-либо изменений в настройки,конфигурационный файл переписывается параметрами веб-интерфейса. В результате, все вышеуказанные настройки сбиваются. Как говориться — удобство в угоду безопасности. Поэтому, я советую — настроив доступ к веб-морде, произвести настройки принтеров в Веб-интерфейсе, проверить работоспособность, а после проверки — восстановить настройки безопасности.

Особенности использования Веб интерфейса

Долго о Веб-интерфейсе описывать не буду. Последняя версия CUPS 1.4 практически полностью русифицирована. Управление принтерами через веб-морду не сложнее процесса установки принтера в операционной системе Windows. Единственный нюанс в Linux — это то, что фактически, «принтер» есть очередь печати. То есть фактически мы посылаем документ в определенную очередь печати с определенными настройками. Очередь привязана к конкретному принтеру-устройству. Таким образом, к одному принтеру может быть привязано несколько очередей с разными настройками. Это как в Windows установить несколько «принтеров» с разными версиями драйвера, но привязанными к одному физическому устройству.

Кроме веб-интерфейса, существуют так же консольные команды управления CUPS.

Параметры принтеров CUPS хранит в файле /etc/cups/printers.conf. В данный файл руками лезть не стоит. Он заполняется при настройке в веб интерфейсе. Пример файла:


Print-server:~# cat /etc/cups/printers. conf # Printer configuration file for CUPS v1.4.4 # Written by cupsd # DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING  Info Printer Location IT MakeModel HP LaserJet Series PCL 4/5 DeviceURI socket://10.0.0.216 State Idle StateTime 1303721460 Reason toner-low-report Reason toner-empty-warning Type 12372 Filter application/vnd.cups-raw 0 - Filter application/vnd.cups-raster 50 rastertohp Accepting Yes Shared Yes JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 OpPolicy default ErrorPolicy stop-printer Attribute marker-colors \#000000 Attribute marker-levels 0 Attribute marker-names Black Cartridge HP Q7551A Attribute marker-types tonerCartridge Attribute marker-change-time 1303721460 

Описание каждого установленного принтера (соответствующий PPD-файл) находится в каталоге /etc/cups/ppd/<имя_принтера>.ppd.

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


Print-server:~# /etc/init. d/cups start Starting Common Unix Printing System: cupsd. Print-server:~# /etc/init.d/cups restart Restarting Common Unix Printing System: cupsd. Print-server:~# /etc/init.d/cups stop

Хочу еще отметить такой нюанс. CUPS разрабатывался как замена системе печати LPD. В LPD источником информации о имеющихся принтерах очередях печати был файл/etc/printcap. CUPS обратно совместим с данной системой печати и если мы посмотрим на файл printcap, то увидим, что:


Print-server:~# ls -la /etc/ | grep print lrwxrwxrwx   1 root root      22 Мар 15 18:41 printcap -> /var/run/cups/printcap

файл printcap является символьной ссылкой на /var/run/cups/printcap. Т.о. CUPS сама следит за корректностью данного файла и тем самым обеспечивает обратную совместимость с LPD.

Устранение неполадок в системе печати

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

  • Постарайтесь проверить работоспособность принтера на другой ОС. Естественно, если он не заработает в другой ОС, то проблема скорее всего в аппаратной части.
  • Проверьте все физические соединения. Питание, информационный провод. Проверьте включен ли принтер и имеется ли бумага в лотке, а так же нет ли сигнализации об ошибках на принтере.
  • Если принтер подключается по USB, LPT, COM, то посмотрите выводы команд lsusb, dmesg на наличие записей о принтере. Если принтер с Ethernet-интерфейсом, проверьте связь с ним командой ping.
  • Если все вышеперечисленные проверки завершились успехом — тщательно проверьте настройки CUPS.
  • Проверьте в Веб-интерфейсе, не остановлена ли очередь печати принтера.
  • Если в статусе принтера написано waiting for job copmlete, то что-то мешает CUPS очистить очередь печати принтера (например отсутствие физического соединения с принтером или нехватка прав доступа).
  • Если при печати на бумаге выводится всякий мусор, то скорее всего выбраны неверные параметры/модель принтера.
  • Так же, для поиска неисправности необходимо просмотреть логи принтера в каталоге /var/log/cups/
  • Ну и как всегда, вам в помощь яндэкс и гугл.

Файлы и каталоги CUPS

В статье я уже приводил некоторые каталоги и файлы CUPS. В большинстве случаев, ручное редактирование каких-либо файлов CUPS, кроме /etc/cups/cupsd.conf, требуется довольно редко. Но для общего развития я расскажу о расположении файлов. Итак, как уже говорилось, для хранения настроек CUPS использует каталог /etc/cups/. Основной файл, имеющий для нас интерес — это cupsd.conf, который хранит глобальные настройки, так же существует printers.conf, хранящий настройки принтеров очередей печати. Подкаталог ppdсодержит файлы PPD для локальных принтеров. Файл passwd.md5 хранит зашифрованные пароли пользователей CUPS.

Большой объем данных лежит в /usr/share/cups/, в котором хранятся служебные файлы. Особый интерес представляет каталог /usr/share/cups/model/ (который в последней версии CUPS был перемещен в /usr/share/ppd/), который хранит описания для принтеров. При каждом старте сервер сканирует каталог /usr/share/cups/model на предмет появления новых описаний принтеров (PPD-файлов).

В процессе работы CUPS использует каталог /var/spool/cups/ для хранения описаний заданий печати и самих файлов заданий. Владельцем данного каталога должен быть пользователь root и группа lp. Права доступа определены, как 0710 (rwx—x—).

Так же используется каталог /var/run/cups/ для хранения информации о работе демона, такой как сокет, файл printcap и др.

9.6. Принтер. Linux для пользователя

9.6. Принтер

9.6.1. Традиционные средства печати UNIX

Исторически для печати в UNIX-системах существовали две системы печати: LPD (Line Printer Daemon) [RFC1179], разработанная для Berkeley UNIX (или BSD-система), и ATT Line Printer system. Эти системы печати были созданы в 70-х годах для печати текстов на построчно-печатающих (линейных) принтерах. Принимая во внимание, что аппаратные средства печати (проще говоря, принтеры) с тех пор существенно изменились, можно было бы предположить, что существенно переработаны и программные средства для управления печатью. Однако, этого не произошло. Хотя и были созданы различные улучшенные системы печати [LPRng, Palladin, PLP], однако ни одна из этих новых разработок не изменяла фундаментальные возможности этих систем. Впрочем, как показало время и практика, возможности этих систем вполне достаточны и при небольших доработках удовлетворяют и современные потребности.

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

В основу подсистемы печати в Linux положена BSD-система — LPD, а точнее, доработанный вариант этой системы LPRng. LPRng состоит из отдельных программ, которые обеспечивают выполнение отдельных функций подсистемы печати.

• lpd — демон системы печати. Обычно запускается на этапе загрузки системы из файла rc, но может быть запущен и пользователем.

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

• lpq — программа, позволяющая просматривать очередь заданий, ожидающих печати на указанном принтере.

• lpc — команда контроля системы lpd. С помощью lpc можно отключать принтеры, останавливать или переупорядочивать очереди печати и т.п. Некоторые из функций этой команды доступны пользователям, но в основном это средство для администратора.

• lprm — эта команда позволяет удалить одно или несколько заданий из очереди печати. При этом стираются соответствующие файлы данных и из системы печати удаляются все ссылки на них.

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

Когда вызывается программа lpr, она первым делом выбирает принтер, на который будет производиться печать. Этот выбор определяется либо параметром командной строки Pprinter, либо значением переменной окружения PRINTER, либо же используется общесистемный принтер, заданный по умолчанию (это принтер с именем lp). Как только lpr узнает, на какой принтер отправлять текущее задание, она ищет описание этого принтера в базе данных об имеющихся принтерах, которая хранится в файле /etc/printcap. Из этой базы lpr получает имя каталога (области спулинга), в который следует помещать задания для найденного принтера. Обычно этот буферный каталог имеет имя /var/spool/lpd/printer. Такой каталог (область спулинга) должен существовать, если вы хотите печатать на принтере с именем printer.

Для каждого задания программа lpr помещает в буферный каталог два файла: cfxxx и dfxxx, где xxx — номер текущего задания. Файл cfxxx содержит справочную информацию и информацию об обработке задания. Источником этих сведений являются командная строка запуска программы, переменные среды процесса, который запустил эту программу, и глобальная конфигурация системы. Файл dfxxx содержит данные, подлежащие печати.

После постановки задания в очередь lpr уведомляет демона lpd о появлении задания на печать. Взаимодействие lpr с lpd происходит через именованный сокет /dev/printer. Демон lpd тоже обращается к файлу /etc/printcap, чтобы узнать, какой принтер должен использоваться для печати, и является он локальным или удаленным. Если в /etc/printcap указано, что принтер подключен локально, lpd проверяет наличие демона печати, обрабатывающего соответствующую очередь. Дело в том, что для обработки каждой очереди lpd создает отдельную копию самого себя. Если такой копии еще не имеется, она создается и ей передается обработка очереди. Если соответствующий принтер подключен к другой машине, lpd устанавливает соединение с демоном lpd удаленной машины и пересылает туда файл данных и управляющий файл.

Обслуживание заданий печати осуществляется по правилу «первым пришел — первым обслужен» (FIFO). Системный администратор может при желании изменить порядок печати с помощью программы lpc.

Начиная с ядра 2.1.33 устройство lp является клиентом нового устройства parport. Введение parport решает некоторые проблемы, связанные с lp — теперь можно разделять параллельные порты с другими драйверами, динамически связывать порты с устройствами, не устанавливая жесткого соответствия между адресами I/O и номером порта и т. д. Подробнее об этом вы можете прочитать в статье [П11.11].

Система печати CUPS [Мозаика системного администрирования]

CUPS (Common UNIX Printing System) — сервер печати для UNIX-подобных операционных систем. Компьютер с запущенным сервером CUPS представляет собой сетевой узел, который принимает задания на печать от клиентов, обрабатывает их и отправляет на соответствующий принтер.

Состав CUPS:

  • диспетчер печати

  • планировщик

  • система фильтрации, преобразующая данные печати в формат, понятный принтеру

  • Back-end — система, отправляющая данные на устройства печати.

CUPS использует IPP (англ. Internet Printing Protocol) в качестве основы для управления заданиями и очередями. По умолчанию используется TCP-порт 631. Система также имеет собственный веб-интерфейс для администрирования. CUPS является свободным программным обеспечением и распространяется в соответствии с GNU GPL и GNU LGPL второй версии. В настоящее время CUPS является стандартом де-факто в UNIX-подобных операционных системах.

С версии 1.6 прекращена поддержка LDAP: CUPS no longer supports automatic remote printers or implicit classes via the CUPS, LDAP, or SLP protocols (STR #3922, STR #3923)

http://www.cups.org/

https://github.com/apple/cups

Для jessie:

apt install -t jessie-backports cups

GutenPrint

GhostScript

cupsenable ИМЯ_ПРИНТЕРА

/usr/share/cups

/usr/lib/cups

/etc/cups
classes.conf
client.conf
cupsd.conf
mime.convs
mime.types
pdftops.conf
printers.conf
printers.conf.O
pstoraster.convs
snmp.conf

Шаблоны для web-сервера: /usr/share/cups/templates

Сообщения: /usr/share/cups/locale/

При перенастройке системы необходимо удалять файл /var/run/cups/printcap

Папка для дополнительных PPD /usr/share/cups/model

Отключение автоматического поиска принтеров

systemctl disable cups-browsed

Добавление нового принтера

1. Определяемся его MAC адресом

2. На серверах DHCP нужно внести изменения в конфигурационные файлы и перезагрузить сервис

3. На сервере в файле /etc/cups.printers.conf описываем принтер в следующей структуре:

<Printer ИМЯ_ПРИНТЕРА>
Info
Location МЕСТО РАСПОЛОЖЕНИЯ
DeviceURI lpd://<Адрес>/<Очередь>
State Idle
StateTime 1186389085
Accepting Yes
Shared Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
OpPolicy default
ErrorPolicy stop-printer
</Printer>

4. Перезагрузка CUPS

system-config-printer — это графический пользовательский интерфейс для настройки сервера CUPS, написанный на Python с использованием GTK+. Основной решаемой задачей является настройка системы печати на локальной машине, а также его можно использовать для настройки печати на удалённом принтере.

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

apt-get install -t jessie-backports system-config-printer

или

apt-get install system-config-printer

Установка

apt install printer-driver-cups-pdf

Настройка

Для того чтобы настроить и добавить принтер, подключенный к Windows, используя Samba необходимо установить:

apt install smbclient

В веб-интерфейсе CUPS добавляя новый принтер следует выбрать пункт Windows via Samba. Указать путь подключения как на примере и далее выполнять стандартную настройку:

smb://server/printer
smb://workgroup/server/printer
smb://username:password@server/printer
smb://username:password@workgroup/server/printer

cups/cups.txt · Последние изменения: 2020-08-28 15:33 — GreyWolf

Портал для разработчиков

hp | Основные шаги по устранению неполадок HPLIP

Первоначальные рекомендации по поиску и устранению неисправностей
Проблема с установкой
Проблемы с печатью (печать не выполняется должным образом или не соответствует ожиданиям)
Принтер не печатает
Устранение неполадок при сканировании
Для общего подключения или ваш принтер не определяется с помощью шагов по устранению неполадок HPLIP

* Поддерживается ли устройство HPLIP и используемая вами версия HPLIP?

* Проверьте поддержку вашего устройства на странице поддерживаемых устройств.

* Если вашему принтеру требуется более поздняя версия HPLIP, попробуйте выполнить обновление.

* Поддерживается ли используемый вами дистрибутив Linux автоматической установкой HPLIP?

* Убедитесь, что автоматический установщик поддерживается для вашего дистрибутива Linux на странице установки HPLIP.

* Используемый вами пакет HPLIP загружен со страницы проекта HPLIP, или вы используете пакет HPLIP, который был предварительно упакован с вашим дистрибутивом Linux? Мы рекомендуем использовать уже установленный HPLIP, если только ваш принтер не поддерживается этой версией HPLIP.Проверьте требуемую версию HPLIP для вашего принтера, перейдя на страницу поддерживаемых устройств. и поиск информации о вашем конкретном устройстве.

Запустите hp-check и проверьте следующее:

* HPLIP поддерживает ваш принтер (подробности см. В разделе выше).

* Все необходимые зависимости установлены (дополнительные ошибки зависимостей допустимы).

* Ваш принтер указан в разделе «Обнаруженные устройства».

* В разделе «Установленные принтеры» есть очередь печати, и для этой очереди нет ошибок.

* Если ваш принтер не указан в разделе «Обнаруженные устройства», убедитесь, что он подключен и не находится в состоянии ошибки.

* Если очередь принтера не установлена, запустите «hp-setup» (ознакомьтесь с примечаниями к выпуску для вашей версии HPLIP, чтобы узнать о специальных особенностях дистрибутива, например su или sudo) и следуйте предоставленным инструкциям по настройке принтера.

Распространенные ошибки в области обнаружения очереди печати, на которые следует обращать внимание:

* Принтер не устанавливается с использованием hp: / backend: настройте принтер с помощью «hp-setup» (см. Примечания к выпуску для вашей версии HPLIP, чтобы узнать о специальных особенностях дистрибутива, т.е.е. su или sudo необходимо).

* Требуемый плагин не установлен: запустите «hp-plugin», чтобы установить требуемый плагин, или используйте «hp-setup» для настройки принтера.

* Принтер находится в состоянии ошибки, не в сети или выключен?

* Правильно ли работает принтер в системе Windows? (Обычно это последний шаг проверки, чтобы убедиться, что принтер работает правильно.)

* Поддерживается ли ваш дистрибутив Linux автоматической установкой? В противном случае вам может потребоваться выполнить действия по установке вручную. Дополнительные сведения см. На странице установки HPLIP.

* Для получения справки по использованию автоматического установщика перейдите на страницу с инструкциями по автоматическому установщику.

Проблемы с функциональностью, вводом / выводом или печатью

* Попробуйте распечатать из другого приложения?

* Попробуйте распечатать другой документ, чтобы убедиться, что это не проблема?

* Принтер выровнен и / или очищен? Запустите «hp-toolbox», выберите принтер, затем выберите соответствующие действия.

* Запустите «hp-check» с терминала windo, убедитесь, что вывод соответствует указанным выше разделам, и убедитесь, что вы используете правильный или рекомендуемый файл PPD для очереди принтера.(Это выбирается во время конфигурации принтера с помощью программы hp-setup.)

* Просмотрите cups / var / log / cups / error_log на наличие ошибок; для получения информации о том, как установить чашки в режим отладки, см. эту статью базы знаний.

* Просмотрите / var / log / syslog на наличие ошибок. В зависимости от вашего дистрибутива linux запустите «su -c ‘tail -f / var / log / syslog’» или «sudo tail -f / var / log / syslog»

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

* Поддерживается ли принтер HPLIP? Убедитесь, что принтер поддерживает HPLIP и какая версия HPLIP необходима, перейдя на страницу поддерживаемых устройств.

* Поддерживает ли установленная в настоящее время версия HPLIP ваш принтер? Вам может потребоваться обновление, см. Ссылку выше.

* Правильно ли установлен принтер и обнаружен HPLIP? Запустите «hp-check -t» и убедитесь, что в разделе «Установленные очереди» нет ошибок, а в разделе «Обнаруженные USB-устройства» указан ваш принтер.

* Запустите «hp-check» и убедитесь, что установлены все необходимые зависимости. (отсутствие необязательной зависимости в порядке)

* В разделе «Установленные очереди» программы hp-check, есть ли примечание «Требуемый статус подключаемого модуля:», убедитесь, что на подключаемом модуле написано «Установлено». Если он НЕ установлен, принтер работать не будет. Чтобы исправить это, удалите очередь принтера и снова запустите «hp-setup», чтобы настроить принтер, или вы можете попробовать запустить «hp-plugin», чтобы установить подключаемый модуль напрямую.

* Попробуйте отключить и снова подключить принтер от системы.

* Попробуйте выключить и снова включить принтер, выключив его.

* Только Fedora : включен ли SELinux? Если это так, его следует установить в разрешающий или отключенный режим.

* Является ли пользователь частью группы lp? Запустите «группы» в окне терминала и убедитесь, что пользователь является частью группы lp. Если нет, обратитесь к документации вашего дистрибутива Linux о том, как добавить пользователя в группу lp. В большинстве дистрибутивов вы можете запустить (как root): «usermod -g lp yourusername»

Решение:
Поддерживает ли принтер сканирование?

Принтер в состоянии ошибки? Запустите hp-check и проверьте в разделе очередей установленных принтеров, что связь «Хорошая».

Запустите hp-check и убедитесь, что ошибок нет.

Проверьте hp-check -t, что «scanner-build = yes

Убедитесь, что вменяемый настроен с hpaio — запустите:

экспорт SANE_DEBUG_DLL = 128

скан-изображение -L

Принтер должен быть обнаружен.

Просмотрите / var / log / syslog во время сканирования на наличие ошибок. В зависимости от вашего дистрибутива вы можете запускать либо; su -c «tail -f / var / log / syslog» или sudo tail -f / var / log / syslog, затем попробуйте сканировать и просмотреть системный журнал на наличие ошибок.

Является ли пользователь частью группы сканеров? Запускайте группы и проверяйте. Если нет, обратитесь к документации вашего дистрибутива Linux о том, как добавить пользователя в группу сканера. В большинстве дистрибутивов вы можете запустить (как root): usermod -g scanner yourusername

Для общего подключения, или ваш принтер не определяется шагами по устранению неполадок HPLIP

* Используете какие-либо концентраторы USB? Старайтесь не использовать USB-концентраторы.
* Хороший usb-кабель? Попробуйте другой кабель USB или другой порт USB.
* Поддерживается ли принтер установленной версией HPLIP?
* Поддерживается ли принтер HPLIP? Перейдите на страницу поддерживаемых устройств.
* Принтер включен или находится в состоянии ошибки?
* Работает ли принтер в windows?
* У вас есть правильные разрешения на использование порта usb? Запустите «hp-check -t», посмотрите внизу раздела «USB I / O Setup» и убедитесь, что ваше имя пользователя является частью владельца / группы. Обычно это группа lp.
* Следуйте инструкциям по устранению проблем с USB-подключением.

Если у вас возникли проблемы с печатью на параллельном принтере, см. Эту статью базы знаний по устранению проблем с параллельной печатью.

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

Как устранить проблемы с печатью

Предисловие

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

Определение вашей проблемной области

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

Может быть:

  • проблемы с просмотром или подключением к принтеру (это могут быть проблемы с серверной частью чашки, проблемы с avahi, проблемы с libusb, проблемы с просмотром чашек),
  • проблемы с доступностью (правильная / неправильная настройка в cupsd.conf или его плохая интерпретация демоном cupsd, плохое взаимодействие с NIS, SSSD …),
  • печать с помощью samba (проблемы с серверной частью smb, которая является частью samba) или с samba, аутентифицированным через Kerberos (samba_krb5_printing),
  • проблемы с фильтрами, используемыми во время фильтрации документа в формат документа, поддерживаемый принтером, которые влияют на то, как и будет ли документ напечатан (проблема с фильтрами — pdftops, pdftopdf, pstops, bannertopdf и т. Д.), Или проблемы с двоичными файлами или библиотеками, которые используют фильтры — библиотеки libgs, qpdf, poppler…),
  • проблем с файлами описания принтеров Postscript, которые представляют собой старый способ определения возможностей принтера, таких как поддерживаемые размеры страниц, границы и т. Д.

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

Лучшее начало — прикрепить файлы с журналами, описанными ниже.

CUPS регистрация

Все журналы CUPS перенаправляются в журнал по умолчанию, начиная с Fedora 28 (было перенаправление error_log в журнал по умолчанию до Fedora 28, начиная с Fedora 20).В средстве устранения неполадок печати еще нет функции для получения журналов из журнала systemd, поэтому журналы CUPS необходимо получить, выполнив следующие действия.

Нам нужно определить два разных способа сбора полных журналов CUPS, связанных с инцидентами: один, если поврежденная очередь печати не предоставляется HPLIP, и другой, если это так. Они отличаются параметром фильтра journald — если вы используете для отладки очередь, отличную от HPLIP, можно собирать журналы из модуля cups systemd (с помощью ‘-u cups’), потому что все сообщения об ошибках правильно перенаправляются в модуль cups systemd ведение журнала, и они доступны в выводе после фильтрации объекта.Библиотеки HPLIP не реализованы для того же (восходящий поток не отвечает, чтобы принять потенциальное исправление в проект, и проблема не настолько критична, чтобы навсегда перетащить последующий патч), поэтому их сообщения не помечаются для модуля cups systemd, а они ‘ re отфильтровывается после вызова journald с помощью ‘-u cups’. Для таких очередей необходим журнал без фильтрации.

Примечание:

Журнал с привязкой к инцидентам без фильтрации требуется только для очередей печати HPLIP (их uri устройства начинается с hp: //) и нежелателен для других очередей, поскольку в больших случаях его трудно читать.Прикрепляйте журнал с привязкой к инцидентам только в случае необходимости.

Место регистрации CUPS
Журнал

CUPS по умолчанию находится в системном журнале, но запись в файл можно установить в /etc/cups/cups-files.conf с помощью директивы ErrorLog. Если вы хотите изменить настройки по умолчанию, тогда имя файла журнала не имеет значения, но рекомендуется поместить файл в путь ‘/ var / log / cups’, иначе SELinux заблокирует доступ cupsd к нему.

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

  • невозможно получить только журналы, подключенные к заданию, без объединения дополнительных команд
  • не может получить журналы за указанный период времени без объединения дополнительных команд

Для захвата связанных журналов событий можно использовать ‘tail -f’ e.грамм.:

 хвост -f / var / log / cups / error_log
 
Включить ведение журнала отладки CUPS

Включить полную отладочную информацию с помощью:

 cupsctl - ведение журнала отладки
 
Журнал заданий CUPS

ВАЖНО Если проблема возникает при отправке документа на печать или при попытке, сохраните журналы для этого задания. Если журнал заданий доступен, его прикрепление — ТРЕБУЕТСЯ .

Подготовьте CUPS для регистрации заданий

Для просмотра журнала конкретных заданий включите:

 PreserveJobFiles Да
 

в вашем / etc / cups / cupsd.conf и перезапустите службу чашки. Не забудьте удалить строку после того, как закончите отладку. ‘lpstat -W all’ после печати кажется пустым, если вы не включили эту директиву.

Получить журнал заданий для конкретного задания с идентификатором

Для записи журнала задания вам необходимо знать идентификатор задания (JID) задания — это номер, который вместе с именем очереди печати указывает задание как идентификатор запроса — для получения журналов, специфичных для задания.

Идентификатор задания можно увидеть в терминале, если вы отправляете документ на печать с помощью команды lp :

 $ lp -d <имя_ очереди_печати> <файл1>... 
идентификатор запроса:  -  (N файлов)
 

Или когда вы перечисляете задания (см. man lpstat ) — последнее задание находится в конце:

 $ lpstat -W все
...
 -   1024 среда, 11 января 2017 г., 17:52:19 CET
 

Вы можете автоматически получить последние журналы заданий (если у вас установлен awk и lpstat -W all возвращает задания):

 $ journalctl -u cups JID = `lpstat -W all | awk '{print $ 1}' | awk -F '-' '{print $ NF}' | хвост -n 1`> cups_job_log
 

Или вручную, если вы нашли JID самостоятельно:

 journalctl -u cups JID = > cups_job_log
 
Журнал cupsd, связанный с инцидентом (сломанная очередь печати не поддерживается HPLIP)

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

Как начать регистрацию журнала cupsd с привязкой к инцидентам

На новой вкладке терминала / терминала введите:

 journalctl -f -u чашки> cups_whole_log
 
Как получить журнал cupsd с привязкой к инцидентам

После запуска состояния ошибки вы пытаетесь диагностировать, например, напечатайте что-нибудь, попробуйте найти принтер через lpinfo и т. д., вы завершите захват журнала cupsd, привязанного к инцидентам, из шага выше, нажав ctrl + c.

Журнал cupsd с привязкой к инциденту (неработающая очередь печати поддерживается HPLIP)

К сожалению, библиотеки HPLIP не регистрируются в модуле CUPS в журнале, поэтому, если ваша очередь печати установлена ​​с драйвером HPLIP (uri устройства начинается с hp: // ), нам нужен журнал журнала с привязкой к инцидентам.

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

На новой вкладке терминала / терминала введите:

 journalctl -f> journal_whole_log
 
Как получить журнал с привязкой к инцидентам

После запуска состояния ошибки вы пытаетесь диагностировать e.грамм. напечатав что-то, запустив сценарий HP и т. д., вы завершите запись журнала журнала, связанного с инцидентами, из шага выше, нажав ctrl + c.

Отключение ведения журнала отладки

Приложите cups_job_log для проблемной работы, cups_whole_log или journal_log , если вы поймали весь журнал cupsd во время проблемного события, к отчету об ошибке в качестве вложения.

Затем, чтобы отключить отладочную информацию, сделайте следующее:

 cupsctl --no-debug-logging
 
Дополнительные команды для работы с systemd-journald

Просмотрите сообщения журнала с помощью:

 journalctl -u чашки -e
 

или:

 journalctl -u cups --since =...
 

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

 journalctl -u cups JID = ...
 

(завершение вкладки покажет вам, какие идентификаторы заданий содержат сообщения журнала)

просмотренных чашек

демон cups-browsed был представлен в Fedora около версии cups-1.5. Он может просматривать широковещательные сообщения Bonjour, широковещательные сообщения CUPS (устарело) и серверы LDAP для принтеров, а также создавать или удалять локальные очереди, указывающие на эти принтеры. Он может создавать широковещательные рассылки локальных очередей CUPS, но помечен как устаревший.

Для настройки журнала отладки необходимо добавить:

 DebugLogging stderr
 

в /etc/cups/cups-browsed.conf.

Журналы будут доступны в системном журнале после перезапуска с использованием чашки.

Ведение журнала отладки скриптов HPLIP

В сценариях

Python из HPLIP (например, hp-setup , hp-clean , hp-scan ) ведение журнала отладки перенаправлено на стандартный дескриптор файла ошибок, поэтому они не регистрируются в журнале. Чтобы получить их журнал отладки, запустите сценарий с параметром -ldebug e.грамм.:

 $ hp-setup -ldebug -i
 

и воспроизведите проблему. Затем скопируйте сообщения с терминала в hp_script_log . Пожалуйста, приложите файл также к заявке на bugzilla.

Какой марки и модели мой принтер?

У каждого отдельного принтера есть идентификатор устройства, зависящий от модели. Вы можете узнать это с помощью команды lpinfo :

 lpinfo -l -v
 

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

 Устройство: uri = usb: // HP / DESKJET% 20990C? Serial = U123456789AB
        class = direct
        info = HP DESKJET 990C
        марка и модель = HP DESKJET 990C
        идентификатор устройства = MFG: HEWLETT-PACKARD; MDL: DESKJET 990C; CMD: MLC, PCL, PML; CLS: PRI
NTER; DES: Hewlett-Packard DeskJet 990C; SN: U123456789AB; S: 00808880800010032C100000
0C2000000; P: 0800, FL, B0; J:;
        расположение =
 

Строка, которая идентифицирует этот конкретный тип модели, является длинной строкой, которая начинается с «device-id =» (показано здесь, охватывающее три строки).

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

 $ / usr / lib / чашки / серверная часть / snmp 10.34.18.3

сетевой разъем: //10.34.18.3 "HP Color LaserJet CP2025dn" "HP Color LaserJet CP2025dn"
"MFG: Hewlett-Packard; CMD: PJL, PML, PCLXL, POSTSCRIPT, PCL; MDL: HP Color LaserJet CP2025dn;
CLS: ПРИНТЕР; DES: Hewlett-Packard Color LaserJet CP2025dn; MEM: MEM = 55MB; КОММЕНТАРИЙ: RES = 600x8; "" HP Color LaserJet CP2025dn "
 

Device ID в данном случае (см. Backend (7)) предпоследнее поле.

Какие очереди печати доступны для меня?

Очереди на вашем компьютере могут быть постоянными или временными. CUPS может отображать все доступные очереди печати в локальной сети (постоянные и временные очереди) по:

 $ lpstat -e
 

Для постоянных очередей вы можете получить дополнительную информацию:

 $ lpstat -t
 

Какой драйвер я использую?

Файл PPD для очереди принтера может сказать вам, какой драйвер используется. * Ник:’ / etc / cups / ppd / *.ppd

Вы также можете узнать это с помощью приложения system-config-printer . Дважды щелкните значок очереди и посмотрите на поле Make and Model .

Чтобы просмотреть доступные драйверы, нажмите кнопку Изменить … рядом с этим полем. Возможно, вам будет полезно попробовать другой драйвер, чтобы увидеть, показывает ли он ту же проблему.

Модели без водителя

Большинство принтеров, выпущенных с 2010 года, поддерживают AirPrint или IPP Everywhere, что означает, что их не нужно устанавливать для работы — устройство обнаруживается Avahi, и возможности печати передаются по протоколу IPP — в основном это устройства без драйверов.В Fedora есть два решения, которые повсеместно реализуют IPP:

  • ЧАШКИ «везде» модель
  • чашки-фильтры, драйвер без водителя
чашки-фильтры, модель «повсюду»

Это стандартная реализация IPP CUPS, доступная в виде специальной модели принтера. Модель используется, когда вы используете временную очередь CUPS для своего устройства или если вы устанавливаете устройство с помощью модели IPP Everywhere в веб-интерфейсе CUPS или через lpadmin (используя -m везде, ).

Поскольку созданный файл PPD зависит от связи IPP с принтером, нам нужна информация, которая собирается с устройства. Для этого можно использовать ipptool :

 $ ipptool -tv  get-printer-attributes.test &> ipptool_log
 

При необходимости прикрепите созданный ipptool_log к заявке bugzilla.

стакан-фильтр без водителя

Специальный драйвер Cups-filter, который используется для генерации PPD по стандарту IPP Everywhere.Драйвер используется, если вы выбрали модель без драйвера во время установки принтера.

Нам также нужен вывод запроса get-printer-attributes:

 $ ipptool -tv  get-printer-attributes.test &> ipptool_log
 

и журналы отладки из самого драйвера, когда он генерирует PPD для вашего устройства:

 $ driverless -d cat  2> driverless_debug> created_ppd
 

При необходимости прикрепите все созданные файлы к заявке bugzilla.

Выяснение причины проблемы

Когда задание на печать обрабатывается, оно отправляется через цепочку из фильтров для преобразования файла в формат, понятный принтеру, а затем, наконец, отправляется в серверную часть , программу, которая может передавать данные на принтер. Слегка изменив способ печати, вы можете попробовать другой путь печати, чтобы увидеть, изменится ли это что-нибудь. Если это помогает обойти проблему, вы знаете, в какой области возникла проблема — включите эту информацию в отчет об ошибке, чтобы мы могли ее исправить.

Приложение

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

Формат документа

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

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

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

 cupsctl PreserveJobFiles = да
 

Отправленные рабочие документы останутся в / var / spool / cups. Существуют файлы с двумя типами имен — dXXXXX-YYY и cXXXXX.dXXXXX-YYY — это файл, который поступает в систему CUPS, нефильтрованный файл — XXXXX — это идентификатор задания, который заполняется нулями до 5 символов, а YYY — порядковый номер файла в задании. cXXXXX — это файл, который содержит параметры печати для задания, указанного идентификатором задания в XXXXX. Приложите dXXXXX-YYY к ошибке для задания, когда у вас возникнет проблема

Ручной фильтр

Более опытные пользователи могут попробовать запустить фильтры CUPS вручную и исследовать файл данных на каждом этапе, когда он конвертируется между различными форматами.Вот пример того, как это сделать для очереди gutenprint с именем pqueue с тестовой страницей CUPS, которая является ее собственным специальным типом MIME, application / vnd.cups-banner:

Сначала вам нужно знать конвейер фильтрации для application / vnd.cups-banner -> printer / pqueue (тип вывода MIME). Вы можете включить отладку, распечатать тестовую страницу, заглянуть в / var / log / cups / error_log и найти что-то похожее на:

 envp [29] = "FINAL_CONTENT_TYPE = принтер / очередь"
Запущен фильтр / usr / lib / cups / filter / bannertopdf (PID 1111)
Запущен фильтр / usr / lib / cups / filter / pdftopdf (PID 1112)
Запущен фильтр / usr / lib / cups / filter / gstoraster (PID 1113)
Запущен фильтр / usr / lib / cups / filter / rastertogutenprint.5.2 (PID 1114)
 

или запустить

 / usr / lib / cups / filter / bannertopdf 1 мне '' 1 ''  bannertopdf.pdf
cupsfilter -e -m принтер / pqueue -p /etc/cups/ppd/pqueue.ppd bannertopdf.pdf> / dev / null
 

и вы увидите:

 ИНФОРМАЦИЯ: pdftopdf (PID 1111) запущен.
ИНФОРМАЦИЯ: запущен гсторастер (PID 1112).
ИНФОРМАЦИЯ: запущен rastertogutenprint.5.2 (PID 1113).
 

примечание:
Этот трубопровод фильтра от чашки-1.6. С чашками <1.6 вместо этого вы можете увидеть bannertops -> pstops -> pstoraster.

Теперь вы можете запускать фильтры вручную:

 экспорт PPD = / etc / cups / ppd / pqueue.ppd
/ usr / lib / cups / filter / bannertopdf 1 мне '' 1 ''  bannertopdf.pdf
/ usr / lib / cups / filter / pdftopdf 1 мне '' 1 ''  pdftopdf.pdf
/ usr / lib / cups / filter / pdftoraster 1 мне '' 1 ''  out.ras
/usr/lib/cups/filter/rastertogutenprint.5.2 1 мне '' 1 ''  out.prn
 

Здесь evince или okular можно использовать для проверки вывода после первых двух фильтров, rasterview можно использовать для проверки вывода третьего фильтра, а вывод последнего фильтра должен быть проверен вручную или отправлен напрямую (lpr -oraw out.prn) к принтеру.

Драйвер

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

Даже если у вас есть доступ только к одному принтеру, часто есть выбор драйверов для использования для данной модели принтера, и попытка каждого из них по очереди может быть полезна для решения проблемы.См. Выше, как это сделать.

Фоматик

Для драйверов Foomatic вы можете попробовать включить отладку Foomatic, отредактировав файл /etc/foomatic/filter.conf и добавив строку:

 отладка: 1
 

В следующий раз, когда вы распечатаете задание в очереди с помощью foomatic, отладка будет помещена в /tmp/foomatic-rip.log, а входной файл, полученный foomatic-rip, будет в /tmp/foomatic-rip.ps.

Backend (рабочий транспорт)

Возможно, вы попробуете другой сервер.Используя system-config-printer , дважды щелкните значок очереди принтера и нажмите кнопку Изменить … рядом с полем URI устройства . Вы можете увидеть стрелку расширения Connection в правом нижнем углу окна — щелкните по ней, чтобы увидеть, какие серверные ВМ доступны. Для принтеров HP, подключенных через USB, обычно можно использовать серверную часть hp и usb .

Для перехвата USB-соединения:

  • узнать номер шины, на которой подключено USB-устройство, f.э .:
 $ lsusb
Автобус 002 Устройство 010: ID 03f0: 012a HP, Inc МФУ HP LaserJet M1536dnf
      знак равно
 
  • начать захват USB-пакетов:
 $ sudo tcpdump -i usbmonN -s0 -w usb.pcap
 

, где N — номер автобуса.

Для сетевых принтеров вы можете попробовать разные протоколы.

  • разъем для HP JetDirect (обычно порт 9100)
  • lpd предназначен для общих ресурсов печати UNIX старого стиля
  • smb предназначен для общих ресурсов CIFS из систем Windows
  • ipp предназначен для устройств с поддержкой протокола Интернет-печати, а также для других серверов CUPS.
    • Вы можете захватить IPP-трафик с помощью tcpdump следующим образом (имя интерфейса может отличаться от p4p1 ):
 tcpdump -n -i p4p1 -U -s0 -w ipp.pcap порт ipp
 
  • bjnp — это собственный сетевой протокол Canon bjnp (обычно порт 8611)
Инструмент настройки

Если ваша проблема связана с настройкой очередей печати, попробуйте использовать один из других способов сделать это. Доступно четыре:

  • Приложение системных настроек GNOME 3 ( control-center ), Системные настройки> Принтеры из оболочки GNOME
  • system-config-printer , System> Administration> Printing из меню GNOME
  • веб-интерфейс CUPS, http: // localhost: 631/
  • инструменты командной строки lpadmin , lpoptions , cupsctl , cupsaccept , cupsenable и т. Д.

Истории пользователей

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

У меня есть принтер HP, и у меня проблема со скриптом HPLIP

Выполните действия, описанные в следующих разделах:

У меня есть принтер HP, я установил его с HPLIP и проблема с ним

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

HPLIP uri устройства начинается с hp: // .

Выполните действия, описанные в следующих разделах:

Мой принтер не печатает правильно или не печатает вообще, но я вижу принтер в диалоговом окне печати

Выполните действия, описанные в следующих разделах:

Общий выпуск CUPS

В случае общих проблем — принтер не найден, segfault — выполните действия, описанные в следующих разделах (должен быть запущен avahi-daemon ):

Мой принтер не печатает правильно — я использую «везде» модель

Выполните действия, описанные в следующих разделах:

У меня общая проблема с просмотром чашек

Выполните действия, описанные в следующих разделах:

 $ journalctl -u cups-browsed -f> cups_browsed_log
 
  • вызвать проблему или подождать, пока просмотр чашек не вызовет саму проблему
  • отменить просмотр чашек и записи журнала cupsd
  • прикрепите созданные файлы cups_whole_log и cups_browsed_log к заявке и отключите отладку

Принтер, обнаруженный с помощью cups-browsed, не печатает или печатает плохо

Самая сложная пользовательская история — нам нужно знать, как была создана очередь печати и как она себя ведет во время печати.Очередь печати, найденная с помощью cups-browsed, имеет uri устройства, начинающийся с implicitclass: // .

Пожалуйста, следуйте инструкциям:

 $ journalctl -u cups-browsed -f> cups_browsed_queue_creation
 
  • дайте cups-browsed некоторое время для обработки найденных устройств (зависит от того, сколько устройств у вас в локальной сети или сколько очередей печати хранится в месте, указанном вами с помощью директивы BrowsePoll )
  • отмените захват журналов cups-browsed и cupsd — сохраните файлы как cups_queue_creation и cups_browsed_queue_creation

Теперь нам нужно захватить журналы во время печати:

 $ journalctl -u cups-browsed -f> cups_browsed_printing
 

Создание отчета об ошибке

Выбор компонента

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

Графический интерфейс конфигурации (см. Выше) представляет собой приложение системных настроек GNOME 3 или system-config-printer. Эти пакеты также предоставляют апплет принтера, обрабатывают автоматическое создание очереди и отключают / разрешают очереди, когда USB-принтеры отключаются и повторно подключаются.

Большинство приложений GTK + используют диалог печати GTK +. Если проблема возникает при использовании приложений GTK +, но не при печати из командной строки или из другого приложения, отличного от GTK +, вероятно, о проблеме следует сообщить в gtk2.Если проблема возникает только с одним приложением GTK +, а другие приложения GTK + печатают нормально, сообщение об ошибке должно быть зарегистрировано в этом конкретном приложении.

Если проблема возникает только с файлами PDF, ошибка вполне может быть в poppler (фильтр CUPS pdftops — это оболочка для одной из служебных программ poppler).

Сообщайте об ошибках, обнаруженных только при использовании бэкэнда smb против samba.

Для ошибок, обнаруживаемых только при использовании бэкэнда hp или драйверов hpijs или hpcups, выберите hplip для компонента.

Для ошибок, связанных с демоном cups-browsed и его обнаружением принтеров, выберите cups-filters

Другие возможности, в зависимости от проблемы, включают:

  • foomatic (фильтр и драйвер Foomatic CUPS)
  • foomatic-db (фактическая база данных принтеров, используемая Foomatic)
  • ghostscript (конвертирует PostScript в другие форматы)
  • gutenprint (драйвер, поддерживающий очень много принтеров)

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

Другая информация, включающая

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

Перед сбором информации
  • Измените локаль вашей ОС на английский. Пособие [1].
  • Приложите собранную информацию в виде архива (пример здесь, вам могут потребоваться права root) к проблеме bugzilla.
  • Не забудьте вызвать проблему после включения отладки и перезапуска чашек и перед сбором информации.
Информация для сбора
  • PPD-файл для очереди печати (из каталога / etc / cups / ppd )
  • документ, который вы пытаетесь распечатать — если документ большой, попробуйте проверить, не возникает ли проблема и с меньшим документом
  • Журнал
  • cupsd регистрирует, когда включен уровень отладки 2. Инструкции по включению debug2 и получению журналов из systemd-journald приведены выше.
  • , если проблема связана с заданием на печать, приложите журналы журнала для этого конкретного задания. Как получить логи здесь, пример с JID. Узнать значение JID можно командой:
 $ lpstat -W all
 

. Найдите там свою работу, и JID стоит после «-«.

  • Если проблема в к. Е. «печать из evince печатает мусор, но печать из libreoffice работает», затем прикрепите два отдельных файла — первый будет содержать журналы при печати из evince, второй — журналы при печати из libreoffice.
  • Troubleshoot.txt из system-config-printer (ВНИМАНИЕ: он не содержит журналов журнала — не забудьте также прикрепить их).
  • марка и модель принтера
  • файлы конфигурации — /etc/cups/client.conf (если он содержит какие-либо изменения по умолчанию), /etc/cups/cupsd.conf
  • , если проблема связана с просмотром чашек и обнаружением принтера, прикрепите /etc/cups/cups-browsed.conf и журналы просмотра чашек, полученные с помощью инструкций выше.

Некоторые примеры документов можно найти в категории «Печать тестовых случаев».

Дополнительная литература

На главной странице печати содержится дополнительная информация о том, как работает печать в Fedora.

Как отладить проблемы сканирования

Библиотека

SANE, коммуникационные библиотеки и серверные части могут включать и выключать ведение журнала отладки с помощью переменных среды SANE_DEBUG_ * .

Общие переменные среды:

  • SANE_DEBUG_DLL — включает отладку библиотеки SANE
  • SANE_DEBUG_SANEI_USB — включает отладочную коммуникационную библиотеку для USB — добавьте переменную среды, если ваше устройство подключено через USB-кабель
  • SANE_DEBUG_SANEI_TCP — включает отладочную коммуникационную библиотеку для беспроводной / локальной сети — добавляет переменную среды, если ваше устройство подключено через Wi-Fi или Ethernet. переменная для f.е. Серверная часть HPAIO — это SANE_DEBUG_HPAIO .

    Здесь вы можете узнать, какая серверная часть SANE поддерживает ваше устройство. Если ваше устройство HP и оно не поддерживается серверной частью airscan или какой-либо другой серверной частью SANE, ее может поддерживать серверная часть hpaio из пакета hplip , см. Список поддерживаемых устройств здесь.

    Отладка обнаружения сканера

    Если вы не видите свой сканер в приложении для сканирования, значит отладка процесса обнаружения в порядке.Я предпочитаю использовать scanimage в примерах, но аналогичные шаги могут быть применены для любого приложения сканирования, такого как xsane , scanadf , simple-scan и т. Д.

    Вам нужно будет использовать переменные среды при запуске приложения сканирования ( scanimage в данном случае). Переменные среды, используемые с командой scanimage , зависят от того, как подключен ваш сканер и какой серверный модуль должен его поддерживать. Поэтому для получения журналов отладки для устройства HP LaserJet, , подключенного через Ethernet / Wifi и поддерживаемого серверной частью HPAIO , используйте команду:

     $ SANE_DEBUG_DLL = 255 SANE_DEBUG_HPAIO = 255 SANE_DEBUG_SANEI_TCP = 255 сканированное изображение -L &> Discovery_output
     

    или, ф.е. если у вас есть CanoScan 8600F, , подключенный через USB и поддерживаемый серверной частью Genesys , используйте команду:

     $ SANE_DEBUG_DLL = 255 SANE_DEBUG_GENESYS = 255 SANE_DEBUG_SANEI_USB = 255 сканированное изображение -L &> Discovery_output
     

    Прикрепите созданный файл discovery_output как вложение к заявке на bugzilla.

    Отладка процесса сканирования

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

    Само отладочное сканирование похоже на обнаружение — установите переменные среды перед запуском приложения команды / сканирования и перехватите журналы в файл. Возможная команда (например, если у вас есть сетевой сканер , поддерживаемый серверной частью HPAIO ):

     $ SANE_DEBUG_DLL = 255 SANE_DEBUG_HPAIO = 255 SANE_DEBUG_SANEI_TCP = 255 xsane &> debug_log
     

    или (как только вы узнаете uri устройства из scanimage -L — см. Предыдущий раздел):

     $ SANE_DEBUG_DLL = 255 SANE_DEBUG_HPAIO = 255 SANE_DEBUG_SANEI_TCP = 255 scanimage -d > out.pnm 2> debug_log
     

    , где вы заменяете на фактический uri устройства, например. ‘hpaio: / net / laserjet_m1536dnf_mfp? ip = 192.168.1.112’.

    Прикрепите созданный файл — debug_log — как приложение к заявке на bugzilla.

    Получение сканера uri

    Этот пункт в основном представляет собой руководство по получению uri сканера для отладки самого сканирования через scanimage . Вам не нужно указывать uri сканера в приложениях с графическим интерфейсом пользователя, таких как xsane или simple-scan , потому что приложение сделает это за вас, или вы можете выбрать сканер щелчком мыши.

    Команда scanimage -L возвращает вывод, в котором отображается uri устройства, например:

     $ scanimage -L
    устройство `v4l: / dev / video0 '- это интегрированная камера без имени: интегрированное виртуальное устройство C
    устройство `hpaio: / net / laserjet_m1536dnf_mfp? ip = 192.168.1.112 & queue = false 'является Hewlett-Packard laserjet_m1536dnf_mfp all-in-one
     

    Например, строка ‘hpaio: / net / laserjet_m1536dnf_mfp? Ip = 192.168.1.112 & queue = false’ — это uri устройства для многофункционального сканера Hewlett-Packard laserjet_m1536dnf_mfp.

    Отладка сканера HP, если он поддерживается HPLIP

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

    Это можно сделать так:

    • начать сбор журналов журнала в фоновом режиме:
     $ journalctl -f> journal_logs &
     
    • убить процесс journalctl, f.е. таким образом (если есть только один процесс journactl)
     $ kill `pidof journalctl`
     

    , затем прикрепите созданный файл — journal_logs — как вложение к заявке на bugzilla. Пожалуйста, выполняйте только одно действие для каждого захвата — это означает, что если вас попросят прикрепить файлы журнала для обнаружения и сканирования сканера HP, поддерживаемого hplip, вы приложите в качестве вложения четыре файла — discovery_output , journal_logs для вывода результатов обнаружения, debug_logs и journal_logs для debug_logs.

    Известные проблемы

    Вот несколько известных проблем, которые возникают при определенных обстоятельствах, и нет общего решения, или вышестоящая компания не хотела добавлять решение в свой проект:

    просмотренные чашки

    Невозможно распечатать из-за «cups-browsed имя хоста назначения не предоставлено, он работает?»

    cups-browsed иногда теряет соединение с сервером печати (обычно со старыми, например cups-1.4.2), когда ноутбук меняет сетевое соединение (смена сети Wi-Fi или после перехода в спящий / приостановленный режим).Вы можете снова заставить печать работать, отменив задания и перезапустив чашки.

     $ отменить -a
    $ sudo systemctl restart cups-browsed
     
    просмотров чашек потребляет большое количество ЦП

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

     HttpLocalTimeout N
    HttpRemoteTimeout N
     

    в / etc / cups / cups-browsed.conf, где N — количество секунд, по истечении которых соединение прерывается. Затем перезапустите сервис с просмотром чашек. Эта опция в настоящее время есть в Fedora 27 и выше.

    [С ФЕДОРА 27] cups-browsed создает другие имена очереди печати, чем раньше.

    Эта проблема связана с удаленными очередями cups, которые объявляются более старой версией CUPS (обычно ниже cups-1.5, например, RHEL 6). Cups-browsed по умолчанию создает локальные очереди печати, названные по идентификатору DNS-SD принтера, и снова включается именование удаленной очередью cups путем добавления:

     LocalQueueNamingRemoteCUPS RemoteName
     

    в / etc / cups / cups-browsed.conf и перезапустите сервис с просмотром чашек.

    стаканчики-фильтры

    Печать занимает много времени или вообще не печатается

    Если вашему принтеру требуется много времени для печати (из POV) или он вообще не печатает (у некоторых принтеров Xerox такие проблемы с рендерером gs, поэтому они снова работают только с рендерером pdftops), вы можете попробовать изменить средство визуализации PostScript по умолчанию. Средством визуализации по умолчанию в Fedora для большинства принтеров является фильтр gs от Ghostscript, но у нас есть фильтр pdftops от Poppler для принтеров Brother, Minolta и Konica Minolta — эта настройка называется гибридной.

    Другие доступные настройки рендерера: gs (из Ghostscript), pdftops и pdftocairo (из Poppler), mupdf (из mupdf) и acroread (из Adobe Reader, а не в официальных репозиториях Fedora), тогда вы можете установить другое рендерер по умолчанию для вашей печати очередь такая:

     # lpadmin -p <имя-принтера> -o pdftops-renderer-default = gs / pdftops / pdftocairo / mudpf / acroread / hybrid
     

    ВНИМАНИЕ! Большинство «медленных» проблем с печатью вызвано приложениями для создания PDF-файлов, которые создают плохой PDF-файл, и этот плохо сгенерированный PDF-файл в основном является ядром проблемы.Подводя итог, можно сказать, что проблема медленной печати может снова возникнуть с другим файлом PDF, тогда это зависит от решения пользователя: если он хочет печатать быстро и, вероятно, иногда менять средство визуализации по умолчанию, или медленная печать не является такой критической проблемой.

    ЧАШКИ

    [Исправлено в F33 и более поздних версиях] Firefox, Evince (программа просмотра PDF), GVim, Gedit, Gnome Control Center показывают «фиктивную» / дублированную очередь печати, которая не работает

    Эта ошибка связана с каждым приложением, использующим диалог печати GTK. Диалог GTK решил получить информацию о доступных из двух источников — сообщения mDNS от Avahi и CUPS — эта фиктивная / дублированная очередь печати представляет собой очередь печати GTK, созданную в ее диалоговом окне на основе сообщений Avahi, но ее нет в CUPS, потому что нет один создал его, а позже GTK ведет себя так, как будто он существует в CUPS.Таким образом, каждый раз, когда пользователь хочет распечатать, GTK отправляет запрос в CUPS для этой очереди, но он отбрасывается CUPS, потому что очередь не существует.

    Функция, которую здесь пытается сделать GTK, называется временными очередями CUPS — Разработчики GTK в настоящее время работают над немедленным исправлением в этой bugzilla. В будущем планируется использовать бэкэнд cpdb-backend-cups в GTK, но сейчас мы сосредоточены на промежуточном исправлении.

    CUPS плохо принимает некоторые виды FQDN

    CUPS иногда имеет проблемы с некоторыми видами FQDN — это означает, что вы используете FQDN в директиве BrowsePoll в / etc / cups / cups-browsed.conf, CUPS не распознает его как действительное имя хоста — это решается добавлением:

     ServerAlias ​​your.own.fully.qualified.hostname.com
     

    в /etc/cups/client.conf и перезапуск службы cups.

    HPLIP

    Во-первых, я хотел бы отметить, что мы не несем ответственности за поддержку HPLIP, которая загружается и устанавливается с веб-сайта HP. Пожалуйста, устанавливайте hplip rpms из официальных репозиториев Fedora в большинстве случаев.

    Hp-plugin: файл не соответствует своей контрольной сумме.Файл мог быть поврежден или изменен

    Эта распространенная ошибка в основном вызвана внешними причинами (сбой сервера, сбой сети), когда wget пытается загрузить подключаемый модуль, но возвращает только сообщение об ошибке. Это связано с сообщением:

     Загрузка плагина завершилась неудачно, код ошибки = N
     

    , где N — возвращаемое значение wget (man wget), которое используется для загрузки проприетарного плагина. Решения для этой проблемы могут различаться — вы можете подождать, пока серверы снова не заработают, или попытаться установить плагин, который вы загружаете вручную с http: // www.openprinting.org/download/printdriver/auxfiles/HP/plugins/ (выберите «Выбрать и установить существующую локальную копию файла подключаемого модуля» во время установки hp-setup или hp-plugin).

    Невозможно загрузить cupsext

    Эта ошибка может возникнуть, если hplip установлен с веб-сайта HP, или его зависимости являются смешанными пакетами python2 и python3 или установлены с помощью pip. Это решается удалением всех пакетов hplip (hplip, hplip-gui, hplip-libs, hplip-common, libsane-hpiao) и их повторной установкой из репозиториев.

    Отсутствует интерфейс hplip-gui
    Инструменты графического интерфейса

    и части команд HP с графическим интерфейсом перемещены в подпакет hplip-gui, поскольку основной пакет может работать без графического интерфейса, поэтому основной пакет меньше. Результатом этого решения является то, что команды HP необходимо запускать с параметром -i для интерактивного режима или необходимо установить подпакет hplip-gui.

    Инструменты, которые необходимо запускать с параметром -i для интерфейса командной строки или иметь установленный hplip-gui для графического интерфейса пользователя:

     hp-align
    hp-clean
    hp-colorcal
    hp-Diagnose_queues
    hp-fab
    hp-прошивка
    hp-info
    плагин для hp
    hp-sendfax
    hp-setup
    hp-testpage
    hp-разгрузить
     

    Инструменты, находящиеся в hplip-gui:

     л.с.-чек
    hp-print
    hp-systray
    набор инструментов hp
    hp-devicesettings
    hp-faxsetup
    hp-linefeedcal
    HP-макеты
    hp-printsettings
    hp-wificonfig
     
    Принтер HP не обнаружен, не печатает или плохо печатает

    Некоторые принтеры HP плохо работают с URI, предоставляемыми CUPS (dnssd, usb, ipp), или им нужен проприетарный плагин от HP, которого нет в Fedora из-за проблем с лицензированием.Для таких принтеров попробуйте запустить:

     hp-setup -i -g
     

    для интерактивного режима или:

     hp-setup -g
     

    для графического режима. Эта команда устанавливает принтеры HP и сканеры HP. Если у вас возникла проблема с принтером HP / сканером HP, который не обнаружен, не печатает или не печатает надлежащим образом, попробуйте установить его с помощью «hp-setup», если это поможет. Если это не помогает, отправьте файл bugzilla, приложите вывод hp-setup и укажите, что вы пробовали «hp-setup».

    Устройство, которому требуется плагин, не работает после обновления HPLIP

    Устройства, которым требуется плагин, могут перестать работать после обновления до более новой версии HPLIP — это связано с проверкой версии плагина в коде.Проверка необходима для предотвращения несогласованности, когда новые функции в HPLIP с открытым исходным кодом требуют новых проприетарных библиотек из подключаемого модуля. Чтобы ваш принтер снова заработал, просто скачайте и снова установите плагин с помощью:

     $ hp-плагин -i
     
    Устройства, которым требуется бинарный плагин, остановлены для работы в Fedora Silverblue / CoreOS

    Устройства, для которых требуется подключаемый модуль HP с закрытым исходным кодом, по умолчанию необходимо устанавливать подключаемый модуль при каждом запуске / перезапуске компьютера. Сценарий с закрытым исходным кодом HP устанавливает плагины в каталоги, доступные только для чтения, поэтому плагины удаляются после запуска / перезапуска Fedora.Обходной путь — попробовать, если ваше устройство поддерживает печать и сканирование без драйверов, попробовать пакет hplip-plugin от RPMFusion или продолжать устанавливать плагин каждый раз, когда вы хотите распечатать.

    USB-принтер / сканер HP не работает из-за конфликта в USB-порту
    Собственные двоичные плагины

    HPLIP имеют тенденцию конфликтовать на USB-порту, к которому подключено устройство HP, если устройство HP способно использовать IPP через USB и если установлен пакет ipp-usb . Решение состоит в том, чтобы удалить hplip и поддерживать устройство с помощью ipp-usb и sane-airscan , потому что он предоставляет новые протоколы с открытым исходным кодом, и вы не ограничены проблемами, вызванными плагинами с закрытым исходным кодом переустанавливаются каждый раз, когда появляется новая версия HPLIP, они не работают стабильно в Silverblue / CoreOS).

    Терминология печати и сканирования

    Печать

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

    Блок абстракции в CUPS для принтера — он имеет uri устройства, который представляет подключение к устройству, и может существовать с классическим драйвером (файл PPD из другого пакета) или без него (печать без драйвера). Записи, которые вы видите в диалоговых окнах печати и настройках, это те очереди печати . Они могут быть постоянными или временными .

    Постоянные очереди печати

    Очереди с классическим драйвером или очередью печати без драйвера, которые необходимо совместно использовать в сети.

    Временные очереди печати

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

    Удаленная очередь CUPS

    Очередь на другом компьютере, где запущен другой процесс cupsd, чем на локальной машине. Обычно они встречаются в корпоративных решениях, где принтеры не находятся в той же сети, что и пользователи, или если администратор хочет централизованный мониторинг, прежде всего, принтеров.В таких решениях пользователи настраивают cups-browsed для установки удаленной очереди CUPS в качестве локальных очередей с помощью директивы BrowsePoll или устанавливают конкретную очередь через GNOME. Может быть решение, как перенаправить сообщения mDNS, которые сервер CUPS объявляет в сети с пользователями, но я еще не настроил это правильно.

    Классические драйверы

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

    Печать без драйверов (беспроводная / Ethernet)

    Большинство современных устройств (2010+) соответствуют стандартам AirPrint, Mopria или IPP Everywhere, что означает, что им не нужен классический драйвер для печати. В этих устройствах реализован протокол IPP (Internet Printing Protocol) 2.0+, они способны «рекламировать» себя через mDNS и поддерживают такие форматы документов, как PDF, PCLm, JPEG, Apple Raster или PWG Raster.

    Есть несколько предварительных требований, которые необходимо выполнить в ОС, чтобы получить доступ к функции без драйверов:

    • avahi-daemon должен работать
    • должен быть ‘.активен локальный преобразователь адресов — systemd-resolved или nss-mdns
    • само устройство должно иметь порт IPP (631) и включен Bonjour / MDNS
    • IPP и MDNS должны быть включены в брандмауэре

    Как работает печать без драйверов под крышей (проще говоря):

    • CUPS видит принтер в сообщениях mDNS через Avahi
    • CUPS узнает о возможностях принтера через IPP
    • , если есть задание на печать, CUPS настроит цепочку фильтров для преобразования входящего файла в формат документа, который понимает принтер (Apple Raster, PDF, PWG Raster, PCLm, JPEG)

    В случае необходимости, файл PPD генерируется генератором PPD в CUPS или двоичным файлом без драйвера .

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

    См. Руководство, как проверить, поддерживает ли ваш принтер печать без драйверов.

    Печать с использованием драйвера

    Эта печать похожа на печать без драйвера в отношении настройки цепочки фильтров, но:

    • он может использовать ограниченную функциональность mDNS и IPP или не использовать их совсем
    • вся информация о возможностях устройства взята из файла PPD (Postscript Printer Description)
    • может использовать специализированные фильтры и специализированную связь с устройством (зависит от драйвера)

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

    Печать необработанных данных

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

    Приложения для принтера

    Двоичные файлы, которые обеспечивают поддержку старых устройств, которые не могут соответствовать стандартам без драйверов.Основная идея заключается в том, что они смогут принять старый драйвер, а затем рекламировать себя как устройство, способное печатать без драйверов. Тогда новый CUPS сможет их видеть, и пользователь сможет печатать через них, как если бы они были временными очередями. В настоящее время доступны приложения для печати в Fedora: ippeveprinter (часть CUPS — см. Пакет cups-printerapp) и lprint (обеспечивает поддержку устройств, требующих прямой печати — в основном принтеров этикеток). Я планирую упаковать PAPPL, библиотеку для создания приложений для принтеров, и ps-printer-app, приложение для принтеров, поддерживающих Postscript.

    Печать без драйверов (USB)

    Печать без драйверов имеет свой вариант для устройств, подключенных через USB — он покрывается стандартом «IPP over USB». Для работы вам понадобится пакет ipp-usb, который зарегистрирует устройство в Avahi на локальном хосте — тогда USB-устройство будет выглядеть как беспроводное / Ethernet-устройство. Обнаружение / печать выглядит так же, как с устройством беспроводной / Ethernet с поддержкой без драйверов.

    См. Руководство, как проверить IPP-over-USB.

    Сканирование

    Классическое сканирование (через hplip и sane-backends)

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

    Сканирование без драйверов

    Сканирование без драйверов использует серверные модули sane-escl (не встроены в Fedora) и sane-airscan для связи с новыми устройствами. Эти новые устройства обычно поддерживают eSCL (на основе протокола AirScan от Apple) или WSD (веб-службы для устройств от Microsoft), которые может использовать sane-airscan .

    Что касается сканирования через USB, то оно имеет те же требования, что и печать. Устройство должно поддерживать IPP через USB и должен быть установлен пакет ipp-usb для сканирования через USB без драйверов.

    Полезные хитрости

    Как узнать, поддерживает ли мой принтер печать без драйверов?

    • найдите AirPrint в спецификации устройства
    • Принтеры, официально сертифицированные для IPP Everywhere
    • обратитесь к руководству по включению временных очередей CUPS — если ваш принтер отображается в конце в командах CUPS таким образом, ваш принтер может печатать без драйверов
    • [только USB-устройства] проверьте наличие IPP через USB (руководство здесь).

    Как узнать, что мое многофункциональное устройство или автономный сканер поддерживает сканирование без драйверов?

    • проверьте технические характеристики устройства и найдите eSCL / AirScan / WSD — если любое из них упомянуто, устройство может сканировать без драйверов
    • большинство устройств, которые рекламируют, что они могут использовать AirPrint, также поддерживают AirScan
    • [только USB-устройства] проверьте наличие IPP через USB (руководство здесь).

    Как узнать, поддерживает ли мое USB-устройство IPP через USB

    Проверьте, есть ли на вашем USB-устройстве следующий текст в выходных данных lsusb -v :

    ...
          bИнтерфейс: принтер класса 7
          b Интерфейс Принтер подкласса 1
          bInterfaceProtocol 4
          iInterface 0
    ...
     

    Если устройство имеет bInterfaceClass 7 , bInterfaceSubClass 1 и bInterfaceProtocol 4 в последовательности, оно поддерживает IPP через USB, что имеет решающее значение для печати и сканирования без драйверов USB-устройств.

    Как установить очередь печати

    Ответ: вам вообще не нужно устанавливать 🙂 если ваше устройство достаточно новое, находится в вашей локальной сети или является USB-устройством, на нем включен IPP / AirPrint / mDNS и ваш avahi-daemon запущен, CUPS может создать для вас временную очередь прямо в диалоговом окне печати, печатать через нее и удалить ее после успешной печати.Но все еще существуют случаи использования, когда требуется постоянная установка, например, совместное использование очереди печати, разные значения по умолчанию для очереди печати или принтер, находящийся в другой подсети, поэтому я также расскажу о постоянной установке.

    Как настроить временные очереди CUPS с сетевым принтером

    Если ваш принтер поддерживает AirPrint, IPP и MDNS включены на вашем принтере и принтере, то для работы временных очередей CUPS вам необходимо:

    • есть avahi-daemon запущен:
     $ sudo systemctl start avahi-daemon
     
    • имеют чашек.socket включен и работает:
     $ sudo systemctl enable cups.socket
    $ sudo systemctl start cups.socket
     
    • включите IPP и MDNS в настройках вашего брандмауэра

    После этого в диалоговом окне печати появится временная очередь, и вам не нужно устанавливать конкретную очередь печати, если у вас нет для этого причины.

    Вы можете проверить, отображается ли ваш принтер в сообщениях mDNS (необходимо установить avahi-tools ):

     $ avahi-browse -avrt
    ...
    = enp0s25 IPv4 МФУ HP LaserJet M1536dnf (42307C) _ipp._tcp local
       hostname = [NPI42307C.local]
       адрес = [192.168.1.10]
       порт = [631]
       txt = ["UUID = 434e4239-4243-4a42-5859-3c4a

    07c" "Scan = T" "Duplex = T" "Color = F" "note =" "adminurl = http: //NPI42307C.local." "priority = 10" "product = (HP LaserJet M1536dnf MFP)" "ty = HP LaserJet M1536dnf MFP" "URF = CP99, W8, OB10, PQ3-4-5, DM1, IS1-4, MT1-2-3- 5, MT1-2-3-5, RS600 "" rp = ipp / printer "" pdl = application / postscript, application / vnd.hp-PCL, application / vnd.hp-PCLXL, application / pdf, image / urf "" qtotal = 1 "" txtvers = 1 "] ...

    и если CUPS или его бэкенд видят принтер по командам:

    (перечисляет все существующие очереди печати — постоянные или временные)

     $ lpstat -e
    HP_LaserJet_M1536dnf_MFP_42307C_
     

    или

    (перечисляет все устройства, которые CUPS видит в локальной сети или USB)

     $ lpinfo -l -v
    ...
    Устройство: uri = ipp: // HP% 20LaserJet% 20M1536dnf% 20MFP% 20 (42307C) ._ipp._tcp.local /
            class = network
            info = МФУ HP LaserJet M1536dnf (без драйвера)
            производитель и модель = МФУ HP LaserJet M1536dnf
            идентификатор устройства = MFG: HP; MDL: МФУ LaserJet M1536dnf; CMD: PDF, PS, PCL, AppleRaster, URF;
            расположение =
    ...
     
    Как настроить временные очереди CUPS с USB-принтером
    Для USB-принтеров

    требуется только одно дополнительное предварительное условие: установка ipp-usb , которая преобразует IPP через USB-устройства в сетевой принтер на локальном хосте:

     $ sudo dnf -y установить ipp-usb
     

    Затем вы можете выполнить действия, описанные в руководстве для сетевых принтеров.

    Как установить постоянную очередь печати

    1) через веб-интерфейс CUPS

     $ стартовые чашки sudo systemctl
     
    • перейдите по адресу localhost: 631 в своем браузере и выберите вкладку «Администрирование»
    • нажмите «Добавить принтер» и следуйте диалоговым окнам.

    2) с помощью команд интерфейса командной строки.

    • вам понадобится устройство uri — , ф.э .:
     $ lpinfo -l -v
    ...
    Устройство: uri = ipp: // HP% 20LaserJet% 20M1536dnf% 20MFP% 20 (42307C) ._ipp._tcp.local /
                  ================================================== ==============
     

    и имя водителя — <драйвер>, например:

     $ lpinfo -m
    ....
    везде IPP везде
    ==========
    ...
     
     $ lpadmin -p <имя> -v  -m <драйвер> -E
     

    , где и — подчеркнутые строки из предыдущих команд, а — имя очереди печати, выбранное вами.

    Как установить сканер

    Сканеры

    в Linux не нужно устанавливать так же, как принтеры, если они находятся в одной сети или подключены через USB — вам просто нужно установить sane-backends , и любое приложение сканирования будет взаимодействовать со сканером / многофункциональным устройством. устройство через серверную часть, которая поддерживает сканер.

    Однако для старых сканеров и многофункциональных устройств HP требуется дополнительный пакет — hplip — и его бинарные плагины, загружаемые через hp-plugin -i , если они уже не поддерживаются sane-backends .

    Как заставить работать сканирование без драйверов

    Для локальных и USB-устройств:

    • имеет avahi-daemon включен и работает
     $ sudo systemctl enable avahi-daemon
    $ sudo systemctl start avahi-daemon
     
    • включить MDNS в брандмауэре
    • [только USB-устройства] установить ipp-usb

    Для сетевых сканеров в другой сети:

    • установите uri сканера в / etc / sane.d / airscan.conf — см .:
     man sane-airscan
     

    Как настроить mDNS с разрешением systemd

    systemd-resolved включен и работает по умолчанию с F33 и может быть настроен для работы с Avahi при поддержке mDNS, которая требуется CUPS — Avahi выполняет рекламу, регистрацию и совместное использование устройств, а resolved будет обрабатывать разрешение адресов ‘.local’. Он будет работать со следующими шагами:

    • поместите ‘MulticastDNS = resolve’ в /etc/systemd/resolved.conf
     $ sudo systemctl restart systemd-resolved
    $ sudo nmcli connection изменяет соединение .mdns да connection.llmnr да
    $ sudo systemctl restart NetworkManager
     

    Как сжимать файлы

    Пример:

     $ tar -czvf cups-information.tar.gz / etc / cups cups.logs Troubleshoot.txt lpinfo.log
     

    Перезапуск службы чашек

    Вы перезапускаете сервис cups с помощью:

     sudo systemctl перезапуск cups.service
     

    Унифицированный репозиторий драйверов Linux Samsung — Устранение неполадок

    Унифицированный репозиторий драйверов Linux Samsung — Устранение неполадок — Печать P0.ПОМОЩЬ! Я обновил пакеты и теперь не могу печатать!
    П1. Пакеты установлены, но принтер не настроен
    P2. Странные артефакты при печати текста / графики или зависания в некоторых файлах (особенно PDF)
    P3. Мне не удается выполнить печать на сетевом принтере с помощью IPP
    P4. Неправильный цветовой баланс
    P5. Кажется, мой принтер настроен, но я не могу напечатать
    P6. Как узнать, что я использую драйвер Samsung?
    P7. Мой USB-принтер несовместим или не печатает, и я использую старый дистрибутив
    P8.Мой USB-принтер несовместим или не печатает, и я использую suld-scanner-usblp-fix Package
    P9. Задания печати исчезают, и я использую SELinux
    P10. Мой принтер CJX-xxxx не печатает
    P11. Я обновил CUPS и теперь не могу напечатать
    P12. Задания печати исчезают и / или принтер просто мигает, а я не использую SELinux
    P13. Не удается добавить принтер с помощью конфигуратора
    P14. Не могу добавить принтер через какой-либо интерфейс
    P15. Печать вызывает ошибки rastertospl

    P0.ПОМОЩЬ! Я обновил пакеты и теперь не могу печатать!

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

    П1. Пакеты установлены, но принтер не настроен

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

    P2. Странные артефакты печати текста / графики или зависания в некоторых файлах (особенно PDF)

    Это может быть вызвано несколькими проблемами, но по существу все они связаны с генерацией вывода postscript или SPL (-C), поступающего на принтер.Есть несколько возможных решений, но заранее сложно определить, какое из них лучше.
    • Установка пакета suld-printer-pdf-fix может решить вашу проблему, если вы выполняете описанные для него условия (но несовместимы с пакетами driver2). Проявления, которые это может исправить, — это невозможность распечатать некоторые или все файлы pdf, в то время как файлы, отличные от pdf, работают правильно, чрезвычайно медленная печать или отказ принтера печатать более одного документа без сброса.Это также может решить проблемы «поврежденного» вывода pdf с отсутствующими символами и т. Д., Но только в определенных ситуациях. Пакет устанавливает обходной путь для преобразования pdf / postscript с использованием cairo для создания вывода postscript или SPL-C, необходимого для принтеров Samsung. Качество печати может пострадать, и этот пакет потенциально может нарушить вашу способность печатать что-либо вообще, а также может помешать печати на принтерах сторонних производителей при установке. Это взлом, поэтому изменения в нескольких не связанных пакетах (CUPS, poppler, ghostscript) могут сделать исправление недействительным.С другой стороны, это, вероятно, самый простой способ попробовать и решить несколько проблем, когда оно работает, если у вас установлены необходимые зависимости (Ubuntu 12.04, Debian 7.0 Wheezy или новее). Это исправление, скорее всего, поможет с принтерами SPL (-C), но может также работать с принтерами PostScript. Благодарим за разработку исправления b1b1 на форумах Ubuntu.
    • Другой подход, похожий на вышеупомянутый, который может быть более общим, представлен в этой ветке b1b1. Хотя это решение, возможно, более широко применимо, его нелегко упаковать, и поэтому (по крайней мере, на данный момент) его необходимо применять вручную.
    • Попробуйте другую версию драйвера (установите другой пакет suld-driver- * ). Хотя большинство принтеров работают с последней версией драйвера так же или лучше, как и с одним из более ранних, в некоторых случаях более ранний драйвер может быть лучше. Вот почему более ранние версии все еще доступны.
    • Смена диска принтера на связанную модель иногда помогает, хотя может вызвать другие проблемы, и не всегда ясно, что такое «связанная» модель (обычно схожий номер модели, но не всегда).Это требует некоторых проб и ошибок, и получаемые распечатки часто бывают посредственного качества. Этот подход лучше всего использовать, когда большие / цветные отпечатки блокируют работу принтера, но простые отпечатки работают нормально.
    • Возможно, стоит изучить альтернативные подходы (проверьте страницу альтернатив). В некоторых случаях стандартный вариант принтера работает на удивление хорошо для устранения случайных мелких артефактов при печати из PDF (особенно с принтерами PostScript).
    • В частности, в случае проблем с печатью с помощью LibreOffice изменение поведения lpadmin, как описано здесь, может решить несколько проблем с печатью.
    • Если ничего не помогает, опубликуйте сообщение на форуме, если кто-то другой решил проблему для вашей конкретной модели.

    П3. Я не могу печатать на сетевом принтере с помощью IPP

    Многие принтеры Samsung неправильно поддерживают IPP. Если ваш принтер затронут, вам нужно будет подключиться к вашему принтеру, используя протоколы LPD или raw / socket. Список затронутых принтеров (возможно, неполный): CLP-500, CLP-510, CLP-550, CLP-600, CLP-650, MFP-560, MFP-750, ML-1450, ML-1510, ML-1520. , ML-1610, ML-1710, ML-1740, ML-1750, ML-2010, ML-2150, ML-2150, ML-2250, ML-2550S, ML-2550, ML-2560, ML-3560, ML -6060, ML-7300, SCX-4100, SCX-4200, SCX-4×16, SCX-4×20, SCX-4×21, SCX-6×20.Большинство из этих принтеров относительно старые (впервые выпущены в 2006 году или ранее), но я не знаю, была ли проблема устранена в более поздних принтерах или список просто устарел.

    Другой тип проблемы IPP возникает в Ubuntu 12.04 с CUPS 1.5.2 и, возможно, в других дистрибутивах, с принтерами, которых нет в приведенном выше списке. Некоторые пользователи, по-видимому, заставляют его работать, обновив CUPS до 1.5.3 или более поздних версий. По крайней мере, в Ubuntu, протокол «ipp14» был введен в дополнение к «ipp», чтобы включить поддержку старых ipp для принтеров, которые не работают с новым ipp.См. Эту ветку и, в частности, этот комментарий для получения более подробной информации и ppa до тех пор, пока не будут выпущены официальные пакеты. Я не знаю, будут ли эти исправления включены обратно в проект CUPS и распространяться на другие дистрибутивы. Начиная с версии CUPS 1.5.3, здесь описан другой обходной путь для активации и использования протокола ipp14.

    П4. Неправильный цветовой баланс

    На самом деле я не знаю, что вызывает это у некоторых людей с определенными принтерами. Однако, по крайней мере, в некоторых случаях использование драйвера, установленного в этом репозитории, работает лучше всего.В других случаях вы можете добиться лучших результатов при прямой установке драйвера Samsung, драйвера Foomatic или драйвера PostScript CUPS. Я подозреваю, что это как-то связано с тем, какие именно библиотеки вызываются, но помимо этого это все еще загадка.

    P5. Мой принтер настроен, но я не могу печатать

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

    P6. Как узнать, что я использую драйвер Samsung?

    Зайдите в свойства принтера (есть разные способы сделать это) и посмотрите на марку / модель.Все драйверы Samsung имеют имена в формате Samsung Series. Напротив, все драйверы Foomatic содержат в названии либо «Foomatic», либо «foo2qpdl», а драйверы SpliX обычно где-то содержат «splix».

    P7. Мой USB-принтер несовместим или не печатает, и я использую старый дистрибутив

    Иногда и только в дистрибутивах, выпущенных до 2008 (Debian 4.x (Etch), Ubuntu 7.10 (Feisty) и ранее), поддержка USB при использовании этих пакетов будет нестандартной или нарушенной. Я не знаю, почему это так, но хорошего решения нет из-за ограничений в работе самих драйверов Samsung.Лучше всего обновить свой дистрибутив.

    P8. Мой USB-принтер несовместим или не печатает, и я использую

    suld-scanner-usblp-fix Package Это потенциальный побочный эффект исправления usblp. В некоторых случаях вы застряли с возможностью сканировать или печатать с устройства, но не можете получить доступ к обеим функциям вместе.

    P9. Задания печати исчезают, и я использую SELinux

    Возможно, вам потребуется сообщить SELinux об установке драйвера и правильных разрешениях для файлов, особенно если вы установили драйвер с помощью установщика Samsung вместо репозитория.По крайней мере, с Fedora, запуск следующего (как root / sudo), похоже, позволяет печать:
    restorecon -R -v / usr / lib64
    restorecon -R -v / usr / lib
    restorecon -R -v / usr / share
    Другим решением может быть применение файла политики SELinux, созданного Samsung для драйверов 4.00.36 и 4.00.39, доступного здесь. Если вы знаете, что делать с таким файлом, или знаете, как использовать другие инструменты SELinux для авторизации серверной части mfp для взаимодействия с CUPS, отлично. В противном случае я не могу вам помочь, и вам следует изучить другие ресурсы, чтобы получить помощь (или опубликовать сообщение на форуме).

    P10. Мой принтер CJX-xxxx не печатает

    Ни в коем случае не устанавливайте эти пакеты или Unified Driver, это не сработает. Вместо этого установите пакет printer-driver-c2esp (старые дистрибутивы вместо этого используют пакет c2esp ), если он еще не присутствует, и настройте свой принтер как принтер Kodak ESP. Это работает как минимум для CJX-1000, CJX-1050W и CJX-2000FW. Если этот пакет недоступен для распространения, вы можете получить его здесь (я не связан с ним).

    P11. Я обновил CUPS и теперь не могу распечатать

    CUPS 1.5.3, например, в Ubuntu 12.04.1 и Debian Wheezy, плохо ладит с драйверами 3.00.xx. Обновитесь до версии 4.xx.xx. Если вы используете текущую версию, отправьте сообщение на форумы.

    P12. Задания печати исчезают и / или принтер просто мигает, а я не использую SELinux

    По крайней мере, для некоторых моделей принтеров принудительная печать тестовой страницы (с помощью такого инструмента, как system-config-printer) и / или ручная печать текстового файла, похоже, устраняет проблему с принтером.Чтобы распечатать текстовый файл вручную, введите команду:
    lp -d имя-принтера a-текстовый файл
    , где имя-принтера — это имя установленного принтера, а a-текстовый файл — простой текстовый файл. См. Этот пост для более подробного примера; По сообщениям нескольких пользователей, этот подход работает. Некоторые приложения также, по-видимому, имеют проблемы с определенными настройками сети: см. Этот пост, чтобы определить, применима ли эта ситуация к вам.

    P13. Мне не удается добавить принтер с помощью конфигуратора

    Самое простое решение — просто не использовать Конфигуратор для добавления принтера.Вместо этого используйте один из стандартных системных инструментов или веб-интерфейс CUPS. Однако, в зависимости от точного поведения, может быть другое решение:
    • Если диалоговое окно добавления принтера вылетает после нажатия кнопки «Далее», когда оно впервые появляется, проблема заключается в конфликте или ошибке в некоторых версиях libmfp. Это происходит с версиями драйвера 4.00.36 и 4.00.39, но, похоже, не является проблемой для более ранних или более поздних версий. Поэтому, если вы можете переключать версии драйвера, процедура добавления принтера, вероятно, будет работать.
    • Если диалоговое окно добавления принтера работает, но принтеры не найдены, то простого решения проблемы нет. Если вы также не можете обнаружить принтер с помощью других интерфейсов, проблема заключается в оборудовании, разрешениях или соединении между компьютером и принтером. Если другие интерфейсы работают, просто используйте их.

    П14. Не могу добавить принтер через какой-либо интерфейс

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

    P15. Печать вызывает ошибки rastertospl

    Это может быть связано с жестко запрограммированными ссылками на наличие этого файла в / opt / smfp-common / printer / lib. Это могло произойти в драйвере 4.01.17 и все версии driver2. Возможное решение — создать символическую ссылку: ln -s / usr / share / cups / filter / rasterspl / opt / smfp-common / printer / lib / rastertospl (сначала может потребоваться sudo и / или создание директорий opt). Если вы столкнулись с этим, и это решит проблему, отправьте сообщение на форум, так как это редкая ошибка, которую трудно изолировать, поскольку она характерна для определенных принтеров, использующих определенные настройки.

    : Глава 12: Печать :: Как работает Linux :: Системы Linux :: eTutorials.org

    12.5 CUPS

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

    Вы можете установить CUPS где угодно. В большинстве дистрибутивов используется префикс установки / usr, поэтому клиенты находятся в / usr / bin, системные программы — в / usr / sbin и так далее.В этой книге предполагается, что ваш префикс каталога — / usr. Вот расположение и содержимое каталогов:

    • / usr / sbin Сервер cupsd и программы администрирования

    • / usr / bin Клиенты уровня пользователя, включая заменители lpr и lp

    • / etc / cups Файлы конфигурации

    • / usr / lib / cups Фильтры, серверные части, сетевые интерфейсы и сценарии веб-интерфейса

    • / var / log / cups Файлы журнала принтера

    • / var / spool / cups Задания на печать в очереди

    • / usr / share / cups Источники файлов PPD, шрифты и другие данные программ

    • / usr / share / doc / cups Электронная документация

    12.5.1 Настройка cupsd

    Центральный сервер и планировщик в CUPS называется cupsd, а центральный файл конфигурации — cupsd.conf. Обычно вам не нужно ничего делать, чтобы получить рабочий cupsd, но стандартный файл конфигурации обычно не очень безопасен (см. Раздел 12.5.2).

    Изучите файл конфигурации, чтобы получить обзор того, что вы можете изменить. Если вы когда-либо настраивали веб-сервер Apache, вы сразу заметите сходство между файлами конфигурации httpd и файлами CUPS.

    Ваш файл cupsd.conf содержит много информации, но сначала найдите путь AccessLog и измените его, если вы хотите, чтобы файл журнала находился в другом месте:

    AccessLog / var / log / cups / access_log
     

    Порт IPP по умолчанию — 631, поэтому вы должны увидеть следующую строку:

    Вам не нужно менять это. Однако вы можете захотеть добавить больше портов с ключевым словом Listen.

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

    12.5.2 Безопасность CUPS

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

    В этом разделе рассказывается, как настроить проверку подлинности digest , наиболее полезный тип проверки подлинности, доступный для веб-интерфейса администрирования CUPS. Выполните следующие шаги при новой установке:

    1. Просканируйте ваш cupsd.conf на предмет следующего вида:

      <Местоположение / администратор>
      AuthType Basic
      Система AuthClass
      
      ## Ограничить доступ к локальному домену
      Заказ запретить, разрешить
      Запретить от всех
      Разрешить от 127.0.0.1
      # Требуется шифрование
      
      
       
    2. Измените AuthType Basic на AuthType Digest. Обычная проверка подлинности настраивает веб-браузер для отправки паролей пользователей Unix в виде простого текста. Как и ранее в главах о сети, это действительно плохая идея.

    3. Выполните следующую команду, чтобы добавить пользователя с правами администратора в файл дайджеста паролей CUPS (/etc/cups/passwd.md5):

    4. При появлении запроса выберите пароль, содержащий не менее шести символов и одну цифру.

    Проверка подлинности сертификата (для утилит командной строки)

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

    Ответ заключается в том, что CUPS имеет другую форму аутентификации, называемую сертификатом , аутентификацией , которая используется в основном программами командной строки и внутренней связью с сервером. Планировщик CUPS помещает идентификаторы в каталог сертификатов / etc / cups / certs для различных целей, но вас больше всего интересует / etc / cups / certs / 0. Любой пользователь, который может читать этот файл, может запускать административные программы без пароля, потому что эти программы отправляют сертификат вместо имени пользователя и пароля.

    Примечание?

    Не используйте chmod , чтобы разрешить административный доступ для пользователей без полномочий root, потому что вы можете случайно разрешить административный доступ любому пользователю в системе. Вместо этого добавьте желаемых пользователей в группу Unix, указанную директивой Group из Раздела 12.5.

    12.5.3 Запуск CUPS

    Теперь, когда ваша ситуация с безопасностью находится под контролем, вы готовы запустить планировщик CUPS и добавить несколько принтеров.Чтобы запустить CUPS, все, что вам нужно сделать, это запустить cupsd от имени суперпользователя. Если вы компилируете CUPS из исходного кода, обратите внимание, что процедура установки изменяет ваши загрузочные каталоги init.d и rc.d, чтобы сделать CUPS частью вашей последовательности запуска.

    Чтобы протестировать установку, войдите в веб-интерфейс, указав в веб-браузере CUPS по этому URL-адресу (обратите внимание, что это порт IPP на вашем компьютере):

    Это должно дать экран с несколькими вариантами печати. В новой установке CUPS нет принтеров, поэтому добавление принтера — это ваша первая задача.

    12.5.4 Добавление и редактирование принтеров

    Самый простой способ добавить принтер — через веб-интерфейс (на странице списка принтеров есть кнопка Добавить Принтер ). В первый раз, когда вы пытаетесь выполнить какую-либо административную задачу, CUPS запрашивает у вас имя пользователя и пароль. Используйте пользователя admin и пароль, которые вы настроили в Разделе 12.5.2.

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

    lpadmin -p  имя  -v  устройство 
     

    В зависимости от вашей конфигурации вам может потребоваться опция -E для указания шифрования.

    Добавление тестового принтера

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

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

    1. Запустите lpadmin, чтобы добавить принтер:

      lpadmin -p test -v файл: / dev / null
       
    2. Используйте lpstat, чтобы проверить наличие принтера:

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

      тест принтера отключен с 01 января 00:00 -
              причина неизвестна
       
    3. Изучите / etc / cups / printers.конф. Вы должны увидеть такую ​​запись:

      <Тест принтера по умолчанию>
      Информационный тест
      Файл DeviceURI: / dev / null
       ...
       ...
      
       
    4. Активируйте принтер:

      Команда lpstat -p теперь должна сообщать, что принтер бездействует, а не отключен.

    5. Отправьте тестовое задание на принтер:

    6. Убедитесь, что задание запущено, просмотрев / var / log / cups / error_log.Имя файла несколько вводит в заблуждение, потому что error_log также содержит обычные диагностические сообщения. Вы должны увидеть несколько записей, которые выглядят так:

      I [05 / Oct / 2003: 14: 44: 46 -0700] Начат "/ usr / lib / cups / cgi-
      bin / printers.cgi "(pid = 17156)
      I [05 / Oct / 2003: 14: 46: 23 -0700] Добавление начального баннера "нет" к заданию 1.
      I [05 / Oct / 2003: 14: 46: 23 -0700] Добавление конечной страницы баннера "нет" к заданию 1.
      I [05 / Oct / 2003: 14: 46: 23 -0700] Задание 1 поставлено в очередь на «тест» «пользователем  ».
    7. Работа также должна быть завершена. Используйте следующую команду, чтобы убедиться, что это так:

      lpstat -W завершено -l тест
       

      Результат должен выглядеть так:

      test-1  пользователь  1024 Вс 5 окт 14:46:23 2003
             в очереди на тест
       
    8. Удалите тестовый принтер, когда закончите, используя эту команду:

    Эта длительная процедура подтверждает, что ваш сервер CUPS работает и вы можете добавлять и изменять принтеры.

    Добавление настоящего принтера

    Теперь, когда вы немного знакомы с процессом, вы готовы добавить настоящий принтер определенной модели с помощью этой команды:

    lpadmin -p  имя  -v  устройство  -m  модель 
     

    Параметр model чрезвычайно важен, поскольку он предоставляет информацию о конкретном принтере, включая спецификацию драйвера принтера. Если вы не используете параметр -m, CUPS использует «сырую» модель печати, отправляя нефильтрованные входные данные непосредственно на принтер.Вы почти наверняка этого не захотите, потому что принтеры могут генерировать большое количество мусора при получении неверного ввода.

    Если вы хотите сделать новый принтер по умолчанию, выполните эту команду:

    По большей части вы предоставляете имя файла описания принтера PostScript (PPD) как модель . Вы можете получить список файлов PPD с помощью этой команды:

    Однако при стандартной установке CUPS маловероятно, что список вывода будет содержать соответствующую запись PPD для вашего принтера, даже если некоторые записи могут показаться заманчивыми.Прежде чем обсуждать файлы PPD (см. Раздел 12.5.6 для получения дополнительной информации о них), давайте кратко рассмотрим, как указать устройство для параметра -v в предыдущей команде lpadmin.

    12.5.5 Принтеры (спецификации серверной части)

    Как вы могли догадаться из спецификации file: / dev / null на созданном вами тестовом принтере, вы указываете устройства с помощью универсальных идентификаторов ресурсов (URI). Вы можете получить неполный список параметров URI с помощью команды lpinfo:

    Результат выглядит примерно так:

    сетевая розетка
    сеть http
    сеть IPP
    сетевой lpd
    прямая параллель: / dev / lp0
    прямой scsi
    последовательный последовательный порт: / dev / ttyS0? baud = 115200
    последовательный последовательный порт: / dev / ttyS1? baud = 115200
     ...
     ...
     

    В правом столбце указаны типы серверной части и полные URI. Вы можете увидеть следующие серверные ВМ:

    • параллельный Большинство прямых подключений по-прежнему осуществляется через параллельный порт. Порт с именем LPT1 в DOS и Windows — это / dev / lp0 в Linux, поэтому в большинстве случаев отлично работает следующая спецификация устройства:

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

    • usb В более новых принтерах с USB-подключением серверная часть немного отличается от параллельных портов. URI выглядит примерно так, хотя имя файла устройства может быть другим в вашей системе:

    • socket Это прямое сетевое соединение TCP с печатающим устройством сетевого принтера.Большинство этих принтеров прослушивают TCP-порт 9100, поэтому вы можете указать это следующим образом (поскольку порт 9100 используется по умолчанию, вам действительно не нужен: 9100):

      socket: //  printer_host : 9100
       
    • lpd Если вы хотите, чтобы CUPS отправлял задания на порт Berkeley LPD удаленного сервера печати или принтера, используйте эту спецификацию URI:

    • smb Это для печати на общий принтер Windows.В этом случае вам нужно использовать программу Samba smbspool. См. Раздел 14.6.2 для получения более подробной информации о спецификации URI и настройке серверной части Samba.

    • ipp, http Они предназначены для печати на другие сетевые серверы IPP (например, удаленные серверы CUPS). Вот пример:

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

      серийный: / dev / ttyS1? baud = 38400
       

      Однако часто требуется указать параметры четности и управления потоком. Настройки управления потоком включают soft (или xonxoff), dtrdsr и hard (или rtscts). Используйте знак + перед каждой дополнительной настройкой, как показано в следующем примере:

      последовательный: / dev / ttyS1? baud = 38400 + size = 8 + parity = none + flow = dtrdsr
       
    • scsi SCSI-принтеры встречаются редко, но если вам случится найти один, вы можете распечатать его на общее устройство SCSI, как в этом примере:

    • файл Это печатает в файл.По умолчанию CUPS отключает печать в любой файл в системе, кроме / dev / null. Вы можете изменить это, добавив параметр FileDevice в файл cupsd.conf. Имейте в виду, что в этом случае вы рискуете получить очень серьезные нарушения безопасности.

    CUPS не позволяет вам выбрать серверную часть, о которой он знает, что не может достичь. Например, если ваше ядро ​​не поддерживает параллельный порт, CUPS не выводит список параллельных портов при запуске lpinfo -v. Однако система не идеальна; Отображение порта в списке не означает, что поддержка действительно существует.

    Каждая из этих спецификаций бэкэнда использует свою собственную отдельную бэкэнд-программу, расположенную в / usr / lib / cups / backend. Бэкэнд появляется в самом конце процесса печати.

    12.5.6 Файлы PPD

    После выбора подходящего устройства вы можете завершить определение принтера с помощью файла PPD. CUPS использует файлы PPD для своей базы данных принтеров.

    Файл PPD представляет собой обычный текст и описывает возможности принтера. CUPS хранит свои файлы PPD по умолчанию в / usr / share / cups / model; чтобы сделать параметры нового PPD-файла доступными для веб-интерфейса CUPS, поместите файл в / usr / share / cups / model и отправьте вашему cupsd сигнал HUP.Когда вы импортируете файл PPD в базу данных файлов PPD CUPS с помощью lpadmin -m, CUPS создает копию файла в / etc / cups / ppd.

    Файл PPD позволяет точно контролировать параметры печати. Обратите внимание, что если вы выбираете необработанный интерфейс (то есть без файла PPD), вы не получаете никаких параметров с помощью кнопки Настроить принтер в веб-интерфейсе CUPS, поэтому вы не можете изменить параметры носителя, дуплекса, титульной страницы и других параметров.

    Вот общая информация о принтере и файле из PPD-файла Apple LaserWriter 16/600:

    * FormatVersion: «4.3 "
    * FileVersion: "1.1"
    * LanguageVersion: английский
    * LanguageEncoding: ISOLatin1
    * PCFileName: "POSTSCRI.PPD"
    * Производитель: «Яблоко»
    * Продукт: «(LaserWriter 16/600)»
     

    Глядя в другом месте файла, вы можете увидеть некоторую информацию о размерах страниц:

    * PageSize Letter / US Letter: "<< / PageSize [612 792] / ImagingBBox null >> setpagedevice"
    * PageSize A4 / A4: «<< / PageSize [595 842] / ImagingBBox null >> setpagedevice»
     

    Стандартный файл PPD также должен содержать информацию о шрифте:

    * DefaultFont: Courier
    * Шрифт AvantGarde-Book: Standard »(001.006S) "Стандартное ПЗУ
    * Шрифт AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM
    * Шрифт AvantGarde-Demi: Standard "(001.007S)" Standard ROM
    * Шрифт AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM
    * Шрифт Bookman-Demi: Standard "(001.004S)" Standard ROM
    * Шрифт Bookman-DemiItalic: Standard "(001.004S)" Standard ROM
    * Шрифт Bookman-Light: Standard "(001.004S)" Standard ROM
    * Шрифт Bookman-LightItalic: Standard "(001.004S)" Standard ROM
    * Font Courier: Standard »(002.004S) "Стандартное ПЗУ
    * Шрифт Courier-Bold: Standard "(002.004S)" Standard ROM
     

    Предыдущие отрывки взяты из GPL-версии файла PPD. Производители принтеров PostScript предоставляют файлы PPD для своих продуктов, и по большей части они должны нормально работать с CUPS. Однако принтеры, не поддерживающие PostScript, обычно не поставляются с файлами PPD, поэтому им нужен сторонний файл PPD, который задает фильтр печати для растеризации PostScript. Вы можете получить файлы PPD CUPS на таких сайтах, как http: // www.linuxprinting.org/.

    12.5.7 Указание фильтра

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

    Фильтры

    CUPS конвертируют форматы файлов двумя способами:

    • В общий формат Фильтр этого типа преобразует различные форматы файлов в общий формат.Этим общим форматом будут либо PostScript, либо растровые данные. Файл mime.convs управляет фильтрами, выполняющими преобразование. По большей части вам не придется беспокоиться об этих фильтрах, которые рассматриваются в следующем разделе.

    • Из общего формата Фильтр, указанный в файле PPD, запускается непосредственно перед серверной частью, чтобы изменить данные общего формата на язык, который понимает принтер. Если у вас есть принтер PostScript, вам, вероятно, не понадобится этот фильтр в вашем файле PPD.Однако, если у вас нет принтера PostScript, эти внутренние фильтры требуют большого внимания, как вы увидите.

    CUPS Фильтры и mime.convs

    CUPS поставляется с рядом фильтров в / usr / lib / cups / filter, которые преобразуют различные промежуточные форматы файлов в данные для печати. Однако трудно понять, где и как CUPS запускает эти фильтры.

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

    Запущен фильтр / usr / lib / cups / filter / texttops (PID 3999) для задания 25.Запущен фильтр / usr / lib / cups / filter / pstops (PID 4000) для задания 25.
    
     

    Для получения этого подробного журнала параметр LogLevel в вашем cupsd.conf должен содержать минимум информации. Однако информация не регистрирует исходный тип входного файла; вам необходимо установить параметр для отладки, чтобы регистрировать эту дополнительную информацию.

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

    1. CUPS определяет выходной формат, который серверная часть должна отправить на принтер, просматривая файл PPD.

    2. CUPS определяет тип входного файла с помощью / etc / cups / mime.types. В предыдущем примере вывода журнала совпало правило application / postscript в /etc/cups/mime.types.

    3. CUPS просматривает файл /etc/cups/mime.convs в поисках подходящего фильтра для выполнения преобразования между форматом входного файла и форматом, который требуется серверной части.Рассмотрим эту строку из mime.convs, которая преобразует текстовые файлы в вывод PostScript:

      текст / обычное приложение / постскриптум 33 текстовые строки
       

      Четыре столбца здесь — это входной MIME-тип, выходной MIME-тип, оценочная стоимость и имя программы фильтрации, которая преобразует входные данные в выходные.

    4. CUPS запускает фильтр или последовательность фильтров, необходимую для серверной части принтера. Если нет подходящих записей в mime.convs, CUPS регистрирует это сообщение:

      Невозможно преобразовать файл 0 в формат для печати для задания  n !
       
    5. CUPS запускает любой необходимый дополнительный фильтр перед передачей окончательного вывода на серверную часть (см. Следующий раздел).

    Указание внутреннего фильтра в файле PPD

    Непосредственно перед отправкой задания на серверную часть принтера CUPS может запустить внутренний фильтр из файла PPD.

    Backend-фильтры устанавливаются с помощью параметра cupsFilter в файле PPD.Вот пример из файла PPD, который вы видели ранее:

    * cupsFilter: "application / vnd.cups-postscript 0 foomatic-rip"
     

    Как видите, значение параметра cupsFilter состоит из трех частей:

    1. Ожидаемый тип MIME. В предыдущем примере это PostScript. По умолчанию используется application / vnd.cups-postscript.

    2. Относительная стоимость фильтра (установите значение 0).

    3. Имя исполняемого файла фильтра.

    Предыдущий параметр cupsFilter очень типичен для принтеров, которые не понимают PostScript. Foomatic — это фильтр для печати, который подходит для многих различных типов принтеров.

    Есть несколько ошибок с настройкой cupsFilter:

    • Вам не нужен дополнительный фильтр, если ваш принтер уже поддерживает PostScript. Многие файлы PPD для принтеров PostScript, которые вы найдете в Интернете, содержат фильтры, которые на самом деле ничего не делают, но требуют дополнительной настройки программного обеспечения.Удалите все строки cupsFilter в файле PPD, если ваш принтер поддерживает PostScript.

    • Файлы PPD по умолчанию и файл mime.convs, поставляемые с CUPS, не содержат необходимых настроек для растеризации файлов PostScript, и настройка растеризатора может несколько сбить с толку. Например, общие файлы PPD HP LaserJet в дистрибутивах CUPS ожидают ввода растрового (не PostScript). Однако файл mime.convs по умолчанию не содержит активной записи для преобразования PostScript в растровый вывод.По этой причине вы можете отказаться от стандартных файлов PPD CUPS и поискать соответствующие файлы в Интернете.

    • Чтобы решить проблему растеризации, большинство файлов PPD для принтеров, не поддерживающих PostScript, в Интернете предполагают, что у вас есть Foomatic в качестве фильтра (см. Раздел 12.5.8) с Ghostscript в качестве механизма растеризации. Если ваш принтер не поддерживает PostScript, вам вряд ли удастся избежать использования Foomatic.

    Но есть и хорошие новости.Большинство файлов PPD, которые вы найдете в Интернете, работают нормально , если все ваше программное обеспечение (Ghostscript, Foomatic, CUPS и т. Д.) Установлено правильно.

    12.5.8 Foomatic (для принтеров без PostScript)

    Если ваш принтер не имеет встроенной поддержки PostScript, возможно, вам придется настроить еще один кусок головоломки — фильтр растеризатора. Здесь есть несколько вариантов, но самой популярной системой на данный момент является Foomatic.

    Прежде чем вдаваться в подробности о Foomatic, вы должны четко понимать конечную цель здесь: вы хотите, чтобы фильтр печати запускал команду Ghostscript (gs) для преобразования входных данных PostScript в растровую форму для отправки на принтер.Аргументы команды выглядят примерно так:

    gs -q -dSAFER -dNOPAUSE -dBATCH  параметры_устройства  -sOutputFile = - -
     

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

    В большинстве документации не упоминается, что большинство администраторов и пользователей даже не взаимодействуют с базой данных. Все, о чем вам нужно беспокоиться, это создание данных конфигурации принтера, таких как файлы PPD. Фактически, эта работа уже сделана за вас, когда вы посетите http://www.linuxprinting.org/, чтобы получить файл PPD для вашего принтера. Вся информация, необходимая программе фильтрации Foomatic (foomatic-rip), находится в этом PPD-файле. Например, вот часть PPD-файла HP LaserJet 1100, содержащая аргументы Ghostscript:

    * FoomaticRIPCommandLine: "gs -q -dBATCH -dPARANOIDSAFER -dQUIET -dNOPA &&
    ИСПОЛЬЗУЙТЕ -sDEVICE = ijs -sIjsServer = hpijs% A% B% C -dIjsUseOutputFD% Z -sOutputFi &&
    le = - - "
    *Конец
    
     
    Примечание?

    См. Раздел 12.6.3 для примечаний по определенным драйверам принтера HP.

    Тестирование Foomatic

    Чтобы использовать Foomatic в качестве фильтра, вам нужна программа foomatic-rip в lib / cups / filter (символьная ссылка на другое место работает нормально). Вы можете убедиться, что Foomatic производит правильный вывод на принтер, запустив foomatic-rip в командной строке, генерируя вывод на принтер вручную. Затем вы можете отправить эти данные прямо на принтер, минуя диспетчер очереди печати.

    Сначала найдите PPD-файл вашего принтера ( ppd_file ) и найдите тестовый файл PostScript для тестирования ( test_file .пс). Выполните эту команду, чтобы создать данные принтера в test.prn:

    foomatic-rip -v --ppd  ppd_file test_file  .ps> test.prn
     

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

    KID4 вышел со статусом 0
    Статистика выхода из рендерера: 0
    Процесс рендерера завершен
    
    Закрытие фооматик-рип.
     

    Успешное завершение также означает, что тест.prn теперь должен быть гигантским (возможно, двоичным) файлом, который вы можете отправить прямо на принтер.

    12.5.9 Обзор административных команд

    Теперь, когда беспорядок фильтров печати позади, пришло время изучить некоторые команды для повседневных задач. По сравнению с другими системами серверов Unix, не так уж важно, чтобы вы знали синтаксис каждой последней команды, потому что интерфейс веб-администрирования в большинстве случаев выполняет адекватную работу (и иногда намного предпочтительнее командной строки — например, когда выполняя настройку опций носителя принтера).

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

    • lpadmin Добавляет, удаляет и изменяет принтеры.

    • lpinfo Отображает информацию об устройстве и файле PPD (для использования с lpadmin).

    • lpoptions Устанавливает параметры принтера. Чтобы отобразить быстрый список параметров для конкретного принтера, выполните эту команду:

    • lpstat Отображает информацию о принтере и задании (после создания принтеров).Чтобы отобразить очередь заданий принтера, используйте эту команду:

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

    • отменить Удаляет задание. Чтобы удалить все задания из очереди, выполните эту команду:

    • disable Отключает печать (но, возможно, разрешает новые задания в очереди).

    • включить Разрешить печать.

    • reject Отключает очередь печати.

    • accept Включает очередь печати.

    • lppasswd Изменяет пользователей и пароли (для дайджест-аутентификации; см. Раздел 12.5.2).

    12.5.10 Контроль доступа клиентов

    По умолчанию CUPS разрешает доступ к принтеру и администрированию только на localhost.Если у вас есть сеть машин, которым вы хотите предоставить доступ к вашему серверу CUPS, вам необходимо изменить файл cupsd.conf, чтобы отразить это.

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

    <Местоположение />
    Заказ запретить, разрешить
    Запретить от всех
    Разрешить с 127.0.0.1
    
    
     

    Раздел Location / определяет глобальные параметры управления доступом для сервера CUPS.В предыдущем примере директивы работают вместе, чтобы предоставить доступ к localhost (127.0.0.1) и ни к чему другому:

    • Order Deny, Allow Позволяет указать хосты и сети, которым запрещен и разрешен доступ с помощью директив Deny и Allow. Более того, это также означает, что вы можете переопределить директивы Deny с помощью директив Allow. Это самый полезный режим в CUPS, и вы никогда не должны его менять.

    • Запретить от всех По умолчанию запрещает доступ всем клиентам.Опять же, вы не должны это менять.

    • Разрешить с 127.0.0.1 Делает исключение из предыдущего правила «Запретить от всех», предоставляя доступ к localhost.

    Если вы хотите разрешить доступ для всех ваших принтеров большему количеству клиентов, вы можете просто добавить другую директиву правила после строки «Разрешить с 127.0.0.1». Следующая директива правила предоставляет доступ к подсети, определенной в 10.0.1.0/255.255.255.0:

    Разрешить от 10.0.1.0 / 255.255.255.0
     

    У вас может быть столько строк Allow From client , сколько вам нужно, и вы можете указать параметр client несколькими способами. Наиболее полезными являются следующие пять типов спецификаций:

    • Обозначение подсети, как в предыдущем примере 10.0.1.0/255.255.255.0

    • IP-адреса, например 10.0.1.3

    • Полные доменные имена, например client.example.com

    • Подстановочные знаки домена, например * .example.com

    • Сетевые интерфейсы, такие как @IF (eth0)

    Помните, что раздел Location / предназначен для глобального доступа, включая управление заданиями принтера и другие клиентские задачи. С другой стороны, административные задачи имеют свой собственный раздел Location (), который специально исключает подключения со всех хостов, кроме localhost.Фактически, вы уже видели этот раздел, когда заставляли CUPS переваривать аутентификацию. Найдите его в своем cupsd.conf, чтобы убедиться, что он разрешает административный доступ к localhost и ни к чему другому.

    Примечание?

    Вы можете указать доступ клиента для каждого принтера, добавив / printers / name> разделов управления доступом, где name — это имя принтера. Вам, вероятно, придется немного поэкспериментировать, чтобы заставить его работать идеально.

    12.5.11 Автообнаружение

    Одна из наиболее интересных функций CUPS — автоматическое обнаружение сетевых принтеров. Это называется просмотр . Большинство установок CUPS имеют активный просмотр по умолчанию, что означает, что CUPS прослушивает сообщения от других серверов печати в сети. Параметр cupsd.conf: Просмотр:

    Однако без дополнительной помощи ваш сервер CUPS, скорее всего, , а не , станет известен другим серверам печати в сети.Чтобы ваш сервер CUPS транслировал свое присутствие, вам нужен параметр широковещательного адреса BrowseAddress в cupsd.conf. Например, чтобы отправлять пакеты уведомлений как можно большему количеству хостов в сети (по сути, столько, сколько позволяют ваши маршрутизаторы), используйте этот параметр:

    BrowseAddress 255.255.255.255
     

    Вы можете представить себе числовой широковещательный адрес как своего рода инверсную подсеть в сочетании с IP-адресом. Например, для отправки пакетов в подсеть, определенную 10.1.2.0 / 255.255.255.0, попробуйте это:

    При этом, вероятно, лучшим выбором будет выбор «локального» интерфейса, который отправляет широковещательные пакеты на все сетевые интерфейсы, кроме каналов PPP:

    Если у вас есть сервер с несколькими интерфейсами Ethernet, но вы не хотите осуществлять широковещательную передачу по всем этим интерфейсам, используйте @IF. Например, вот как транслировать на eth2:

    12.5.12 Запуск LPD-совместимого сервера

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

    Для этого запустите специальный интерфейс сервера LPD под названием cups-lpd, расположенный в / usr / lib / cups / daemon. Это служба inetd (см. Раздел 6.3), поэтому вам нужна такая строка в вашем /etc/inetd.conf (или эквиваленте xinetd):

    поток принтера tcp nowait  cups-user  / usr / lib / cups / daemon / cups-lpd cups-lpd
     

    cups-user — ваш пользовательский параметр CUPS из cupsd.conf (обычно lp). В cups-lpd нет встроенного контроля доступа, но, как и в любой другой сетевой службе, вы хотите убедиться, что правила вашего брандмауэра имеют достаточное покрытие; см. раздел 5.13. Помните, что принтер определен в / etc / services как порт 515.

    12.5.13 Устранение неполадок CUPS

    Когда у вас возникла проблема с CUPS, особенно важно действовать постепенно. Вы можете найти эту последовательность полезной:

    1. Убедитесь, что CUPS работает правильно, создав тестовый принтер без фильтров (необработанный режим) и устройство с файлом: / dev / null. Отправьте тестовый файл на принтер с помощью веб-интерфейса и lp и убедитесь, что задания завершены с помощью lpstat:

      lpstat -W завершено -o  имя_тестового_принтера 
      lpstat -o имя_тестового_принтера
       
    2. Используйте файл PPD вашего принтера, чтобы активировать фильтр.Если что-то пойдет не так, см. Разделы 12.5.4 и 12.5.6. Распечатайте еще тестовые файлы, еще раз убедившись, что задания завершены.

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

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

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

    Из-за сложной природы диспетчера очереди печати и фильтров очень важно уделять особое внимание сообщениям журнала. Самый важный файл журнала — это / var / log / cups / error_log (название немного вводит в заблуждение, потому что файл также содержит обычные диагностические сообщения).

    Глядя в журнал, можно увидеть следующий формат:

    I [ timestamp ] Запущен фильтр / usr / lib / cups / filter / pstops (PID 3434) для задания 26.D [ отметка времени ] ProcessIPPRequest: 10 status_code = 0
    E [ отметка времени ] [Задание 26] не удается открыть файл для печати -: В доступе отказано
     

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

    • I Информационное сообщение журнала. Эти уведомления обычно указывают на какое-то важное событие, такое как вызов фильтра или отправка задания.

    • D Подробное отладочное сообщение. Вы не должны беспокоиться об этом, если только не столкнетесь с проблемой.

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

    Вы можете изменить уровень журнала с помощью параметра LogLevel в файле cupsd.conf файл. Уровень по умолчанию — информация в большинстве установок. Если вам нужны отладочные сообщения, вы должны использовать отладку. Если вы измените параметр LogLevel, не забудьте перезагрузить файл конфигурации после внесения любых изменений, отправив сигнал HUP в cupsd.

    Проблемы с фильтром

    Первое, что вы должны сделать после возникновения проблем на этапе фильтрации печати, — это убедиться, что фильтры CUPS в /etc/cups/mime.convs работают правильно.

    Для этого сначала отключите все фильтры, которые могут быть в PPD-файле вашего принтера, чтобы вы могли исключить внутренний фильтр из списка вещей, которые могут пойти не так.Вероятно, у вас будут такие фильтры, только если вы используете принтер, не поддерживающий PostScript. В этом случае отредактируйте файл PPD вашего принтера (тот, что находится в / etc / cups / ppd), ища параметр cupsFilter (см. Раздел 12.5.7). Закомментируйте параметр, добавив% сразу после *; например:

    *% cupsFilter: "application / vnd.cups-postscript 0 foomatic-rip"
     

    После внесения этого изменения (и того, что cupsd перечитает свою конфигурацию с помощью сигнала HUP), отправьте тестовое задание, чтобы проверить, могут ли данные пройти мимо mime.передает этап фильтра на принтер. Хотя вы вряд ли столкнетесь с какими-либо проблемами с программами фильтрации, поставляемыми CUPS в mime.convs, этот процесс может помочь вам выявить проблемы с разрешениями каталогов буферизации (обсуждаются в следующем разделе), потому что такого рода проблемы обычно появляются на начальном этапе. этапы фильтрации печати.

    После устранения любых перегибов, не связанных с фильтром cupsFilter, повторно включите этот параметр и ищите другие проблемы:

    • Убедитесь, что фильтр cupsFilter находится в каталоге lib / cups / filter.

    • Для фильтра Foomatic используйте foomatic-rip -v вручную из командной строки, чтобы проверить правильность вывода (см. Раздел 12.5.8).

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

    • Если ваш фильтр использует Ghostscript, убедитесь, что у вас есть необходимый драйвер, запустив gs -help.

    Ошибки разрешений каталога спула

    Найдите это сообщение в журнале ошибок:

    E [ timestamp ] [Job  n ] невозможно открыть файл для печати -: в доступе отказано
     

    CUPS обычно запускает свои фильтры от имени псевдопользователя lp и группы sys, поэтому этот пользователь должен иметь доступ к каталогу спула / var / spool / cups для доступа к промежуточным данным.При исправлении разрешений ищите следующие проблемы:

    • Проверьте все каталоги компонентов / var / spool / cups. Может ли пользователь lp получить доступ к каждому из них?

    • Убедитесь, что у вас есть пользователь lp в файле / etc / passwd.

    • Убедитесь, что lp принадлежит к группе sys. (Помните, что вы можете изменить псевдопользователя и группу с помощью параметров User и Group файла cupsd.conf.)

    Проблемы с устройством

    Пройдя через перчатку фильтра, вы готовы к отправке вывода на устройства.К счастью, на этом завершающем этапе есть относительно немного вещей, которые могут пойти не так:

    • Пользователь lp должен иметь доступ на запись к любому принтеру, напрямую подключенному к системе. Кроме того, проверьте сообщения загрузки ядра и / proc, чтобы убедиться, что ядро ​​распознает порты устройства.

    • Для сетевых принтеров убедитесь, что ваш хост может подключиться к принтеру. Если ваше устройство относится к типу сокета на TCP-порту 9100, проверьте соединение с помощью этой команды:

      telnet  printer_address  9100
       

      Завершите успешное соединение, нажав CONTROL-], затем CONTROL-D.Если вы не знаете родной язык принтера, от этого подключения мало пользы, кроме подтверждения того, что оно может быть установлено.

    [решено] Ubuntu Desktop Missing Driver Error после установки принтера с использованием PPD

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

    Я работаю над Dell Dimension 3100 (Dual Pentium 4 CPU 2,80 ГГц, 512 МБ ОЗУ), установил 32-разрядную версию Ubuntu Desktop 12.04 LTS и без проблем добавил машину в домен.

    Затем я подключил ленточный термопринтер USB TSC TTP-247 и попытался установить его после загрузки драйвера для 32-разрядной версии Linux с tscprinters.com. Я зашел в Системные настройки -> Принтеры -> Добавить, указал на файл PPD для TTP-247, дал принтеру имя и имя общего ресурса и в итоге получил прикрепленную ошибку.Как видите, объект принтера создается, но я не могу распечатать тестовую страницу на принтере, что имеет смысл, поскольку есть проблемы с фильтром CUPS.

    Вот кое-что, что не имеет смысла. Файл PPD, который я использовал для установки принтера, хранится в каталоге PPD внутри папки tscdriver-0.2.05, которую вы видите открытой на снимке экрана. Программа rastertotspl, упомянутая в сообщении об ошибке, находится в папке tscdriver-0.2.05, постоянно дразня меня.Что я могу сделать, чтобы установить его и заставить принтер работать? Это так просто, как скопировать программу в правильный каталог?

    Позвольте мне добавить, что я установил все доступные обновления Ubuntu после получения вышеуказанной ошибки без изменений.

    Имейте в виду, что я далеко не специалист по Linux, поэтому любая помощь приветствуется.


    Булава

    OP

    NetworkNerd

    Этот человек — проверенный профессионал.

    подтвердите ваш аккаунт чтобы ИТ-специалисты увидели, что вы профессионал. 16 октября 2012 г., 18:36 UTC

    Я попытался выполнить обновления, как было упомянуто выше, и даже выполнил sudo apt-get install libcupsys2 (который предположительно установил более новую версию libcups), но все еще имел ту же проблему. У меня не было файлов .deb, как упоминалось в вашей ссылке выше.

    Вместо того чтобы сдаваться, я установил Ubuntu 8.04. Когда я подключил принтер, CUPS обнаружил его автоматически, а затем изнутри интерфейса CUPS (http: / / localhost: 631) я указал на файл PPD, который я загрузил с сайта TSC, что позволило мне без проблем печатать тестовые этикетки.

    У меня какая-то проблема с неподвижным роликом захвата ленты принтера, но это проблема принтера, а не Ubuntu.

    Спасибо за вашу помощь.

    cupsfilter (8) — страница справочника Linux

    cupsfilter (8) — страница справочника Linux
    фильтр чашки (8) Apple Inc.чашкафильтр (8)
     

    НАЗВАНИЕ сверху

           cupsfilter - конвертировать файл в другой формат с помощью фильтров cups
           (устарело)
     

    ОБЗОР наверх

             cupsfilter  [ --list-filters ] [ -D ] [ -U   пользователь ] [ -c   файл конфигурации 
           ] [ -d   принтер ] [ -e ] [ -i   mime / type ] [ -j   job-id [, N] ] [ -m 
             mime / type ] [ -n   копий ] [ -o   name = value ] [ -p   filename.ppd ] [
             -t   заголовок ] [ -u ]  имя файла 
     

    ОПИСАНИЕ вверху

             cupsfilter  - это интерфейс к подсистеме фильтров CUPS, которая
           позволяет преобразовать файл в определенный формат, как если бы вы
           распечатал файл через CUPS. По умолчанию  cupsfilter 
           создает файл PDF. Конвертированный файл отправляется в стандартный
           выход.
     

    ОПЦИИ вверху

             - список-фильтры 
                Фактически не запускайте фильтры, просто распечатайте использованные фильтры
                в стандартный вывод. -D  Удалить входной файл после преобразования.
    
             -U   пользователь 
                Задает имя пользователя, передаваемое фильтрам. По умолчанию
                имя текущего пользователя.
    
             -c   файл конфигурации 
                Использует названный файл конфигурации cups-files.conf.
    
             -d   принтер 
                Использует информацию от указанного принтера.
    
             -e  Использовать все фильтры из файла PPD. -i   мим / тип 
                Задает тип исходного файла. Тип файла по умолчанию -
                угадал, используя имя файла и содержимое файла.
    
             -j   id-задания [, N] 
                Преобразует документ N из указанного задания. Если N опущено,
                документ 1 преобразован.
    
              мим / тип 
                Задает тип файла назначения. Тип файла по умолчанию
                это приложение / pdf. Используйте printer / foo для преобразования в
                формат принтера, определяемый фильтрами в файле PPD.  экз. 
                Задает количество создаваемых копий.
    
             -o   имя = значение 
                Задает параметры для передачи фильтрам CUPS.
    
             -p   filename.ppd 
                Задает используемый файл PPD.
    
              титул 
                Задает заголовок документа.
    
             -u  Удалить файл PPD после преобразования.
     

    СТАТУС ВЫХОДА вверху

             cupsfilter  возвращает ненулевой статус выхода при любой ошибке.

    ОКРУЖАЮЩАЯ СРЕДА наверху

           Все стандартные переменные среды cups (1) влияют на
           Работа чашечного фильтра  .
     

    ФАЙЛОВ наверху

           /etc/cups/cups-files.conf
           /etc/cups/*.convs
           /etc/cups/*.types
           /usr/share/cups/mime/*.convs
           /usr/share/cups/mime/*.types
     

    ПРИМЕЧАНИЯ вверху

           Драйверы, фильтры и серверные программы CUPS устарели и
           больше не будет поддерживаться в будущем выпуске функций CUPS.Принтеры, не поддерживающие IPP, могут поддерживаться с помощью
           такие приложения, как ippeveprinter (1).
    
           В отличие от печати, фильтры запускаются с помощью команды  cupsfilter 
           использовать текущего пользователя и сеанс безопасности. Это может привести к
           другой результат или неожиданное поведение.
     

    ПРИМЕР вверху

           Следующая команда сгенерирует предварительный просмотр PDF-файла задания 42 для
           принтер с именем "myprinter" и сохраните его в файл с именем
           "превью.pdf ":
    
               cupsfilter -m приложение / pdf -d myprinter -j 42> preview.pdf
     

    СМОТРИ ТАКЖЕ top

           чашки (1), cupsd.conf (5), фильтр (7),  mime.convs  (7),  mime.types  (7),
           Онлайн-справка CUPS (http: // localhost: 631 / help)
     

    COPYRIGHT верх

           Авторские права © 2007-2019, Apple Inc.
     

    КОЛОФОН верх

           Эта страница является частью  CUPS  (стандартная версия с открытым исходным кодом).
           система печати) проект.Информация о проекте может быть
           можно найти на ⟨http: //www.cups.org/. Если у вас есть отчет об ошибке для
           эту страницу руководства см. ⟨http: //www.cups.org/⟩. Эта страница была
           получено из исходного репозитория Git проекта
           ⟨Https: //github.com/apple/cups⟩ на 2021-04-01. (В то время,
           дата самой последней фиксации, которая была найдена в
           репозиторий был 2021-03-11.) Если вы обнаружите какой-либо рендеринг
           проблемы в этой HTML-версии страницы, или вы верите в нее
           является лучшим или более актуальным источником для страницы, или у вас есть
           исправления или улучшения информации в этом COLOPHON
           (это , а не  часть исходной страницы руководства), отправьте письмо по адресу
           man-страницы @ man7.орг
    
    
     

    Страницы, которые относятся к этой странице: mime.convs (5), mime.types (5), фильтр (7)


    695896 — net-print / cndrvcups-lb должен установить фильтр rastertoufr2

     В настоящее время пакет не устанавливает фильтр rastertoufr2, хотя он необходим в некоторых PPD. В моем случае это Canon iR-ADV C3520i.
    
    Мне удалось обойти это, скопировав отсутствующий файл из пакета debian amd64 deb.
    
    Воспроизводимый: всегда
    
    Действия по воспроизведению:
    1.Установите cndrvcups-lb
    2. Настройте принтер, PPD которого использует rastertoufr2 (например, Canon iR-ADV C3520i).
    3. Попытайтесь распечатать страницу.
    Фактические результаты:
    / var / lib / cups / error_log содержит:
    E [30 / сен / 2019: 12: 10: 33 +0200] Canon-iR-C3520: Файл \ "/ usr / libexec / cups / filter / rastertoufr2 \" недоступен: нет такого файла или каталога
    E [30 / сен / 2019: 12: 10: 33 +0200] [Job 134] Невозможно запустить фильтр "rastertoufr2" - такого файла или каталога нет.
    
    Задание на печать отображается как остановленное.
    
    Ожидаемые результаты:
    Задание на печать отправляется на принтер.
    Комментарий 2 Йоонас Нилола 2020-01-03 16:57:18 UTC
     Вложение создано 602420 [подробнее]
    cnrdrvcups-lb-5.00.ebuild
    
    Привет,
    
    вот мой взгляд на net-print / cnrdrvcups-lb-5.00. Он включает файл, который вы ищете,
      § equery f cnrdrvcups-lb | grep rastertoufr2
      / usr / lib64 / чашки / фильтр / rastertoufr2
    
    У него есть еще одно предупреждение QA, которое я хочу решить, прежде чем нажимать его, хотя я понятия не имею, что его вызывает.Новые глаза / новый день могут помочь.
    
    Также приветствуются любые отзывы, ebuild - это MESS, но мне кажется, что он работает. Обратите внимание, что он действительно переименован с «cndrvcups-lb» на «cnrdrvcups-lb». 
    Комментарий 3 Йоонас Нилола 2020-01-03 17:00:54 UTC
     * Уведомление о проверке качества: Отсутствуют символические ссылки на soname:
     *
     * usr / lib64 / libColorGearC.so.2 -> libColorGearCufr2.so.2.0,0
     *
    
    Вот уведомление QA, о котором я говорил, для меня это не имеет смысла ... 
    Комментарий 4 Йоонас Нилола 2020-01-03 19:35:14 UTC
     Еще TODO в ебилде (на другой день):
     - обрабатывать символические ссылки / usr / lib64 / cups / filter / * -> / usr / libexec / cups / filter / * (rastertoufr2 будет работать только после этого, но он работает с символическими ссылками)
     - установить документацию и, возможно, языковые файлы
     - тест на x86
     - используйте цикл for в src_install, чтобы уменьшить его... возможно - нужно сообразить, что будет проще и лучше при длительном обслуживании
    
    Я только что напечатал несколько документов, так что здесь все работает, это примечания, которые мне нужно исправить, прежде чем отправлять это в :: gentoo.
    
    Тем не менее, дальнейшее тестирование и более пристальное внимание к ебилду приветствуются. Я также приветствовал бы его со-сопровождающего, так как однажды я использую свой домашний принтер в синюю луну. Но когда я им пользуюсь, он должен работать ... 
    Комментарий 5 Йоонас Нилола 2020-01-04 13:47:43 UTC
     Вложение создано 602526 [подробнее]
    cnrdrvcups-фунт-5.00.ebuild
    
    Последний. Сделано все, кроме:
     - ключевые слова x86,
     * Уведомление о проверке качества: Отсутствуют символические ссылки на soname:
     *
     * usr / lib64 / libColorGearC.so.2 -> libColorGearCufr2.so.2.0.0
     * 
    Комментарий 7 Мерзкая корова Ларри 2020-01-05 10:09:58 UTC
     Ошибка была закрыта с помощью следующих коммитов:
    
    https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=59dbb110c6cff7f6bc437073b67d2621021706fe
    
    совершить 59dbb110c6cff7f6bc437073b67d2621021706fe
    Автор: Йоонас Нилола 
    Дата автора: 2020-01-05 10:08:51 +0000
    Фиксация: Йоонас Нилола 
    Дата фиксации: 2020-01-05 10:09:45 +0000
    
        net-print / cnrdrvcups-lb: новый пакет для лазерных принтеров Canon
        
        Любой, кто использует cndrvcups-common-lb и cndrvcups-lb, должен будет
        emerge - отмените выбор их в файле world перед попыткой установки.
        Вам также придется перенастроить ваш принтер / сканер после появления
        этот пакет драйверов.
        
        Закрывается: https://bugs.gentoo.org/695896
        Подписано: Joonas Niilola 
    
     net-print / cnrdrvcups-lb / Manifest | 1 +
     net-print / cnrdrvcups-lb / cnrdrvcups-lb-5.00.ebuild | 187 ++++++++++++++++++++++
     net-print / cnrdrvcups-lb / metadata.xml | 8+
     3 файла изменено, 196 прошивок (+) 
    .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *