适合旧电脑的Mini Linux选择

Written by admin on 五月 22, 2009

最近在研究适合低配置电脑的Mini Linux,我手头有一台P2 233+128M+8.4G配置的“破”电脑,想寻找适合其运行的Linux系统,需要Xwin、浏览网页、中文支持、文字处理等最基本操作。

众所周知,现在主流的Linux发行版比如Ubuntu、Federa等对于旧电脑来说也是非常庞大的系统,低配硬件不足以支持其运行Xwin等,所以我把目光转向了Mini Linux,选择对象有Puppy、Deli、slitaz。

经过初步考察发现三者均能很好的适应低配置硬件,但是Deli已经停止开发一段时间了,slitaz对于中文支持不是很好,所以仅剩下Puppy了。

我在以后会发布一些关于使用Puppy的经验与大家分享。

Subscribe to my RSS feed

使用更新命令yum时出现故障的解决方法

Written by admin on 五月 15, 2009

近日在运行系统更新命令yum update时候出现了如下错误提示:
Component: pirut
Summary: TBe8ae967a sqlitesack.py:94:_read_db_obj:TypeError: unsubscriptable object

Traceback (most recent call last):
  File “/usr/sbin/pup”, line 407, in _apply
    output = self.applyChanges(self.mainwin)
  File “/usr/lib/python2.4/site-packages/pirut/__init__.py”, line 813, in applyChanges
    self.checkDeps(mainwin)
  File “/usr/lib/python2.4/site-packages/pirut/__init__.py”, line 550, in checkDeps
    (result, msgs) = self.buildTransaction()
  File “/usr/lib/python2.4/site-packages/yum/__init__.py”, line 647, in buildTransaction
    (rescode, restring) = self.resolveDeps()
  File “/usr/lib/python2.4/site-packages/yum/depsolve.py”, line 704, in resolveDeps
    for po, dep in self._checkFileRequires():
  File “/usr/lib/python2.4/site-packages/yum/depsolve.py”, line 939, in _checkFileRequires
    if not self.tsInfo.getOldProvides(filename) and not self.tsInfo.getNewProvides(filename):
  File “/usr/lib/python2.4/site-packages/yum/transactioninfo.py”, line 414, in getNewProvides
    for pkg, hits in self.pkgSack.getProvides(name, flag, version).iteritems():
  File “/usr/lib/python2.4/site-packages/yum/packageSack.py”, line 300, in getProvides
    return self._computeAggregateDictResult(”getProvides”, name, flags, version)
  File “/usr/lib/python2.4/site-packages/yum/packageSack.py”, line 470, in _computeAggregateDictResult
    sackResult = apply(method, args)
  File “/usr/lib/python2.4/site-packages/yum/sqlitesack.py”, line 861, in getProvides
    return self._search(”provides”, name, flags, version)
  File “/usr/lib/python2.4/site-packages/yum/sqlitesack.py”, line 43, in newFunc
    return func(*args, **kwargs)
  File “/usr/lib/python2.4/site-packages/yum/sqlitesack.py”, line 837, in _search
    for pkg in self.searchFiles(name, strict=True):
  File “/usr/lib/python2.4/site-packages/yum/sqlitesack.py”, line 43, in newFunc
    return func(*args, **kwargs)
  File “/usr/lib/python2.4/site-packages/yum/sqlitesack.py”, line 586, in searchFiles
    self._sql_pkgKey2po(rep, cur, pkgs)
  File “/usr/lib/python2.4/site-packages/yum/sqlitesack.py”, line 470, in _sql_pkgKey2po
    pkg = self._packageByKey(repo, ob['pkgKey'])
  File “/usr/lib/python2.4/site-packages/yum/sqlitesack.py”, line 413, in _packageByKey
    po = self.pc(repo, cur.fetchone())
  File “/usr/lib/python2.4/site-packages/yum/sqlitesack.py”, line 68, in __init__
    self._read_db_obj(db_obj)
  File “/usr/lib/python2.4/site-packages/yum/sqlitesack.py”, line 94, in _read_db_obj
    setattr(self, item, _share_data(db_obj[item]))
TypeError: unsubscriptable object

Local variables in innermost frame:
item: name
db_obj: None

这个问题是由于yum的原数据损坏导致的,需要先删除原数据和数据库缓存,然后重建,问题即可解决
解决方法,依次运行以下命令:

yum clean metadata
yum clean dbcache
yum makecache

Subscribe to my RSS feed

Centos下telnet服务的安装

Written by admin on 四月 3, 2009

本人linux环境:CentOS 5.3

在终端中使用 #rpm -q telnet 和 #rpm -q telnet-server 命令查询是否安装了telnet的client和server端。
一般client默认已经安装了,但是server端需要安装,安装命令:#yum install telnet-server

安装完毕后,需要开启服务:#gedit /etc/xinetd.d/telnet
将其中的disable = yes 的 yes 改成 no

