Сетевая принтер застрял на этапе “Получение информации о принтере” в диалоговом окне печати GTK системы.

Вопрос или проблема

На работе у нас есть куча принтеров, подключенных к центральному серверу CUPS во внутренней сети.

Используя Ubuntu 16.04 с Unity DE, когда я пытаюсь что-то напечатать в приложении, используя системный диалог печати GTK, как показано на скриншоте ниже, я вижу все доступные принтеры, некоторые из них даже со статусом “не осталось тонера”. Какой бы принтер я ни выбрал, кнопка “Печать” остается заблокированной, и статус принтера показывается как “Получение информации о принтере…” бесконечно.

GTK print dialog: Getting printer information...

Однако принтеры работают нормально, так как я могу корректно печатать в приложениях, которые не используют диалог GTK, таких как Chromium, у которого есть встроенный диалог печати. Проблема только с диалогом GTK.

Я нашел несколько старых отчетов об ошибках, описывающих примерно такое же поведение:

Я также где-то читал, что для этой функциональности требуется пакет libnss-mdns, но он отсутствует в некоторых установках. Тем не менее, я проверил, что у меня установлена версия 0.10-7 этой библиотеки.

Как еще я могу провести диагностику этой проблемы? Есть ли обходные пути или исправления?

Та же проблема в более простой среде (один принтер) на Ubuntu 18.x

Решено с помощью

sudo perl -i.bak -pe 's/^(Listen .*cups\.sock)/#$1/' /etc/cups/cupsd.conf
sudo /etc/init.d/cups restart

источник Как ускорить “Получение информации о принтере”?. Вы также можете обратиться к очень подробным DebuggingPrintingProblems

Я решил это, добавив принтер в настройках.

Как-то принтер появляется дважды. Один раз как действительно используемый принтер, второй раз как принтер, который требует извлечения информации.

enter image description here

Я также столкнулся с этой проблемой, оказалось, что мой принтер был добавлен с недоступным mdns-адресом через cups.

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

Ответ или решение

Теория (Theory)

Проблема, описанная в вашем случае, связана с использованием диалога печати GTK на операционной системе Ubuntu 16.04 с окружением рабочего стола Unity. Это приводит к тому, что кнопка «Печать» остаётся заблокированной, а состояние принтера отображается как «Получение информации о принтере…», что происходит бесконечно. Данная проблема локализована именно в диалоге GTK, так как печать через другие приложения, не использующие этот диалог (например, Chromium с встроенным диалогом печати), проходит без проблем.

Такая ситуация может возникать по нескольким причинам. Одна из основных – недоразумение в связях между CUPS (Common UNIX Printing System) и диалогом печати GTK. Это может быть связано с неверными или отсутствующими конфигурационными настройками, когда система не может правильно синхронизировать информацию между конфигурацией CUPS и GTK.

Примеры (Example)

  1. Отчёты об ошибках:

    • Старые отчёты об ошибках, отмеченные вами, указывают, что проблема не является новой и наблюдалась ранее. Например, баг с номером 1053891 в системе управления ошибками Launchpad был зарегистрирован в 2012 году.
    • Другой отчёт об ошибке (1378438) также описывает аналогичное поведение с застреванием на этапе «Получение информации о принтере…».
  2. Решения, использованные другими пользователями:

    • Один из пользователей указал, что проблема была решена путём изменения конфигурации CUPS (в частности, изменения в файле /etc/cups/cupsd.conf, связанные с параметрами Listen и перезапуском службы CUPS).
    • Другой пользователь отметил, что физические пути к принтерам могут быть настроены неправильно, когда CUPS использует не достижимые адреса (например, mdns). В этом случае, ручное добавление принтера по IP-адресу помогло решить проблему.

Применение (Application)

Для решения и дальнейшего устранения проблемы, рекомендовал бы следующее:

  1. Проверка доступности и правильности настроек CUPS:

    • Убедитесь, что у вас установлена и правильно функционирует библиотека libnss-mdns, отвечающая за сетевое обнаружение принтеров.
    • Перейдите в файл конфигурации CUPS (/etc/cups/cupsd.conf) и проверьте настройки параметра Listen. Отключение локального сокета в конфигурации может помочь решить проблему.
      sudo perl -i.bak -pe 's/^(Listen .*cups\.sock)/#$1/' /etc/cups/cupsd.conf
      sudo /etc/init.d/cups restart
    • После внесения изменений в конфигурационный файл обязательно перезапустите сервис CUPS.
  2. Проверка и добавление принтеров:

    • Проверьте, какие версии принтеров зарегистрированы в системе, возможно, принтер отображается дважды: как работающий и как требующий получения информации. Убедитесь, что выбранная версия — это правильно настроенный принтер.
    • Если принтер добавлен с недоступным mdns адресом, попробуйте вручную добавить его по IP-адресу.
  3. Отладка и диагностика:

    • Используйте инструменты отладки печатных проблем в Ubuntu, которые могут предоставить больше информации об ошибках во время выполнения.
    • Запустите диагностику CUPS через веб-интерфейс (http://localhost:631), где можно просмотреть детальную информацию о состоянии сервера печати и очередей.

Таким образом, комбинируя вышеописанные шаги, можно локализовать и решить проблему с застреванием на этапе «Получение информации о принтере…» в диалоге печати GTK. Каждый шаг требует аккуратного выполнения и проверки, чтобы гарантировать полное её устранение.

Оцените материал
Добавить комментарий

Капча загружается...