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. Для более подробного уточнее возможных 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

.

Теперь для нормальной печати из 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. Все ссылки смотри внизу статьи. Для конфигурации я использовал следующую команду:

./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

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

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

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

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

Теперь выходим по адресу: https://192.168.0.1:631, где через веб интерфейс добавляем наш принтер. (заходим во вкладку Administration, далее Add Printer).

Ссылки