10/29/2006

永中office 2007正式版试用

今天,下了正式版试用版。并在gentoo下安装试用。

和beta相比,有几处进步:
安装过程中文不乱码;
正确地生成了快捷方式;
修复了剪贴板BUG;

存在的问题:
安装过程最后仍然异常退出,与beta版相同;
使用时容易异常崩溃,尤其是在scim启动时。

总体来说,非常优秀。

相关链接:
beta剪切板补丁
永中集成Office 2007 beta精简版安装

10/24/2006

2006年10月常见linux桌面发行版关注度比较
































































桌面发行版google关注度baidu关注度诞生时间
Debian150,000,0001,230,0001993
SUSE64,300,000818,0001998
Ubuntu63,300,0001,140,0002004
Fedora Core47,900,000350,0002003
Gentoo30,600,000310,000?
Mandriva23,100,000101,0002005
Slackware20,600,000178,0001993
红旗Linux1,070,000721,0001999
MagicLinux142,00033,5002004?

采集时间:Tue Oct 24 13:15:45 CST 2006

今年九月份,我发了第一个关注度比较表格。和九月份相比,我们看到gentoo向上串了两位,Gentoo和Slackware对掉了位置;而在国内,情况前三名的关注度都几近翻翻,优势越来越明显。
相关网址:
http://herofit.blogspot.com/2006/09/2006linux.html

10/22/2006

gentoo安装笔记

我觉得应该把主流的linux版本都试一下。前些天无意到gentoo区看了几篇置顶帖,有些触动,后来又去gentoo官网看了一些安装文档,于是决定装个gentoo试试。第一次安装,还是准备不足,碰到很多麻烦。一路摸索过来,虽然还有一些问题没有解决,现在终于得到一个可用的系统了。
下面简单写一下我经历的安装过程:

我先到http://www.gentoo.org/main/en/mirrors.xml挑了一个镜像站点,然后下载livecd-i686- installer-2006.1.iso,我还下了文档中提到的stage3(其实不用下)。 检验下到的iso镜像,无误后刻成光盘。

用光盘启动电脑,我不知道竟然是启动到GUI模式的(这下我才明白为什么叫livecd)。

等10 秒,默认以gentoo登陆。 点击桌面上安装图标启动安装程序(我启动的是gtk+的),然后进行一系列选择。很遗憾,我第一步就选错了,安装模式选成了默认的。于是每次到17步的install都会出现一大堆问题。主要是分区出的问题,因为我在安装前把系统中放有stage3文档的分区挂了上来,因为有一步需要选择stage3文件的位置。

几次失败后,我决定先在安装程序外分完区,再进行安装。 按ctrl+alt+f1换到终端1,看到已经以root登陆。
passwd

换一个root密码。然后按ctrl+alt+f7回到GUI下。
su

切换到root身份。
fdisk /dev/hda

开始分区。原来装ubuntu时交换空间太小了,待机后经常起不来。于是先把swap及它的后一个分区删掉,然后建立520MB的linux分区,此处为 /dev/hda9;再建立一个100MB的linux分区,此处为/dev/hda10;最后把剩下的划为/dev/hda11,大小为7个G左右。
重启,获得root权限后开始建立文件系统。
mkswap /dev/hda9
mkfs.ext2 /dev/hda10
mkfs.reiserfs /dev/hda11

当时第一步忘了,走了些弯路。

分好了,重新运行安装程序,老说设置路由失败。 后来在root运行安装程序,同样出现这个问题。设成dhcp后又出现其它的问题。

没办法,只好看光盘上的文档。 突然看到pdf中提到一句话,第一步应该选择“network-less",于是按它说的做。由于是试验性的,而且文档及安装程序中提示“不联机,可能无法选择一些软件包”,所以在后面的选择软件包的时候我什么没有选。

挂载点选择时,不小心把想要的/mnt/hda1写成了/dev/hda1,结果又出错好几回。郁闷。

后来总算把gentoo装上了。 一重启我都郁闷了,只有字符界面?! 到现在我也一直在想,是我当时没把x11,gnome等选上的原因,还是这就是gentoo的特色(谁来解释一下?)。

不管那么多了,开始简单试一试先。
先看一下能上网不?很遗憾,不能,根据gentoo_network_configuration.txt的说明,把/etc/conf.d/net改成类似下面的样子。
modules=( "ifconfig" )
config_eth0=( "219.216.xxx.25 netmask 255.255.255.0" )
routes_eth0=(
"default via 219.216.xxx.254" # IPv4 default route
)
/etc/init.d/eth0.net start

提示没有网络设备。
手动加载网卡驱动。
modprobe 8139cp
modprobe 8139too

