Вопрос или проблема
Не удается заставить работать CutyCapt. Я запускаю его на CentOS 7 VM. Я запускаю это непосредственно из командной строки и еще не использую скрипт.
# echo $DISPLAY
:0
# CutyCapt --url=https://hostname/abc --out=test.jpg
qt.qpa.screen: QXcbConnection: Could not connect to display
Could not connect to any X display.
Такая же проблема возникает, когда я запускаю его с xvfb-run
# xvfb-run --server-args="screen 0, 1920x1080x24" CutyCapt --url=https://hostname/abc --out=test.jpg
qt.qpa.screen: QXcbConnection: Could not connect to display :99
Could not connect to any X display.
/bin/xvfb-run: line 186: kill: (4853) - No such process
Я включил пересылку X11 в /etc/ssh/sshd_config
, но это, похоже, не помогло.
# cat /etc/ssh/sshd_config |grep X11Forw
#X11Forwarding no
X11Forwarding yes
Есть какие-нибудь предложения, как это запустить?
Вам следует заменить X11Forwarding yes
на ForwardX11 yes
.
.
Ответ или решение
Проблема, с которой вы столкнулись, связана с тем, что QXcbConnection не может подключиться к дисплею. Это возникает из-за недостаточной настройки графической среды в вашей виртуальной машине CentOS 7, что ограничивает возможности запуска графических приложений, таких как CutyCapt. Рассмотрим, как можно решить эту проблему, основываясь на предоставленной информации и распространенных решениях для подобных случаев.
Теория
Для графического приложения, такого как CutyCapt, требуется наличие X-сервера, который предоставляет интерфейс для работы с графической средой. При получении ошибки QXcbConnection: Could not connect to display
система сигнализирует о невозможности установить соединение с указанным дисплеем. Основной причиной может быть отсутствие активного X-сессии или неправильная настройка виртуального X-сервера, как в случае с использованием xvfb-run
.
Пример
На вашем хосте CentOS 7 вы проверяете значение переменной окружения $DISPLAY
, которое показывает :0
, указывая на отсутствие явного подключения к X-серверу. При запуске с xvfb-run
вы также получаете ошибку: Could not connect to display :99
. Это свидетельствует о том, что Xvfb, виртуальный X-сервер, не запускается корректно или не определяется системой.
Применение
Чтобы устранить данную проблему, можно выполнить следующие шаги:
-
Убедитесь, что X-серия активна:
- Убедитесь в наличии установленного X-сервера (например, Xorg) и графической среды, даже если она минимальна.
- Попробуйте запустить простое графическое приложение, чтобы проверить работоспособность X-сервера.
-
Проверьте конфигурацию
xvfb-run
:- Убедитесь, что Xvfb установлен и корректно работает.
- Попытайтесь запустить
xvfb-run
с другими параметрами, например:xvfb-run --server-args="-screen 0 1024x768x24" CutyCapt --url=https://hostname/abc --out=test.jpg
-
Использование X11 Forwarding:
- Проверьте файл конфигурации
/etc/ssh/sshd_config
. Вы уже включилиX11Forwarding yes
, что корректно. Однако важно также перезапустить SSH-сервер:sudo systemctl restart sshd
- При подключении через SSH убедитесь, что используется флаг
-X
для активации X11 Forwarding:ssh -X user@hostname
- Проверьте файл конфигурации
-
Дополнительная отладка:
- Проверьте журналы ошибок и системные логи, чтобы выявить другие возможные источники ошибок.
- Используйте команду
xhost +localhost
для разрешения подключения к X-серверу от локальных клиентов.
Применение вышеописанных шагов поможет наладить подключение к дисплею и корректную работу CutyCapt в вашей текущей среде CentOS 7.