Автор (ы) | Майкл Свит (Easy Software Products ) |
---|---|
Разработчик (s) | Apple Inc. |
Первоначальный выпуск | 9 июня 1999 г. (1999-06-09) |
Стабильный выпуск | 2.3.3 / 28 апреля 2020 г.; 6 месяцев назад (2020-04-28) |
Репозиторий | |
Написано в | C |
Операционная система | Unix-подобная, Windows, ArcaOS |
Тип | Сервер печати |
Лицензия | Лицензия Apache 2.0 |
Веб-сайт | www.cups.org |
CUPS (ранее аббревиатура для Common UNIX Printing System ) - это модульная система печати для Unix-подобного компьютер операционные системы, который позволяет компьютеру действовать как сервер печати. Компьютер, на котором работает CUPS, является хостом, который может принимать задания на печать от клиента компьютеров, обрабатывают их и отправляют на соответствующий принтер.
CUPS состоит из диспетчера очереди печати и schedul например, система фильтрации, которая преобразует данные печати в формат, понятный принтеру, и внутренняя система, которая отправляет эти данные на устройство печати. CUPS использует протокол Интернет-печати (IPP) в качестве основы для управления заданиями на печать и очередями. Он также предоставляет традиционные интерфейсы командной строки для систем печати System V и Berkeley и обеспечивает поддержку протокола Line Printer Daemon системы печати Berkeley. и ограниченная поддержка протокола блока сообщений сервера (SMB). Системные администраторы могут настраивать драйверы устройств, поставляемые CUPS, редактируя текстовые файлы в формате Adobe PostScript Printer Description (PPD). Существует несколько пользовательских интерфейсов для различных платформ, которые могут настраивать CUPS, и он имеет встроенный веб-интерфейс. CUPS - это бесплатное программное обеспечение, предоставляемое по лицензии Apache.
Майкл Свит, владелец Easy Software Products, начал разработку CUPS в 1997 году, а первые общедоступные бета-версии появились в 1999 году. Первоначальный дизайн CUPS использовал Протокол Line Printer Daemon (LPD), но из-за ограничений LPD и несовместимости поставщиков вместо него был выбран Internet Printing Protocol (IPP). CUPS был быстро принят в качестве системы печати по умолчанию для большинства дистрибутивов Linux. В марте 2002 года Apple Inc. приняла CUPS в качестве системы печати для Mac OS X 10.2. В феврале 2007 года Apple Inc. наняла главного разработчика Майкла Свита и приобрела исходный код CUPS. 20 декабря 2019 года Майкл Свит объявил в своем блоге о своем уходе из Apple.
CUPS предоставляет механизм, который позволяет стандартным образом отправлять задания на печать на принтеры. Данные печати поступают в планировщик, который отправляет задания в систему фильтрации, которая преобразует задание на печать в формат, понятный принтеру. Затем система фильтрации передает данные на серверную часть - специальный фильтр, который отправляет данные печати на устройство или сетевое соединение. Система широко использует PostScript и растеризацию данных для преобразования данных в формат, подходящий для целевого принтера.
CUPS предлагает стандартную модульную систему печати, которая может обрабатывать многочисленные форматы данных на сервере печати. До CUPS было трудно найти стандартную систему управления принтерами, которая могла бы удовлетворить очень широкий спектр принтеров, представленных на рынке, с использованием их собственных языков и форматов. Например, системы печати System V и Berkeley были в значительной степени несовместимы друг с другом, и для преобразования формата данных программы в формат для печати требовались сложные сценарии и обходные пути. Они часто не могли определить формат файла, отправляемого на принтер, и, следовательно, не могли автоматически и правильно преобразовать поток данных. Кроме того, преобразование данных выполнялось на отдельных рабочих станциях, а не на центральном сервере.
CUPS позволяет производителям принтеров и разработчикам драйверов для принтеров более легко создавать драйверы, которые изначально работают на сервере печати. Обработка происходит на сервере, что упрощает сетевую печать по сравнению с другими системами печати Unix. Установив Samba, пользователи могут обращаться к принтерам на удаленных компьютерах Windows, а общие драйверы PostScript могут использоваться для печати по сети.
Планировщик CUPS реализует протокол Интернет-печати (IPP) через HTTP / 1.1. Вспомогательное приложение (cups-lpd) преобразует запросы протокола Line Printer Daemon (LPD) в IPP. Планировщик также предоставляет веб-интерфейс для управления заданиями на печать, настройкой сервера и документацией о самом CUPS.
Модуль авторизации контролирует, какие сообщения IPP и HTTP могут проходить через систему. После авторизации пакетов IPP / HTTP они отправляются в клиентский модуль, который прослушивает и обрабатывает входящие соединения. Клиентский модуль также отвечает за выполнение внешних программ CGI, необходимых для поддержки веб-принтеров, классов, а также мониторинга и администрирования состояния заданий. После того, как этот модуль обработал свои запросы, он отправляет их в модуль IPP, который выполняет проверку Uniform Resource Identifier (URI), чтобы не дать клиенту обойти любые элементы управления доступом или аутентификацию. на HTTP-сервере. URI - это текстовая строка, которая указывает имя или адрес, который может использоваться для ссылки на абстрактный или физический ресурс в сети.
Планировщик позволяет использовать классы принтеров. Приложения могут отправлять запросы группам принтеров в классе, позволяя планировщику направлять задание на первый доступный принтер в этом классе. Модуль заданий управляет заданиями на печать, отправляя их фильтрующим и внутренним процессам для окончательного преобразования и печати, а также отслеживая сообщения о состоянии от этих процессов.
Планировщик CUPS использует модуль конфигурации, который анализирует файлы конфигурации, инициализирует CUPS структуры данных, а также запускает и останавливает программу CUPS. Модуль конфигурации остановит службы CUPS во время обработки файла конфигурации, а затем перезапустит службу по завершении обработки.
Модуль ведения журнала обрабатывает регистрацию событий планировщика для доступа, ошибок и страниц файлов журнала. Главный модуль обрабатывает тайм-ауты и отправку запросов ввода-вывода для клиентских подключений, отслеживает сигналы, обрабатывает ошибки и выходы дочерних процессов и при необходимости перезагружает файлы конфигурации сервера.
Другие модули используемые планировщиком включают:
CUPS может обрабатывать различные форматы данных на сервере печати. Он преобразует данные задания на печать в окончательный язык / формат принтера с помощью серии фильтров. Он использует типы MIME для определения форматов файлов.
После того, как система CUPS назначила задание печати планировщику, оно передается в систему фильтрации CUPS. Это преобразует данные в формат, подходящий для принтера. Во время запуска демон CUPS загружает две базы данных MIME: mime.types
, который определяет известные типы файлов, для которых CUPS может принимать данные, и mime.convs
, определяющий программы, которые обрабатывать каждый конкретный тип MIME.
Файл mime.types
имеет синтаксис:
mimetype {[расширения файла] | [совпадение с шаблоном]}
Например, для обнаружения файла HTML применима следующая запись:
text / html html htm \
.
printable (0,1024) + (string (0, "") string (0, "
Вторая строка сопоставляет содержимое файла с указанным типом MIME, определяя, что первый килобайт текста в файле содержит печатаемые символы и что эти символы включают Разметка HTML. Если приведенный выше шаблон совпадает, то система фильтров пометит файл как MIME-тип text / html.
Файл mime.convs
имеет синтаксис:
источник Программа конечных затрат
Поле источника обозначает тип MIME, который определяется поиском файла mime.types
, в то время как поле назначения перечисляет тип запрошенного вывода и определяет, какую программу следует использовать. также извлекается из mime.types
. Поле стоимости помогает в выборе наборов фильтров при преобразовании файла. Последнее поле, программа, определяет, какую программу фильтрации использовать для выполнить преобразование данных.
Некоторые примеры:
текст / обычное приложение / postscript 50 texttops application / vnd.cups-postscript application / vnd.cups-raster 50 pstoraster image / * application / vnd.cups-postscript 50 imagetops image / * application / vnd.cups-raster 50 imagetoraster
Процесс фильтрации работает, принимая входные данные, предварительно отформатированные с шестью аргументами:
Затем он определяет тип вводимых данных и фильтр, который будет использоваться с использованием баз данных MIME; например, данные изображения будут обнаруживаться и обрабатываться с помощью определенного фильтра, а данные HTML обнаруживаются и обрабатываются с помощью другого фильтра.
CUPS может преобразовывать предоставленные данные либо в данные PostScript, либо непосредственно в растровые данные. Если он преобразуется в данные PostScript, применяется дополнительный фильтр, называемый предварительным фильтром, который пропускает данные PostScript через другой конвертер PostScript, чтобы он мог добавлять параметры для конкретного принтера, такие как выбор диапазонов страниц для печати, установка режима n-up и других параметров устройства. вещи. После завершения предварительной фильтрации данные могут быть отправлены непосредственно на серверную часть CUPS, если используется PostScript-принтер, или они могут быть переданы другому фильтру, например Foomatic, с помощью linuxprinting.org. Кроме того, его можно передать в Ghostscript, который преобразует PostScript в промежуточный растровый формат CUPS. Промежуточный растровый формат затем передается на окончательный фильтр, который преобразует растровые данные в формат для конкретного принтера. Фильтры по умолчанию, включенные в CUPS, включают: растр
С 2009 года другие проприетарные языки, такие как GDI или SPL (язык принтера Samsung), поддерживаются Splix, переводчиком растров в SPL.
Однако несколько других альтернатив могут интегрироваться с CUPS. HPLIP (ранее известный как HP-IJS) предоставляет драйверы Linux + CUPS для принтеров HP, Gutenprint (ранее известный как Gimp-Print) - это ряд высококачественных драйверов для принтеров для ( в основном) струйные принтеры, а TurboPrint для Linux предлагает еще один набор качественных драйверов для широкого ряда принтеров.
Бэкэнды - это способы, которыми CUPS отправляет данные на принтеры. Для CUPS доступно несколько бэкэндов: параллельный, последовательный и USB порты, виртуальная печать cups-pdf PDF, а также сетевые бэкэнды, которые работают через IPP, JetDirect (AppSocket), Line Printer Daemon («LPD») и SMB протоколы.
A новый бэкэнд 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 Средство управления услугами или xinetd, которые используют вспомогательную программу cups-lpd для поддержки печати LPD. При установке CUPS команда lp
системы печати System V и команды lpr
системы печати Berkeley устанавливаются как совместимые программы. Это позволяет использовать стандартный интерфейс для CUPS и обеспечивает максимальную совместимость с существующими приложениями, использующими эти системы печати.
Существует несколько инструментов, помогающих настроить CUPS.
На всех платформах CUPS имеет веб-интерфейс администрирования, работающий на порт 631. Это особенно помогает организациям, которым необходимо удаленно отслеживать задания на печать и добавлять очереди печати и принтеры.
CUPS 1.0 предоставил простой интерфейс для мониторинга классов, заданий и принтеров для веб-браузеров.
CUPS 1.1 заменил этот интерфейс на улучшенный интерфейс администрирования, который позволяет пользователям добавлять, изменять, удалять, настраивать и контролировать классы, задания и принтеры.
CUPS 1.2 и более поздние версии предоставляют обновленный веб-интерфейс с улучшенной удобочитаемостью и улучшенным дизайном, поддержкой автоматически обнаруживаемых принтеров и улучшенным доступом к системным журналам и расширенным настройкам.
С помощью GNOME Print Settings (ранее называвшегося CUPS Manager) можно добавлять новые принтеры CUPS и управлять принтерами и очередями CUPS.
Набор инструментов для виджетов GNOME GTK + включал интегрированную поддержку печати на основе CUPS в его версии 2.10, выпущенной в 2006 году.
В Ubuntu к нему можно получить доступ в графическом меню в System / Administration / Printing.
Фреймворк KDEPrint для KDE содержит различные GUI -инструменты, которые действуют как CUPS интерфейсы и позволяет администрировать классы, очереди печати и задания на печать; он включает в себя мастер по работе с принтерами, который, помимо других функций, помогает добавлять новые принтеры. KDEPrint впервые появился в KDE 2.2.
KDEPrint поддерживает несколько различных платформ печати, из которых CUPS - одна из наиболее поддерживаемых. Он заменил предыдущую версию поддержки печати в KDE, qtcups, и обратно совместим с этим модулем KDE. По состоянию на 2009 год kprinter, программа диалогового окна, служит основным инструментом для отправки заданий на устройство печати; его также можно запустить из командной строки. KDEPrint включает систему для предварительной фильтрации любых заданий перед их передачей в CUPS или для самостоятельной обработки заданий, например преобразования файлов в PDF. Эти фильтры описываются парой файлов Desktop / XML.
Основные компоненты KDEPrint включают:
В Mac OS X 10.5 принтеры настраиваются на панели «Печать и факс» в Системных настройках, а также в прокси-приложениях принтера, которые отображают очереди печати и допускают дополнительную настройку после принтеры настроены. Более ранние версии Mac OS X также включали Утилиту настройки принтера, которая предоставляла параметры конфигурации, отсутствующие в более ранних версиях панели предпочтений «Печать и факс».
PrinterSetup система может управлять очередями CUPS. Для описания каждой очереди печати используется подход, связанный с назначением текстового файла. Эти «PrinterSetupFiles» затем могут быть добавлены в другие текстовые файлы, называемые «PrinterSetupLists». Это позволяет логически группировать принтеры. По состоянию на 2009 год проект PrinterSetup находится в зачаточном состоянии.
Начиная с 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 требует переосмысления и более тщательного проектирования. Он заявил:
Мета-проблема здесь в том, что мастер настройки выполняет все утвержденные ритуалы (графический интерфейс со стандартизованными щелчками, всплывающая подсказка в браузере и т. Д.), Но не имеет центрального атрибута, которым являются предполагаемое достижение: обнаруживаемость. То есть качество, что к каждой точке интерфейса прикреплены подсказки и действия, из которых вы можете узнать, что делать дальше. Есть ли у вашего проекта такое качество?
Easy Software Products, первые создатели CUPS, создали графический интерфейс, обеспечили поддержку многих принтеров и реализовали PostScript RIP. ESP Print Pro работал в Windows, UNIX и Linux, но больше не доступен, и поддержка этого продукта закончилась 31 декабря 2007 г.
CUPS изначально назывался «Обычная печать в UNIX» Система ». Это имя было сокращено до CUPS, начиная с CUPS 1.4 из-за юридических проблем с торговой маркой UNIX.