не удалось решить archive.ubuntu.com после новой установки ubuntu 18.04

Программе X требуется две части информации для подключения к X-дисплею.

Ему нужен адрес дисплея, который обычно :0, когда вы вошли в систему локально или [ f4], :11 и т. д., когда вы вошли в систему удаленно (но число может меняться в зависимости от количества подключений X). Адрес дисплея обычно указывается в переменной среды DISPLAY. Ему нужен пароль для отображения. X-пароли имен называются волшебными куки-файлами. Магические файлы cookie не указываются напрямую: они всегда хранятся в файлах полномочий X, которые представляют собой коллекцию записей формы «display :42 имеет cookie 123456». Файл полномочий X обычно указывается в переменной среды XAUTHORITY. Если $XAUTHORITY не установлен, программы используют ~/.Xauthority.

Вы пытаетесь воздействовать на окна, которые отображаются на вашем рабочем столе. Если вы единственный человек, использующий ваш настольный компьютер, очень вероятно, что отображаемое имя будет :0. Поиск местоположения файла полномочий X сложнее, потому что с gdm, настроенным под сжатием Debian или Ubuntu 10.04, он находится в файле со случайно сгенерированным именем. (У вас не было проблем, потому что более ранние версии gdm использовали настройку по умолчанию, то есть файлы cookie, хранящиеся в ~/.Xauthority.)

Если это одноразовый, вы можете обнаружить значения DISPLAY и XAUTHORITY из текущего процесса. Это неудобно автоматизировать. Вы должны определить PID процесса, который подключен к дисплею, над которым вы хотите работать, затем получить переменные среды из /proc/$pid/environ (eval export $(</proc/$pid/environ tr \\0 \\n | grep -E '^(DISPLAY|XAUTHORITY)=')).

Долгосрочное автоматическое решение является копирование файлов cookie при входе в сеанс X вашего рабочего стола. Добавьте следующие строки в ~/.profile (или какой-либо другой скрипт, который читается при входе в систему):

case $DISPLAY:$XAUTHORITY in
  :*:?*)
    # DISPLAY is set and points to a local display, and XAUTHORITY is
    # set, so merge the contents of `$XAUTHORITY` into ~/.Xauthority.
    XAUTHORITY=~/.Xauthority xauth merge "$XAUTHORITY";;
esac

Затем вы можете запускать программы на вашем удаленном X-дисплее просто установкой DISPLAY: [ ! d10]

ssh foo.example.com 'DISPLAY=:0 restart teamviewer'

Этот ответ адаптирован из более полного ответа на аналогичный вопрос об Unix Stack Exchange.

1
задан 17 May 2018 в 17:23

0 ответов

Другие вопросы по тегам:

Похожие вопросы: