После изменения имени хоста gedit (и другие X-клиенты) не открываются
после изменения имени сервера!--1--> работает не так, как ожидалось, он всегда показывает ошибку в моем корне "нет указанного протокола"
** (gedit:23330): WARNING **: Could not open X display
No protocol specified
Cannot open display:
Run 'gedit --help' to
4 ответов
не только gedit
это произойдет, но на самом деле все программы, которые используют протокол X11 для разговора с графическим сервером. X11 использует протокол Xauth для проверки подлинности подключающихся клиентов. Когда вы входите в систему через какой-то диспетчер отображения, a MIT-MAGIC-COOKIE-1
аутентификация cookie создается и записывается в ваш . Этот файл читается клиентами X11, и доступные там файлы cookie используются для аутентификации соединений.
список cookies в вашем ~/.Xauthority
файл может отображаться с помощью xauth list
:
$ xauth list
localhost:1012 MIT-MAGIC-COOKIE-1 bd988401cbf8xxxxxxxxxxxxxxxxxxxx
some.host.example.com/unix:1012 MIT-MAGIC-COOKIE-1 bd988401cbf8xxxxxxxxxxxxxxxxxxxx
если вы измените имя хоста, клиентская библиотека X11 больше не сможет найти соответствующий файл cookie в базе данных аутентификации, а сервер X11 отклонит неавторизованное соединение (если не настроено иначе).
что вы можете сделать, это добавить соответствующий файл cookie с помощью xauth
:
$ xauth add "$(hostname)/unix:0" MIT-MAGIC-COOKIE-1 bd988401cbf8xxxxxxxxxxxxxxxxxxxx
$(hostname)
расширяется до результата и unix:0
соответствует вашему DISPLAY
переменная окружения устанавливается в :0.0
. Если это другой номер дисплея, например :ddd.0
, затем вы должны изменить добавленную запись хоста соответственно на "($hostname)/unix:ddd"
. Обратите также внимание,что значение добавляемого файла cookie должно совпадать со значением существующего.
если в это время у вас нет эмулятора терминала, и вы не можете открыть его из-за ошибки аутентификации, вы можете переключиться на консоль (текстовый режим), войти туда и выполнить вышеуказанное команда.
когда я изменил название своего ноутбука, я также испытал эту проблему. Однако мне удалось исправить это с помощью следующих команд
su
(введите пароль)
cd /etc
gedit hosts
оттуда я просто удалил ссылку на старое имя компьютера и заменил его новым.
127.x.x.x localhost
127.x.x.x (New Name)
однако обратите внимание, что всякий раз, когда вы вносите изменения в имя компьютера, вы должны убедиться, что изменения вносятся как в /etc/hostname
файл, а также . Если вы сделаете 1 изменение, не делая другого, вы получите ошибку.
jnweiger прокомментировал 13 августа 2014:
файл Xauthority можно записать таким образом, чтобы имя хоста не иметь значение.
Я не уверен, если
xauth
имеет правильную командную строку для указания Семейство аутентификации, но я используюsed
для переключения на аутентификацию Семья 'FamilyWild'. Надо менять первые 16 битnlist
выход. Значение FamilyWild is65535
или0xffff
.xauth nlist :0 | sed -e 's/^..../ffff/' | xauth nmerge -
в этом случае строка, написанная после номера семейства (обычно, имя хоста и т. д.) не имеет значения для сопоставления вообще.
в ALT можно пакет, там был применен патч недавно для поддержки добавления таких FamilyWild записи с помощью xauth
С