Настоящий VNC на Ubuntu 10.04 LTS через xinetd

Я пытаюсь установить Real VNC сервер на Ubuntu 10.04 LTS 64 bit.

Я попробовал 2 варианта. Во-первых, я получил бесплатную редакцию Real VNC и начал работать после того, как все требует 32-битных библиотек, взлома конфигурации и т. Д. Это почти хорошо с одной маленькой проблемой, после того, как я отключаю клиента, печать сервера Aborted и выходит. Я пробовал много комбинаций параметров и не мог понять это.

Это примерно командная строка, которую я использовал (но я пробовал много комбинаций параметров).

Xvnc :2 -desktop user-desktop -query localhost -geometry 1920x1200 -depth 16 -AcceptCutText -SendCutText -rfbauth /home/user/.vnc/passwd -SecurityTypes None -DisconnectClients

Второй вариант Я получил пробную версию Real VNC Enterprise 4.6.1 и установил ее. Теперь я могу счастливо запустить его как автономный сервер, и мои клиенты могут отключиться, не убивая сервер, но когда я пытаюсь использовать его с -inetd вариант просто тихо выходит. Когда я пробую бесплатную версию, она переходит в режим stdio и печатает сообщение о рукопожатии.

RFB 003.008

Не в случае с корпоративной версией. Это просто выходит. Нет сообщений и нет журналов.

Так есть ли у кого-нибудь идеи о том, как заставить любой вариант работать?


По рекомендации @grawity я запускаю strace а также ltrace, Вот наиболее интересный вывод ltrace (я собрал данные в файл с именем abc и вставил только те строки, которые мне интересны):

$cat abc | egrep 'strchr|print'

fprintf(0x7f330223e860, "\n%s", "Sun Jul 10 13:07:30 2011\n") = 26
strchr("inetd client gone, exiting", ' ')        = " client gone, exiting"
strchr("client gone, exiting", ' ')              = " gone, exiting"
strchr("gone, exiting", ' ')                     = " exiting"


$ cat abc | egrep 'strchr|print' | grep socket
strchr("getpeername: Socket operation on"..., ' ') = " Socket operation on non-socket "...
strchr("Socket operation on non-socket ("..., ' ') = " operation on non-socket (88)"
strchr("operation on non-socket (88)", ' ')      = " on non-socket (88)"
strchr("on non-socket (88)", ' ')                = " non-socket (88)"
strchr("non-socket (88)", ' ')                   = " (88)" 

1 ответ

Решение

Попробуйте запустить его под ltrace или же strace,

Может случиться так, что режим inetd требует, чтобы stdin и stdout были сокетами - например, это необходимо для определения IP-адреса клиента. Вполне вероятно, что RealVNC не готов к getpeername() вернуть неудачу.

В качестве альтернативы используйте Xvnc.

Другие вопросы по тегам