这下网卡驱动起来了。避免麻烦,我将两个模块都加入了/etc/modules.autoload.d/kernel-2.6,让系统启动时自动加载(后面发现,8139cp这个用不着)。
/etc/init.d/eth0.net restart

这下可以上网了。

接着试了一下光驱,手动挂载可以用,U盘也一样。

现在,开始一些关键性操作了。
先是编辑/etc/make.conf。
由于是教育网的,加入
GENTOO_MIRRORS="ftp://ftp3.tsinghua.edu.cn/mirror/gentoo ftp://ftp.sjtu.edu.cn/gentoo"
SYNC="rsync://ftp3.tsinghua.edu.cn/gentoo/gentoo-portage"

可以加入多个镜像站点,之间用空格隔开即可。
编辑USE参数,这里我只是简单地把ipv6改成了-ipv6。
emerge --sync

这步相当于升级软件列表,第一次可能需要五分钟左右。
系统默认使用nano作为编辑器,非常不习惯。先把vim装上
emerge vim

现在开始升级内核。
emerge genkernel

genkernel是编译内核的工具,非常方便。一会儿要用。
下载推荐的内核源码。这里用推荐的gentoo-sources内核。
emerge gentoo-sources

用genkernel编译内核,如果你以前有内核的.config文件,可以用 --kernel-file=XX来指定。如果你想让genkernel编译后自动在grub中加入相应选项,应该将 /etc/genkernel.conf中的BOOTLOADER="grub"前的注释去掉。默认情况下,genkernel会将menuconfig 生成的配置文件存在/etc/kernels/文件夹下,再次编译时应该很有用。
genkernel --menuconfig all

选择适当的编译选项,把没用的去掉。把必须要的加上,比如我就把8139的网卡编译到内核里了。
由于编译期间什么也不输出,为了确保genkernel在工作。你可以再开一个终端用top查看cpu占用率或有否cc,make等程序在运行。
编译完后,手动检查/boot/grub/menu.lst中是否加入新内核的项目,没有则手动加上。
重启,用新内核启动。
shutdown -r now

或用ctrl+alt+delete重启。

用新内核启动。
我这里情况一切正常。不过/etc/modules.autoload.d/kernel-2.6原来加入的东西现在要去掉了,否则会用一个错误提示。

第一次系统彻底升级。
emerge --pretend --update --deep world|less

先用less看一下需要升级多少东西。
下载升级包。
emerge --update --deep world --fetchonly

先下载。有很多软件要装时,我习惯先下载完。
这时候出现了很大的问题。因为x11-misc/utils-macros需要从freedesktop.org下载,而我这里是教育网,无法直接访问。因为习惯了ubuntu源的概念,以为所有的软件包都是在源里的。因此我还一度认为这是gentoo源的bug,不过我不是唯一这么认为的人,因为官方网站上就有人把这个问题当bug提交上去了。后来到linuxsir发帖求助。通过大家帮助找到了解决方法--是用代理。
export http_proxy="ip:port"

然后就可以完成下载了。估计是emerge用的wget用了这个代理。
注意一个问题,如果把上面的export去掉,用set是可以看到http_proxy的,但很明显,wget看不到。不用代理时记得
unset http_proxy

升级。
emerge --update --deep world

把--fetchonly去掉就可以了。这里可能需要不少时间,特别是gcc,glic等。我发现gcc把对fortran的支持编上了,而我几乎没可能用到,下次编我会研究一下怎么让它不编上fortran,不知道加上-fortran行不行。
上面的过程最后可能会提示需要改写一些conf文件。这时候可以用etc-update帮忙。
etc-update

这个工具会试着自动解决问题,当它不能时,会要求你手动编辑。像这里的情况,我们要保留自己编辑过的/etc/conf.d/net,否则又得重新配置了。注意etc-update可能会经常用到。

现在,装上x window吧。
早就想xfce4了,今天就装这个(其实是考虑这个能小的,不用费太多时间)。
emerge xfce |less

看一下要装多少软件。好像是一百多个。多数是基本x window系统。
emerge xfce --fetchonly

下载先。
emerge xfce

安装。搞定后,就可以用startxfce启动xfce环境了。还有,我现在是在ubuntu里,不记得上面的命令里应该是xfce还是xfce4了,大家自己试。
xfce用的gtk+,所以一切看上去都挺像gnome的。
之后我又想把KDE或gnome装上,对比后KDE需要92个包,而gnome需要两百多个。本着经济的原则,我选择了KDE。下载很快就完成,但KDE的整个编译安装用了我9个小时。崩溃了!也直接造成我放弃安装gnome(下都下完了)。
试图运行startkde但没成功,不过运行starx后起来了xterm还是qterm什么的,在里面可以运行kdesktop类似命令启动起来。本来想换用gdm或kdm的,但一时没什么方向(当时都不知道查man X,也不知道gentoo.linuxsir.org上的文档版块有很多好东西),但xdm倒是很轻松的用上了。
rc-update add xdm default

