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

CUPS

CUPS (от англ. Common Unix Printing System — общая система печати Unix) — это модульная система управления печатью для операционных систем семейства Unix, включая Linux, macOS и BSD. Она обеспечивает взаимодействие между компьютером и принтерами, преобразуя задания печати в формат, понятный конкретному устройству. CUPS использует протокол IPP (Internet Printing Protocol) в качестве основного средства передачи данных и поддерживает широкий спектр драйверов и форматов файлов. Разработка системы началась в 1997 году компанией Easy Software Products, а в 2007 году она была приобретена корпорацией Apple, которая сделала её стандартным компонентом macOS. С 2020 года CUPS развивается как открытый проект под эгидой OpenPrinting (Linux Foundation).

История

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

До появления CUPS каждая Unix-система использовала собственные, часто несовместимые, подсистемы печати. Наиболее распространёнными были LP (Line Printer) в System V и LPD (Line Printer Daemon) в BSD. Они имели ограниченную поддержку сетевых принтеров, требовали ручной настройки драйверов и не обеспечивали унифицированного интерфейса для всех типов устройств. Администраторам приходилось писать сложные скрипты для обработки очередей и фильтрации данных.

Разработка и ранние версии

В 1997 году американский программист Майкл Свит (Michael Sweet) из компании Easy Software Products начал разработку новой системы печати, основанной на протоколе IPP. Первая стабильная версия CUPS 1.0 была выпущена в 1999 году. Она предлагала:

Система быстро завоевала популярность благодаря простоте настройки и поддержке современных принтеров. К 2002 году CUPS стала системой печати по умолчанию во многих дистрибутивах Linux (Red Hat, Debian, SUSE).

Приобретение Apple и стандартизация

В 2007 году корпорация Apple приобрела права на CUPS и наняла Майкла Свита. Система была интегрирована в macOS (тогда Mac OS X) и стала её единственным сервисом печати. Apple существенно расширила функциональность:

В 2012 году Apple передала управление проектом сообществу OpenPrinting, сохранив за собой право на товарный знак. С 2020 года CUPS развивается как полностью открытый проект под лицензией Apache 2.0.

Архитектура и компоненты

Основные модули

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

Протоколы и форматы

CUPS использует IPP (Internet Printing Protocol) как основной транспортный протокол. IPP работает поверх HTTP/HTTPS и позволяет:

Для обратной совместимости CUPS поддерживает:

Классификация драйверов

PostScript-принтеры

Принтеры, поддерживающие язык PostScript (обычно профессиональные и офисные модели), не требуют дополнительных драйверов. CUPS отправляет на них данные в формате PostScript или PDF, который устройство обрабатывает самостоятельно. Для таких принтеров достаточно PPD-файла, описывающего их возможности.

PCL-принтеры

Принтеры, использующие язык PCL (Printer Command Language) от Hewlett-Packard, требуют фильтра-конвертера. CUPS преобразует PostScript или PDF в PCL с помощью утилиты Ghostscript или специализированных драйверов (например, hplip для HP, gutenprint для универсальных моделей).

GDI-принтеры

Недорогие принтеры (часто от Canon, Brother, Samsung) используют собственные закрытые протоколы GDI (Graphics Device Interface). Для них CUPS требует проприетарные драйверы, поставляемые производителями. В некоторых случаях используются эмуляторы (например, foo2zjs для принтеров на базе ZjStream).

Использование в операционных системах

Linux

В большинстве дистрибутивов Linux (Ubuntu, Fedora, Debian, Arch Linux) CUPS является стандартным сервисом печати. Пользователи могут настраивать принтеры через:

macOS

В macOS CUPS встроен в систему начиная с версии 10.2 (Jaguar). Пользователи взаимодействуют с ним через системные настройки «Принтеры и сканеры». Apple использует CUPS для поддержки AirPrint и автоматического обнаружения принтеров через Bonjour.

BSD и другие Unix

CUPS портирована на FreeBSD, NetBSD, OpenBSD и Solaris. В этих системах она устанавливается как опциональный пакет, заменяя устаревшие LPD-сервисы.

Применение и значение

Домашнее и офисное использование

CUPS обеспечивает печать на локальных и сетевых принтерах в домашних и малых офисах. Система автоматически определяет большинство современных устройств через USB или Wi-Fi, что упрощает настройку для неопытных пользователей.

Серверы печати

В корпоративной среде CUPS используется для создания централизованных серверов печати. Администраторы могут:

  • Настроить общие очереди для нескольких принтеров.
  • Ограничить доступ к печати по пользователям или группам.
  • Включить ведение логов для учёта расхода бумаги и тонера.

Специализированные задачи

CUPS применяется в системах, где требуется нестандартная обработка заданий:

  • Печать на старых матричных принтерах (через эмуляцию LPD).
  • Интеграция с ERP-системами (например, SAP) для массовой печати документов.
  • Поддержка печати на наклейках, этикетках и конвертах.

Интересные факты

  • Порт 631 (используемый CUPS по умолчанию) был выбран в честь даты 6 марта 1991 года — дня, когда Майкл Свит начал работу над первой версией системы.
  • Название «CUPS» изначально было акронимом от «Common Unix Printing System», но после приобретения Apple официальное значение не расшифровывается — считается, что это просто имя собственное.
  • CUPS поддерживает печать на принтерах, выпущенных более 30 лет назад, благодаря эмуляции старых протоколов и драйверов.
  • В 2019 году в CUPS была обнаружена уязвимость (CVE-2019-8842), позволявшая удалённо выполнять код через специально сформированные IPP-запросы. Apple выпустила исправление в течение нескольких дней.

Критика и ограничения

  • Сложность для новичков: Несмотря на графические утилиты, настройка нестандартных принтеров (особенно GDI) требует знания командной строки и редактирования конфигурационных файлов.
  • Зависимость от драйверов: Для многих старых или редких принтеров отсутствуют открытые драйверы, что вынуждает использовать проприетарные решения.
  • Проблемы с безопасностью: CUPS исторически имела уязвимости, связанные с удалённым управлением (например, отсутствие аутентификации по умолчанию в ранних версиях). В современных сборках эти проблемы решены, но администраторам рекомендуется настраивать брандмауэр.
  • Производительность: При большом количестве одновременных заданий (сотни и тысячи) CUPS может потреблять значительные ресурсы CPU и памяти, особенно при конвертации сложных PDF-файлов.

Источники

  • Sweet, Michael. «CUPS: Common Unix Printing System». Easy Software Products, 1999.
  • OpenPrinting. «CUPS Documentation». Linux Foundation, 2020.
  • Apple Inc. «macOS Printing Architecture». Apple Developer Documentation, 2015.
  • RFC 2567: «Design Goals for an Internet Printing Protocol». IETF, 1999.
  • Сайт проекта CUPS: cups.org (архив).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →