Вопрос Msgstr "Не удалось открыть отображение` (null) ''. Как я могу это исправить?


Я пытаюсь запустить приложение, но когда я его запускаю, я получаю

Could not open display `(null').

Ошибка. Почему это? В частности, я пытался запустить scratch (который я установил через aws):

root@ip-10-251-56-90:/usr/bin# ./scratch
Executing: /usr/lib/squeak/4.4.7-2357/squeakvm -encoding UTF-8 -vm-display-x11 -xshm -plugins /usr/lib/scratch/plugins/:/usr/lib/squeak/4.4.7-2357/ -vm-sound-ALSA /usr/share/scratch/Scratch.image
Could not open display `(null)'.

4
2018-03-24 09:17


происхождения




ответы:


Ошибки, подобные этому, означают, что вы запускаете программу, которая нуждается в графическом дисплее, и она не может ее найти. Программы GUI подключаются к дисплею, определенному $DISPLAY переменная среды. Общий формат ошибки

Could not open display $DISPLAY

Поскольку, в вашем случае, ошибка говорит (null), это значит, что $DISPLAY не задано. Поэтому вам необходимо:

  1. Если вы входите на удаленную машину, используя что-то вроде ssh, вам необходимо будет экспортировать $DISPLAY вашей местный и сообщите удаленному компьютеру о том, чтобы отображать там графические программы. Это можно сделать с помощью -X или -Y варианты ssh:

    ssh -Y root@10.251.56.90
    

    Как поясняется в man ssh:

     -Y  Enables trusted X11 forwarding.  Trusted X11 forwardings are not
         subjected to the X11 SECURITY extension controls.
     -X  Enables X11 forwarding.  This can also be specified on a per-host
         basis in a configuration file.
    
  2. Если это ваша локальная машина, вам нужно установить графическую среду, Если он уже установлен, если вы используете настройку Ubuntu по умолчанию, вы можете запустить его с помощью этой команды:

    sudo service lightdm start
    
  3. Если у вас есть графическая среда, но по какой-либо причине, $DISPLAY для null, вы можете переопределить его. Детали будут зависеть от вашей фактической ситуации, но в большинстве случаев вам понадобится (при условии, что вы снова находитесь на своей локальной машине)

    export DISPLAY=:0.0
    

    Затем вы можете запустить свою программу графического интерфейса.

  4. Если у вас есть X-сервер, но переключился на tty (например, нажав Ctrl+Alt+F1), вам просто нужно вернуться в графическую среду. Это зависит от того, на какой виртуальной консоли работает ваш графический интерфейс, но в большинстве случаев на Ubuntu будет 7, поэтому вы можете вернуться к нему, используя Alt+F7,

    Если это не вернет вас на рабочий стол, просто перейдите через все ttys Alt+Стрелка влево или Alt+Правая стрелка пока не найдете правильный.

  5. Еще одна распространенная проблема заключается в том, что вы начали X-сеанс как обычный пользователь и теперь пытаетесь подключиться к нему как root или другим пользователем. Чтобы включить это, вам необходимо указать, что этот пользователь имеет право доступа к графическому рабочему столу. Например:

    xhost +si:localuser:terdon
    

    Это позволит локальному пользователю terdon для подключения к работающему X-серверу. Команда должна выполняться владельцем X-сессии. Альтернативно, чтобы разрешить кто угодно для подключения:

    xhost +
    

    И для отмены разрешений:

    xhost -
    

9
2018-03-24 22:48