Установка проприетарных плагинов для HP-принтеров в Ubuntu Linux


Подсистема печати в Linux-дистрибутивах как в принципе и в MacOS представлена разрабатываемым Apple модульным программным обеспечением CUPS, что расшифровывается как Common UNIX Printing System. Других вариантов для реализации подсистемы печати в Linux не существует и хотя сейчас CUPS уже не какое кривое поделие как буквально несколько лет назад, но все равно знатно доставляет неудобств на ровном месте. Начать хотя бы с того, что по умолчанию CUPS пытается подключить все принтеры в сети автоматически (и не факт, что у нее это получится) включая расшаренные на других ПК сетевые принтеры, что создает целую кучу дубликатов, а каких-то механизмов группового развертывания и ограничения доступа естественно не завозили.

Установка и настройка CUPS в Ubuntu Linux

То, что вам по умолчанию подключат все принтеры вашей локальной сети, это еще честно говоря меньшая из зол, а самое интересное, это то, что они будут подключены по совершенно несуразным именам в домене .local который может конфликтовать с вашим доменом .local (я про это уже рассказывал в статье "Устранение проблем с разрешением DNS-имен для домена .local в современенных дистрибутивах Linux"). Самой большой проблемой вашей проблемой при попытке создать нечто корпоративное с разделением доступа будет поддержка проприетарных плагинов для принтеров и все ваши автоматически обнаруженные принтеры будут находиться в статусе "requires proprietary plugin".

Для работы принтера требуется проприетарный плагин

Если вы захотите создать свой аналог сервера печати из Microsoft Windows, то это будет немного сложнее чем установка ролей и настройка развертывания принтеров групповой политикой, но как говориться нет ничего невозможного и мы всегда можем воспользоваться гибким функционалом скриптов автозапуска или управлением серверами и рабочими станциями при помощи Ansible (что у меня и реализовано), но перед тем как начинать все неистово автоматизировать надо понять чего мы собственно вообще хотим добиться и проделать эти операции, что называется в ручном режиме.

Итого, мы хотели бы:

  • Отключить автообнаружение  принтеров в локальной сети
  • Автоматически установить проприетарные плагины и дополнительные PPD-файлы для всех принтеров в локальной сети
  • Автоматически сконфигурировать необходимые пользователю принтеры (и установить основной)

Начнем с отключения автодискавери принтеров

На представленном ниже скриншоте я продемонстрировал автоматически обнаруженный и подключенный принтер Canon MF 410 и как вы видите в настройках принтера ему сопоставлен драйвер матричного принтера, а подключение производится по протоколу IPP с очень интересным доменным именем.

Автоматическое обнаружение принтеров в Linux

Естественно, что такая конструкция работать не будет и здесь, во-первых, надо установить специальный пакет с драйверами скачанный на официальном сайта, а во-вторых назначить принтеру статический IPv4 адрес или настроить связку DHCP-адрес и доменное имя вашего внутреннего домена и только в таком случае этим всем можно будет пользоваться и передать на поддержку вашим системным администраторам. В противном случае это все мягко говоря работает через раз и пользователи нервничают, а админы бегают и пытаются решать задачи которые должны быть решены один раз и навсегда.

Начинаем с отключением автообнаружения принтеров и для этого в файле /etc/cups/cups-browsed.conf изменить BrowseRemoteProtocols:

BrowseRemoteProtocols none

И вообще можно даже для верности отключить эту службу:

# systemctl disable cups-browsed

Удаляем автоматически обнаруженные принтеры и переходим к установке необходимых драйверов.

Установка проприетаных драйверов для принтеров Canon в Ubuntu Linux

С драйверами для Canon все относительно просто (если ваш принтер вообще поддерживается в Unix/Linux/MacOS). Вам требуется лишь перейти на официальный сайт Canon и найти требуемый принтер, после чего на странице загрузки выберите операционную систему Linux 64 и скачайте пакет драйверов. Например, драйвера для MF 410 можно скачть по прямой ссылке:

# wget http://gdlp01.c-wss.com/gds/8/0100007658/09/linux-UFRII-drv-v370-uken-03.tar.gz

Внутри загруженного архива имеется установочный скрипт который инсталирует все требуемые драйвера и зависимости:

# ./install.sh
This installer is recommended for the following distributions that are currently supported as of the release of this installer:
- Fedora/Ubuntu/CentOS 7.3 or later/Debian 8.6 or later

