Решаем проблему зависания hp-plugin в Fedora 22

Утилита 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

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

13 commentaries to post

  1. Чувак, ты спас меня просто, месяц бился с f22 workstation!!! Большое спасибо!

  2. Спасибо огромное!!! блин, 2 дня мучался…

  3. Что мешает при острой необходимости банально откатить версию пакета hplip до более старой?

    dnf downgrade hplip\* --releasever=21 --allowerasing

    Затем можно спокойно с правами root выполнить hp-setup -i.

    Или, еще проще, подключить репозиторий RPMFusion и установить пакеты foo2zjs, foo2hp, foo2xqx. На OpenPrinting указано множество моделей и рекомендуемый драйвер. В моем случае с принтером HP LaserJet P1102 это помогло.

  4. FrancoDelille :

    Что мешает при острой необходимости банально откатить версию пакета hplip до более старой?

    Откатываться на пакет из репозиториев предыдущей версии дистрибутива неправильно и часто может создать кучу проблем с зависимостями. Проблема-то совсем не в hplip, а в кривом проприетарном плагине, который загружается с сайта HP.

    FrancoDelille :

    Или, еще проще, подключить репозиторий RPMFusion и установить пакеты foo2zjs, foo2hp, foo2xqx. На OpenPrinting указано множество моделей и рекомендуемый драйвер. В моем случае с принтером HP LaserJet P1102 это помогло.

    Спасибо, неплохой вариант.

  5. Достаточно спорный вопрос по поводу hplip. Мне кажется, что из-за проблем с аутентификацией не получается загрузить проприетарный плагин с сайта. Взять к примеру запуск Fedora 23 в режиме Live — все прекрасно ставится через hp-plugin, печать работает. Но стоит полноценно установить дистрибутив, как вышеуказанная проблема появляется вновь.

    Вспомните, как раньше было реализовано все легко — hp-setup под root, и готово! А тут они дел наворотили с тем, что hp-plugin надо запускать вместо hp-setup, и с правами обычного пользователя. Так что дело не совсем понятное. По крайней мере, для меня лично. Жалко, конечно, что в баг-трекере должным образом не отреагировали.

    А с пакетами foo2 с большим количеством принтеров в принципе можно выкрутиться. Насколько мне известно, стабильные версии дистрибутива Debian оснащены были тем же foo2zjs из коробки. В итоге принтеры там сразу же подхватывались. А в Fedora, из-за лицензионных соображений, этим добром можно довольствоваться лишь в частном порядке посредством RPMFusion.

  6. FrancoDelille :

    Достаточно спорный вопрос по поводу hplip. Мне кажется, что из-за проблем с аутентификацией не получается загрузить проприетарный плагин с сайта. Взять к примеру запуск Fedora 23 в режиме Live — все прекрасно ставится через hp-plugin, печать работает. Но стоит полноценно установить дистрибутив, как вышеуказанная проблема появляется вновь.

    Проблема далеко не в Fedora. Точно такие же тикеты можно найти в баг-трекерах Ubuntu, openSUSE, Arch и т.д.

    FrancoDelille :

    Вспомните, как раньше было реализовано все легко — hp-setup под root, и готово! А тут они дел наворотили с тем, что hp-plugin надо запускать вместо hp-setup, и с правами обычного пользователя. Так что дело не совсем понятное. По крайней мере, для меня лично. Жалко, конечно, что в баг-трекере должным образом не отреагировали.

    Да. Хорошо, что вернуть как было можно всего лишь удалением четырёх строчек из скрипта.

    FrancoDelille :

    А с пакетами foo2 с большим количеством принтеров в принципе можно выкрутиться. Насколько мне известно, стабильные версии дистрибутива Debian оснащены были тем же foo2zjs из коробки. В итоге принтеры там сразу же подхватывались. А в Fedora, из-за лицензионных соображений, этим добром можно довольствоваться лишь в частном порядке посредством RPMFusion.

    RPMFusion в Fedora давно не проблема. Он подключен наверное у 90% пользователей данного дистрибутива.

    Я бы на месте мейнтейнеров RPMFusion давно бы сделал пакет hp-plugins в non-free репозитории, который бы содержал уже распакованные версии проприетарных плагинов от HP.

  7. Нет, конечно. Далеко не в Fedora. Я и не спорю. А с распакованными версиями плагинов — да. Было бы просто шикарно. Нечто подобное есть в AUR для Arch Linux.

  8. FrancoDelille :

    Нет, конечно. Далеко не в Fedora. Я и не спорю. А с распакованными версиями плагинов — да. Было бы просто шикарно.

    Распаковать и создать RPM-пакет совсем не сложно, более того, есть даже готовый SPEC для сборки. Проблема заключается в лицензии hp-plugin, которая явно запрещает даже хранить на сторонних серверах результат такого преобразования.

  9. Огромнейшее спасибо……. Красавчик!!!!!! Неделя у меня была в полной депрессии, а тут все как надо!!!!! У меня Debian 8.2 заработало под KDE. Думал уже дистрибутив менять ….. на офсайте ничего подобного не написано…. как же так…. На офсайте пишут, что поддерживается, не не проверяли…)))))

  10. Господа, как сейчас дела с hplip на Fedora? Проблема также требует вмешательства? Сейчас использую Slackware 14.2 RC1, а там версия этого пакета 3.16.2 — проблем ноль. Через команду hp-plugin адекватно загружается плагин, а для ввода пароля root’a выводится диалоговое окно.

  11. Просто хочется узнать, это добрые разработчики Slackware сами решили проблемы или же все таки hplip стал нормально работать?

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

Обсуждение закрыто.