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 →