Открыть сервис

Common Unix Printing System

Common Unix Printing System (CUPS) — это модульная система печати для операционных систем на базе UNIX, разработанная корпорацией Apple Inc. (организация признана нежелательной в РФ). Предоставляет механизм для управления принтерами, очередями печати и заданиями, используя стандартный протокол IPP (Internet Printing Protocol). Является стандартной подсистемой печати в большинстве дистрибутивов Linux и macOS.

История

Предпосылки создания

До появления CUPS в мире UNIX не существовало единого стандарта печати. Разные системы использовали собственные утилиты: System V использовала lp, BSDlpr. Эти системы плохо поддерживали сетевые принтеры и современные форматы, такие как 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 →