图形登陆这些不是主要矛盾。 但我发现我必须安装firefox,因为xfce4下的那个kde下的全能家伙(k*)并不能显示所有的中文(字体就别提了),而且也几乎用不了ajax的东西。
emerge mozilla-firefox --fetch
emerge mozilla-firefox

这下所有中文都能显示了(字体还是糟糕)。下面安装flash插件。
emerge netscape-flash

一句话就搞定。
下面开始新建普通权限用户gahlong。
useradd gahlong
passwd gahlong
由于,我的gentoo用的是和ubuntu同一个分区作为/home,我担心gentoo把ubuntu的/home/ahlong覆盖了,所以我取名叫gahlong(后面发现这个担心没必要)。
用gahlong登陆提示没主目录。
mkdir /home/gahlong
usermod -d /home/gahlong gahlong

本来还准备chown的,但usermod好像已经帮我们做了。这下登陆正常了,不过还是有点不爽,我要改登陆名。
usermod -l ahlong gahlong

同样地,usermod也改了/home/gahlong为ahlong的了。
安装xmms。到现在还没有听到电脑出声呢。
emerge xmms

什么声音也不出。看起来声卡得配一下。编译内核时我已经把alsa编过内核的,还需要干什么呢?
emerge --search alsa|less

我把搜到的都往上装。
emerge alsa-drivers alsa-utils

编译alsa-drivers时提示内核已经有了,自动跳过。装上后一个后。可以开始配置声卡了。
alsaconf

选择就是了。
alsamixer

设置音量什么,不过好像不是必须要运行。
这样之后,xmms正常工作了。
如果普通用户不能使用声卡。运行
usermod -G audio -a ahlong
将用户加入audio组再重新登陆就可以了。
我要看电影,装mplayer。
emerge mplayer

一些包是从sf.net下的,所以又要用代理。
不过下到Blue皮肤时,提示验证码不对。试了几次都不对,这下郁闷了。后来看了linuxsir的gentoo解决之道。运行
emerge --sync

问题解决。顺便装上了mplayer。看来gentoo真是发展神速。差不多每天更新,源里都删掉很多又加入很多。
不过用mplayer看电影,放大或全屏时,掉帧相当严重,几乎不能看。mplayer也输出“你的机器太慢了”。试了几种输出驱动都没有改善。在ubuntu下我用的是gl2输出……对了,得装ATI驱动。

我下面的计划是安装显卡驱动,接着装WQY字体,接着把gdm什么的搞定。
安装ATI显卡驱动。
emerge ati-drivers

默认装上的是8.25.18,不过源里8.29.6也已经有了。一切都很顺利。不过运行
aticonfig --initial

有些问题,提示没有xorg.conf,去/etc/X11下看下,果然没有这个东西。我就直接拷了ubuntu的来用,居然也能用。
不过后面知道,这个时候应该做的是
X -configure

然后再aticonfig --inital
检查3D加速是否安装成功。
fglrxinfo

结果还是mesa,而且mplayer的表现也没有任何提升(重启后也是)。
eselect opengl list

发现系统选个还是mesa,于是
eselect opengl set ati

强制选成ati,除了list里变成了ati,没有任何实质性改善。不仅如此,fglrxinfo还不能给出相关信息了。
后面又做了很多尝试,比如说卸掉驱动,再手动运行ati*.run安装等等。
在网上找寻了很久,再结合X启动时的错误信息(一直被我忽略)。
终于搞清楚,是ATI和XOrg7.1的配合有问题,具体说是和AIGLX有些问题。网上很多人都遇到了这个问题,不过好像都没有实质解决办法。没办法,只能等fglrx或Xorg的下一版本了。不过这个问题幸好只是影响到3D加速,不影响2D加速。

不过看电影都不能流畅,我没信心再用下去了,还是等这个问题解决了再用了。虽然ATI大部分显卡都可以用开源驱动,但好像有点复杂,而且很可能从Xorg开始都需要重新编译(从gentoo文档上看的),耗不起那个时间了。

另外想提的是,emerge或者说portage挺先进的。和apt-get相比一个明显的优势就是可以多个emerge一起完全正常地运行。

gentoo真不错!推荐大家都试一下!

相关网址:
http://www.gentoo.org./doc/en/handbook/handbook-x86.xml
gentoo历史
gentoo常用镜像
gentoo中文文档(真后悔安装前没看)

10/10/2006

linux下文件的切割与合并

