LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 4930|回复: 23

【毁灭系列】FreeNX-0.7.3 源码编译安装指南

[复制链接]
发表于 2008-11-23 01:02:58 | 显示全部楼层 |阅读模式
作者:d00m3d
来自:LinuxSir.Org
摘要:本文主要讲述如何利用 FreeNX 及 NoMachine NX 库的源码编译出 FreeNX Server 作为远程遥控的桥梁。

本文欢迎转载,敬请注明原文出处。

前言
====

以前我在 Sir 里发表过一篇《[原创]NoMachine, NX 远程遥控的新典范 (Part 1,Linux Server 篇)》http://www.linuxsir.cn/bbs/thread233874.html,但三年已过去,文章显然有点过时了。

近日由於工作需要远程桌面遥控,於是打算再次安装 FreeNX。可是,公司里只使用 Debian 以及 LFS 系统,两者同样没有预先编译好的二进进码可供安装,其他各大发行版则用各自的方式去实现 FreeNX 的装配。不幸地,网上多数的教程及应用都以各自的发行版为中心,发行版与发行版之间并非完全可以通用。再者,LFS 原有的 Hints 同样有三岁了,而 CBLFS 的 Wiki 里又没有相关内容。没法子了,只好求己,一条心从源码编译安装去也。

在此,先澄清一点,我要安装的是 FreeNX,即 NoMachine NX server 的全免(Free-of-charge and Free-from-limitations)方案,并非 NoMachines 提供的 Free (免费)版 NX server(有用户及同时连线数量限制),所以 FreeNX 并不等於 Free NX!

