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
# Log general information in error_log - change "info" to "debug" for
# troubleshooting...
LogLevel info

# Administrator user group...
SystemGroup lpadmin
ServerName 192.168.0.1        # hostname-or-ip-address; Specifies the fully-qualified hostname of the server.
ServerAdmin alex@donik.org    #  user@domain.com; Specifies the email address of the server administrator.

# Only listen for connections from the local machine.
Listen *:631
Listen /var/run/cups/cups.sock

MaxClients 100

# Show shared printers on the local network.
Browsing On
BrowseOrder deny,allow
BrowseDeny none
BrowseAllow 192.168.0.0/255.255.255.0
BrowseAddress 192.168.*.*:631


# Default authentication type, when authentication is required...
DefaultAuthType Basic

# Restrict access to the server...
<Location />
  Order deny,allow
  Deny From All
  Allow From 192.168.0.0/24
</Location>

# Restrict access to the admin pages...
<Location /admin>
  Encryption Required
  Order deny,allow
  Deny From All
  Allow From 192.168.0.0/24
</Location>

# Restrict access to configuration files...
<Location /admin/conf>
  AuthType Default
  Require user @SYSTEM
  Order deny,allow
  Deny From All
  Allow From 192.168.0.0/24
</Location>

# Set the default printer/job policies...
<Policy default>
  # Job-related operations must be done by the owner or an administrator...
  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes
 Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job
 Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job>
    Require user @OWNER @SYSTEM
    Order deny,allow
    Deny From All
    Allow From 192.168.0.0/24
  </Limit>

  # All administration operations require an administrator to authenticate...
  <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
    AuthType Default
    Require user @SYSTEM
    Order deny,allow
    Deny From All
    Allow From 192.168.0.0/24
  </Limit>

  # All printer operations require a printer operator to authenticate...
  <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job 
Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer 
Startup-Printer Promote-Job Schedule-Job-After CUPS-Accept-Jobs CUPS-Reject-Jobs>
    AuthType Default
    Require user @SYSTEM
    Order deny,allow
    Deny From All
    Allow From 192.168.0.0/24
  </Limit>

  # Only the owner or an administrator can cancel or authenticate a job...
  <Limit Cancel-Job CUPS-Authenticate-Job>
    Require user @OWNER @SYSTEM
    Order deny,allow
    Deny From All
    Allow From 192.168.0.0/24
  </Limit>

  <Limit All>
    Order deny,allow
    Deny From All
    Allow From 192.168.0.0/24
  </Limit>
</Policy>

#
# End of "$Id: cupsd.conf.in 7199 2008-01-08 00:16:30Z mike $".
#
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 ставит необходимые драйверы. После этого можно распечатать тестовую страничку.

Ссылки