Как установить переменную DISPLAY для процесса?
Я пытаюсь запустить pgadmin3 от имени пользователя postgres и получаю следующую ошибку:
No protocol specified
Error: Unable to initialize gtk, is DISPLAY set properly?
команда pgadmin3
хорошо работает под Pavel (моя основная учетная запись пользователя).
Ответы на вопрос по этому вопросу предложили либо некоторую магию соединения с сервером (не в моем случае - я пытаюсь запустить его на локальном хосте), либо настройку переменной DISPLAY. Я проверил это через printenv и под pavel и postgres, и это:0 для обоих. Я использовал трюк, чтобы найти, какие процессы имеют переменную DISPLAY, установленную для обоих пользователей. Для pavel существует очень длинный список со значениями DISPLAY:0 (для большинства процессов, включая pgadmin) или:0.0 (для некоторых). Но для postgres в списке всего три или четыре процесса.
Вот где я застрял: как установить переменную окружения (в данном случае DISPLAY) для процесса? Или лучше для комбинации приложения / пользователя, чтобы процесс видел настройку DISPLAY с самого начала. Я уже пытался жестко закодировать DISPLAY в ETC/ENVIRONMENT, но ничего не изменилось - оно влияет на значение DISPLAY, где оно установлено (для пользователей и процессов), но не на его видимость для процессов, запускаемых пользователями.
1 ответ
Звучит как ты sudo
бы к postgres
Затем пользователь попытался запустить Pgadmin оттуда.
Не делай этого.
Запустите PgAdmin как ваш обычный пользователь, без sudo
, Возможно, вам придется создать себе учетную запись пользователя в БД и / или отредактировать pg_hba.conf
чтобы сначала разрешить соединения, но как только это будет сделано, вы можете использовать PgAdmin.