Настоящий 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.