Executando Mono na CLI do CentOS 5

Executando Mono na CLI do CentOS 5

Tenho servidor vps (servidor virtual privado) rodando em Linux CentOS 5 32 bits, instalei vncserverambiente X-Windows, GNOME e KDE e me conecto ao servidor VNC do vncviewer em meu desktop Windows 7

agora eu executo o comando

mono Radegast.exe

no terminal e eu consegui

[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]

versão mono é

# 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 

Responder1

Você não declara isso explicitamente em sua pergunta, mas no erro que está encontrando:

[ERRO]: - System.TypeInitializationException não tratado: uma exceção foi lançada pelo inicializador de tipo para System.Windows.Forms.XplatUI ---> System.ArgumentNullException: não foi possível abrir a exibição (é necessário o X-Server. Verifique sua variável de ambiente DISPLAY) Nome do parâmetro: Exibição

Parece que você está tentando fazer uma de duas coisas:

  1. inicie o aplicativo mono em um shell que não tenha acesso ao X Desktop
  2. está sendo executado como um usuário que não tem permissões para acessar a exibição

Este tópico noFórum Radegastparece o mesmo problema.

Soluções potenciais

Você precisará:

  1. defina a variável de ambiente $DISPLAY como ":0.0" após fazer ssh no vps como o mesmo usuário que possui o X Desktop
  2. execute xhost +como o usuário proprietário da área de trabalho antes de executar seu comando mono como outro usuário (não se esqueça de definir a variável $DISPLAY para esse outro usuário também!)

Acredito que você também poderia executar seu comando mono assim:

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

OBSERVAÇÃO:$YOURUSER é o usuário proprietário do X Desktop.

Responder2

Se o seu código C# tiver a GUI, você precisará atribuir um $DISPLAY a ele. Você pode dar $DISPLAY primeiro echo $DISPLAYno seu Linux remoto.

  1. Se você quiser usar oPDR(Remote Desktop Protocol), você pode instalar o pacote dexrdp.

    $ sudo apt-get install xrdp
    
  2. conexão com servidor remoto (Remmina, ).

  3. abra o terminal e obtenha $ DISPLAY.

    $echo $DISPLAY
    :10.0
    
  4. execute o programa mono com ssh:

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

informação relacionada