tigervnc сервер не запускается, переменная HOME не задана

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

Система — Fedora Core 24. Это недавнее обновление с fc23. В fc23 vncserver запускался без ошибок. Однако после обновления возникает следующая ошибка:

Unit vncserver@:2.service has begun starting up
vncserver: The HOME environment variable is not set

Никаких изменений в скриптах запуска или файлах .vnc не было. Где vncserver будет искать переменную HOME? Где следует вставить команду для установки переменной HOME? Как это будет выглядеть?

Переменная окружения HOME устанавливается автоматически при входе в систему. При нормальных обстоятельствах вы не должны обнаруживать, что какие-либо скрипты входа изменяют ее каким-либо образом.

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

Вы можете попробовать выполнить эту команду, чтобы увидеть свои текущие переменные окружения:

tr '\0' '\n' </proc/$$/environ

И вы можете заменить $$ на pid любого процесса, чьи переменные окружения вы хотите просмотреть (хотя, очевидно, существуют ограничения безопасности, к каким процессам вам разрешено обращаться, если вы не root).

Если вы обнаружите, что HOME существует, когда вы вызываете указанное выше из своей оболочки, вы можете попробовать использовать strace, чтобы увидеть, в какой момент они исчезают. Вы можете попробовать:

strace -fve execve vncserver

Это запустит vncserver и покажет, какие переменные окружения были переданы vncserver и любым выполненным им процессом.

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

Пожалуйста, проверьте, что ваша служба не запущена с помощью старого конфигурационного файла, перейдите в каталог /root/.vnc и проверьте, нет ли файла yourhostname:1.pid. Если он присутствует, выполните cat и найдите pid, который находится внутри файла, затем выполните kill -9 pid. После этого попробуйте снова запустить службу vncserver.

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

Проблема, с которой вы столкнулись, связана с запуском сервера TigerVNC на системе Fedora Core 24, что проявляется в ошибке, сообщающей о том, что переменная окружения HOME не установлена. Это может произойти после обновления, поскольку при установке отображаются определенные изменения настроек.

Причины ошибки

Переменная HOME обычно устанавливается автоматически во время входа пользователя в систему. Она указывает на домашний каталог пользователя и служит важной частью среды выполнения для многих программ. Если vncserver не может найти эту переменную, это может произойти по нескольким причинам:

  1. Неявный контекст запуска: Служба vncserver может быть запущена в контексте, где переменные окружения не установлены должным образом.
  2. Конфигурационные файлы: Возможно, в конфигурационных файлах обновленной системы произошли изменения, которые влияют на установку переменных окружения.

Проверка переменных окружения

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

tr '\0' '\n' < /proc/$$/environ

Эта команда отобразит все переменные окружения для текущего процесса. Проверьте, присутствует ли в списке HOME. Если переменная там находится, это указывает на то, что проблема может быть связана с тем, как vncserver запускается и выполняется.

Устранение проблемы

  1. Использование strace: Для более глубокого анализа работы программы попробуйте использовать strace для прослеживания системных вызовов и проверки, где нарушается передача переменных окружения:

    strace -fve execve vncserver

    Это позволит вам увидеть, какие переменные окружения передаются команде vncserver, и в какой момент они могут быть утеряны.

  2. Проверка конфигурации службы: Убедитесь, что служба vncserver неону никогда не запускалась с устаревшими настройками. Перейдите в каталог /root/.vnc и проверьте наличие файла <hostname>:1.pid. Если он существует, откройте его и найдите идентификатор процесса (PID) внутри:

    cat /root/.vnc/<hostname>:1.pid

    Затем убейте процесс:

    kill -9 <PID>

    После этого попробуйте снова запустить vncserver.

  3. Создание нового пользователя: Если проблема не решилась, попробуйте создать нового пользователя. Если vncserver запускается нормально для нового пользователя, это может свидетельствовать о том, что проблема заключается в конфигурационных файлах или переменных окружения для конкретного пользователя.

Установка переменной окружения HOME

Если вы хотите явно установить переменную окружения HOME для службы vncserver, вы можете сделать это, редактируя файл юнита службы. Например, откройте файл /etc/systemd/system/vncserver@:2.service и добавьте строку:

[Service]
Environment="HOME=/home/yourusername"

Не забудьте заменить yourusername на имя вашего пользователя. После этого перезагрузите службу:

sudo systemctl daemon-reload
sudo systemctl restart vncserver@:2.service

Выводы

В заключение, решение проблемы с vncserver и переменной HOME связано с анализом переменных окружения и проверкой конфигурационных параметров. Подобный подход гарантирует, что сервер будет работать должным образом, и обеспечит стабильный доступ к вашему VNC-серверу.

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

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