Инженерная мысль не останавливается ни на секунду; с момента появления первого печатающего устройства опробована и введена в эксплуатацию масса новых технологий. На данный момент наиболее распространены следующие технологии печати:
Матричные принтеры постепенно доживают свой век, но, обладая удивительной простотой и надёжностью, продолжают ещё использоваться. С настройкой этого типа принтеров, за редкими исключениями, проблем не должно возникать.
Лазерные принтеры обладают высокой скоростью печати, незаменимы в офисах организаций всех типов. Моделей существует множество, но, к счастью, для большинства можно найти «родной» драйвер или подобрать совместимый.
	    Главный лозунг струйных принтеров «дёшево и в цвете». Так как в этой индустрии не появилось
	    явного лидера, то процветает множество стандартов и
	    существует вероятность иметь очень экзотический с точки
	    зрения Linux принтер.
	  
«Дёшево любой ценой». Используют компьютер вместо того, чтобы всё делать самим. Проблемы очень вероятны, так как протокол работы зачастую закрыт. К счастью, существует несколько моделей, напоминающих по интерфейсу полноценные принтеры, что позволяет всё-таки производить печать с низким разрешением.
      Если вам доводилось работать в Microsoft Windows, то вы прекрасно
      знаете, что в комплекте с каждым принтером  поставляется дискета
      или компакт-диск с драйвером для настройки печати. К великому
      сожалению, в мире UNIX/Linux пока так и не
      договорились о едином стандарте драйверов. В настоящее время
      стандартом де-факто является пакет ghostscript фирмы
      Aladdin Software.
    
      Ghostscript (далее GS) —  это программа перевода
      из векторного формата в растровый (RIP). На
      вход программы подаётся документ в формате PostScript или
      PDF, а на выходе получается документ на языке, понятном
      конкретной модели принтера или графическое изображение
      страницы. Большинство программ Linux формируют документ в
      формате PostScript, поэтому оказывается, что применения GS
      вполне достаточно для обеспечения печати из приложений.
    
 PostScript —  это самый настоящий язык программирования,
      который используется для того, чтобы описать содержимое
      страницы. Например, пишутся такие серии команд: переместиться
      туда-то, напечатать слово такое-то, сменить шрифт на
      такой-то. Существуют модели принтеров, непосредственно
      понимающие PostScript, для всех остальных требуется посредник,
      и GS успешно с этим справляется. Вы спросите, как он
      поддерживает столько принтеров? Дело в том, что количество
      языков принтеров намного меньше количества существующих моделей. Например,
      известные всем HP LaserJet
      4, 4L,
      5, 5L,
      6, 6L,
      1100, 2100
      «понимают» один и тот же язык
      PCL5. Если вы не страшитесь этих слов и вам
      любопытно посмотреть, какие драйверы языков поддерживает ваш
      GS —  дайте команду gs
      --help. Так, например,
      ljet4 как раз и обслуживает вышеупомянутую
      линейку моделей принтеров.
    
      Итак, теперь понятно, как устроена печать в любом
      дистрибутиве Linux: программа формирует документ на языке PostScript, GS
      переводит его на язык принтера, установленного в вашей системе, и
      передаёт эстафету принтеру.
    
Но это ещё далеко не всё. А что если вам надо послать документ на принтер, установленный на другой машине, или напечатать сразу несколько документов и нет времени ждать, пока каждый из них будет обслужен ghostscript и уступит место следующему? Для этого существует так называемый сервер печати или спулер (от англ. spooler), обслуживающий очереди печати. Последний термин более точно отражает суть, поэтому им мы и будем пользоваться и писать дальше просто «спулер». В ALT Linux в качестве спулера работает современная система печати CUPS (Common UNIX Printing System), которая является фактическим стандартом среди спулеров.
В ALT Linux у пользователя есть несколько способов настроить систему печати. В большинстве ситуации проще и надёжнее всего воспользоваться стандартными средствами CUPS. Есть также альтернативные способы добавления и удаления принтеров, например, средствами foomatic. Дальше будет рассказано обо всём этом подробнее.
      Запустите свой любимый броузер и откройте страницу http://localhost:631 —  вы увидите интерфейс настройки CUPS. Выберите раздел
      «Manage Printers», далее раздел «Add Printer». Затем у вас спросят имя и пароль
      администратора CUPS; по умолчанию это администратор системы
      (root).
    