开机启动设置: #gedit /etc/rc.d/rc.local
添加: /sbin/service xinetd start

接下来激活telnet并测试是否安装成功,运行命令: #/sbin/service xinetd restart

测试服务,找一台其他机器,输入命令:telnet IP
如果配置正确,系统提示输入远程机器的用户名和密码 (默认情况root用户是不能通过telnet直接登录的)
Login:
Password:

为了安全起见,我们需要改变端口,限制登录ip。
改变端口:
命令:#gedit /etc/services
找到如下内容:
telnet 23/tcp
telnet 23/udp
将端口改成你希望的,比如:
telnet 1000/tcp
telnet 1000/udp

限制登录ip:
命令:#gedit /etc/xinetd.d/telnet
修改成如下格式:
service telnet
{
disable     = no  #激活 telnet 服务,no
bind       = 192.168.1.1 #本机ip
only_from    = 192.168.0.0/16  #只允许 192.168.0.0 ~ 192.168.255.255 这个网段进入
only_from    = .edu.cn  #只有教育网才能进入!
no_access    = 210.45.160.{115,116}  #这两个ip不可登陆
access_times  = 8:00-12:00 20:00-23:59  # 每天只有这两个时间段开放服务
……
}

设置完毕,重新启动telnet服务,命令:#/sbin/service xinetd restart

端口修改的话,命令格式:telnet ip port (注意ip与port之间没有冒号,例如:telnet 192.168.1.1 1000)

Subscribe to my RSS feed

Apache下实现域名301跳转

Written by admin on 二月 10, 2009

准备把域名www.domain1.com 301跳转到www.domain2.com

在apache的域名配置文件(虚拟主机配置文件中),比如目录:/etc/httpd/conf.d/ 目录下的abc.conf是配置文件。

打开此文件

在其中设置:

<VirtualHost *:80>
  ServerName www.domain1.com
  RedirectMatch Permanent ^/(.*) http://www.domain2.com/$1  
</VirtualHost>

保存后重起apache服务器即可。

Subscribe to my RSS feed

为PHP增加mbstring扩展

Written by admin on 十一月 7, 2008

最近安装drupal,安装完毕总是提示需要PHP mbstring扩展,以便处理大字符集(Unicode 库)。

本人安装的是CentOS5.2,所以直接在root权限下运行 yum install php-mbstring

安装完毕重新启动apache。

但安装过程中,如果php有更新,那么原来的zend optimizer需要重新安装。

安装过程参考可以参见我之前的文章。

安装完成后,重新启动apache,运行php -v 发现zend optimizer和eAccelerator和Zend Extension的安装信息未出现。

并且发现/etc目录下的php.ini未更新,但/usr/local/Zend/etc下的php.ini是刚更新的。

于是备份/etc/php.ini,将/usr/local/Zend/etc/php.ini覆盖到/etc目录下,

运行命令 /usr/sbin/apachectl restart 重新启动apache后再运行php -v,可看见zend optimizer和eAccelerator和Zend Extension的信息了。

Subscribe to my RSS feed

linux简单设置samba,提供windows共享

Written by admin on 九月 2, 2008

首先,启动samba服务,并且确保linux启动时自动启动。

我使用centos5.2,默认安装了samba,安装目录/etc/samba

其中有2个配置文件:smb.conf和smbusers,主要修改也在这两个文件中。
另外还有记录密码的passdb.tdb,这个文件不需要手动设置。

创建samba用户:
由于我们设置的是以“用户”为验证模式,所以该帐户必须是linux系统帐户中存在的。

先创建一个新用户(linux用户),比如linuxsmb,账户目录/home/linuxsmb。
帐户可操作自己的用户目录,所以共享也设置在这个目录中,否则如果设置在其他用户目录/home/user1或者其他目录时,会有windows共享时无权操作的问题。

随后建立samba用户:smbpasswd -a linuxsmb
设置共享密码后即可。

随后打开smbusers文件,会看到其中增加了一行 linuxsmb = linuxsmb

然后修改smb.conf文件:

在[global]中设置工作组和服务器信息:
workgroup = mygroup
server string = Samba Server Version %v

共享目录设置,一般在文件最后部分:
[smbtest] //共享名称,可以是任意
    path = /home/linuxsmb  //共享目录,应该是linuxsmb用户有权操作的目录
    writeable = yes  //写权限
    browseable = yes   //可见
    guest account = linuxsmb  //用户访问帐户

重新启动samba,使设置生效。

然后在windows中访问共享,比如//192.168.1.100(samba服务器ip),会要求输入samba帐户的用户名和密码,此处的我们填写linuxsmb帐户用户名和密码。如果能够访问,那么就设置成功了。

——————————
smbpasswd关于samba帐户的操作:
smbpasswd -a USERNAME 增加用户
smbpasswd -x USERNAME 删除用户
smbpasswd -d username 禁用用户

