Утилита 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
Теперь плагин будет успешно установлен и принтер начнёт функционировать в штатном режиме.