При запуске lpd обращается к файлу /etc/printcap в поисках информации о доступных для использования печатающих устройствах. Файл printcap определяет принтеры и их характеристики.

Создание файла printcap - самый жуткий этап настройки Unix-сервера печати. (Не пугайтесь: как мы позже увидим на примере инструмента Solaris admintool, в большинстве систем существуют графические интерфейсы, облегчающие настройку принтеров.) Файл printcap внушает страх системным администраторам потому, что синтаксический анализатор, выполняющий разбор файла, весьма придирчив, а синтаксис записей - лаконичен и загадочен. Большинства осложнений, связанных с синтаксисом, можно избежать, следуя приводимым ниже правилам:

  • Начинайте каждую запись с имени принтера в первой колонке. Пробелов перед первым именем принтера быть не должно. Допустимо использование списков имен, разделенных символом конвейера (|). Одна из записей должна быть связана с принтером по имени 1р. Если к серверу подключено несколько принтеров, назначайте имя 1р принтеру «по умолчанию».
  • Для разбиения записей на строки используйте символ обратного слэша \ в конце строки и табуляцию в начале строки продолжения. Следите за тем, чтобы после символа \ не было пробелов. Следующим символом обязательно должен быть символ новой строки.
  • Каждое поле, за исключением поля имени принтера, начинается и заканчивается двоеточием (:). В записи, разбитой на строки, двоеточие предшествует символу обратного слэша и оно же следует за символом табуляции в строке продолжения.
  • Начинайте комментарии символом решетки (#).

Параметры настройки в файле printcap определяют характеристики принтера. Эти характеристики в документации printcap называются возможностями (capabilities), но в действительности это всего лишь характеристики принтера, которые нужны демону lpd, чтобы общаться с печатающим устройством. Параметры обозначаются двухсимвольными именами и обычно имеют значения. Синтаксис параметров немного варьируется в зависимости от типов значений. Параметры бывают трех видов:


Логические Все логические параметры printcap по умолчанию имеют значение «false» (то есть «ложь»). Упоминание логического параметра в записи принтера включает соответствующую функцию. Достаточно просто добавить в запись двухсимвольное имя параметра. Так, : rs: включает ограничение доступа для удаленных пользователей.

Численные Некоторым из параметров назначаются численные значения. Например, : br#9600: устанавливает скорость обмена данными для последовательного принтера.

Строковые Некоторым из параметров назначаются строковые значения. К примеру, : rp=laser. определяет имя удаленного принтера.

Взгляд на страницу руководства, посвященную lpd, позволяет понять, что параметров printcap существует множество. К счастью, большинство из них вам никогда не придется использовать. Чаще встречаются простые определения принтеров и небольшие файлы printcap.

К серверу печати обычно напрямую подключен один или два принтера; все прочие принтеры, определенные в файле printcap, скорее всего, являются удаленными принтерами. Большинство определений (если не все) клиентского файла printcap относятся к удаленным принтерам.

#
# Remote LaserWriter
#
lw:\
:lf=/var/adm/lpd-errs:\
:lp=:rm=horseshoe:rp=lw:\
:sd=/var/spool/lpd-lw:

В данном примере файла printcap принтер lw является удаленным. Параметр If указывает файл журнала, в который записываются сообщения о состоянии и ошибках. Удаленная машина, к которой подключен принтер, определена параметром : rm=horseshoe:, а имя удаленного принтера на этой машине - параметром :rp=lw:. Один файл журнала может использоваться для нескольких принтеров. Последний параметр, sd, определяет каталог буферной зоны печати. Каждому принтеру соответствует отдельный каталог буферной зоны. Для настройки клиента LPD достаточно создать определение удаленного принтера в файле printcap клиента.

Совершенно необязательно создавать файл printcap с нуля. Самое большее может потребоваться отредактировать файл, чтобы он лучше соответствовал вашим нуждам. Во всех современных системах Unix существуют инструменты настройки принтеров, которые самостоятельно создают основу файла printcap. Примером такого инструмента может служить приложение printconf-gui в системе Red Hat.


Запустите инструмент настройки принтеров в системе Red Hat 7.2, с рабочего стола Gnome обратившись к элементу Printer Configuration меню System. Когда откроется окно printconf-gui, щелкните по кнопке New, чтобы добавить определение принтера в файл printcap. Кнопка New вызывает мастер настройки принтера. На первой странице мастера укажите имя принтера и тип очереди печати. Наберите имя принтера, например lw, в поле ввода Queue Name. Затем выберите тип очереди (Queue Туре). В Red Hat 7.2 существует пять вариантов для типа очереди:

Local Printer (Локальный принтер) Используйте данный тип для принтера, подключенного напрямую. При выборе типа Local Printer мастер предлагает указать порт, к которому подключен принтер. По умолчанию это порт /dev/lp0.

Unix Printer (Принтер Unix) Используйте данный тип для принтера, подключенного к удаленному серверу, если доступ осуществляется по протоколу LPD. При выборе типа Unix Printer мастер предлагает указать имя удаленного сервера и имя принтера на этом сервере.

Windows Printer (Принтер Windows) Используйте данный тип для принтера, подключенного к удаленному серверу, если доступ осуществляется по протоколу SMB. При выборе типа Windows Printer мастер предлагает указать IP-адрес удаленного сервера, рабочую группу SMB, а также имя удаленного принтера (мастер обозначает его как имя ресурса, share name). Кроме того, мастер позволяет указать имя пользователя и пароль, если они требуются для доступа к принтеру. Организация совместного доступа к принтерам по протоколу SMB описана далее в этой главе.

Novell Printer (Принтер Novell) Используйте данный тип для принтера, подключенного к удаленному серверу, если доступ осуществляется по протоколам NetWare. При выборе типа Novell Printer мастер предлагает указать имя сервера и принтера на сервере, а также необязательное имя пользователя и пароль, если они требуются для доступа к принтеру. Чтобы работать с принтером Novell, необходимо установить реализацию протоколов NetWare.

Jet Direct Printer (Принтер J etDirect) Используйте данный тип для принтера, подключенного к сети, если доступ осуществляется по протоколу JetDirect. В основном этот протокол используется в принтерах HP со встроенным интерфейсом Ethernet. Такие принтеры подключаются к сети напрямую по кабелю Ethernet, без участия сервера. При выборе типа JetDirect мастер предлагает указать IP-адрес принтера и позволяет ввести номер порта в случае, когда принтер работает не через стандартный порт JetDirect.

Наконец, мастер предлагает выбрать один из сотен драйверов для принтера. В большинстве систем Unix используются стандартные принтеры PostScript. Системы Linux, напротив, чаще создаются на основе PC-компонентов широкого потребления. С персональными компьютерами используется сборная солянка из самых разных принтеров. Мастер позволяет выбрать подходящий драйвер на основе информации о марке и модели принтера. Когда драйвер выбран и настройка завершена, происходит установка нового принтера. Данный инструмент для Red Hat - просто пример. В новых версиях Red Hat появятся более совершенные инструменты аналогичной функциональности, а в других системах Unix существуют свои подобные приложения. Суть дела не в том, как использовать такой инструмент, а в том, что файлы printcap обычно не создаются вручную. Для этой цели используются приложения настройки.