[X2go-Dev] [X2go-User] [SOLVED] Re: Instructions for manual install from source tarballs on a less well-known distribution
Ivan Kabaivanov
chepati at yahoo.com
Thu Aug 18 01:01:55 CEST 2011
ok, resending this after having subscribed to the x2go-dev list.
On Wednesday 17 August 2011 23:32:53 Mike Gabriel wrote:
> > $ cat /usr/bin/x2goagent
> > #!/bin/bash
> > X2GO_LIBS=/usr/lib/x2go LD_LIBRARY_PATH=/usr/lib/x2go exec
> > /usr/bin/x2goagent.original $@
>
> This should not be necessary... With Debian it also works with
> libxcomp* being installed in /usr/lib.
>
> There used to be times when x2go shipped its own NX libs with
> /usr/lib/x2go as path, but that's not so any more. x2go uses pure NX
> libs, only x2goagent is a fork of nxagent.
>
> > I install just the libs required by x2goagent binary like so:
> >
> > mkdir -p /usr/lib/x2go/
> >
> > make World
> > cp -a lib/Xext/libXext.so* /usr/lib/x2go/
> > cp -a lib/X11/libX11.so* /usr/lib/x2go/
> > cp -a lib/Xpm/libXpm.so* /usr/lib/x2go/
> > cp -a lib/Xrender/libXrender.so* /usr/lib/x2go/
> > cp -a lib/Xfixes/libXfixes.so* /usr/lib/x2go/
> > cp -a lib/Xtst/libXtst.so* /usr/lib/x2go/
> > cp -a lib/Xdamage/libXdamage.so* /usr/lib/x2go/
> > cp -a lib/Xrandr/libXrandr.so* /usr/lib/x2go/
> > cp -a lib/Xcomposite/libXcomposite.so* /usr/lib/x2go/
> >
> > install -m755 programs/Xserver/x2goagent /usr/bin/x2goagent.original
>
> Please check that again. That should not be necessary. It could be
> misleading if you put it like that in the X2go wiki. I bet there is
> another way with using default library paths.
Mike, please check the LFS server install wiki page. I wrote up the
instructions for nxcomp, nxcompext, nxcompshad, nxproxy and x2goagentand will
finish the rest tomorrow. As you'll see I'm installing libXcomp* in the
standard /usr/lib path. However, looks like x2goagent is built from a
modified x.org (6.9?) source tree and when linked at runtime with the system
libX11 and other standard x.org libs it fails with an obscure message:
~/.x2go]$ cat C-ivan-50-1313618948_stDKDE_dp24/session.log
NXAGENT - Version 3.5.0.2
Copyright (C) 2001, 2011 NoMachine.
See http://www.nomachine.com/ for more information.
Info: Agent running with pid '2457'.
Session: Starting session at 'Thu Aug 18 01:09:11 2011'.
Error: Aborting session with 'X2goagent: Unable to open display
'nx/nx,options=/home/ivan/.x2go/C-ivan-50-1313618948_stDKDE_dp24/options:50''.
Session: Aborting session at 'Thu Aug 18 01:09:11 2011'.
Session: Session aborted at 'Thu Aug 18 01:09:11 2011'.
That's why I did an ldd on the x2goagent binary and copied just the 'custom'
x.org libs into /usr/lib/x2go and put them in the wrapper.
what I'll do is try to narrow down to the exact library that breaks x2goagent
and just copy it. Not sure if there's a better approach. Don't wanna do a
static build either...
>
> > And finally, I need to patch x2goclient because it's not consistent in
> > its assumption of where the startkde script is:
> >
> > ~/x2goclient]# sed -i "s,/usr/bin/startkde,startkde,g" onmainwindow.cpp
> > ~/x2goclient]# sed -i "s,startkde,/usr/local/kde/bin/startkde,g"
> > onmainwindow_part3.cpp
>
> Could you send a diff for that??? x2goclient should not refer to a
> hard coded path for startkde.
something like this?
diff -Naur x2goclient/onmainwindow.cpp.original x2goclient/onmainwindow.cpp
--- x2goclient/onmainwindow.cpp.original 2011-08-18 01:30:09.000000000
+0300
+++ x2goclient/onmainwindow.cpp 2011-08-18 01:31:11.000000000 +0300
@@ -2172,7 +2172,7 @@
}
}
- sessionCmd="/usr/bin/startkde";
+ sessionCmd="startkde";
LDAPSndSys="ARTS_SERVER";
LDAPSndStartServer=true;
startSound=false;
diff -Naur x2goclient/x2goclient_de.ts.original x2goclient/x2goclient_de.ts
--- x2goclient/x2goclient_de.ts.original 2011-08-18 01:30:33.000000000
+0300
+++ x2goclient/x2goclient_de.ts 2011-08-18 01:31:51.000000000 +0300
@@ -2192,8 +2192,8 @@
<translation>deaktiviert</translation>
</message>
<message>
- <source>/usr/bin/startkde</source>
- <translation type="obsolete">/usr/bin/startkde</translation>
+ <source>startkde</source>
+ <translation type="obsolete">startkde</translation>
</message>
<message>
<location filename="sessionbutton.cpp" line="329"/>
However, as I'm a KDE user, I can't test GNOME and LXDE.
>
> @Alex: any idea about this:
>
> mike at minobo:~/MyDocuments/4projects/x2go-upstream/x2goclient$ grep -ri
> /usr/bin/startkde *
> onmainwindow.cpp: sessionCmd="/usr/bin/startkde";
> x2goclient_de.ts: <source>/usr/bin/startkde</source>
> x2goclient_de.ts: <translation
> type="obsolete">/usr/bin/startkde</translation>
>
> > Mind you, I install kde in /usr/local/kde, and that's why I need these
> > sed substitutions. If your kde prefix is in /usr, you should be ok.
> > However, this brings up the question -- why donesn't x2go search in
> > PATH for startkde, and instead hardcodes its location?
>
> However, there currently are hard-coded path in the x2goserver
> (server!) script ,,x2goruncommand''. This is not optimal.
>
> @Alex: Should we migrate them to non-fullpath calls
>
> /usr/bin/gnome-terminal -> gnome-terminal
> etc.
>
How about this:
diff -Naur x2goserver/x2goserver/bin/x2goruncommand.original
x2goserver/x2goserver/bin/x2goruncommand
--- x2goserver/x2goserver/bin/x2goruncommand.original 2011-08-18
01:47:13.000000000 +0300
+++ x2goserver/x2goserver/bin/x2goruncommand 2011-08-18 01:55:14.000000000
+0300
@@ -83,19 +83,18 @@
if [ "$cmd" == "TERMINAL" ]; then
IMEXIT="true"
- if [ -e "/usr/bin/konsole" ]; then
- cmd="/usr/bin/konsole"
+ if bash +h -c "type konsole" > /dev/null 2>&1; then
+ cmd=`type konsole | awk '{print $3}'`
# KDE4 konsole behaves differently from other terminals
IMEXIT="false"
- elif [ -e "/usr/bin/gnome-terminal" ]; then
- cmd="/usr/bin/gnome-terminal"
- elif [ -e "/usr/bin/lxterminal" ]; then
- cmd="/usr/bin/lxterminal"
- elif [ -e "/usr/bin/rxvt" ]; then
- cmd="/usr/bin/rxvt"
- elif [ -e "/usr/bin/xterm" ]; then
- cmd="/usr/bin/xterm"
- fi
+ elif bash +h -c "type gnome-terminal" > /dev/null 2>&1; then
+ cmd=`type gnome-terminal | awk '{print $3}'`
+ elif bash +h -c "type lxterminal" > /dev/null 2>&1; then
+ cmd=`type lxterminal | awk '{print $3}'`
+ elif bash +h -c "type rxvt" > /dev/null 2>&1; then
+ cmd=`type rxvt | awk '{print $3}'`
+ elif bash +h -c "type xterm" > /dev/null 2>&1; then
+ cmd=`type xterm | awk '{print $3}'`
fi
EXEC=`which $cmd`
actually I would remove 'which' altogether. However, type is a bash built-in
function if I'm not mistaken, so on distributions where bash is not the
default shell, this may present problems...
I didn't find the location of startkde hardcoded anywhere in x2goserver.
IvanK.
More information about the x2go-dev
mailing list