Утилита hp-plugin из пакета hplip дистрибутива Fedora 22 и Fedora 23 отказывается правильно устанавливать проприетарные плагины для принтеров и попросту зависает во время установки, поэтому в данном HOWTO мы рассмотрим как это исправить.

О проблеме

В официальном баг-трекере RedHat создано множество тикетов по данной проблеме: 1, 2, 3. Также тикет создан в апстриме hplip, но с мая 2015 года в них нет никакого движения. Решить проблему обещают только в будущем.

Баг заключается в невозможности вызова диалога ввода пароля суперпользователя из скриптов на Python, т.к. его предлагается запускать с обычными правами, а записывать файлы он будет в /usr/lib/.

Загружаем и распаковываем плагин

Откроем терминал, запустим утилиту hp-plugin в консольном режиме:

hp-plugin -i

Разрешим установку плагина из Интернета и согласимся с лицензионным соглашением. По окончании загрузки утилита просто зависнет.

Теперь откроем другой терминал, не завершая работу предыдущего с зависшим приложением hp-plugin.

Перейдём в каталог ~/.hplip/ и скопируем оттуда загруженный файл hplip-3.15.7-plugin.run (версия может различаться) в свой домашний каталог:

cd ~/.hplip/
cp -f hplip-*-plugin.run ~

Теперь можно вернуться в первую консоль с зависшим hp-plugin и прервать его выполнение посредством нажатия комбинации Ctrl+C.

Сделаем блоб исполняемым и сразу распакуем его:

cd ~
chmod +x hplip-*-plugin.run
./hplip-*-plugin.run --noexec --keep

Патчим скрипты вручную

Перейдём в созданный блобом каталог ~/plugin_tmp/ и откроем скрипт plugin_install.py в любом текстовом редакторе. Удалим из него строки 42-44:

if os.geteuid() == 0:
    print("hp-plugin should not be run as root/superuser. Exiting.")
    sys.exit(1)

Сохраняем изменения в файле.

Откроем другой файл hplip-plugin-install и заменим python на python3. Сохраняем.

Патчим скрипты в автоматическом режиме

Вместо внесения правок вручную можно воспользоваться уже созданным патчем. Скачаем и сразу применим его:

cd ~/plugin_tmp/
wget https://gist.github.com/xvitaly/91a18569329e6674498e/raw/hp-plugin.diff -O hp-plugin.diff
patch < hp-plugin.diff

Устанавливаем исправленную версию

Теперь снова переходим в ~/plugin_tmp/ и запускаем установку с правами суперпользователя:

cd ~/plugin_tmp/
sudo ./hplip-plugin-install -i

Теперь плагин будет успешно установлен и принтер начнёт функционировать в штатном режиме.