If this installer is run under distributions for which the support period has ended, the installation of additional system libraries may be necessary after driver installation is complete.

Note that an internet connection is required for installation.

Do you want to continue with installation? (y/n)y

#----------------------------------------------------#
# Install Start
#----------------------------------------------------#
Machine Type = amd64
Package Type = deb
Package list =
    ./64-bit_Driver/Debian/cndrvcups-common_4.10-1_amd64.deb
    ./64-bit_Driver/Debian/cndrvcups-ufr2-uk_3.70-1_amd64.deb
    ./64-bit_Driver/Debian/cndrvcups-utility_1.10-1_amd64.deb

...

Для автоматизации развертывания вам конечно понадобятся отдельные файлы .deb и несколько дополнительных пакетов зависимостей (ничего особо сложного в этом нет) и несколько сложнее выглядит установка драйверов для принтеров HP (большая часть которых как раз требует проприетарные драйвера).

Установка проприетарных плагинов для HP-принтеров в Ubuntu Linux

Вот мы собственно и пришли к тому ради чего эта статья собственно и затевалась и установка проприетарных плагинов для HP довольно популярный вопрос который достаточно разжевать один единственный раз, а дальше все пойдет по накатаной. По умолчанию, в Ubuntu Linux устанавливается пакет поддержки принтеров HP который называется hplip, но что странно не устанавливается целая куча дополнительных необходимых для работы пакетов и об этом вы можете узнать выполнив в консоли команду:

# hp-info

В результате выполнения команды вы получите перечень ошибок в настройке hplip с обобщенными сведениями о недостающих пакетах в конце листинга:

-----------
| SUMMARY |
-----------

Missing Required Dependencies
-----------------------------
error: 'libcups2' package is missing/incompatible
error: 'libdbus-1-dev' package is missing/incompatible
error: 'libjpeg-dev' package is missing/incompatible
error: 'libcups2-dev' package is missing/incompatible
error: 'cups-bsd' package is missing/incompatible
error: 'cups-client' package is missing/incompatible
error: 'libcupsimage2-dev' package is missing/incompatible
error: 'libusb-1.0.0-dev' package is missing/incompatible
error: 'libsane-dev' package is missing/incompatible
error: 'libsnmp-dev' package is missing/incompatible
error: 'snmp-mibs-downloader' package is missing/incompatible
error: 'openssl' package is missing/incompatible
error: 'python3-pyqt4' package is missing/incompatible
error: 'gtk2-engines-pixbuf' package is missing/incompatible
error: 'python3-dev' package is missing/incompatible
error: 'libtool' package is missing/incompatible
error: 'libtool-bin' package is missing/incompatible

Missing Optional Dependencies
-----------------------------
error: 'gtk2-engines-pixbuf' package is missing/incompatible
error: 'xsane' package is missing/incompatible
error: 'python3-notify2' package is missing/incompatible
error: 'python3-dbus.mainloop.qt' package is missing/incompatible

Установим необходимые для работы пакеты:

# aptitude install libcups2 libdbus-1-dev libjpeg-dev libcups2-dev cups-bsd cups-client libcupsimage2-dev libusb-dev libsane-dev \
libsnmp-dev snmp-mibs-downloader openssl python3-pyqt4 python3-pyqt5 gtk2-engines-pixbuf python3-dev libtool libtool-bin \
gtk2-engines-pixbuf xsane python3-notify2 python3-dbus.mainloop.qt

Естественно, что вам необходимо будет дополнить ваш автодеплой-скрипт этой командой в режиме авто-установки. После повторной проверки мы можем переходить уже к установке проприетарных драйверов для чего от имени пользователя выполните команду:

$ hp-plugin

И следуйте указаниям мастера установки.

HP Plugin Manager

По завершении установки необходимых плагинов мы должны установить принтер используя мастер установки принтера HP (а не штатные утилиты дистрибутива) и для этого используется команда hp-setup.

Установка принтеров Hewlett-Packard при помощи мастера hp-setup

Для подключения сетевого принтера при помощи мастера установки выберете тип принтера Ethernet активируйте субменю Show Advanced Options и установите галочку Manual Discovery.

Установка сетевого принтера HP в убунту вручную

Мастер автоматически определит модель сетевого принтера и пропишет корректный URI-подключения.

Установка HP-принтера этап второй

Производить все эти операции на каждой рабочей станции вручную не самая умная затея и чуть позже (если это конечно кому-то интересно) я продемонстрирую свои наработки по авто-настройке принтеров в рамках компании.