Введение
Компьютерная система печати
CUPS (ранее акроним от Common UNIX Printing System) — это модульная система печати для Unix-подобных компьютерных операционных систем, позволяющая компьютеру функционировать как сервер печати. Компьютер, работающий под управлением CUPS, является хостом, способным принимать задания на печать с клиентских компьютеров, обрабатывать их и отправлять на соответствующий принтер. CUPS состоит из спулера и планировщика печати, системы фильтров, преобразующей данные для печати в формат, понятный принтеру, и бэкэнд-системы, отправляющей эти данные на печатное устройство. CUPS использует протокол печати через Интернет (IPP) в качестве основы для управления заданиями и очередями печати. Он также предоставляет традиционные интерфейсы командной строки для печатных систем System V и Berkeley, поддерживает протокол Line Printer Daemon системы Berkeley и обеспечивает ограниченную поддержку протокола Server Message Block (SMB). Системные администраторы могут настраивать драйверы устройств, поставляемые CUPS, редактируя текстовые файлы в формате Adobe PostScript Printer Description (PPD). Существует ряд пользовательских интерфейсов для различных платформ, позволяющих настраивать CUPS, а также встроенный веб-интерфейс. CUPS является свободным программным обеспечением, распространяемым по лицензии Apache.
История
Майкл Свит, владелец Easy Software Products, начал разработку CUPS в 1997 году, а первые публичные бета-версии появились в 1999 году. Изначальная конструкция CUPS использовала протокол Line Printer Daemon (LPD), но из-за ограничений LPD и несовместимости между производителями, был выбран протокол печати через Интернет (IPP). Первоначально CUPS назывался "Общая UNIX-система печати". Это название было сокращено до просто "CUPS", начиная с версии CUPS 1.4, из-за юридических проблем, связанных с товарным знаком UNIX. CUPS быстро стал системой печати по умолчанию для большинства дистрибутивов Linux. В марте 2002 года компания Apple Inc. приняла CUPS в качестве системы печати для Mac OS X 10.2. В феврале 2007 года Apple Inc. наняла главного разработчика Майкла Свита и приобрела исходный код CUPS. 20 декабря 2019 года Майкл Свит объявил в своем блоге об уходе из Apple. В 2020 году организация OpenPrinting сделала форк проекта, и Майкл Свит продолжил работу над ним.
Обзор
CUPS предоставляет механизм, позволяющий отправлять задания на печать принтерам стандартизированным способом. Данные для печати поступают в планировщик, который направляет задания в систему фильтров, преобразующую задание печати в формат, понятный принтеру. Затем система фильтров передает данные бэкенду – специальному фильтру, который отправляет данные на устройство или сетевое подключение. Система активно использует PostScript и растрирование данных для преобразования их в формат, подходящий для целевого принтера. CUPS предлагает стандартную и модульную систему печати, способную обрабатывать множество форматов данных на сервере печати. До появления CUPS было сложно найти стандартную систему управления принтерами, которая поддерживала бы огромное разнообразие принтеров на рынке, использующих собственные языки и форматы. Например, системы печати System V и Berkeley были в значительной степени несовместимы друг с другом и требовали сложных скриптов и обходных путей для преобразования данных в печатаемый формат. Они часто не могли определить формат отправляемого на принтер файла и, следовательно, не могли автоматически и корректно преобразовать поток данных. Кроме того, преобразование данных выполнялось на отдельных рабочих станциях, а не на центральном сервере. CUPS упрощает создание драйверов для принтеров производителями принтеров и разработчиками драйверов, позволяя им работать непосредственно на сервере печати. Обработка происходит на сервере, что обеспечивает более удобную сетевую печать по сравнению с другими Unix-системами печати. При установленной Samba пользователи могут обращаться к принтерам на удаленных компьютерах Windows, а универсальные драйверы PostScript можно использовать для печати по сети.
Система фильтрации
CUPS может обрабатывать различные форматы данных на сервере печати. Он преобразует данные задания печати в конечный язык/формат принтера посредством последовательности фильтров. Для определения форматов файлов он использует типы MIME.
Бэкэнды
Бэкенды – это способы, с помощью которых CUPS передает данные на принтеры. Для CUPS доступны несколько бэкендов: параллельные, последовательные и USB-порты, виртуальная печать в PDF, а также сетевые бэкенды, работающие по протоколам IPP, JetDirect (AppSocket), Line Printer Daemon ("LPD") и SMB. Новый бэкенд mdns в CUPS 1.4 обеспечивает обнаружение принтеров на основе Bonjour (DNS SD). В CUPS 1.6 также поддерживается обнаружение и публикация принтеров Bonjour с использованием Avahi.
Совместимость
CUPS предоставляет как команды печати System V, так и Berkeley, поэтому пользователи могут продолжать использовать традиционные команды для печати через CUPS. CUPS использует порт 631 (TCP и UDP), являющийся стандартным портом IPP, а также опционально порт 515 через inetd, launchd, Solaris Service Management Facility или xinetd, использующие вспомогательную программу cups lpd для поддержки печати LPD. При установке CUPS команды системы печати lp (System V) и lpr (Berkeley) устанавливаются как совместимые программы. Это обеспечивает стандартный интерфейс для CUPS и максимальную совместимость с существующими приложениями, использующими эти системы печати.
Инструменты пользовательского интерфейса
Существует несколько инструментов, помогающих настроить CUPS.
Интерфейс управления CUPS на веб-базе
На всех платформах CUPS имеет веб-интерфейс администрирования, работающий на порту 631. Он особенно полезен организациям, которым необходимо отслеживать задания на печать и удаленно добавлять очереди печати и принтеры. CUPS 1.0 предоставлял простой интерфейс для мониторинга классов, заданий и принтеров в веб-браузерах. CUPS 1.1 заменил этот интерфейс улучшенным административным интерфейсом, позволяющим пользователям добавлять, изменять, удалять, настраивать и управлять классами, заданиями и принтерами. CUPS 1.2 и более поздние версии оснащены обновленным веб-интерфейсом с улучшенной читаемостью и дизайном, поддержкой автоматически обнаруженных принтеров, а также более удобным доступом к системным журналам и расширенным настройкам.
GNOME (англ.)
В GNOME, начиная с версии 3, настройка печати CUPS осуществляется в приложении «Параметры», которое входит в состав основных приложений GNOME. Графический интерфейс позволяет добавлять принтеры CUPS и управлять ими, а также очередями печати. До GNOME 3 для этих целей использовались «Параметры печати GNOME» (ранее известные как CUPS Manager). Набор виджетов GTK+, используемый в GNOME, включил встроенную поддержку печати на основе CUPS, начиная с версии 2.10, выпущенной в 2006 году.
Mac OS X
В Mac OS X 10.5 принтеры настраиваются в панели «Печать и факс» в Системных настройках, а также в прокси-приложениях принтера, которые отображают очереди печати и позволяют дополнительную настройку после установки принтеров. В более ранних версиях Mac OS X также была предусмотрена утилита настройки принтера, которая предоставляла параметры конфигурации, отсутствовавшие в более ранних версиях панели «Печать и факс» Системных настроек.
Настройка принтера
Система PrinterSetup может управлять очередями CUPS. Она использует подход, заключающийся в назначении текстового файла для описания каждой очереди печати. Эти "Файлы настройки принтера" затем могут быть добавлены в другие текстовые файлы, называемые "Списками настройки принтера". Это позволяет логически группировать принтеры. Проект PrinterSetup пока находится на ранней стадии разработки.
Red Hat Linux/Fedora (англ.) русск. (англ.) русск.
Начиная с Red Hat Linux 9, Red Hat предоставила интегрированный менеджер печати на основе CUPS, интегрированный в GNOME. Это позволило добавлять принтеры через пользовательский интерфейс, аналогичный используемому в Microsoft Windows, где новый принтер можно было добавить с помощью мастера добавления принтера, а также изменять свойства принтера по умолчанию в окне со списком установленных принтеров. Задания на печать также можно было запускать и останавливать с помощью менеджера печати, а принтер можно было приостановить через контекстное меню, появляющееся при щелчке правой кнопкой мыши по значку принтера. Эрик Рэймонд критиковал эту систему в своей статье «Роскошь невежества». Рэймонд пытался установить CUPS с помощью менеджера печати Fedora Core 1, но посчитал его неинтуитивным; он критиковал разработчиков интерфейса за то, что они не учитывали точку зрения пользователя. Он обнаружил, что концепция очередей печати не является очевидной, поскольку пользователи создают очереди на своем локальном компьютере, но на самом деле эти очереди создаются на сервере CUPS. Он также посчитал обилие вариантов типов очередей запутанным, так как можно было выбрать между сетевыми CUPS (IPP), сетевыми Unix (LPD), сетевыми Windows (SMB), сетевыми Novell (NCP) или сетевыми JetDirect. Он счел справочный файл совершенно бесполезным и в значительной степени нерелевантным потребностям пользователя. Рэймонд использовал CUPS в качестве общей темы, чтобы показать, что дизайн пользовательского интерфейса на рабочих столах Linux требует переосмысления и более тщательной проработки. Он заявил:
Главная проблема здесь в том, что мастер настройки выполняет все принятые процедуры (графический интерфейс со стандартными кнопками, справка, открывающаяся в браузере и т. д.), но не обладает главным свойством, которого они должны достичь: обнаруживаемостью. То есть, качеством, при котором к каждой точке интерфейса привязаны подсказки и действия, позволяющие понять, что делать дальше. Обладает ли ваш проект этим качеством?
ESP Print Pro (процессор печати)
Easy Software Products, первоначальные создатели CUPS, разработали графический интерфейс, обеспечили поддержку множества принтеров и реализовали интерпретатор PostScript. ESP Print Pro работала на Windows, UNIX и Linux, но больше не выпускается, а поддержка данного продукта была прекращена 31 декабря 2007 года.