Subscribe to my RSS feed

CentOS下删除无依赖关系软件包方法

Written by admin on 八月 2, 2008

由于经常安装和卸载软件后,会造成一些已经无依赖关系的软件包。

安装yum-utils:
#yum install yum-utils

然后执行:#package-cleanup –leaves

会出现无效软件包的列表,删除列表中的软件包即可。删除后还会生成新的无依赖关系软件包,所以之后再执行一次,直到没有列表出现!

Subscribe to my RSS feed

利用Openvpn快速建立虚拟局域网

Written by admin on 七月 12, 2008

服务器端CentOS5.1,客户端windowsXP Sp2,两台电脑分别安放在不同的局域网内。
需要点对点组建成VPN,最简单方法如下:

配置服务器端CenOS:
在安装openvpn之前,先要安装openssl,用户数据加密;安装lzo,用于数据压缩。
下载lzo:
http://www.oberhumer.com/opensource/lzo/download/
(我下载的是最新的lzo-2.03.tar.gz包)
安装lzo:
#tar zxvf lzo-2.03.tar.gz
#cd lzo-2.03
#./configure
#make
#make install

安装openssl,
我通过CentOS自带的添加删除程序,安装了openssl的development包,文件名:openssl-devel-0.9.8b-10.el5.i386

然后下载openvpn,我安装的是最新版的2.1_rc7,文件名:openvpn-2.1_rc7.tar.gz
下载地址:http://openvpn.net/index.php/downloads.html
安装openvpn:
#tar zxvf openvpn-2.1_rc7.tar.gz
#cd openvpn-2.1_rc7.tar.gz
#./configure –with-lzo-headers=/usr/local/include –with-lzo-lib=/usr/local/lib
#make
#make install
安装完成后,创建openvpn存放启动和key文件的目录:
#mkdir /etc/openvpn
#cd /etc/openvpn
#/usr/local/sbin/openvpn –genkey –secret static.key
(有可能生成的static.key文件不在/etc/openvpn下,如果不在就cp过去。这个文件需要同时存在于服务器和客户端上,内容必须一样。)
然后创建server配置文件:
#gedit /etc/openvpn/server.conf
内容:

dev tun (路由模式)
ifconfig 192.168.xx.1 192.168.xx.2 (前个ip表示本服务器的ip,后一个ip我也没搞懂什么意思,待研究,现在只知道是客户端的ip。xx是网段,1-254之间的数字,但与你现在的局域网网段不要重复。)
secret /etc/openvpn/static.key (刚才生成的key文件)

然后保存。

随后启动vpn服务器,运行:
#/usr/local/sbin/openvpn –config /etc/openvpn/server.conf
如果不报错,可以ping一下自己的ip,也就是192.168.xx.1,如果ping通则说明服务器端启动正常。

然后,如果与外网间有路由器,需要映射UDP 1194端口。

如果希望开机启动openvpn服务器端,则在/etc/rc.d/rc.local文件中加入如下行:
/usr/local/sbin/openvpn –daemon –config /etc/openvpn/server.conf

————————-
配置windows客户端:
下载windows版本openvpn:
http://openvpn.net/index.php/downloads.html
文件名:openvpn-2.1_rc7-install.exe

安装时一直点下一步即可,当然你也可自定义一些选项。
安装完成,将服务器端生成的static.key文件复制到windows客户端的openvpn/config目录,然后改名称key.txt。
(打开key.txt时发现linux下生成的key文件在windows的txt下有若干“方块”,表示换行。我将其全部删除,并手动换行。)
然后在同目录下创建client.ovpn文件,文件内容如下:

remote www.domain.com(或者服务器外网ip)
dev tun
ifconfig 192.168.xx.2 192.168.xx.1(正好与服务器端相反)
secret key.txt (key文件)

随后在“开始”“程序”“openvpn”菜单中运行“OpenVpn GUI”,在右下角出现了小图标,鼠标右键点击“Connect”,连接成功的话,可以ping一下服务器的vpn ip。如果ping通则表示安装成功了。

Subscribe to my RSS feed

修改apache设置,支持UTF8和GBK

Written by admin on 七月 3, 2008

原本将apache默认设置成强制GBK编码解释网站,使得后来安装UTF8的网站代码时出现乱码的情况!

解决方法,修改/etc/httpd/conf/httpd.conf 文件,将其中AddDefaultCharset行注释掉(前面加#)。

保存后重新启动apache:/usr/sbin/apachectl restart

这样就即可解释GBK的网站,又能解释UTF8的网站了!

Subscribe to my RSS feed

linux下的删除命令rm

Written by admin on 七月 1, 2008

rm -R *
删除目录及目录下所有文件,但会有确认是否删除的提示,对于很多目录和文件时候会很不方便。

所以rm -Rf * 就可去除提示,直接删除。但必须注意操作安全。

Subscribe to my RSS feed