编译过程中接触过一大堆资料及教程,详见最後的參考资料部份。FreeNX 的官方网站所提供的文献相当有限,正因如此,各个发行版便自行采取自己的方式来实现,结果,虽然大家本质是相同的,但安装方式及安装路径都会有所不同。 :(


先决满足条件
=============
NX library sources (NX 库的源代码)
X11 libraries (X11 库)
sshd server (能运作良好的 sshd 服务器)
expect-5.43 (依赖於 tcl-8.4.14,最新的 tcl-8.5.x 不行)
netcat

头两项是编译期间必需的,而其余三项则是运行期间所需的依赖。至於 sshd 就需要在其配置文档 /etc/sshd/sshd_config 里作一些适当的调整。


下载软件包
===========
FreeNX-0.7.3 from http://freenx.berlios.de/
http://prdownload.berlios.de/freenx/freenx-server-0.7.3.tar.gz

nx-x11
nxagent
nxauth
nxcomp
nxcompext
nxcompshad
nxproxy

以上是最少而必要的包,可从 NoMachine 网站下回来 http://www.nomachine.com/sources.php
我使用的是 3.2.0 版(撰写本文之际,3.3.0 经已俏俏地推出,改正了许多 bugs)


步骤
=======
首先是 NX 的库,先把 NoMachine 下回来的全数解包,然後顺序执行

cd nx-X11
make World
cd ..
cd nxproxy
./configure && make
cd ..

NX 的库及二进可执行文件并没有提供 make install,所以安装需要手动,切换为 root 身分:

cp -a nx-X11/lib/X11/libX11.so* /usr/NX/lib
cp -a nx-X11/lib/Xext/libXext.so* /usr/NX/lib
cp -a nx-X11/lib/Xrender/libXrender.so* /usr/NX/lib
cp -a nxcomp/libXcomp.so* /usr/NX/lib
cp -a nxcompext/libXcompext.so* /usr/NX/lib
cp -a nxcompshad/libXcompshad.so* /usr/NX/lib
cp -a nx-X11/programs/Xserver/nxagent /usr/NX/bin
cp -a nxproxy/nxproxy /usr/NX/bin

接下来是编译 FreeNX 源码

tar xf freenx-server-0.7.3.tar.gz
cd freenx-server-0.7.3
patch -p0 < gentoo-nomachine.diff
make

再用 root 执行

make install
cp -a node.conf.sample /usr/NX/etc/node.conf

完成後,按 http://tim.haegele.info/2008/03/ ... -and-freenx-server/ 里的建议,在 /usr/bin 建立连结。这主意不错,照做:

cd /usr/bin
ln -sf /usr/NX/bin/nxloadconfig .
ln -sf /usr/NX/bin/nxsetup .
ln -sf /usr/NX/bin/nxserver .

以下是我使用的电脑硬件配置:

Sempron64 3000+/1G RAM
LFS 32 bit system
Linux-2.6.27.6
binutils-2.19
gcc-4.3.2
glibc-20080929

硬件以今天角度来看只算普通,在此旨在指出使用较新的内核及 toolchain 都是没有问题的。整个编译过程只需 25 分钟左右。


修正 sshd server 配置文件 (/etc/ssh/sshd_config)
======================================
最容易(及最懒惰)的方法是跟从 Gentoo wiki http://www.gentoo-wiki.info/HOWTO_FreeNX_Server_-_lazy_version

以 root 身分执行
sed -i 's/#PubkeyAuthentication\ yes/PubkeyAuthentication\ yes/' /etc/ssh/sshd_config
sed -i 's/authorized\_keys$/authorized\_keys2/' /etc/ssh/sshd_config
sed -i 's/#AuthorizedKeysFile/AuthorizedKeysFile/' /etc/ssh/sshd_config

基本目的就是删除 "ubkeyAuthentication yes" 的注解,同时也更改及除注 "AuthorizedKeysFile authorized_keys2"

不过,Gentoo wiki 里还建议去更改或设立 AllowGroups 其实是不必要的。别的教程也教人更改或设立 "AllowUsers nx" 等,同样地,这也不是必需的。不设置的话,任何连接都成立,设置了反而令其他不用 nx 但需要 sshd 服务的用户带来麻烦!


部份 Bug 及错误修正:
===================
如不改正,下列将会在设置 nxserver 时发生错误

1. 首先 /usr/NX/lib/libXrender.so.1.2 应建连结到 /usr/NX/lib/libXrender.so.1.2.2

即是以 root 身分执行
ln -s /usr/NX/lib/libXrender.so.1.2.2 /usr/NX/lib/libXrender.so.1.2

还有一些在执行 nxsetup --install 期间的警告,如:
startkde - (比方 KDE 如装在 /opt)在 /usr/bin 里建个 symlink 或者在 node.conf 里修正 startkde 的绝对路径,即是

搜寻
COMMAND_START_KDE=startkde
并改之为
COMMAND_START_KDE=/usr/bin/startkde

2. xterm 或其他如 gnome-session 之类 - 解决方法同上
其他的错误信息可以一概忽略

3. sessreg command not found!
要修正 /usr/NX/etc/node.conf 把 #COMMAND_SESSREG="sessreg" 的 "#" 去掉并
改为 COMMAND_SESSREG="/usr/X11R6/bin/sessreg" (或者 /usr/bin/sessreg 如果是用 Xorg-7.x)


其他注意事项
=============
1. 部份教程会教用户使用特定的端囗来连接 sshd,而不采用标准的 22 号端囗,其实这不是必需的,各位可以自行决定

2. 又有一些教程建议修改 node.conf 以下内容

ENABLE_PASSDB_AUTHENTICATION="1"

然後建立能操作 nx 的用户名及密码,如

/usr/NX/bin/nxserver --adduser <username>
/usr/NX/bin/nxserver --passwd <username>

这也是过时而且不再建议采用的。只要输入

/usr/NX/bin/nxserver --listuser

那麽你便会明白当中原因了。


FreeNX server 的设置
===================
以 root 执行下列命令:

/usr/NX/bin/nxsetup –-install

按照指示进行便可,期间系统会自动建立 nx 用户及其组别,然後会询问是否采用 NoMachine 预设的 key 还是自建一对新的 KeyPair。两者都行,但我会选 "y" 用新建的 KeyPair,心理上觉得比较安全。

生成的钥匙都是存放在 /usr/NX/home/nx/.ssh 里面,而 client.id_dsa.key 将是日後作为连接 FreeNX server 认证 nx 用户的公钥,也就是说,该文件是要发给 NXClient 客户机里安装使用的。这很简单,在 NXClient 导入这把公钥便行。


关於 NX Client
==============
NoMachine 已提供了各平台免费的 NXClient 下载,NXClient 的使用并无限制,用 NoMachine 网站下载的 NXClient 便可以了。

有一点需要注意的,在 Configurations 页下,必需去掉 "Disable encryption of all traffic" 的选项,否则会连线出错,因为默认的 ssh 连线都是加密的,见附图。


结语
====
最後,如一切正常,阁下的 FreeNX server 应该能启动并让远程用户遥控了。附图是 WinXP 平台下遥控远程 Linux 电脑的 KDE session。  :)

预祝各位成功!