切割合并文件在linux下用split和cat就可以完成。下面举些实例进行说明。
1.文件切割
文件切割模式分为两种:
文本文件;
二进制模式。
1.1文本模式
文本模式只适用于文本文件,用这种模式切割后的每个文件都是可读的。文本模式又分为两种:
按最大文件大小切割;
按文本行数切割。
1.1.1最大文件大小切割
split -C 5k duanxin split
将文本文件duanxin按每块最大5k的大小进行切割,不打碎行。输出文件名类似splitaa, splitab……
1.1.2 按文本行数切割
split -l 100 duanxin split
每个分块100行,不考虑大小。日志分析时应该有用。


1.2 二进制模式
split -b 5k duanxin split
每个分块(当然,最后一个不保证)大小都是5k,基本不可读。任何类型文件都可以用这种切割模式。

2.文件合并
cat split* >newduanxin
不管用什么方式切割,合并方法不变。

3.其它
split可以用-a选项指定输出文件名的长度。如
split -l 100 -a 3 duanxin split
则输出文件出类似于splitaaa,splitaab。不指定时默认为2。
用-b或-C指定分块大小时,可用的单位有,b for 512bytes, k for 1Kbytes, m for 1 Megbytes.

参考资料
man split


10/09/2006

为firefox添加搜索引挚


最近发现用百度的次数越来越多了,可每次搜索都要打开网页太麻烦了。
于是想把百度引挚加到firefox的搜索框列表里。怎么加呢?
其实,搜索配置都在 /usr/share/firefox/searchplugin文件夹下,每个搜索引挚都是一个.src加上一个图片文件。另外,放在$HOME/.mozilla/firefox也可以。
于是就模仿着写了一个百度的,成功了。
效果见图。
如果大家懒得动手,就点击这里直接安装吧。

另外透露点技巧,ctrl+K切换焦点到搜索框上,ctrl+UP或DOWN可以选择要用的搜索引挚。输入关键字按回车即开始搜索。

参考资料:
http://wxforum.shadonet.com/

10/05/2006

多机单网卡共享上网--linux技巧

问题背景
学校采用透明代理上网方法。每个户头每月15元,流量限为20G。以前是8人用一个路由器上网,后来不知什么缘故,采用路由器共享上网方式变得非常不稳定(怀疑学校做了什么手脚?)。于是只好寻找其它途径。学校还有另外一种上网方式,即网通的100元包月上网卡,为了获得最大的利益,网通通过技术手段限制,使得不能用路由器共享上网。以前听说能够使用双网卡,实现多机上网,但实践多次,均失败了。

解决方案
利用linux内核的数据转发,及一块网卡绑定多个IP,NAT地址转换等特性实现。

网络架构
两个寝室共8台电脑,网络架构如下图所示。
交换器2其实是原来的路由器,只是WAN口空着,把外网与其它客户机一起接到LAN口上。
图中结构只是本寝室的实际情况,不表示一定要求这样。

服务端设置
首先,确保内核打开ip转发功能。
cat /proc/sys/net/ipv4/ip_forward
结果为1,则表示已经打开。为0则编辑/etc/sysctl.conf文件,将其中的net/ipv4/ip_forward=1前的#号删去。重启使改动生效。也可以直接用类似
echo "1" > /proc/sys/net/ipv4/ip_forward
的语句来使改动立即生效。
添加内网IP
ifconfig eth0:1 192.168.0.1 broadcast 192.168.0.255 netmask 255.255.255.0
添加转发列表
iptables -F

iptables -F -t nat
此两步刷新缓存,大部分情况下可省略。

iptables -P FORWARD DROP

iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT

iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to <外网IP>

<外网IP>请作适当替换。
添加完后用iptables -L应该可以看到添加的一些条目。到此服务端设置完成。

客户端设置
IP:192.168.0.xxx
网关:192.168.0.1(上面设的内网IP)
DNS与服务端相同。

实际效果
客户端上QQ,PPLIVE,IE,以及firefox等工作正常。基本上可以说,采用TCP,UDP的程序均工作正常。但ICMP不正常(现象是不能ping通)。这时,客户端在外网看来即是服务端。
服务端和成为服务器前相同,无异样。CPU占用率不高。

存在的问题
不知如何控制转发速度。

其它
服务端在ubuntu6.06上调试通过。
指令多需要root权限,请注意。
建议将配置指令写到脚本中。
水平有限,谬误之处还请包涵。

参考资料:
打开转发功能
lsyer兄在红旗linux下的设置

Linux单网卡绑多IP

C语言标准函数库(C Standard Library)

标准C函数手册,写C程序时用的着。
CStdLib.html

相关地址:
www.utas.edu.au

10/01/2006

linux下PDF中文乱码问题--ubuntu一句话技巧

sudo apt-get install xpdf-chinese-simplified
xpdf是linux下常用的PDF阅读器,ubuntu默认装上了,但看中文文件档还有些问题。按上面的代码装上相应的包就可以了。繁体中文,还有日文都有相应的包。