Появится первый диалог — достаточно указать имя (Name) принтера, описание (Description) носит вспомогательный характер, а местоположение (Location) нужно только в том случае, если у вас настроена сложная система разграничения доступа в CUPS. В следующем диалоге производится выбор устройства, к которому подключён принтер. Два последующих — выбор модели и производителя принтера. Напоследок можно заказать печать пробной страницы.
Может возникнуть ситуация, что сочетания производитель/модель вашего принтера не окажется в списке, предложенном CUPS — это означает, что в базе данных CUPS не нашлось описания для вашей модели принтера. В этот момент отчаиваться не следует.
Описание принтера в CUPS — 
      это файл
      , 
      PPD-файлы для известных моделей CUPS держит в каталоге
      модель_принтера.ppd/usr/share/cups/model, имеющийся там список
      принтеров далеко не исчерпывающий. Однако познакомить CUPS с
      новым принтером очень легко, если принтер поддерживает один из
      стандартных языков управления и будет работать с одним из уже
      существующих драйверов (что почти всегда так). Для этого
      достаточно найти PPD-файл для нужной модели принтера и поместить
      его в зону видимости CUPS. Большую базу описаний принтеров
      предоставляет foomatic (ниже написано о том, как им
      воспользоваться), если нужной модели не нашлось и там, стоит
      поискать PPD-файл на сайте производителя принтера.
    
