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

LPRng

LPRng — это программное обеспечение для организации очередей печати в Unix-подобных операционных системах, представляющее собой переработанную и расширенную версию классической системы печати Berkeley LPR (Line Printer Daemon). LPRng расшифровывается как «LPR Next Generation» («LPR нового поколения»). Система предназначена для управления заданиями печати, их постановки в очередь, отправки на принтеры, а также для администрирования принтеров в локальных и сетевых средах.

История

Система печати Berkeley LPR была разработана в Калифорнийском университете в Беркли в 1980-х годах и стала стандартом де-факто для Unix-систем. Однако с развитием сетей и увеличением числа устройств печати её архитектура начала устаревать. В 1990-х годах Патрик Пауэлл (Patrick Powell) и его коллеги начали работу над LPRng, стремясь сохранить совместимость с существующими протоколами, но при этом устранить недостатки оригинальной системы, такие как слабая безопасность, отсутствие гибкой конфигурации и ограниченная поддержка сетевых протоколов.

Первая стабильная версия LPRng была выпущена в 1998 году. В последующие годы система активно развивалась, получив поддержку шифрования (через SSL/TLS), аутентификации, детального контроля доступа и расширенных возможностей фильтрации заданий. LPRng конкурировала с другими системами печати, такими как CUPS (Common Unix Printing System), которая впоследствии стала доминирующей в мире Linux и macOS. К середине 2000-х годов развитие LPRng замедлилось, и её использование сократилось, однако она остаётся востребованной в некоторых специализированных средах, где требуется высокая надёжность и совместимость с устаревшими протоколами.

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

LPRng состоит из нескольких ключевых компонентов, работающих в режиме клиент-сервер:

  • lpd (Line Printer Daemon) — серверный демон, который принимает запросы на печать от клиентов, управляет очередями, запускает фильтры и отправляет задания на принтеры. Он может работать как в локальном, так и в сетевом режиме.
  • lpr — клиентская программа для отправки задания на печать. Пользователь вызывает её с указанием имени принтера и файла (или потока данных).
  • lpq — утилита для просмотра состояния очереди печати: показывает список заданий, их статус, размер и владельца.
  • lprm — команда для удаления задания из очереди. Пользователь может удалить только свои задания, а администратор — любые.
  • lpc — административная утилита для управления демоном lpd и очередями: позволяет включать/отключать очереди, перезапускать демон, очищать очередь и т.д.
  • checkpc — утилита для проверки и исправления конфигурации LPRng, а также для создания необходимых файлов и каталогов.

Все компоненты взаимодействуют через протокол LPR (RFC 1179), который является стандартом для сетевой печати в Unix-системах.

Конфигурация

Основным конфигурационным файлом LPRng является /etc/lpd.conf (или /etc/lprng/lpd.conf в некоторых дистрибутивах). В нём задаются глобальные параметры работы демона, такие как:

  • порт прослушивания (по умолчанию 515);
  • максимальный размер задания;
  • время ожидания;
  • пути к файлам журналов;
  • параметры безопасности (разрешённые хосты, методы аутентификации).

Определение принтеров и их параметров производится в файле /etc/printcap. Этот файл описывает каждое устройство печати: его имя, тип подключения (локальный или сетевой), используемые фильтры, каталог для очереди, ограничения доступа и другие настройки. Формат printcap в LPRng расширен по сравнению с оригинальным Berkeley LPR: добавлены поля для указания протоколов шифрования, фильтров предварительной обработки и параметров сетевого взаимодействия.

Пример записи для сетевого принтера в /etc/printcap: `` lp|HP LaserJet 4000:\ :lp=:rm=192.168.1.100:rp=raw:\ :sd=/var/spool/lpd/lp:\ :lf=/var/log/lpd-errs:\ :filter=/usr/local/libexec/lprng/filter_postscript:\ :mx#0: ` Здесь rm — удалённый хост, rp — имя очереди на удалённом принтере, sd — каталог спула, filter — путь к фильтру, mx` — максимальный размер задания (0 — без ограничений).

