J'essaie de lancer une application, mais lorsque je l'exécute, je reçois un message.
Could not open display `(null').
Erreur. Pourquoi est-ce? Plus précisément, j'essayais d'exécuter scratch (que j'ai installé via 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)'.
Des erreurs comme celle-ci signifient que vous exécutez un programme nécessitant un affichage graphique et qu’il n’en trouve pas. Les programmes d'interface graphique se connectent à l'affichage défini par la variable d'environnement $DISPLAY
. Le format général de l'erreur est
Could not open display $DISPLAY
Étant donné que, dans votre cas, l'erreur indique (null)
, cela signifie que $DISPLAY
n'est pas défini. Vous devez donc:
Si vous vous connectez à une machine distante en utilisant quelque chose comme ssh
, vous devrez exporter le $DISPLAY
de votre machine locale et indiquer à l'ordinateur distant de l'afficher. Programmes d'interface graphique là-bas. Cela peut être fait avec les options -X
ou -Y
de ssh
:
ssh -Y [email protected]
Comme expliqué dans 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.
S'il s'agit de votre ordinateur local, vous devez installer un environnement graphique . Si l'un d'entre eux est déjà installé, en supposant une configuration par défaut d'Ubuntu, vous pouvez le démarrer avec cette commande:
Sudo service lightdm start
Si vous avez un environnement graphique en cours d'exécution, mais pour une raison quelconque, $DISPLAY
est défini sur null
, vous pouvez le redéfinir. Les détails dépendront de votre situation réelle, mais dans la plupart des cas, ce dont vous aurez besoin (en supposant que, de nouveau, vous êtes sur votre ordinateur local),
export DISPLAY=:0.0
Vous pouvez ensuite exécuter votre programme d'interface graphique normalement.
Si un serveur X est en cours d’exécution mais que vous avez basculé sur un terminal (par exemple, en appuyant sur Ctrl+Alt+F1), vous devrez peut-être simplement revenir à votre environnement graphique. Cela dépend de la console virtuelle utilisée par votre interface graphique, mais dans la plupart des cas sous Ubuntu, la valeur est 7, vous pouvez donc y revenir en utilisant Alt+F7.
Si cela ne vous ramène pas à votre bureau, parcourez tous les ttys Alt+Left Arrow ou Alt+Right Arrow jusqu'à ce que vous trouviez le bon.
Un autre problème courant est que vous avez démarré une session X en tant qu'utilisateur normal et que vous essayez maintenant de vous y connecter en tant que root
ou un autre utilisateur. Pour l'activer, vous devez spécifier que cet utilisateur a le droit d'accéder à votre bureau graphique. Par exemple:
xhost +si:localuser:terdon
Cela permettra à l'utilisateur local terdon
de se connecter au serveur X en cours d'exécution. La commande doit être exécutée par le propriétaire de la session X. Alternativement, pour permettre à n'importe qui de se connecter:
xhost +
Et pour révoquer les autorisations:
xhost -