CUPS

Материал из AlexNook
Перейти к: навигация, поиск
CUPS Logo

CUPS (Common UNIX Printing System) — сервер печати для UNIX-подобных операционных систем. Компьютер с запущенным CUPS представляет собой сервер, который принимает задания от клиентов и выполняет их на соответствующем принтере.

CUPS in Gentoo Linux

Решил избавится у себя от лишней коробочки под столом, которая именовалась print setver от D-Link. Зачем использовать её, если крутится постоянно сервер под Генту? И так что мы имеем для этого. Сервер под упралвением ОС Gentoo Linux с ядром 2.6, принтер HP DeskJet 970Cxi.

Настройка ядра

Перво наперво надо пересобрать ядро, включив туда поддержку USB и принтера USB. Для этого под рутом вводим:

genkernel --menuconfig all

и загрузив наш старый конфиг (надеюсь вы его сохранили после последней переборки ядра) правим вот это

Linux Kernel Configuration: USB and USB Printer kernel config
Device Drivers -->
  USB Support -->
    <*> Support for Host-side USB
    (...)
    --- USB Host Controller Drivers
    <*> EHCI HCD (USB 2.0) support
    <*> OHCI HCD support
    <*> UHCI HCD (most Intel and VIA) support
    (...)
    <*> USB Printer support
Note: Вариант LPT не рассматриваю в данном хелпе

Установка CUPS

Теперь ставим собственно саму CUPS. Для более подробного уточнее возможных USE флагов смотрим ссылку Gentoo Printing Guide (в разделе ссылки). Лично я поставил следующие: Use Flags: acl dbus jpeg png ppds python ssl tiff pam (?)

Для добавления флагов пишем
echo "net-print/cups Flag1 Flag2 ..." >> /etc/portage/package.use
. Далее ставим обычным стандартным способом
emerge cups
.

Найстройка CUPS

Теперь для нормальной печати из Windows надо поправить 2 файла (это вносит возможность печати через Windows PCL Drivers, который посылает данные в виде Raw принт серверу, то есть нам надо активировать возможность Raw печати через СUPS):

File: /etc/cups/mime.types
application/octet-stream

и

File: /etc/cups/mime.convs
application/octet-stream     application/vnd.cups-raw    0    -

Теперь рассмотрим вариант конфига CUPS'а

File: /etc/cups/cupsd.conf
  1. # Log general information in error_log - change "info" to "debug" for
  2. # troubleshooting...
  3. LogLevel info
  4.  
  5. # Administrator user group...
  6. SystemGroup lpadmin
  7. ServerName 192.168.0.1        # hostname-or-ip-address; Specifies the fully-qualified hostname of the server.
  8. ServerAdmin alex@donik.org    #  user@domain.com; Specifies the email address of the server administrator.
  9.  
  10. # Only listen for connections from the local machine.
  11. Listen *:631
  12. Listen /var/run/cups/cups.sock
  13.  
  14. MaxClients 100
  15.  
  16. # Show shared printers on the local network.
  17. Browsing On
  18. BrowseOrder deny,allow
  19. BrowseDeny none
  20. BrowseAllow 192.168.0.0/255.255.255.0
  21. BrowseAddress 192.168.*.*:631
  22.  
  23.  
  24. # Default authentication type, when authentication is required...
  25. DefaultAuthType Basic
  26.  
  27. # Restrict access to the server...
  28. <Location />
  29.   Order deny,allow
  30.   Deny From All
  31.   Allow From 192.168.0.0/24
  32. </Location>
  33.  
  34. # Restrict access to the admin pages...
  35. <Location /admin>
  36.   Encryption Required
  37.   Order deny,allow
  38.   Deny From All
  39.   Allow From 192.168.0.0/24
  40. </Location>
  41.  
  42. # Restrict access to configuration files...
  43. <Location /admin/conf>
  44.   AuthType Default
  45.   Require user @SYSTEM
  46.   Order deny,allow
  47.   Deny From All
  48.   Allow From 192.168.0.0/24
  49. </Location>
  50.  
  51. # Set the default printer/job policies...
  52. <Policy default>
  53.   # Job-related operations must be done by the owner or an administrator...
  54.   <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes
  55.  Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job
  56.  Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job>
  57.     Require user @OWNER @SYSTEM
  58.     Order deny,allow
  59.     Deny From All
  60.     Allow From 192.168.0.0/24
  61.   </Limit>
  62.  
  63.   # All administration operations require an administrator to authenticate...
  64.   <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
  65.     AuthType Default
  66.     Require user @SYSTEM
  67.     Order deny,allow
  68.     Deny From All
  69.     Allow From 192.168.0.0/24
  70.   </Limit>
  71.  
  72.   # All printer operations require a printer operator to authenticate...
  73.   <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job
  74. Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer
  75. Startup-Printer Promote-Job Schedule-Job-After CUPS-Accept-Jobs CUPS-Reject-Jobs>
  76.     AuthType Default
  77.     Require user @SYSTEM
  78.     Order deny,allow
  79.     Deny From All
  80.     Allow From 192.168.0.0/24
  81.   </Limit>
  82.  
  83.   # Only the owner or an administrator can cancel or authenticate a job...
  84.   <Limit Cancel-Job CUPS-Authenticate-Job>
  85.     Require user @OWNER @SYSTEM
  86.     Order deny,allow
  87.     Deny From All
  88.     Allow From 192.168.0.0/24
  89.   </Limit>
  90.  
  91.   <Limit All>
  92.     Order deny,allow
  93.     Deny From All
  94.     Allow From 192.168.0.0/24
  95.   </Limit>
  96. </Policy>
  97.  
  98. #
  99. # End of "$Id: cupsd.conf.in 7199 2008-01-08 00:16:30Z mike $".
  100. #
