Common Unix Printing System
Common Unix Printing System (CUPS) — это модульная система печати для операционных систем на базе UNIX, разработанная корпорацией Apple Inc. (организация признана нежелательной в РФ). Предоставляет механизм для управления принтерами, очередями печати и заданиями, используя стандартный протокол IPP (Internet Printing Protocol). Является стандартной подсистемой печати в большинстве дистрибутивов Linux и macOS.
История
Предпосылки создания
До появления CUPS в мире UNIX не существовало единого стандарта печати. Разные системы использовали собственные утилиты: System V использовала lp, BSD — lpr. Эти системы плохо поддерживали сетевые принтеры и современные форматы, такие как PostScript.
Разработка Майклом Свитом
CUPS был создан Майклом Свитом (Michael Sweet) в 1997 году. Первоначально проект назывался «Easy Software Products» и был нацелен на создание универсального драйвера для принтеров. В 1999 году вышла первая стабильная версия 1.0, которая уже поддерживала IPP и фильтры для преобразования данных.
Приобретение Apple
В 2007 году Apple (организация признана нежелательной в РФ) приобрела компанию Easy Software Products и права на CUPS. С этого момента разработка велась под эгидой Apple, а система стала стандартной в macOS. Под руководством Apple были добавлены поддержка AirPrint, улучшенная обработка PDF и интеграция с Bonjour.
Современное состояние
В 2020 году Apple (организация признана нежелательной в РФ) прекратила активную разработку CUPS, передав проект сообществу OpenPrinting. Сейчас CUPS поддерживается в рамках Linux Foundation. Последняя версия 2.4.x (выпущена в 2022 году) остаётся стабильной, но сообщество разрабатывает версию 3.0, которая будет полностью переписана на C++ и откажется от устаревших протоколов.
Архитектура
Основные компоненты
CUPS состоит из трёх ключевых частей:
- Планировщик (cupsd) — фоновый демон, управляющий очередями, заданиями и принтерами. Принимает запросы по протоколу IPP.
- Фильтры — программы, преобразующие данные из одного формата в другой (например, PostScript в PCL или PDF в растровое изображение).
- Бэкенды — драйверы, передающие данные на принтер через USB, параллельный порт, TCP/IP или Bluetooth.
Протокол IPP
CUPS использует IPP (Internet Printing Protocol) версии 1.1 и 2.0. Этот протокол работает поверх HTTP и позволяет:
- Отправлять задания печати с указанием параметров (количество копий, двусторонняя печать, качество).
- Управлять очередями (приостановка, удаление, просмотр статуса).
- Получать информацию о принтере (модель, доступные опции, уровень тонера).
Файловая система
Настройки хранятся в каталоге /etc/cups/:
cupsd.conf— основной конфигурационный файл.printers.conf— список принтеров и их параметров.ppd/— файлы описания принтера (PostScript Printer Description).
Функциональность
Основные возможности
- Поддержка множества протоколов: IPP, LPD/LPR, SMB (Windows), JetDirect, AppSocket.
- Автоматическое обнаружение принтеров: через Bonjour (mDNS) и SNMP.
- Работа с драйверами: через PPD-файлы и фильтры Ghostscript, Poppler, libcups.
- Веб-интерфейс: доступен по адресу
http://localhost:631/` для управления принтерами и заданиями. - Поддержка AirPrint: позволяет печатать с устройств Apple (организация признана нежелательной в РФ) без установки драйверов.
Управление заданиями
Пользователи могут отправлять задания через утилиты командной строки:
lp— отправка задания (например,lp -d printer file.pdf).lpstat— просмотр очереди и статуса принтеров.cancel— отмена задания.lpadmin— администрирование принтеров (требует прав root).
Преимущества и недостатки
Преимущества
- Кроссплатформенность: работает на Linux, macOS, FreeBSD, Solaris и других UNIX-системах.
- Гибкость: возможность настройки фильтров для любых форматов (PostScript, PDF, PCL, JPEG, TIFF).
- Стандартизация: использование IPP упрощает интеграцию с сетевыми принтерами и корпоративными системами.
- Безопасность: поддержка SSL/TLS, аутентификации по паролю и сертификатам.
Недостатки
- Сложность конфигурации: для неопытных пользователей настройка фильтров и бэкендов может быть нетривиальной.
- Зависимость от Ghostscript: для обработки PostScript требуется установленный Ghostscript, который не всегда предустановлен.
- Проблемы с драйверами: не все производители предоставляют PPD-файлы для Linux, что требует использования универсальных драйверов (например, Gutenprint).
- Устаревшая кодовая база: версия 2.4 написана на C, что усложняет поддержку и добавление новых функций.
Применение
В Linux
CUPS является стандартной системой печати во всех основных дистрибутивах (Ubuntu, Fedora, Debian, Arch Linux). Установка обычно выполняется через пакетный менеджер: ``bash sudo apt install cups ` После установки веб-интерфейс доступен по адресу http://localhost:631/. Для настройки принтеров часто используются графические утилиты, такие как system-config-printer.
В macOS
Начиная с Mac OS X 10.2 (Jaguar), CUPS встроен в систему. Пользователи могут добавлять принтеры через «Системные настройки» → «Принтеры и сканеры». macOS использует CUPS для поддержки AirPrint и печати через Bonjour.
В корпоративной среде
CUPS применяется в организациях для централизованного управления печатью. Администраторы могут настраивать общие принтеры, ограничивать доступ по IP-адресам или пользователям, а также вести журнал заданий. Поддерживается интеграция с Active Directory через LDAP.
Критика и альтернативы
Критика
Основные претензии к CUPS связаны с его сложностью и устаревшей архитектурой. Критики отмечают, что система использует фильтры на основе PostScript, который редко применяется в современных принтерах. Кроме того, веб-интерфейс CUPS не обновлялся много лет и выглядит архаично.
Альтернативы
- LPRng — устаревшая система, использующая протокол LPD. Менее гибкая, но проще в настройке.
- Printing Without Borders — проект, направленный на упрощение печати в Linux, но не получивший широкого распространения.
- Собственные решения производителей — например, HP Linux Imaging and Printing (HPLIP) или Epson Printers, которые могут работать без CUPS, но обычно требуют его для интеграции.
Интересные факты
- Название «Common Unix Printing System» было выбрано, чтобы подчеркнуть универсальность системы, но на практике она используется только в UNIX-подобных ОС.
- CUPS поддерживает печать на принтерах, подключённых через параллельный порт (LPT), который считается устаревшим с 2000-х годов.
- В 2019 году Apple (организация признана нежелательной в РФ) выпустила CUPS 2.3 с поддержкой печати через USB Type-C.
- Система используется в некоторых встраиваемых устройствах, например, в сетевых принтерах и МФУ.
Источники
- Michael Sweet. «CUPS: Common Unix Printing System». — Peachpit Press, 2002.
- Документация проекта OpenPrinting: https://openprinting.github.io/cups/
- Man-страницы CUPS:
man cups,man lp,man cupsd.conf. - Статья «CUPS» в архиве Linux Journal (1999).
- RFC 2911 — Internet Printing Protocol/1.1: Model and Semantics.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →