Утилита 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
Теперь плагин будет успешно установлен и принтер начнёт функционировать в штатном режиме.
Чувак, ты спас меня просто, месяц бился с f22 workstation!!! Большое спасибо!
Спасибо огромное!!! блин, 2 дня мучался…
Статья обновлена. Добавлен патч.
Что мешает при острой необходимости банально откатить версию пакета hplip до более старой?
Затем можно спокойно с правами root выполнить hp-setup -i.
Или, еще проще, подключить репозиторий RPMFusion и установить пакеты foo2zjs, foo2hp, foo2xqx. На OpenPrinting указано множество моделей и рекомендуемый драйвер. В моем случае с принтером HP LaserJet P1102 это помогло.
Откатываться на пакет из репозиториев предыдущей версии дистрибутива неправильно и часто может создать кучу проблем с зависимостями. Проблема-то совсем не в hplip, а в кривом проприетарном плагине, который загружается с сайта HP.
Спасибо, неплохой вариант.
Достаточно спорный вопрос по поводу hplip. Мне кажется, что из-за проблем с аутентификацией не получается загрузить проприетарный плагин с сайта. Взять к примеру запуск Fedora 23 в режиме Live — все прекрасно ставится через hp-plugin, печать работает. Но стоит полноценно установить дистрибутив, как вышеуказанная проблема появляется вновь.
Вспомните, как раньше было реализовано все легко — hp-setup под root, и готово! А тут они дел наворотили с тем, что hp-plugin надо запускать вместо hp-setup, и с правами обычного пользователя. Так что дело не совсем понятное. По крайней мере, для меня лично. Жалко, конечно, что в баг-трекере должным образом не отреагировали.
А с пакетами foo2 с большим количеством принтеров в принципе можно выкрутиться. Насколько мне известно, стабильные версии дистрибутива Debian оснащены были тем же foo2zjs из коробки. В итоге принтеры там сразу же подхватывались. А в Fedora, из-за лицензионных соображений, этим добром можно довольствоваться лишь в частном порядке посредством RPMFusion.
Проблема далеко не в Fedora. Точно такие же тикеты можно найти в баг-трекерах Ubuntu, openSUSE, Arch и т.д.
Да. Хорошо, что вернуть как было можно всего лишь удалением четырёх строчек из скрипта.
RPMFusion в Fedora давно не проблема. Он подключен наверное у 90% пользователей данного дистрибутива.
Я бы на месте мейнтейнеров RPMFusion давно бы сделал пакет hp-plugins в non-free репозитории, который бы содержал уже распакованные версии проприетарных плагинов от HP.
Нет, конечно. Далеко не в Fedora. Я и не спорю. А с распакованными версиями плагинов — да. Было бы просто шикарно. Нечто подобное есть в AUR для Arch Linux.
Распаковать и создать RPM-пакет совсем не сложно, более того, есть даже готовый SPEC для сборки. Проблема заключается в лицензии hp-plugin, которая явно запрещает даже хранить на сторонних серверах результат такого преобразования.
Огромнейшее спасибо……. Красавчик!!!!!! Неделя у меня была в полной депрессии, а тут все как надо!!!!! У меня Debian 8.2 заработало под KDE. Думал уже дистрибутив менять ….. на офсайте ничего подобного не написано…. как же так…. На офсайте пишут, что поддерживается, не не проверяли…)))))
Господа, как сейчас дела с hplip на Fedora? Проблема также требует вмешательства? Сейчас использую Slackware 14.2 RC1, а там версия этого пакета 3.16.2 — проблем ноль. Через команду hp-plugin адекватно загружается плагин, а для ввода пароля root’a выводится диалоговое окно.
Просто хочется узнать, это добрые разработчики Slackware сами решили проблемы или же все таки hplip стал нормально работать?
@FrancoDelille
Да, совсем недавно баг исправили в самом hp-plugin. Теперь корректно выводится предложение ввести пароль суперпользователя.