Warning: Строки типа <Limit в данном примере конфига я специально перенёс на несколько т.к. они выходят за поля монитора в браузере, что уменьшает читаемость и красоту хелпа, на самом деле в конфиге они все идут без символа переноса строки

Важное дополнение, для верного заполненя конфига я использовал как встроеный man cupsd.conf, так и ссылки типа Order на Apache.org и настройка маски подсети (смотри раздел ссылки ниже).

Установка драйвера

Теперь поставим драйвер для принтера. Встроеный в CUPS драйвер конечно печатает, но плохо, что недостаточно для нормальной печати картинок например (я уже не говорю о фотографиях). Т.к. у меня принтер от HP (а этот производитель позаботился о пользователях Linux систем, за что ему большое спасибо), то поставим HPLIP. Встроеный в портажи HPLIP у меня не пошёл вообще (то есть я не смог его настроить на работу никак). Поэтому после удаления всех его следов я вышел на сайт HPLIP installing (hp site), где по инструкции и поставил пакет HPLIP. Все ссылки смотри внизу статьи.

Установка пакета HPLIP

Для конфигурации я использовал следующую команду:

./configure --with-hpppddir=/usr/share/ppd/HP --libdir=/usr/lib64 --prefix=/usr --disable-qt4 --disable-doc-build --enable-cups-ppd-install --disable-foomatic-drv-install --disable-foomatic-ppd-install --disable-hpijs-install --disable-policykit --disable-cups-drv-install --enable-hpcups-install --enable-network-build --enable-dbus-build --disable-scan-build --disable-fax-build
Note: У меня стоит 64 битрая ОС, что повлияло на способ конфигурации, а так же потом пришлось сделать некоторые изменения.

После этого выполняем стандартные:

make
make install

Доработка HPLIP

Драйверы поставились, но лично мне это не дало сильного преимущества, т.к. они не хотели конфигурироваться под принтер так же как и те, что был в портажах. То есть принтер видят и драйверы и система, но результата нет. Поэтому мне пришлось проделать хитрый трюк, который возможно никому не пригодится.

Все приготовления у нас сделаны выше, запускаем CUPS и добавляем его в автозапуск.

/etc/init.d/cupsd start
rc-update add cupsd default

Теперь выходим по адресу: https://192.168.0.1:631, где через веб интерфейс добавляем наш принтер. (заходим во вкладку Administration, далее Add Printer). Задаём имя, место расположения и описание принтера (последние два поля чисто описательные). На предложения установить стандартный драйвер от CUPS для указанной модели принтера мы отказываемся подсовываем ему драйвер и ранее скачанного пакета HPLIP. В моём случае файл назывался hp-deskjet_970c.ppd.

Note: Найти его можно по адресу /usr/share/ppd/HP/, а потом распаковать и подсунуть cups'у через кнопку browse при выборе драйвера.

Т.к. у меня сложности с битностью, то для работы мне пришлось создать символические ссылки на некоторые исполняемые файлы.

ln -s /usr/lib64/cups/filter/hpcups /usr/libexec/cups/filter/hpcups
ln -s /usr/lib64/cups/backend/hp /usr/libexec/cups/backend/hp

После чего всё должно работать. Можно теперь пробежаться по настройкам веб интерфейса. Лично я поправил дополнительно свойства принтера добавив размер бумаги A4 (297*210) и пробежался по чекбоксам (смотри рисунок)

CUPS CheckBoxes administration

Просмотр USB устройств

Для того, чтобы проконтролировать, что ваша система видит подключенный по USB принтер можно использовать команду

lsusb

однако предварительно надо поставить следующий пакет

emerge sys-apps/usbutils

Настройка принтера из Windows

Мастер установки принтера

Для этого выполняем следующие действия (подразумевается что стоит WinXP и новее). Start->Devices and Printers -> Add a Printer

Теперь выбираем сетевой принтер Add a Network, Wireless or BlueTooth printer. Затем в поле Select a shared Printer Name или Add a printer using a TCP/IP address or hostname вводим имя нашего притера, которые мы получаем из строки браузера в момент его администрирования через веб интерфейс CUPS'а. У меня оно выглядит как: http://192.168.0.1:631/printers/HPDJ970CXI или http://192.168.0.1:631/printers/HPLJP2015dn или http://192.168.0.1:631/printers/HPLJ1300.
Warning: Обратите внимание протокол: в веб интерфейсе был httpS, а для указания shared printer name надо уже использовать http
Далее выбираем из списка различных моделей нашу (у меня это HP -> DeskJet 970 Cxi) и Windows ставит необходимые драйверы. После этого можно распечатать тестовую страничку.

Ссылки