Вопрос или проблема
Система — 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
не может найти эту переменную, это может произойти по нескольким причинам:
- Неявный контекст запуска: Служба
vncserver
может быть запущена в контексте, где переменные окружения не установлены должным образом. - Конфигурационные файлы: Возможно, в конфигурационных файлах обновленной системы произошли изменения, которые влияют на установку переменных окружения.
Проверка переменных окружения
Для того чтобы убедиться, что переменная HOME
установлена правильно, выполните следующую команду в терминале:
tr '\0' '\n' < /proc/$$/environ
Эта команда отобразит все переменные окружения для текущего процесса. Проверьте, присутствует ли в списке HOME
. Если переменная там находится, это указывает на то, что проблема может быть связана с тем, как vncserver
запускается и выполняется.
Устранение проблемы
-
Использование strace: Для более глубокого анализа работы программы попробуйте использовать
strace
для прослеживания системных вызовов и проверки, где нарушается передача переменных окружения:strace -fve execve vncserver
Это позволит вам увидеть, какие переменные окружения передаются команде
vncserver
, и в какой момент они могут быть утеряны. -
Проверка конфигурации службы: Убедитесь, что служба
vncserver
неону никогда не запускалась с устаревшими настройками. Перейдите в каталог/root/.vnc
и проверьте наличие файла<hostname>:1.pid
. Если он существует, откройте его и найдите идентификатор процесса (PID) внутри:cat /root/.vnc/<hostname>:1.pid
Затем убейте процесс:
kill -9 <PID>
После этого попробуйте снова запустить
vncserver
. -
Создание нового пользователя: Если проблема не решилась, попробуйте создать нового пользователя. Если
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-серверу.