Сложно дать краткое описание того, что же такое foomatiс. Это и база описаний моделей принтеров, и интерфейс настройки одновременно. Более того, foomatic умеет настраивать практически все известные на сегодняшний день спулеры, в частности CUPS.
      Процедуру настройки лучше всего рассмотреть на конкретном
      примере[1]. Пусть мы хотим настроить printer HP LaserJet 1022 (которого не нашлось в базе известных
      принтеров CUPS, расположенный на Windows-машине
      host в рабочей группе
      group под именем
      printer.
    
Прежде всего, нужно найти описание для данной модели принтера в базе данных foomatic:
$ foomatic-ppdfile -A|grep 1022 HP LaserJet 1022 Id='HP-LaserJet_1022' Driver='hpijs' Ricoh Aficio 1022 PS Id='Ricoh-Aficio_1022_PS' Driver='Postscript'
Чтобы не просматривать огромный список принтеров, лучше всего профильтровать вывод foomatic-ppdfile -A утилитой grep, задав в качестве поискового выражения название/номер модели принтера.
Нас прежде всего интересует идентификатор-описание в поле Id. Кроме того, мы получили имя ghostscript-драйвера, с которым будет работать данный принтер.
Теперь нужно сгенерировать ppd-файл:
$ foomatic-ppdfile -p 'HP-LaserJet_1022' > HP-LaserJet_1022.ppd
Дальше можно пойти двумя путями. Первый способ —  поместить этот файл в каталог
    /usr/share/cups/model и перезапустить службу
    CUPS. С этого момента принтер попал в список известных CUPS —  можно возвращаться к web-интерфейсу CUPS, где появится нужная модель, и настраивать принтер привычным способом. Второй способ —  использовать возможности foomatic для настройки
    спулера описан ниже. Копировать ppd-файл вручную при этом не потребуется.
	  Сформируем URI, описывающее расположение
	  принтера. Общий формат:
	  . 
	  Местоположение зависит от протокола.
	протокол://местоположение
	  Если принтер подключён локально, то URI —  file://, в
	  частности может быть указан файл-устройство (например,
	  путь_к_файлу/dev/lp0.
	
	  Если удалённый принтер доступен посредством Samba
	  (наш случай), то URI — 
	  smb://user:password@group/host/printer. 
	  Некоторые поля в описании могут отсутствовать.
	
	  Наконец, в случае Netware-сервера URI — 
	  ncp://user:password@server/printer.
	
Идентификатор принтера и имя подходящего драйвера мы уже выяснили ранее.
	  Мы собрали теперь достаточно информации для того чтобы
	  произвести конфигурацию принтера. Это делается одной командой
	  foomatic-configure. Мы укажем
	  желаемый спулер (параметр -s), имя принтера
	  (параметр -n) идентификатор описания, драйвер
	  и URI.
	
# foomatic-configure -s cups -n Laser_Jet -p HP-LaserJet_1022 \ -d hpijs -c smb://user:password@group/host/printer
Вот и готово. Настройки можете посмотреть непосредственно в конфигурационных файлах спулера или при помощи команды foomatic-configure -Q.
<queues> <defaultqueue>Laser_Jet</defaultqueue> <queue foomatic="0" spooler="cups"> <name>Laser_Jet</name> <printer>HP-LaserJet_1022</printer> <driver>hpijs</driver> <connect>smb://user:password@group/host/printer</connect> <description>HP LaserJet 1022</description> </queue> </queues>
Если вы слишком увлеклись настройками и теперь путаетесь между десятком заведённых принтеров, то самое время удалить лишние.
      Удаление можно производить вручную, удалив описания из
      конфигурационных файлов спулера 
      (/etc/cups/printers.conf). Для CUPS 
      можно вновь воспользоваться web-интерфейсом. Если вы использовали
      foomatic, то полезно знать
      команду
    
# foomatic-configure -sтип_спулера-nимя_принтера-R
      где тип_спулера —  CUPS.
    
      Конфигурационные файлы CUPS находятся в каталоге 
      /etc/cups. Файл 
      /etc/cups/cupsd.conf содержит описание 
      главных параметров сервера, каждый из которых сопровождается 
      подробным описанием. Приведём некоторые наиболее часто 
      используемые параметры:
    
	  Уровень подробности протоколирования. По умолчанию значение
	    равно info. Если у вас какие-то
	    проблемы с CUPS, а в протоколе нет ничего информативного, можете поднять уровень до максимального —  debug2.
  	
	    TCP-порт, по которому сервер будет
	    ожидать обращений клиентов. По умолчанию это
	    631 (зарезервированное для протокола
	    IPP). 
	  
	  Серия директив, аналогичных имеющимся в web-сервере
	  Apache. Order —  порядок просмотра значений Allow
	  и Deny, Allow — 
	  адреса, с которых разрешён доступ, Deny —  адреса, с которых доступ запрещён. Пример: 
	
<Location /> Order Deny,Allow Deny From All Allow From 127.0.0.1 </Location>
Это означает, что сначала сервер будет смотреть, запрещён ли доступ с машины (здесь запрещено для всех), а потом — разрешён ли (здесь разрешён доступ только с самого сервера). Последний параметр понадобится для организации одного CUPS-сервера на всю локальную сеть. Организация доступа может быть устроена сколь угодно сложно благодаря поддержке концепции классов.
      Файл /etc/cups/client.conf содержит настройки для клиентской части. В нём указываются всего два параметра —  местоположение сервера и защищённость
      соединения. Скорее всего, вам не придётся там что-либо менять.
    
      Файл /etc/cups/printers.conf содержит
      описание принтеров. Формат записи интуитивно понятен и похож
      на XML. Ниже приведён пример настройки для
      локального принтера.
    
<DefaultPrinter printer> DeviceURI parallel:/dev/lp0 State Idle Accepting Yes JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 </Printer>
      Существенными параметрами являются Accepting
      (принимает ли принтер задания) и DeviceURI
	  (специальное описание местоположения принтера). 
	  
    
      Описание каждого установленного принтера
      (соответствующий PPD-файл) находится в
      /etc/cups/ppd/. 
      Обратите внимание, что имя_принтера.ppdимя_принтера —  это не название модели, а то имя, под которым установлен
      принтер (которое дал пользователь). PPD-файл представляет собой
      текстовый конфигурационный файл, в котором описаны свойства
      принтера. Названия некоторых параметров говорят сами за себя
      и/или снабжены комментариями, так что настройку параметров
      печати можно производить и непосредственно редактируя ppd-файл.
    
При каждом изменении в конфигурационных файлах CUPS следует перезапускать системную службу cups командой service cups restart.
[1] Скорее всего, в вашей системе уже установлены компоненты foomatic; если нет, то потребуются пакеты foomatic, foomatic-db, foomatic-db-engine, foomatic-filters, hplip-foomatic.