CUPS
CUPS (Common UNIX Printing System) — сервер печати для UNIX-подобных операционных систем. Компьютер с запущенным CUPS представляет собой сервер, который принимает задания от клиентов и выполняет их на соответствующем принтере.
CUPS in Gentoo Linux
Решил избавится у себя от лишней коробочки под столом, которая именовалась print setver от D-Link. Зачем использовать её, если крутится постоянно сервер под Генту? И так что мы имеем для этого. Сервер под упралвением ОС Gentoo Linux с ядром 2.6, принтер HP DeskJet 970Cxi.
Настройка ядра
Перво наперво надо пересобрать ядро, включив туда поддержку USB и принтера USB. Для этого под рутом вводим:
и загрузив наш старый конфиг (надеюсь вы его сохранили после последней переборки ядра) правим вот это
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 |
Установка CUPS
Теперь ставим собственно саму CUPS. Для более подробного уточнее возможных USE флагов смотрим ссылку Gentoo Printing Guide (в разделе ссылки). Лично я поставил следующие: Use Flags: acl dbus jpeg png ppds python ssl tiff pam (?)
Для добавления флагов пишем
. Далее ставим обычным стандартным способом
.
Найстройка CUPS
Теперь для нормальной печати из Windows надо поправить 2 файла (это вносит возможность печати через Windows PCL Drivers, который посылает данные в виде Raw принт серверу, то есть нам надо активировать возможность Raw печати через СUPS):
application/octet-stream
и
application/octet-stream application/vnd.cups-raw 0 -
Теперь рассмотрим вариант конфига CUPS'а
# 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 $".
#
Важное дополнение, для верного заполненя конфига я использовал как встроеный man cupsd.conf, так и ссылки типа Order на Apache.org и настройка маски подсети (смотри раздел ссылки ниже).
Установка драйвера
Теперь поставим драйвер для принтера. Встроеный в CUPS драйвер конечно печатает, но плохо, что недостаточно для нормальной печати картинок например (я уже не говорю о фотографиях). Т.к. у меня принтер от HP (а этот производитель позаботился о пользователях Linux систем, за что ему большое спасибо), то поставим HPLIP. Встроеный в портажи HPLIP у меня не пошёл вообще (то есть я не смог его настроить на работу никак). Поэтому после удаления всех его следов я вышел на сайт HPLIP installing (hp site), где по инструкции и поставил пакет HPLIP. Все ссылки смотри внизу статьи.
Установка пакета HPLIP
Для конфигурации я использовал следующую команду:
После этого выполняем стандартные:
Доработка HPLIP
Драйверы поставились, но лично мне это не дало сильного преимущества, т.к. они не хотели конфигурироваться под принтер так же как и те, что был в портажах. То есть принтер видят и драйверы и система, но результата нет. Поэтому мне пришлось проделать хитрый трюк, который возможно никому не пригодится.
Все приготовления у нас сделаны выше, запускаем CUPS и добавляем его в автозапуск.
Теперь выходим по адресу: https://192.168.0.1:631, где через веб интерфейс добавляем наш принтер. (заходим во вкладку Administration, далее Add Printer). Задаём имя, место расположения и описание принтера (последние два поля чисто описательные). На предложения установить стандартный драйвер от CUPS для указанной модели принтера мы отказываемся подсовываем ему драйвер и ранее скачанного пакета HPLIP. В моём случае файл назывался hp-deskjet_970c.ppd.
Т.к. у меня сложности с битностью, то для работы мне пришлось создать символические ссылки на некоторые исполняемые файлы.
После чего всё должно работать. Можно теперь пробежаться по настройкам веб интерфейса. Лично я поправил дополнительно свойства принтера добавив размер бумаги A4 (297*210) и пробежался по чекбоксам (смотри рисунок)
Просмотр USB устройств
Для того, чтобы проконтролировать, что ваша система видит подключенный по USB принтер можно использовать команду
однако предварительно надо поставить следующий пакет
Настройка принтера из 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.
Далее выбираем из списка различных моделей нашу (у меня это HP -> DeskJet 970 Cxi) и Windows ставит необходимые драйверы. После этого можно распечатать тестовую страничку.