Ejecutando Mono en CentOS 5 CLI

Ejecutando Mono en CentOS 5 CLI

Tengo un servidor vps (servidor privado virtual) ejecutándose en Linux CentOS 5 de 32 bits, instalé vncserverel entorno X-Windows, GNOME y KDE y me conecto al servidor VNC desde vncviewer en mi escritorio de Windows 7.

ahora ejecuto el comando

mono Radegast.exe

en la terminal y tengo

[ERROR]: - Unhandled System.TypeInitializationException: An exception was thrown by the type initializer for System.Windows.Forms.XplatUI ---> System.ArgumentNullException: Could not open display (X-Server required. Check you DISPLAY environment variable)
    Parameter name: Display
      at System.Windows.Forms.XplatUIX11.SetDisplay (IntPtr display_handle) [0x00000]
      at System.Windows.Forms.XplatUIX11..ctor () [0x00000]
      at System.Windows.Forms.XplatUIX11.GetInstance () [0x00000]
      at System.Windows.Forms.XplatUI..cctor () [0x00000]
      --- End of inner exception stack trace ---
      at System.Windows.Forms.Application.EnableVisualStyles () [0x00000]
      at Radegast.MainProgram.RunRadegast (System.String[] args) [0x00000]
      at Radegast.MainProgram.Main (System.String[] args) [0x00000] : An exception was thrown by the type initializer for System.Windows.Forms.XplatUI
      at System.Windows.Forms.Application.EnableVisualStyles () [0x00000]
      at Radegast.MainProgram.RunRadegast (System.String[] args) [0x00000]
      at Radegast.MainProgram.Main (System.String[] args) [0x00000]

la versión mono es

# mono -V
Mono JIT compiler version 2.4.2.3 (tarball Sat Apr 20 19:49:33 MSD 2013)
Copyright (C) 2002-2008 Novell, Inc and Contributors. www.mono-project.com
        TLS:           __thread
        GC:            Included Boehm (with typed GC)
        SIGSEGV:       altstack
        Notifications: epoll
        Architecture:  x86
        Disabled:      none 

Respuesta1

No indica esto explícitamente en su pregunta, pero el error que está encontrando:

[ERROR]: - System.TypeInitializationException no controlado: el inicializador de tipo generó una excepción para System.Windows.Forms.XplatUI ---> System.ArgumentNullException: no se pudo abrir la pantalla (se requiere X-Server. Verifique la variable de entorno DISPLAY) Nombre del parámetro: Pantalla

Parece que estás intentando hacer una de dos cosas:

  1. Inicie la aplicación mono en un shell que no tiene acceso al escritorio X.
  2. se está ejecutando como un usuario que no tiene permisos para acceder a la pantalla

Este hilo en elForo de RadegastSuena como tu mismo problema.

Posibles soluciones

Necesitará:

  1. establezca la variable de entorno $DISPLAY en ":0.0" después de ingresar al vps como el mismo usuario propietario del escritorio X
  2. ejecútelo xhost +como el usuario propietario del escritorio antes de ejecutar su comando mono como otro usuario (¡no olvide configurar la variable $DISPLAY para este otro usuario también!)

Creo que también puedes ejecutar tu comando mono de esta manera:

% XAUTHORITY=/home/$YOURUSER/.Xauthority DISPLAY=:0.0 mono Radegast.exe

NOTA:$YOURUSER es el usuario propietario del X Desktop.

Respuesta2

Si su código de C# tiene la GUI, debe asignarle un $DISPLAY. Puede dar $DISPLAY primero en echo $DISPLAYsu Linux remoto.

  1. Si quieres usar elPDR(Protocolo de escritorio remoto), puede instalar el paquete dexrdp.

    $ sudo apt-get install xrdp
    
  2. conexión al servidor remoto (Remmina, ).

  3. abra la terminal y obtenga $DISPLAY.

    $echo $DISPLAY
    :10.0
    
  4. ejecutar programa mono con ssh:

    $ ssh [email protected]
    $ export DISPLAY=:10.0
    $ mono server.exe > /dev/null 2> /dev/null &
    

información relacionada