====== Build X2GoServer for GNU/Linux ====== //... esp. applies to installation on the Linux-From-Scratch distribution.// ===== General Information ===== Make sure you have read these wiki pages / installed recommended software / development libraries: * non-X2Go runtime dependencies: * lsof * openssh-client * openssh-server * libconfig-simple-perl * makepasswd * libdbd-pg-perl * libdbd-sqlite3-perl * xauth * X2Go runtime dependencies: * x2goagent * NX libraries Note: X2GoServer is not dependent on perl-suid anymore (as Perl SUID has been removed from Perl >=5.12.x). Installation: For an insight in basic post-installation procedures please take a look at the ''INSTALL'' file in the base directory of the ''x2goserver'' code project. The latest version of this INSTALL file can be found in our [[http://code.x2go.org/gitweb?p=x2goserver.git;a=blob;f=INSTALL|Git repository]]. Deinstallation: For deinstallation please refer to the ''UNINSTALL'' file in the base directory of the ''x2goserver'' code project. The latest version of this UNINSTALL file can also be found in our [[http://code.x2go.org/gitweb?p=x2goserver.git;a=blob;f=UNINSTALL|Git repository]]. ===== Build Recipes ===== **Run the following commands as a regular, non-root user. You'll need the root password to install them.** **1. Create the necessary group and user** Make sure you already have a group called **fuse** $ su -c "groupadd --system x2gouser && groupadd --system x2goprint && useradd --system --no-create-home --shell /bin/false --home /var/lib/x2go -g x2gouser x2gouser && usermod -a -G fuse " **2. Install makepasswd** $ wget http://people.defora.org/~khorben/projects/makepasswd-0.5.0.tar.gz $ tar xf makepasswd-0.5.0.tar.gz $ cd makepasswd-0.5.0 $ make $ su -c "make PREFIX=/usr install" **3. Install man2html** $ wget http://dcssrv1.oit.uci.edu/indiv/ehood/tar/man2html3.0.1.tar.gz $ tar xf man2html3.0.1.tar.gz $ cd man2html3.0.1 $ su -c "sed 's,/local,,g' man2html > /usr/bin/man2html && sed 's,/local,,g' man.cgi > /usr/bin/man.cgi && cp doc/man2html.1 /usr/share/man/man1/ && chown root:root /usr/bin/man2html /usr/bin/man.cgi /usr/share/man/man1/man2html.1 && chmod 755 /usr/bin/man2html /usr/bin/man.cgi" **4. Install perl module Config-Simple** $ wget http://search.cpan.org/CPAN/authors/id/S/SH/SHERZODR/Config-Simple-4.59.tar.gz $ tar xf Config-Simple-4.59.tar.gz $ cd Config-Simple-4.59 $ perl Makefile.PL $ make $ su -c "make install" **5. Install perl module DBI** $ wget http://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-1.615.tar.gz $ tar xf DBI-1.615.tar.gz $ cd DBI-1.615 $ perl Makefile.PL $ make $ su -c "make install" Here you need to decide if you need a single-server or multiple-server setup. If you pick a single-server setup, you need to install sqlite. Follow the installation instructions at [[http://www.linuxfromscratch.org/blfs/view/svn/server/sqlite.html|BLFS]]. If you pick a multiple-server setup, you need to install postgresql. Follow the installation instructions at [[http://www.linuxfromscratch.org/blfs/view/svn/server/postgresql.html|BLFS]]. **6. Install perl module DBD-SQLite (for a single-server setup)** $ wget http://search.cpan.org/CPAN/authors/id/A/AD/ADAMK/DBD-SQLite-1.33.tar.gz $ tar xf DBD-SQLite-1.33.tar.gz $ cd DBD-SQLite-1.33 $ perl Makefile.PL $ make $ su -c "make install" **7. Install perl module DBD-Pg (for a multiple-server setup) (TODO: Someone please verify this)** $ wget http://search.cpan.org/CPAN/authors/id/T/TU/TURNSTEP/DBD-Pg-2.18.1.tar.gz $ tar xf DBD-Pg-2.18.1.tar.gz $ cd DBD-Pg-2.18.1 $ perl Makefile.PL $ make $ su -c "make install" **8. Install NoMachine's NX libraries**, described [[:wiki:development:build-howto-linux:nx-libs|here]]. **9. Install x2goagent from git** $ su -c "rm -fr /usr/lib/x2go && mkdir -p /usr/lib/x2go" $ git clone git://code.x2go.org/x2goagent $ cd x2goagent $ make World $ su -c "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/ && chown -R root:root /usr/lib/x2go && install -m755 programs/Xserver/x2goagent /usr/bin/x2goagent.original" Use **make -j World** to speed up the build Now create a wrapper to call the actual x2goagent binary with the correct LD_LIBRARY_PATH $ su -c "echo '#\!/bin/bash' | sed 's,\\\,,g' > /usr/bin/x2goagent && echo 'X2GO_LIBS=/usr/lib/x2go LD_LIBRARY_PATH=/usr/lib/x2go exec /usr/bin/x2goagent.original \$@' >> /usr/bin/x2goagent && chmod 755 /usr/bin/x2goagent" **12. Install x2goserver from git** $ git clone git://code.x2go.org/x2goserver $ cd x2goserver $ sed -i "s,/local,,g" x2goserver-compat/Makefile $ sed -i "s,/local,,g" x2goserver-extensions/Makefile $ sed -i "s,/local,,g" x2goserver/Makefile $ make $ su -c "make install && chown root:x2gouser /usr/lib/x2go/x2gosqlitewrapper && chmod 2755 /usr/lib/x2go/x2gosqlitewrapper rm -fr /var/lib/x2go/x2go_sessions && /usr/sbin/x2godbadmin --createdb" **13. Install a boot script** Copy this text into /etc/rc.d/init.d/x2goserver: #!/bin/sh . /etc/sysconfig/rc . ${rc_functions} case "${1}" in start) boot_mesg "Starting x2go server..." /usr/sbin/x2gocleansessions evaluate_retval ;; stop) boot_mesg "Stopping x2go server..." killall x2gocleansessions evaluate_retval ;; restart) boot_mesg "Restarting x2go server..." ${0} stop sleep 1 ${0} start ;; status) boot_mesg "Checking x2go status..." statusproc /usr/sbin/x2gocleansessions evaluate_retval ;; *) echo "Usage: ${0} {start|stop|restart|status}" exit 1 ;; esac # End $rc_base/init.d/x2goserver su -c "chmod 755 /etc/rc.d/init.d/x2goserver && ln -sf ../init.d/x2goserver /etc/rc.d/rcsysinit.d/S92x2goserver && ln -sf ../init.d/x2goserver /etc/rc.d/rc0.d/K28x2goserver && ln -sf ../init.d/x2goserver /etc/rc.d/rc6.d/K28x2goserver"