今天试着基于 iThinkX 平台编译了一份 iTALC 网络教室平台,大概过程如下:
准备工作,解决依赖:
我 先下了一份git 版的,用的是 cmake 来编译的,结果,发现,这个软件声称需要 Linux-PAM 的支持,但是在官方说明文档中并没提到这个支持,于是,我就试着下了一份 Linux-PAM ,经过几次编译调试,最终用的以下配置命令通过 Linux-PAM 的编译:
cd /tmp
wget http://ftp.de.debian.org/debian/pool/main/p/pam/pam_1.1.1.orig.tar.gz
tar zxvf pam_1.1.1.orig.tar.gz
cd Linux-PAM-1.1.1
./configure \
--prefix=/usr \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--docdir=/usr/doc \
--mandir=/usr/man \
--libdir=/usr/lib \
--libexecdir=/usr/libexec \
--includedir=/usr/include/pam \
--infodir=/usr/info \
--sysconfdir=/etc/pam \
--build=i486-slackware-linux \
--with-xauth
make
make install
make DESTDIR=/tmp/Linux-PAM-1.1.1-iThinkX install
cd /usr/include
ln -sf pam securty
cd /tmp/Linux-PAM-1.1.1-iThinkX/usr/include/
ln -sf pam securty
cd /tmp
mksquashfs Linux-PAM-1.1.1-iThinkX Linux-PAM-1.1.1-iThinkX.xzm -b 512k -Xbcj x86
--includedir=/usr/include/pam 这行犹其要注意,如果不是指定这个地方,编译 iTALC 时,还是会报告找不到 pam 组件,上面工作做完后,就可以开始编译 iTALC 了
编译 iTALC :
经过实际测试,我的运气不佳,事实证明,官方今天的 git 版源码有严重问题,所以,没办法,又跑到官方下了一份正式发行版来编译:
cd /tmp
wget http://ncu.dl.sourceforge.net/project/italc/italc/1.0.13/italc-1.0.13.tar.bz2
tar jxvf italc-1.0.13.tar.bz2
cd italc-1.0.13
./configure \
--prefix=/usr \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--docdir=/usr/doc \
--mandir=/usr/man \
--libdir=/usr/lib \
--libexecdir=/usr/libexec \
--includedir=/usr/include \
--infodir=/usr/info \
--sysconfdir=/etc/italc \
--build=i486-slackware-linux \
--with-linux \
--with-x
make
make install
make DESTDIR=/tmp/italc-1.0.13-iThinkX install
cd /tmp
mksquashfs italc-1.0.13-iThinkX italc-1.0.13-iThinkX.xzm -b 512k -Xbcj x86
OK,至此,完成了 iTALC 的安装部份。
使用:
其实我试着用了一下,发现,这个其实就是一个远程终端软件,用法上大概是这样的:
程序分为两个可执行文件,分别是 ica 和 italc ,其中,ica 为客户端运行的, italc 为主控端运行
要想要启用客户端,直接运行是不行的,因为 iTALC 要求有配对密钥才能执行,所以,首先要生成密钥,iTALC 默认所有的密钥都存放在下面这两个地方:
/etc/italc/keys/private/{username}/key
/etc/italc/keys/public/{username}/key
请注意!一开始我也没搞明白,后来测试了才知道,这最后一个 key 就是 key 文件名。
另外 {username} 就是创建KEY时的用户名。
多的不说了,下面是创建KEY的命令:
比如说,我创建一个名叫 teacher 的用户
mkdir -p /etc/italc/keys/{private,public}/teacher
ica -role teacher -createkeypair /etc/italc/keys/private/teacher/key /etc/italc/keys/public/teacher/key
这样,就同时建立了 teacher 的私有key和公共key,是不是很麻烦,呵呵,别急,最后我写个脚本给你。
不过官方文档说明中,似乎比我的简单多了,只不过我是保守派,呵呵,所以写得比较明确。官方文档中写,只需要这样执行就可以创建KEY了。
ica -role teacher -createkeypair
不过我是看官方 man 手册看来的,所以写成了上面那种麻烦的写法。
创建完KEY后,就可以启动客户端程序了,启动方法如下:
比如,我启动 teacher 这个用户的客户端:
ica -role teacher
呵呵,简单吧,启动起来以后,就可以在另一台机子上执行 italc 程序了,启动命令如下:
italc -rctrl 客户机IP地址
这时,你就可以对客户机进行操作了,有点麻烦吧。没关系,官方给了我们一个随X桌面自动启动的方法:
引用
On clients you have to make sure that the iTALC-Client-Application (ICA),
provided by package italc, is being started when either X is started or a
user logs on.
There're several methods for doing this (this is why it's not done
automatically when installing the package):
1. add the appropriate command ("ica &") to /etc/X11/xinit/xinitrc.
This method isn't recommend, because then ICA runs with the user's
privileges -> the user is able to kill ICA and get out of teacher's
control.
2. add "ica &" to /etc/X11/xdm/Xsetup. On some systems, this
doesn't take effect, so either edit /etc/kde3/kdm/Xsetup or
/etc/X11/gdm/Xsetup
You can easily test whether all is fine by running telnet on port 5900 of the
according compter.
example:
telnet 192.168.1.2 5900
呵呵,iThinkX 系统都用的是KDE,所以上面的东东只要添加到这个文件就行了:
/etc/X11/xinit/xinitrc.kde
在这个文件最后面添加一行
ica &
我想,它反正是要求能随系统启动嘛,用户模式也可以呀,所以,可以考虑在 /root/.kde/Autostart 中添加启动脚本嘛。
脚本内容可以这样写,比如,脚本名叫 ica-start
ica-start
#!/bin/sh
/usr/bin/ica &
够简单吧。
完成!
最后建议写个KEY脚本
比如,脚本名叫 ica-keymk
touch /usr/bin/ica-keymk
vi /usr/bin/ica-keymk
脚本内容:
#!/bin/sh
KeyUser="$1"
if [ ! "$KeyUser" = "" ]; then
mkdir -p /etc/italc/keys/{private,public}/"$KeyUser"
ica -role "$KeyUser" -createkeypair /etc/italc/keys/private/"$KeyUser"/key /etc/italc/keys/public/"$KeyUser"/key
echo " The [$KeyUser] users key create successful"
else
echo " Sorry! you must be type a username follow the command "
echo " Useage: $0 username "
fi
写完后,存盘退出然后:
chmod +x /usr/bin/ica-keymk
脚本的用法就简单了,不用写一长串命令了,只要写如下格式就行,比如创建 teacher 的KEY:
ica-keymk teacher
OK完成,KEY就创建完毕了。简单吧
写得累死我了!!!
补充一下猜测
由于没有环境测试,只有一台机器,所以,不是很确定这个所谓的KEY和用户的关系,但是我看了一下官方文档,我是这样猜测的:
key 与当前客户机的登录用户名对应,所以,用户名是啥,KEY名称也就是啥,这样的话,在同一台机器上,学生账号与教师账号就可以分开了,所以官方说明文档中有比较明确的要求:
要求教师的KEY账号设为本账号可操作,其它账号则没有权限。
所以,官方说明文档中,客户机的启动方式也较为简单,无需指定用哪个 role 来启动,只需简单地启动 ica 即可:
ica &
呵呵,以上仅为猜测,没有环境测试,仅供参考!