Executando o Mono no CentOS 5 CLI

1

Eu tenho o servidor vps (servidor privado virtual) em execução no Linux CentOS 5 de 32 bits, instalei o ambiente vncserver X-Windows, GNOME e KDE e conectei-me ao servidor VNC do vncviewer no meu Windows 7 Desktop

agora eu executo o comando

mono Radegast.exe

no terminal e eu tenho

[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 
    
por iLinux85 20.04.2013 / 20:57

2 respostas

1

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

[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

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

  1. inicie o aplicativo mono em um shell que não tem 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 no Fórum Radegast parece o mesmo problema .

Soluções potenciais

Você precisará:

  1. defina a variável de ambiente $ DISPLAY como ": 0.0" após ssh'ing no vps como o mesmo usuário que possui o X Desktop
  2. execute xhost + como o usuário que possui a á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 pode executar seu comando mono assim:

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

NOTA: $ YOURUSER é o usuário que possui o X Desktop.

    
por 21.04.2013 / 04:00
0

Se o seu código de C # tiver a GUI, você precisa atribuir um $ DISPLAY a ele. Você pode dar $ DISPLAY primeiro com echo $DISPLAY no seu Linux remoto.

  1. Se você quiser usar o RDP (Protocolo de Área de Trabalho Remota), você pode instalar o pacote de xrdp .

    $ sudo apt-get install xrdp
    
  2. conexão ao 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 &
    
por 02.04.2014 / 06:01