Безопасность

Одним из главных нововведений LPRng стало усиление безопасности. В оригинальном LPR отсутствовала аутентификация, и любой клиент мог отправить задание на печать или удалить его. LPRng поддерживает несколько механизмов защиты:

  • Аутентификация Kerberos — позволяет проверять подлинность пользователя и клиентской машины.
  • Шифрование SSL/TLS — защищает передаваемые данные (задания печати) от перехвата.
  • Контроль доступа — на основе IP-адресов, имён хостов или пользователей можно ограничить, кто может отправлять, удалять или просматривать задания.
  • Поддержка PGP — для подписи и шифрования заданий.

Эти возможности делают LPRng пригодной для использования в корпоративных и государственных сетях, где требуется высокий уровень защиты данных.

Фильтры и обработка заданий

LPRng позволяет применять к заданиям печати цепочки фильтров — программ, которые преобразуют входные данные в формат, понятный принтеру. Фильтры могут выполнять различные задачи:

  • конвертация PostScript в PCL (Printer Command Language);
  • добавление служебных страниц (banner pages);
  • преобразование текстовых файлов в PostScript;
  • обработка изображений (например, через Ghostscript).

Фильтры задаются в файле printcap для каждого принтера отдельно. LPRng поддерживает как простые однопроходные фильтры, так и сложные конвейеры, где выход одного фильтра становится входом для другого.

Применение

LPRng использовалась в основном в Unix-системах (Linux, BSD, Solaris, AIX) до начала 2000-х годов. С появлением CUPS, которая предлагала более простую конфигурацию, веб-интерфейс и поддержку современных протоколов (IPP), LPRng постепенно вытеснялась. Тем не менее, она по-прежнему применяется:

  • в встраиваемых системах и устройствах с ограниченными ресурсами, где CUPS может быть избыточной;
  • в средах, где требуется строгая совместимость с устаревшими сетевыми принтерами, поддерживающими только протокол LPR;
  • в системах с высокими требованиями к безопасности, где уже внедрена Kerberos-аутентификация;
  • в некоторых дистрибутивах Linux, ориентированных на минимализм (например, Slackware, Gentoo), где LPRng может быть выбрана по умолчанию.

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

Основные недостатки LPRng по сравнению с CUPS:

  • Сложность настройки — конфигурация через текстовые файлы (lpd.conf, printcap) требует ручного редактирования и знания синтаксиса, в то время как CUPS предлагает веб-интерфейс.
  • Отсутствие поддержки современных протоколов — LPRng не поддерживает IPP (Internet Printing Protocol), который стал стандартом для печати в офисных сетях.
  • Меньше драйверов — в отличие от CUPS, которая использует драйверы в формате PPD (PostScript Printer Description), LPRng полагается на внешние фильтры, что может усложнить поддержку новых моделей принтеров.
  • Снижение активности разработки — последние стабильные версии LPRng вышли в середине 2000-х годов, и проект фактически не развивается.

Статус и наследие

Несмотря на снижение популярности, LPRng остаётся частью истории Unix-печати. Многие идеи, реализованные в ней (расширенная безопасность, гибкая фильтрация, поддержка сетевых протоколов), были впоследствии заимствованы другими системами. LPRng также входит в состав некоторых дистрибутивов Linux как альтернатива CUPS, хотя в большинстве современных систем по умолчанию используется именно CUPS.

Источники

  • Powell, P. (1998). LPRng — An Enhanced Printer Spooler System. Proceedings of the USENIX Annual Technical Conference.
  • RFC 1179 — Line Printer Daemon Protocol.
  • Документация пакета LPRng (man-страницы lpd, lpr, lpq, lprm, lpc, printcap).
  • «LPRng: The Next Generation of LPR» — статья в журнале Linux Journal, 1999.
  • Дистрибутивы Linux: Slackware, Gentoo — официальные руководства по настройке печати.

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

На главную BFOmetr →