d00m3d呈上
(2008年11月23日於 http://www.linuxsir.cn/bbs/thread339139.html)


相关连结
==========
http://tim.haegele.info/2008/03/ ... -and-freenx-server/
这是最有用的安装參考资料,还包括了 Debian 用户的相关指示

http://freenx.berlios.de/
FreeNX 的官方网站

The INSTALL file written by Fabian Franz as provided in FreeNX-0.7.3 package
Fabian Franz 大师编写的 INSTALL 安装文档,包含在 FreeNX-0.7.3 源码包里

http://www.linuxfromscratch.org/hints/downloads/files/freenx.txt
LFS 官方的 Hints(有点过时了),但说明软件包的必要依赖

http://www.gnomeuser.org/documents/howto/nx.html
提供一点 FreeNX 卸载的提示,其余的均属过时

http://www.gentoo-wiki.info/HOWTO_FreeNX_Server_-_lazy_version
带给我用户群组管理的思维冲击

http://en.opensuse.org/FreeNX_Server_HOWTO
这里提供了 SESSREG command not found 找不到命令的解决方法

http://wiki.centos.org/HowTos/FreeNX
提供 sshd 服务器连接的一些有用资讯


其他主流发行版的參考资料
=====================
https://help.ubuntu.com/community/FreeNX
http://wiki.debian.org/freenx
http://www.gentoo-wiki.info/HOWTO_FreeNX_Server
http://wiki.archlinux.org/index.php/FreeNX
http://fedoranews.org/contributors/rick_stout/freenx/

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2008-11-23 23:16:26 | 显示全部楼层
谢谢分享,我一直使用VNC,从来没有使用过freenx。
改天试试看。
回复 支持 反对

使用道具 举报

发表于 2008-11-23 23:29:24 | 显示全部楼层
非常好,一直都关注FreeNX.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-24 19:22:47 | 显示全部楼层
Post by hongfeng;1912678
谢谢分享,我一直使用VNC,从来没有使用过freenx。
改天试试看。

VNC 最大缺点是速度慢,而且一次只能同时连上一个客户端,最些都是 FreeNX 的优势
回复 支持 反对

使用道具 举报

发表于 2008-11-25 17:07:48 | 显示全部楼层
http://www.gentoo-wiki.info/HOWTO_Fr...-_lazy_version
带给我用户群组管理的思维冲击

不解,这篇文章给出的只是简单的用户管理。
毁灭兄能否点拨一下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-25 19:35:04 | 显示全部楼层
深空兄,是这样的:整个安装过程中,编译源码并不难,最难的是要找出正确的配置方式令到系统能运作

附件是我第一次配置的时候长长的错误信息,就是要解决这些问题迫使我到网上四出找资料
  1. Please check your ssh setup:

  2. The following are _examples_ of what you might need to check.

  3.         - Make sure "nx" is one of the AllowUsers in sshd_config.
  4.     (or that the line is outcommented/not there)
  5.         - Make sure "nx" is one of the AllowGroups in sshd_config.
  6.     (or that the line is outcommented/not there)
  7.         - Make sure your sshd allows public key authentication.
  8.         - Make sure your sshd is really running on port 22.
  9.         - Make sure your sshd_config AuthorizedKeysFile in sshd_config is set to authorized_keys2.
  10.     (this should be a filename not a pathname+filename)
  11.   - Make sure you allow ssh on localhost, this could come from some
  12.     restriction of:
  13.       -the tcp wrapper. Then add in /etc/hosts.allow: ALL:localhost
  14.       -the iptables. add to it:
  15.          $ iptables -A INPUT  -i lo -j ACCEPT
  16.          $ iptables -A OUTPUT -o lo -j ACCEPT
  17. root@BlackMesa:/usr/NX#
复制代码
当中这个 nx 用户的身分令我产生了疑问,错误信息说明 sshd_config 里要加入 AllowUsers 及 AllowGroups,但 Gentoo wiki 的懒人版却只有 AllowGroups

好了,按 Gentoo wiki 做,加人 AllowGroups 後马上又出另一问题了,一些原来能 ssh 登陆的用户是无需使用 NX 的,结果加入 AllowGroups 後却无法登陆,於是我马上明白 Gentoo wiki 里新加用户是加在不同组别的用意了

同时我也再想深入一层,原来没有 AllowGroups 的情况下是没有限制的,加了反而有所限制,也就是说什麽人该设什麽组别及应有什麽权利是应该考究的。

这便是"带给我用户群组管理的思维冲击"的意思,不过到最後我还是把 AllowUsers 及 AllowGroups 给省掉了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2009-8-2 15:09:44 | 显示全部楼层
最近看到 NeatX http://code.google.com/p/neatx/
依赖比 FreeNX 少好多,
配置不比 官方 NX server 好多少,一样需要建立 nx 用户,
如果能像 VNC 一样方便安装使用就好啦。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-8-5 22:01:47 | 显示全部楼层
谢谢 NeatX 的资讯,好像没有源码可下似的?

Btw,FreeNX 接受 VNC client 的,客户端应该不会困难。
回复 支持 反对

使用道具 举报

发表于 2009-8-6 00:39:57 | 显示全部楼层
暂时他们还没有稳定版,需要使用 svn checkout
  1. svn checkout http://neatx.googlecode.com/svn/trunk/ neatx-read-only
复制代码


INSTALL 给出的依赖关系
  - OpenSSH
    http://www.openssh.com/portable.html
  - Python 2.4 (or a higher 2.x version)
    http://www.python.org/
  - Pexpect
    http://sourceforge.net/projects/pexpect
  - simplejson Python module
    http://www.undefined.org/python/#simplejson
  - PyGTK+ 2.14 or higher
    http://www.pygtk.org/
  - PyGObject 2.14 or higher
    http://www.pygtk.org/
  - GNU C Compiler
    http://gcc.gnu.org/
  - GNU Autoconf
    http://www.gnu.org/software/autoconf/
  - GNU Automake
    http://www.gnu.org/software/automake/
  - GNU Make
    http://www.gnu.org/software/make/
  - Python Docutils
    http://sourceforge.net/projects/docutils
  - NX Agent 3.3.0
    http://www.nomachine.com/sources
  - Netcat
    http://sourceforge.net/projects/netcat
  - NXClient (or equivalent, only NoMachine's client has been tested though)
    http://www.nomachine.com/select-package-client.php
  - Xauth & Xrdb
    http://xorg.freedesktop.org/releases/individual/app/

与 FreeNX 相比,仅仅依赖 NX 官方的 NX Agent(貌似仅运行时依赖),不需要 NX 官方其他一堆库。
client 直接用 NX 官方二进制版本即可。

懒人的安装方式,不需要 docutils,担心安全性的请用普通用户安装,此时安装第二份 python 是必须的。
  1. export LD_LIBRARY_PATH=${HOME}/lib
  2. export PKG_CONFIG_PATH=${HOME}/lib/pkgconfig
  3. export PATH=${HOME}/bin:${PATH}


  4. cd
  5. wget -c http://www.python.org/ftp/python/2.6.2/Python-2.6.2.tar.bz2
  6. tar -xvf Python-2.6.2.tar.bz2
  7. cd Python-2.6.2/
  8. ./configure --prefix=${HOME}
  9. make
  10. make install


  11. [color="Red"]#cd
  12. #wget -c http://superb-west.dl.sourceforge.net/sourceforge/docutils/docutils-0.5.tar.gz
  13. [/color]
  14. cd
  15. svn checkout http://neatx.googlecode.com/svn/trunk/ neatx-read-only
  16. cd neatx-read-only/
  17. cd neatx/
  18. ./autogen.sh
  19. ./configure --prefix=${HOME}
  20. [color="Red"]sed -i 's@dochtml = $(patsubst %.rst,%.html,$(docrst))@#&@g' Makefile[/color]
  21. make
  22. make install
复制代码


PS: 如果 NX client 可以直接连接 VNC server 且提供 NX 带来的好处,那就不折腾了。

附件是刚刚检出的源代码。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2009-9-26 21:41:59 | 显示全部楼层
Post by d00m3d;1912274
作者:d00m3d
来自:LinuxSir.Org
摘要:本文主要讲述如何利用 FreeNX 及 NoMachine NX 库的源码编译出 FreeNX Server 作为远程遥控的桥梁。

本文欢迎转载,敬请注明原文出处。


您好,我最近编译freenx遇到问题,想向大家请教一下。
按照本文步骤编译,一切都很顺利。
在windows下使用nomachine client连接服务器,所有账户到可以登录,但只有root权限的账户登录以后打开控制台可以输入字符,其他账户的用户敲字母、数字没有反应,但是可以接受小键盘区的按键输入。
大家有遇到这种情况吗?

我使用的是freeNX-0.7.3版本,nomachine的库都是下载最新版本的。
我的服务器版本是redhat linux 5.1(2.6.18-53.el5xen #1 SMP Wed Oct 10 17:06:12 EDT 2007 i686 i686 i386 GNU/Linux)
gcc versioin:4.1.2
binutils version :2.17.50.0.6-5.e15
glibc version:2.5-18
都是安装系统时候自带的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表