Monday, April 16, 2007
PPPoE Server + FreeRADIUS + MySQL
wget ftp://ftp.samba.org/pub/ppp/ppp-2.4.4.tar.gz
wget http://www.roaringpenguin.com/penguin/pppoe/rp-pppoe-3.8.tar.gz
wget ftp://ftp.freeradius.org/pub/radius/freeradius-1.1.3.tar.bz2
以下設定
MySQL Server 用 mysql_server 代稱
RADIUS Server 用 radius_server 代稱
實作時請換成您的 Server IP 或 Hostname
MySQL 部分
tar jxf freeradius-1.1.3.tar.bz2
mysqladmin -u root -p create radius
mysq -u root -p radius < freeradius-1.1.3/./doc/examples/mysql.sql
mysql -u root -p radius
先加入一些資料
insert into radgroupreply (groupname,attribute,op,value) values ('user','Auth-Type',':=','Local');
insert into radgroupreply (groupname,attribute,op,value) values ('user','Service-Type','=','Framed-User');
insert into radgroupreply (groupname,attribute,op,value) values ('user','Framed-IP-Netmask','=','255.255.255.255');
insert into radgroupcheck (groupname, attribute, op, value) values ("user", "Auth-Type", ":=", "Local");
加入使用者
insert into radcheck (username,attribute,op,value) values ('pank','User-Password','==','1111');
FreeRADIUS 部分
tar jxf freeradius-1.1.3.tar.bz2
cd freeradius-1.1.3
./configure && make install
cd /usr/local/etc/raddb
編輯 clients.conf, secret 是 Client 端連 FreeRADIUS 所需的密碼(shared secret)
client 127.0.0.1 {
secret = 1234
shortname = localhost
}
client 192.168.0.0/16 {
secret = 1234
shortname = lan
}
編輯 radius.conf, 開啟 sql 並 mark 掉不需要的部分
authorize {
preprocess
chap
mschap
suffix
sql
...
}
accounting {
...
sql
...
}
編輯 sql.conf
...
server = "mysql_server"
login = "mysql_username"
password = "mysql_password"
radius_db = "radius"
測試能否正常運作
radiusd -X
radtest pank 1111 mysql_server 0 1234
若有看到 Access-Accept 就 OK
PPPoE Server 部分
tar zxf ppp-2.4.4.tar.gz
tar zxf rp-pppoe-3.8.tar.gz
cd ppp-2.4.4
./configure && make install
cd ../rp-pppoe-3.8/src
./configure --enable-plugin=../../ppp-2.4.4
--enable-plugin 是必要參數, 才能使用 -k (kernel-mode PPPoE)
make install
cp ppp-2.4.4/pppd/plugins/radius/radius.so /etc/ppp/plugins
cp ppp-2.4.4/pppd/plugins/radius/etc/* /etc/ppp/radius
編輯 /etc/ppp/options
lock
crtscts
nobsdcomp
nodeflate
nopcomp
plugin /etc/ppp/plugins/radius.so
radius-config-file /etc/ppp/radius/radiusclient.conf
編輯 /etc/ppp/radius/radiusclient.conf
auth_order radius
login_tries 4
login_timeout 60
nologin /etc/nologin
issue /etc/ppp/radius/issue
authserver radius_server:1812
acctserver radius_server:1813
servers /etc/ppp/radius/servers
dictionary /etc/ppp/radius/dictionary
login_radius /usr/local/sbin/login.radius
seqfile /var/run/radius.seq
mapfile /etc/ppp/radius/port-id-map
default_realm
radius_timeout 10
radius_retries 3
編輯 /etc/ppp/radius/servers
radius_server 1111
pppoe-server -k -I eth0 -L 192.168.1.10 -R 10.0.0.1 -N 64
啟動 PPPoE Server (kernel-mode), Server Local IP 是 192.168.1.10, Client 端的起始 IP 10.0.0.1, 最多同時 64 個 Clients 同時連線.
Tuesday, April 10, 2007
Google搜索技巧----ZT by welv
作者:Philipp Lenssen
原文地址:http://blog.outer-court.com/archive/2005-09-29-n85.html
原文标题:Google Search Tips 2005
注意:本文翻译人不详。文中[]符号是为了突出关键词,在实际搜索中是不包含的;本文采用的是意译;本译文已经征得作者许可;本译文可任意转载,请保留本文的头信息。
Google搜索技巧2005
这里有一些Google搜索引擎的基本搜索技巧以及高级技巧,你可能对其中大部分已经了解,但是如果你知道了另外的那一部分,它可能会给你将来的搜索过程带来很大的便利。
1. 双引号可以用减号代替,比如搜索["like this"]与搜索[like-this]是一个效果
2. Google不会处理一些特殊的字符,比如[#](几年前还不行,现在可以了,比如搜索[c#]已经可以搜到相应的结果),但是还有一些字符它不认识,比如搜索[t.]、[t-]与[t^]的结果是一样的
3. Google允许一次搜索最多32个关键词
4. 在单词前加~符号可以搜索同义词,比如你想搜索[house],同时也想找[home],你就可以搜索[~house]
5. 如果想得到Google索引页面的总数,可以搜索[* *]
6. Google可以指定数字范围搜索。搜索[2001..2005]相当于搜索含有2001、2002直到2005的任意一个数的网页
7. 搜索[define:css]相当于搜索css的定义,这招对想学习知识的人很有效;也可以用[what is css]搜索;对中文来说,也可以用[什么是css]之类的
8. Google有一定的人工智能,可以识别一些简单的短语如[when was Einstein born?]或[einstein birthday]
9. 通过[link:]语法,可以寻找含有某个链接的网页,比如[link:blog.outer-court.com]将找到包括指向 blog.outer-court.com超级链接的网页(最新的Google Blog Search也支持这个语法),但是Google并不会给出所有的包含此链接的网页,因为它要保证pagerank算法不被反向工程(呵呵,可以参见那两个Google创始人关于pagerank的论文,可下载)
10. 如果在搜索的关键词的最后输入[why?],就会在结果中出现链接到Google Answers的链接http://answers.google.com ,在里面可以进行有偿提问
11. 现在出现了一种兴趣活动,叫做Google Hacking,其内容是使用Google搜索一些特定的关键词,以便找到有漏洞的、易被黑客攻击的站点。这个网站列出了这些关键词:Google Hacking Database( http://johnny.ihackstuff.com/index....ule=prodreviews )
12. 在Google 中输入一组关键词时,默认是“与”搜索,就是搜索包含有所有关键词的网页。如果要“或”搜索,可以使用大写的[OR]或 [|],使用时要与关键词之间留有空格。比如搜索关键词[Hamlet (pizza | coke)],是让Google搜索页面中或页面链接描述中含有Hamlet,并含有pizza与coke两个关键词中任意一个的网页。
13. 并非所有的Google服务都支持相同的语法,比如在Google Group中支持 [insubject:test]之类的主题搜索。可以通过高级搜索来摸索这些关键词的用法:进入高级搜索之后设置搜索选项,然后观察关键字输入窗口中的关键字的变化
14. 有时候Google懂得一些自然语言,比如搜索关键词[goog], [weather new york, ny], [new york ny]或[war of the worlds],此时Google会在搜索结果前显示出一个被业内称为“onebox”的结果,试试看吧!
15. 并非所有的Google都是相同的,它因国家版本(或是说语言版本)而异。在US版下,搜索[site:stormfront.org]会有成千上万的结果,而在德语版下,搜索[site:stormfront.org]的结果,嗯,自己看吧。Google的确与各国政府有内容审查协议,比如德国版,法国版(网页搜索),中国版Google新闻
16. 有时候Google会提示你搜索结果很烂,比如你搜索关键词[jew]试试,Google会告诉你它给出的搜索结果很烂,然后给你一个解释:http://www.google.com/explanation.html
17. 以前,搜索某些关键词如[work at Google] 时会看到Google给自己打的广告。可以去http://www.google.com/jobs/了解Google的工作
18. 对于一些“Googlebombed”(大概意思是指Google搜索的结果出问题了)的关键词,会有一个广告链接到:http: //googleblog.blogspot.com/2005/09/googlebombing-failure.html (中国大陆需要代理才能访问)。比如搜索[failure],第一条是美国布什总统介绍
19. 虽然现在Google还没有支持自然语言,但这里有一段录像显示了支持自然语言的搜索引擎的使用效果:http://blog.outer-court.com/videos/googlebrain.wmv
20. 有人说在Google中搜索[president of the internet],其结第一条表明了president of the internet是谁,我也是这么认为的,而且你还可以使用这个logo支持本文作者:http://blog.outer- court.com/files/president.gif
21. Google现在不再有“stop words”(被强制忽略的关键词),比如搜索 [to be or not to be], Google返回的结果中间还列有相关的完整短语搜索结果
22. 在Google 计算器(http://www.google.com/help/features.html#calculator )中有个彩蛋:输入[what is the answer to life, the universe and everything?]时,会返回42。(关键词翻译过来的意思是指“生命、宇宙和一切的答案”,这是一个著名科幻小说中的情节,详情参见http: //en.wikipedia.org/wiki/The_Answer_to_Life,_the_Universe, _and_Everything)。试试吧,哈哈
23. 你可以在搜索时使用通配符[*],这在搜索诗词时特别有效。比如你可以搜一下["love you twice as much * oh love * *"] 试试
24. 同样,你的关键词可以全部都是通配符,比如搜索["* * * * * * *"]
25. www.googl.com是在输错网址后的结果,也是个搜索网站,但搜索结果与Google完全不同。而且此网站也赚Google的钱,因为它使用Google AdSense
26. 如果你想把搜索结果限制在大学的网站之中,可以使用[site:.edu]关键词,比如[c-tutorial site:.edu],这样可以只搜索以edu结尾的网站。你也可以使用Google Scholar来达到这个目的。也可以使用[site:.de]或[site:.it]来搜索某个特定国家的网站。
关于LDAP的补充----ZT by welv
70年代诞生的DAP协议基于 X.400目录访问协议。主要用于 大型主机,因为有大量不常用的功能而且这些不用的功能消耗了过多的系统资源,虽然极强大,但是应用不广, 所以出现了LDAP.
这是一个开放的协议, 具体的实现有 Netscape LDAP, Novell NDS, MS AD等等,这3个是使用最广,影响最大的。
Netscape LDAP server主要使用在unix或类unix系统上, MS AD自然只能在windows上, NDS是唯一一个跨平台的产品。注意: LDAP本身是平台无关的。
工作原因,比较熟悉NDS, AD最熟。我个人最喜欢NDS,AD当然最简单,但是最不稳定,最乱,而且比较耗资源。
楼主说的类似数据库,完全正确,因为它原本就是数据库,只是不是关系型的数据库,它是链式数据库,详细细节可以找本数据库原理,很详细的。
和关系数据库一样, LDAP内能够定义哪些对象,每个对象可以有什么属性,每个属性可以取什么样的值,这样一个框架结构被称为Schema,它是类,对象,属性的集合。类又分为抽象类(只能做父类,不能实例化)和结构类(可以实例化),编程的朋友会发现和面向对象的编程的概念完全一样。
举例: LDAP内必须先有user类, 然后用user类创建user对象(一般缺省有的),我们才能创建具体的用户账号(实例化), schema中user对象被指定了有哪些属性,我们创建账号的时候才能给账号哪些属性,例如 schema中user对象没有别名属性,我们就不能给账号起别名。
Schema的扩展:
缺省的schema一般预先创建有足够的类,对象和属性,例如 MS 的AD 缺省有 170个类和833个对象和属性。但是如果不能满足需要的话,我们就可以扩展Schema, 一般是使用 LDAP API, 例如 MS的 ADSI, NDS有专门的工具,当然也可以直接使用LDAP查询语言,来直接操作整个LDAP目录树。(当然要有权限,很危险哦,后果自负,呵呵),找本书看吧,很简单,和SQL语言其实很类似,易学难精。呵呵。
理解与应用LDAP服务器----ZT by welv

(前段时间一直在做LDAP+POSTFIX相关项目,先把关于LDAP的一些经验写出来,一来可能会帮助一些人,二来对我自己所学知识也是一个巩固。)
先声明:我写的只是我对LDAP的一些理解,如果我的理解错误,那就是对兄弟们的误导。所以你可以直接看文章的结尾提供的几个网址。
关于LDAP的概念随便网上有很多,我不想重复,这里只是说一下我自己的理解。
都说它是“轻量级目录协议”,太专业,我不懂,我只把它想象成“简单”的目录协议。
几个很重要的概念,以后会用到:
---------------------------------------------
dn :一条记录的位置
dc :一条记录所属区域
ou :一条记录所属组织
cn/uid:一条记录的名字/ID
---------------------------------------------
实际上更多时候我只把它看成数据库。我把它和我非常熟悉的MYSQL数据库做比较,通常会得到更好的理解:
MYSQL用“表”储存数据,LDAP用“树”
MYSQL指定一条记录要3个条件:DB、TABLE、ROW。
LDAP却更自由,为什么呢?因为LDAP数据是“树”状的,而且这棵树是可以无限延伸的,假设你要树上的一个苹果(一条记录),你怎么告诉园丁它的位置呢?当然首先要说明是哪一棵树(dc,相当于MYSQL的DB),然后是从树根到那个苹果所经过的所有“分叉”(ou,呵呵MYSQL里面好象没有这 DD),最后就是这个苹果的名字(uid,记得我们设计MYSQL或其它数据库表时,通常为了方便管理而加上一个‘id’字段吗?)。好了!这时我们可以清晰的指明这个苹果的位置了,就是那棵“歪脖树”的东边那个分叉上的靠西边那个分叉的再靠北边的分叉上的半红半绿的……,晕了!你直接爬上去吧!我还是说说LDAP里要怎么定义一个字段的位置吧,树(dc=waibo,dc=com),分叉(ou=bei,ou=xi,ou= dong),苹果(cn=honglv),好了!位置出来了:
dn:cn=honglv,ou=bei,ou=xi,ou=dong,dc=waibo,dc=com
一个有名的画家说过:“世上没有相同的2个鸡蛋”。当然也没有相同的2个苹果……,同样,在LDAP里也不可能存在2个相同的dn。
LDAP数据填充原理:
一棵树的生长,要循序渐进,如果还没有长出某个分叉,就不可能在那个分叉里长出苹果(问:FT!苹果是长在分叉上的吗?答:为了便于理解,你就当它是吧),同样,LDAP数据库也要一步步的充实,举一个学校数据库的例子,我们将要把一个庞大的学生档案放到LDAP里,大致需要这么做:
---------------------------------------------
1、建立“树根”,这是通过修改“slapd.conf”来实现的,由于现在的目的是理解,所以具体步骤就不说了,反正就是在这一步建立了一个“dc= ourschool,dc=org”这样一个“树根”。注意:我把它理解成“目录”,或者“容器”,甚至它本身也是文件(苹果)的特殊形式,熟悉LINUX文件系统的朋友会更容易理解。
2、建立18个系,分别是“dn:ou=computer,dc=ourschool,dc=org”、“dn:ou=film,dc=ourschool,dc=org”……
3、当然是在每个系里面建立专业,比如“dn:ou=linux,ou=computer,dc=ourschool,dc=org”……
4、(开始长苹果吧!)加学生喽——“dn:cn=stan,ou=linux,ou=computer,dc=ourschool,dc=org”……
5、已经完成了吗?对了!学生的详细信息还没有呐!不过先这样吧,反正记录是可以编辑的。
---------------------------------------------
LDAP记录的详细信息
dn:cn=stan,ou=linux,ou=computer,dc=ourschool,dc=org
objectClass:organizationalPerson
cn:stan
cn:小刀
sn:小刀
description:a good boy
(以上是一条记录的信息,如果把他保存成LDIF文件,可以导入到LDAP数据库中)
上面不是说没有学生详细信息吗?怕你着急,就马上写出来了,只是还没有导入到LDAP里,那是以后的事。这里我先就你可能会产生的疑问做回答。
---------------------------------------------
Q1:“cn”不是在“dn”里定义了吗,怎么又在后面重新定义了? 答:你要把“cn=stan,ou=linux,ou=computer,dc=ourschool,dc=org”看成是一个整体,它只是属性dn的值。
Q2:怎么后面有2个“cn”,我以哪个为准? 答:区别于普通数据库,LDAP每个属性一般可以具有多个值,这样不好吗?你在学校数据库里找我的时候,只要记得我的一个cn就可以了,用“cn=stan”或“cn=小刀”都可以找到我!
Q3:就这些属性了吗?我都不知道你是男是女。 答:先声明,偶是男地。 LDAP对记录的属性做了严格的限制(这一点我不太喜欢),也就是说,你可以用哪些属性,哪些属性不能为空,哪些属性最多只能有一个值等,他们都给你规定好了。幸好你有选择的权利,比如这次我们是储存学生信息,那么我们就定义一个“objectClass:organizationalPerson”,这样 “organizationalPerson”这个类所规定的所有属性我们都可以用了,而且确实很适合我们。虽然这个类中没有“sex”这个属性,不过你完全可以用一个“空闲”的属性来顶替。如果我们能自己建立“类”就更好了,但目前我还没有时间去研究这个东西,我也期望高手指点啊 :)
---------------------------------------------
好了!看到我贴的图了吗?那是我偷别人的,差不多能用我就不自己画了 :)
##############################################################
关于安装配置LDAP,使之储存系统用户,这里有一个非常好的网址,如果你的英文不是很差,都应该做的来,我偷个懒,就先不写这方面的东西喽:
http://www.mandrakesecure.net/en/docs/ldap-auth.php
上面的方法我已经试过,是可行的,如果兄弟们配置的时候出现问题我们可以讨论讨论。
关于LDAP+POSTFIX,POSTFIX里的“LDAP_README”中介绍的很详细,我再说就是重复了。
##############################################################
其它相关资源:
yala (很实用的数据库操作工具,简单的说,他就是MYSQL的phpmyadmin,自己找下载地址吧~)
http://www.openldap.org/ (说实话,我一直没用上它,不过它是官方网站,不提也不好)
http://ldap.akbkhome.com/ (什么‘类’下面有什么‘属性’,在这里找)
Friday, March 23, 2007
MySQL忘记管理员密码的解决方法----ZT by welv
killall -TERM mysqld
(2)启动 MySQL :
/usr/bin/safe_mysqld --skip-grant-tables &
就可以不需要密码就进入 MySQL 了
(3)然后就是
>use mysql
>update user set password=password("new_pass") where user="root";
>flush privileges;
或
shell>mysqladmin -u root flush-privileges password "newpassword"
(4)重新杀 MySQL ,用正常方法启动 MySQL
Monday, December 25, 2006
Getting a DHCP Address in a Red Hat Linux 9.0 Virtual Machine--zt by welv
Monday, December 18, 2006
Voip/Sip开源项目的一些简单描述--zt by welv
RESIPROCATE:
http://www.sipfoundry.org/reSIProcate/
reSIProcate is a high performance, object-oriented, C++ sip stack that is compliant with RFC 3261. It includes support for a wide variety of operating systems, including Windows and Linux. It has full support for UDP, TCP, and TLS transports on both IPv4 and IPv6. It also implements the full set of specifications for DNS usage in SIP, including NAPTR and SRV lookups (RFCs: 3263, 2915, 2782) using an asynchronous DNS library (ares).
The reSIProcate project consists of a stack and a small collection of applications. The reSIProcate stack is currently used in two commercial products and is quite stable. reSIProcate is ideally suited to individuals or companies that are implementing one of the following SIP applications:
- PHONES(EG,EMBEDDED);
- Softphones(any platform);
- Gateway;
- Proxies;
- B2buas,or;
- IM / Presence Servers or Clients.
JRTPLIB:
http://lumumba.luc.ac.be/jori/jrtplib/jrtplib.html
JRTPLIB is an object-oriented library written in C++ which offers support for the Real-time Transport Protocol (RTP), defined in RFC 1889. It makes it very easy to send and receive RTP packets and the RTCP (RTP Control Protocol) functions are handled entirely internally.
WinRTP:
http://www.vovida.org/applications/downloads/winRTP/
The WinRTP (WINRTP) was developed as part of the Cisco IP SoftPhone product. Cisco IP SoftPhone is a PC based telephone integrated with AVVID, and works with the Cisco Call Manager. The primary focus of the WINRTP is to ensure that it works well with other products in AVVID including desktop IP Phones, gateways, etc.It can also be used as an independent component. ; It is written in C++ ; It is a COM component. (Not an ActiveX control). This makes it easy to use using any programming language like C/C++/Java (using J/Direct) etc.
OSIP:
http://www.gnu.org/software/osip/osip.html
OSIP is an implementation of SIP. This library aims to provide multimedia and telecom software developers an easy and powerful interface to initiate and control SIP based sessions in their applications.
ExOsip:
http://savannah.nongnu.org/projects/exosip/
eXosip is a library that hides the complexity of using the SIP protocol for multimedia session establishment.
其他供利用参考的一些资源 :
www.pernau.at/kd/voip/bookmarks-sip-rtp-ua.html (非常详尽的sip/rtp/ua资源列表)
http://gphone.sourceforge.net/template.php3?page=librtp (Librtp,可借鉴数据传输部分)
http://www.vovida.org (知名通信开源组织; vocal是基于SIP协议的类OpenH322实现)
http://www.linphone.org/?lang=us ... c307759e92cc4b90bb5 (Linphone)
http://sourceforge.net/projects/srtp (Secure RTP)
http://www.voip-info.org/wiki-Codec+Software ( Codec Software)
http://www.iptel.org/info/produc ... tacks&siponly=1 (iptel提供有一些VOIP资源)
http://www.cs.columbia.edu/~hgs/rtp/ (RTP Official Site)
http://www.dataconnection.com/voip/default.htm (dataconnectiond的 VOIP资源)
文章1:在Vovida的基础上实现自己的SIP协议栈
http://www.ctiforum.com/technology/Voip/2003/08/voip0802.htm
文章2: Linux 的應用--VideoStreaming 探討
http://www.jollen.org/linux/video_streaming
文章3: Linux下的JRTPLIB应用
http://www-900.ibm.com/developerWorks/cn/linux/l-mdst/index.shtml
Sunday, December 17, 2006
Red Hat Package Manager--zt by welv
RPM 是 Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理;在Fedora 、Redhat、Mandriva、SuSE、YellowDog等主流发行版本,以及在这些版本基础上二次开发出来的发行版采用;
RPM包里面都包含什么?里面包含可执行的二进制程序,这个程序和Windows的软件包中的.exe文件类似是可执行的;RPM包中还包括程序运行时所需要的文件,这也和Windows的软件包类似,Windows的程序的运行,除了.exe文件以外,也有其它的文件;
一个RPM 包中的应用程序,有时除了自身所带的附加文件保证其正常以外,还需要其它特定版本文件,这就是软件包的依赖关系;依赖关系并不是Linux特有的, Windows操作系统中也是同样存在的;比如我们在Windows系统中运行3D游戏,在安装的时候,他可能会提示,要安装Direct 9 ;Linux和Windows原理是差不多的;
本文使用范围:
1、本文是对RPM管理的软件的说明,对通过file.tar.gz 或file.tar.bz2源码包用 make ;make install 安装的软件无效;
2、安装软件时,最好用各自发行版所提供的系统软件包管理工具,对于Fedora/Redhat 您可以参考如下文章;
1)Fedora 系统管理软件包工具 system-config-packages,方便的添加和移除系统安装盘提供的软件包,详情请看 《Fedora 软件包管理器system-config-packages》
2)Redhat 系统管理软件包工具,新一点的系统应该是 redhat-config-packages ,用法和 《Fedora 软件包管理器system-config-packages》 一样;
3)apt + synaptic 软件包在线安装、移除、升级工具; 用法:《用apt+synaptic 在线安装或升级Fedora core 4.0 软件包》
4)yum 软件包在线安装、升级、移除工具;用法:《Fedora/Redhat 在线安装更新软件包,yum 篇》
5)所有的yum和apt 教程 《apt and yum》
目前 apt和yum 已经极为成熟了,建议我们安装软件时,采用 apt或者yum ;如果安装系统盘提供的软件包,可以用 system-config-packages 或redhat-config-packages ;
一、RPM包管理的用途;
1、可以安装、删除、升级和管理软件;当然也支持在线安装和升级软件;
2、通过RPM包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪个软件包;
3、可以在查询系统中的软件包是否安装以及其版本;
4、作为开发者可以把自己的程序打包为RPM 包发布;
5、软件包签名GPG和MD5的导入、验证和签名发布
6、依赖性的检查,查看是否有软件包由于不兼容而扰乱了系统;
二、RPM 的使用权限;
RPM软件的安装、删除、更新只有root权限才能使用;对于查询功能任何用户都可以操作;如果普通用户拥有安装目录的权限,也可以进行安装;
三、rpm 的一点简单用法;
我们除了软件包管理器以外,还能通过rpm 命令来安装;是不是所有的软件包都能通过rpm 命令来安装呢?不是的,文件以.rpm 后缀结尾的才行;有时我们在一些网站上找到file.rpm ,都要用 rpm 来安装;
一)初始化rpm 数据库;
通过rpm 命令查询一个rpm 包是否安装了,也是要通过rpm 数据库来完成的;所以我们要经常用下面的两个命令来初始化rpm 数据库;
[root@localhost beinan]# rpm --initdb
[root@localhost beinan]# rpm --rebuilddb 注:这个要花好长时间;
注:这两个参数是极为有用,有时rpm 系统出了问题,不能安装和查询,大多是这里出了问题;
二)RPM软件包管理的查询功能:
命令格式
rpm {-q|--query} [select-options] [query-options]
RPM的查询功能是极为强大,是极为重要的功能之一;举几个常用的例子,更为详细的具体的,请参考#man rpm
1、对系统中已安装软件的查询;
1)查询系统已安装的软件;
语法:rpm -q 软件名
举例:
[root@localhost beinan]# rpm -q gaim
gaim-1.3.0-1.fc4
-q就是 --query ,中文意思是“问”,此命令表示的是,是不是系统安装了gaim ;如果已安装会有信息输出;如果没有安装,会输出gaim 没有安装的信息;
查看系统中所有已经安装的包,要加 -a 参数 ;
[root@localhost RPMS]# rpm -qa
如果分页查看,再加一个管道 |和more命令;
[root@localhost RPMS]# rpm -qa |more
在所有已经安装的软件包中查找某个软件,比如说 gaim ;可以用 grep 抽取出来;
[root@localhost RPMS]# rpm -qa |grep gaim
上面这条的功能和 rpm -q gaim 输出的结果是一样的;
2)查询一个已经安装的文件属于哪个软件包;
语法 rpm -qf 文件名
注:文件名所在的绝对路径要指出
举例:
[root@localhost RPMS]# rpm -qf /usr/lib/libacl.la
libacl-devel-2.2.23-8
3)查询已安装软件包都安装到何处;
语法:rpm -ql 软件名 或 rpm rpmquery -ql 软件名
举例:
[root@localhost RPMS]# rpm -ql lynx
[root@localhost RPMS]# rpmquery -ql lynx
4)查询一个已安装软件包的信息
语法格式: rpm -qi 软件名
举例:
[root@localhost RPMS]# rpm -qi lynx
5)查看一下已安装软件的配置文件;
语法格式:rpm -qc 软件名
举例:
[root@localhost RPMS]# rpm -qc lynx
6)查看一个已经安装软件的文档安装位置:
语法格式: rpm -qd 软件名
举例:
[root@localhost RPMS]# rpm -qd lynx
7)查看一下已安装软件所依赖的软件包及文件;
语法格式: rpm -qR 软件名
举例:
[root@localhost beinan]# rpm -qR rpm-python
查询已安装软件的总结:对于一个软件包已经安装,我们可以把一系列的参数组合起来用;比如 rpm -qil ;比如:
[root@localhost RPMS]# rpm -qil lynx
2、对于未安装的软件包的查看:
查看的前提是您有一个.rpm 的文件,也就是说对既有软件file.rpm的查看等;
1)查看一个软件包的用途、版本等信息;
语法: rpm -qpi file.rpm
举例:
[root@localhost RPMS]# rpm -qpi lynx-2.8.5-23.i386.rpm
2)查看一件软件包所包含的文件;
语法: rpm -qpl file.rpm
举例:
[root@localhost RPMS]# rpm -qpl lynx-2.8.5-23.i386.rpm
3)查看软件包的文档所在的位置;
语法: rpm -qpd file.rpm
举例:
[root@localhost RPMS]# rpm -qpd lynx-2.8.5-23.i386.rpm
5)查看一个软件包的配置文件;
语法: rpm -qpc file.rpm
举例:
[root@localhost RPMS]# rpm -qpc lynx-2.8.5-23.i386.rpm
4)查看一个软件包的依赖关系
语法: rpm -qpR file.rpm
举例:
[root@localhost archives]# rpm -qpR yumex_0.42-3.0.fc4_noarch.rpm
/bin/bash
/usr/bin/python
config(yumex) = 0.42-3.0.fc4
pygtk2
pygtk2-libglade
rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 usermode yum >= 2.3.2
三)软件包的安装、升级、删除等;
1、安装和升级一个rpm 包;
[root@localhost beinan]#rpm -vih file.rpm 注:这个是用来安装一个新的rpm 包;
[root@localhost beinan]#rpm -Uvh file.rpm 注:这是用来升级一个rpm 包;
如果有依赖关系的,请解决依赖关系,其实软件包管理器能很好的解决依赖关系,请看前面的软件包管理器的介绍;如果您在软件包管理器中也找不到依赖关系的包;那只能通过编译他所依赖的包来解决依赖关系,或者强制安装;
语法结构:
[root@localhost beinan]# rpm -ivh file.rpm --nodeps --force
[root@localhost beinan]# rpm -Uvh file.rpm --nodeps --force
更多的参数,请查看 man rpm
举例应用:
[root@localhost RPMS]# rpm -ivh lynx-2.8.5-23.i386.rpm
Preparing... ########################################### [100%]
1:lynx ########################################### [100%]
[root@localhost RPMS]# rpm -ivh --replacepkgs lynx-2.8.5-23.i386.rpm
Preparing... ########################################### [100%]
1:lynx ########################################### [100%]
注: --replacepkgs 参数是以已安装的软件再安装一次;有时没有太大的必要;
测试安装参数 --test ,用来检查依赖关系;并不是真正的安装;
[root@localhost RPMS]# rpm -ivh --test gaim-1.3.0-1.fc4.i386.rpm
Preparing... ########################################### [100%]
由新版本降级为旧版本,要加 --oldpackage 参数;
[root@localhost RPMS]# rpm -qa gaim
gaim-1.5.0-1.fc4
[root@localhost RPMS]# rpm -Uvh --oldpackage gaim-1.3.0-1.fc4.i386.rpm
Preparing... ########################################### [100%]
1:gaim ########################################### [100%]
[root@localhost RPMS]# rpm -qa gaim
gaim-1.3.0-1.fc4
为软件包指定安装目录:要加 -relocate 参数;下面的举例是把gaim-1.3.0-1.fc4.i386.rpm指定安装在 /opt/gaim 目录中;
[root@localhost RPMS]# rpm -ivh --relocate /=/opt/gaim gaim-1.3.0-1.fc4.i386.rpm
Preparing... ########################################### [100%]
1:gaim ########################################### [100%]
[root@localhost RPMS]# ls /opt/
gaim
为软件包指定安装目录:要加 -relocate 参数;下面的举例是把lynx-2.8.5-23.i386.rpm 指定安装在 /opt/lynx 目录中;
[root@localhost RPMS]# rpm -ivh --relocate /=/opt/lynx --badreloc lynx-2.8.5-23.i386.rpm
Preparing... ########################################### [100%]
1:lynx ########################################### [100%]
我们安装在指定目录中的程序如何调用呢?一般执行程序,都放在安装目录的bin或者sbin目录中;看下面的例子;如果有错误输出,就做相应的链接,用 ln -s ;
[root@localhost RPMS]# /opt/lynx/usr/bin/lynx
Configuration file /etc/lynx.cfg is not available.
[root@localhost RPMS]# ln -s /opt/lynx/etc/lynx.cfg /etc/lynx.cfg
[root@localhost RPMS]# /opt/lynx/usr/bin/lynx www.linuxsir.org
2、删除一个rpm 包;
首先您要学会查询rpm 包 ;请看前面的说明;
[root@localhost beinan]#rpm -e 软件包名
举例:我想移除lynx 包,完整的操作应该是:
[root@localhost RPMS]# rpm -e lynx
如果有依赖关系,您也可以用--nodeps 忽略依赖的检查来删除。但尽可能不要这么做,最好用软件包管理器 systerm-config-packages 来删除或者添加软件;
[root@localhost beinan]# rpm -e lynx --nodeps
四、导入签名:
[root@localhost RPMS]# rpm --import 签名文件
举例:
[root@localhost fc40]# rpm --import RPM-GPG-KEY
[root@localhost fc40]# rpm --import RPM-GPG-KEY-fedora
关于RPM的签名功能,详情请参见 man rpm
五、RPM管理包管理器支持网络安装和查询;
比如我们想通过 Fedora Core 4.0 的一个镜像查询、安装软件包;
地址:
http://mirrors.kernel.org/fedora/core/4/i386/os/Fedora/RPMS/
举例:
命令格式:
rpm 参数 rpm包文件的http或者ftp的地址
# rpm -qpi http://mirrors.kernel.org/fedora/core/4/i386/os/ Fedora/RPMS/gaim-1.3.0-1.fc4.i386.rpm
# rpm -ivh http://mirrors.kernel.org/fedora/core/4/i386/os/ Fedora/RPMS/gaim-1.3.0-1.fc4.i386.rpm
举一反三吧;
六、对已安装软件包查询的一点补充;
[root@localhost RPMS]# updatedb
[root@localhost RPMS]# locate 软件名或文件名
通过updatedb,我们可以用 locate 来查询一些软件安装到哪里了;系统初次安装时要执行updatedb ,每隔一段时间也要执行一次;以保持已安装软件库最新;updatedb 是slocate软件包所有;如果您没有这个命令,就得安装slocate ;
举例:
[root@localhost RPMS]# locate gaim
七、从rpm软件包抽取文件;
命令格式: rpm2cpio file.rpm |cpio -div
举例:
[root@localhost RPMS]# rpm2cpio gaim-1.3.0-1.fc4.i386.rpm |cpio -div
抽取出来的文件就在当用操作目录中的 usr 和etc中;
其实这样抽到文件不如指定安装目录来安装软件来的方便;也一样可以抽出文件;
为软件包指定安装目录:要加 -relocate 参数;下面的举例是把gaim-1.3.0-1.fc4.i386.rpm指定安装在 /opt/gaim 目录中;
[root@localhost RPMS]# rpm -ivh --relocate /=/opt/gaim gaim-1.3.0-1.fc4.i386.rpm
Preparing... ########################################### [100%]
1:gaim ########################################### [100%]
[root@localhost RPMS]# ls /opt/
gaim
这样也能一目了然;gaim的所有文件都是安装在 /opt/gaim 中,我们只是把gaim 目录备份一下,然后卸掉gaim;这样其实也算提取文件的一点用法;
八、RPM的配置文件;
RPM包管理,的配置文件是 rpmrc ,我们可以在自己的系统中找到;比如Fedora Core 4.0中的rpmrc 文件位于;
[root@localhost RPMS]# locate rpmrc
/usr/lib/rpm/rpmrc
/usr/lib/rpm/redhat/rpmrc
我们可以通过 rpm --showrc 查看;具体的还得我们自己来学习。呵。。。不要问我,我也不懂;只要您看了这篇文章,认为对您有用,您的水平就和我差不多;咱们水平是一样的,所以我不能帮助您了;请理解;
九、src.rpm的用法:
《file.src.rpm 使用方法的简介》
后记:Fedora/Redhat 入门教程中的软件包管理篇,我已经写了很多了;目前还缺少通过源码包安装软件我方法以及一篇总结性的文档;我想在最近两天补齐,这两篇我以前写过;重新整理一下贴出来就行了;
以我的水平来看,写Fedora 入门教程是极为费力气的,只能一点一点的完善和补充;我所写的教程是面对的是对Linux一无所知新手;教程中实例应用占大部份;我发现没有实例的情况下,新手不如看man ;能看man了,当然也不是什么新手;
经常在论坛上看一些弟兄的提问,虽然一问话解说过去也能应付;但想让大家更方便一点,不如写系统入门教程;虽然所花的时间要长一点
Monday, December 11, 2006
Linux下tftp-server的配置----Writen by welv
1)首先要确认安装了软件包,其次要确认开启了此服务:
# rpm -q tftp-server
tftp-server-0.32-4
# chkconfig tftp on
# chkconfig --list | grep tftp
tftp: on
2)再编辑配置文件:
#vi /etc/xinetd.d/tftp
service tftp
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/www/html
per_source = 11
cps = 100 2
flags = IPv4
}
好了,试试看吧,至少可以下载了!
多操作系统混装纪实(二)----Writen by welv
由于暂时还没完成虚拟机xen的研究,于是在SUSE10上运行Redhat AS3也就化作了泡影,只能铤而走险,再装一个系统了,如果失败,将意味着先前所安装的三个系统全部功亏一篑,只有哭的份了...
应该说,linux的双系统安装要比windows简单,可从来没试过,所以显得有点虚。
事先考虑了一下,觉得问题最大的地方是在分区的时候,要注意不能误删SUSE的,swap分区可以共用,不必额外划分,只利用一块未分区空间作为其根分区即可;其次就是bootloader了,由于想保留SUSE实用的引导菜单,决定不再安装AS3的bootloader而选择在安装后进入SUSE配置。
和预期结果吻合,AS3装完后没有任何影响到SUSE,可以说跟没装一样,于是工作重心转移到如何引导起AS3:
SUSE下有个GUI系统管理工具YaST2,相当好用:YaST2-->System-->bootloader
有这么个类似于windows里的那个bootpro一样的配置程序,很直观,你可以很清楚地指定你所要引导的OS,不管是windows还是linux,不过有些小小的bug,只许引导本分区的kernel,这可就为难我了——我的OS可是一个分区一个的,难不成要把AS3的拷到本分区的boot目录下?
只好尝试了一下再说了,于是先将安装了AS3的分区mount到SUSE下的/AS3目录下,紧接着copy它的vmlinuz和initrd到SUSE的boot目录下,执行bootloader配置程序,添加一启动项,kernel文件就用前两个,Root Device指向AS3的根分区(eg:/dev/sda6),之后保存重启,结果不成,报了个什么"无效分区格式"的错,SUSE默认的文件系统格式是reiserfs,而AS3默认的是ext3——一下子让我心凉了半截,这可怎么混?
还不死心,不能就这么完了呀,于是又翻出来那张SUSE安装盘(真是好东西啊),引导--〉修复,这里的菜单跟系统里的差不多,也不能自动找到AS3,但是有点区别是,它可以让我选择添加其他分区的,于是赶紧这样填上:/AS3/boot/vmlinuz-2.4.21-20EL,(/dev/sda6,root=/dev/sda6)
事后再察看SUSE里/boot/grub/menu.lst,发现是这个样子滴:
# Modified by YaST2. Last modification on Sun Dec 10 22:27:39 CST 2006
color white/blue black/light-gray
default 0
timeout 10
gfxmenu (hd0,2)/boot/message
###Don't change this comment - YaST2 identifier: Original name: linux###
title SUSE LINUX 10.0
root (hd0,2)
kernel /boot/vmlinuz root=/dev/sda3 vga=0x31a selinux=0 apm=off acpi=off mce=off barrier=off ide=nodma idewait=50 i8042.nomux psmouse.proto=bare irqpoll resume=/dev/sda2 splash=silent showopts
initrd /boot/initrd
###Don't change this comment - YaST2 identifier: Original name: windows###
title Windows
chainloader (hd0,0)+1
###Don't change this comment - YaST2 identifier: Original name: failsafe###
title Failsafe -- SUSE LINUX 10.0
root (hd0,2)
kernel /boot/vmlinuz root=/dev/sda3 vga=normal showopts ide=nodma apm=off acpi=off noresume selinux=0 nosmp noapic maxcpus=0 edd=off 3
initrd /boot/initrd
title Redhat AS3
root (hd0,5)
kernel /boot/vmlinuz-2.4.21-20.EL root=/dev/sda6 vga=0x31a
initrd /boot/initrd-2.4.21-20.EL.img
我的系统分布是这样的:
/dev/sda3 /(SUSE)
tmpfs /dev/shm
/dev/sda1 /windows/C
/dev/sda5 /windows/D
/dev/sda6 /AS3(Redhat)
多操作系统混装纪实(一)----Writen by welv
第二个,安装SUSE10,没问题,SUSE10自动会搜寻已有的操作系统,并自动在Grub里添加,特别针对windows系统,对用户简直是个福音;
第三个,安装Windows Server 2003,无法在现有的系统上运行安装引导,只有启动时光盘引导,此时注意不要触动其他已有系统的分区即可,尽量使用未分区空间;
安装完后问题来了,Grub菜单被覆盖,自然就进不了linux系统了,而对于windows,也只有Server 2003可供选择,Vista也不见了,于是习惯的想到修改boot.ini文件来建立启动选择菜单,结果白搭,Vista根本就不认,网上查了查才发现,人家微软不那么玩儿了,取而代之的是一个叫bcdedit.exe的冬冬,不过该程序是命令行操作的,而且代码写起来很复杂,需要查注册表entry的,跟boot.ini相比毫无理性可言,所以某些大牛们就做出了这样一个漂亮的GUI Tools----Vista BootPro,据说在XP/2003下也可以使用,知识系统中必须安装有微软的.net framework2.0,当时我没有想到这步,只是觉得这是Vista的操作,就应该在Vista系统下完成,于是就用Vista的安装盘修复了一下,姑且先进去再说...
修复很容易,新的引导纪录自然又会把Server 2003抹去,没关系,进入Vista以后,安装Vista BootPro 3.1,启动后选择"Backup/Restore Centre":




SUSE10里的好东西之Quagga----Writen by welv
Quagga is an advanced routing software package that provides a suite of TCP/IP based routing protocols. This is the Manual for Quagga 0.99.4. Quagga is a fork of GNU Zebra.
Quagga is a routing software package that provides TCP/IP based routing services with routing protocols support such as RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, BGP-4, and BGP-4+ (see section Supported RFCs). Quagga also supports special BGP Route Reflector and Route Server behavior. In addition to traditional IPv4 routing protocols, Quagga also supports IPv6 routing protocols. With SNMP daemon which supports SMUX protocol, Quagga provides routing protocol MIBs (see section SNMP Support).
Quagga uses an advanced software architecture to provide you with a high quality, multi server routing engine. Quagga has an interactive user interface for each routing protocol and supports common client commands. Due to this design, you can add new protocol daemons to Quagga easily. You can use Quagga library as your program's client user interface.
Quagga is distributed under the GNU General Public License.
也没太多时间仔细研究,知道怎么启动,怎么连接:
$/etc/init.d/zebra start
$ telnet 10.74.52.42 2601
Trying 10.74.52.42...
Connected to 10.74.52.42 (10.74.52.42).
Escape character is '^]'.
Hello, this is Quagga (version 0.98.4).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
User Access Verification
Password:
quagga> en
Password:
quagga#
configure Configuration from vty interface
copy Copy configuration
debug Debugging functions (see also 'undebug')
disable Turn off privileged mode command
echo Echo a message back to the vty
end End current mode and change to enable mode.
exit Exit current mode and down to previous mode
help Description of the interactive help system
list Print command list
logmsg Send a message to enabled logging destinations
no Negate a command or set its defaults
quit Exit current mode and down to previous mode
show Show running system information
terminal Set terminal line parameters
who Display who is on vty
write Write running configuration to memory, network, or
terminal
quagga#
就是个模拟的router的CLI:)
我猜这个软件的作用就是将pc变成router。。。。。。
Tuesday, November 28, 2006
Asterisk简易上手----Writen by welv
#tar -zxvf asterisk-1.4.0-beta3.tar.gz
第二步:配置、安装
#cd asterisk-1.4.0-beta3
#./configure
#make
#make install
#make examples
#make progdocs
第三步:修改/etc/asterisk/extensions.conf;加入一个最简单的
[welv]
exten => _.,1,Answer()
exten => _.,n,Ringing
exten => _.,n,Dial(SIP/${EXTEN},60,tr)
exten => _.,Hangup()
第四步:修改/etc/asterisk/sip.conf;加入两个新用户
[1xxx]
type=friend
host=dynamic
username=1xxx
context=welv
regexten=1xxx
[2xxx]
type=friend
host=dynamic
username=2xxx
context=welv
regexten=2xxx
第五步:运行
#asterisk -vvvgc
*CLI>sip list users
Username Secret Accountcode Def.context Acl Nat
1xxx welv No RFC3581
2xxx welv No RFC3581
第六步:找俩电话注册,互相打吧!

Monday, November 27, 2006
linux下挂载ISO文件--zt by welv
对于iso文件,linux可以采用mount命令挂载,如:
$ mkdir /mnt/iso
$ mount -t iso9660 -o loop disc1.iso /mnt/iso
$ ls /mnt/iso
如何从cd制作iso文件:
Method1:$cat /dev/cdrom > *.iso
Method2:
$dd if=/dev/cdrom of=*.iso bs=1024
Tuesday, November 21, 2006
linux压缩解压缩大全--zt by welv
linux下怎么解后缀名是gzip的文件?
1.以.a为扩展名的文件:
#tar xv file.a
2.以.z为扩展名的文件:
#uncompress file.Z
3.以.gz为扩展名的文件:
#gunzip file.gz
4.以.bz2为扩展名的文件:
#bunzip2 file.bz2
5.以.tar.Z为扩展名的文件:
#tar xvZf file.tar.Z
或 #compress -dc file.tar.Z | tar xvf -
6.以.tar.gz/.tgz为扩展名的文件:
#tar xvzf file.tar.gz
或 gzip -dc file.tar.gz | tar xvf -
7.以.tar.bz2为扩展名的文件:
#tar xvIf file.tar.bz2
或 bzip2 -dc file.tar.bz2 | xvf -
8.以.cpio.gz/.cgz为扩展名的文件:
#gzip -dc file.cgz | cpio -div
9.以.cpio/cpio为扩展名的文件:
#cpio -div file.cpio
或cpio -divc file.cpio
10.以.rpm为扩展名的文件安装:
#rpm -i file.rpm
11.以.rpm为扩展名的文件解压缩:
#rpm2cpio file.rpm | cpio -div
12.以.deb为扩展名的文件安装:
#dpkg -i file.deb
13.以.deb为扩展名的文件解压缩:
#dpkg-deb --fsys-tarfile file.deb | tar xvf - ar p
file.deb data.tar.gz | tar xvzf -
14.以.zip为扩展名的文件:
#unzip file.zip
在linux下解压Winzip格式的文件
要是装了jdk的话,可以用jar命令;还可以使用unzip命令。
直接解压.tar.gz文件
xxxx.tar.gz文件使用tar带zxvf参数,可以一次解压开。XXXX为文件名。 例如:
$tar zxvf xxxx.tar.gz 各种压缩文件的解压(安装方法)
文件扩展名 解压(安装方法)
.a ar xv file.a
.Z uncompress file.Z
.gz gunzip file.gz
.bz2 bunzip2 file.bz2
.tar.Z tar xvZf file.tar.Z
compress -dc file.tar.Z | tar xvf -
.tar.gz/.tgz tar xvzf file.tar.gz
gzip -dc file.tar.gz | tar xvf -
.tar.bz2 tar xvIf file.tar.bz2
bzip2 -dc file.tar.bz2 | xvf -
.cpio.gz/.cgz gzip -dc file.cgz | cpio -div
.cpio/cpio cpio -div file.cpio
cpio -divc file.cpio
.rpm/install rpm -i file.rpm
.rpm/extract rpm2cpio file.rpm | cpio -div
.deb/install dpkg -i file.deb
.deb/exrtact dpkg-deb --fsys-tarfile file.deb | tar xvf -
ar p file.deb data.tar.gz | tar xvzf -
.zip unzip file.zip
bzip2 -d myfile.tar.bz2 | tar xvf
tar xvfz myfile.tar.bz2
x 是解压
v 是复杂输出
f 是指定文件
z gz格式
gzip
gzip[选项]要压缩(或解压缩)的文件名
-c将输出写到标准输出上,并保留原有文件。
-d将压缩文件压缩。
-l对每个压缩文件,显示下列字段:压缩文件的大小,未压缩文件的大小、压缩比、未压缩文件的名字
-r递归式地查找指定目录并压缩或压缩其中的所有文件。
-t测试压缩文件是正完整。
-v对每一个压缩和解压缩的文件,显示其文件名和压缩比。
-num-用指定的数字调整压缩的速度。
举例:
把/usr目录并包括它的子目录在内的全部文件做一备份,备份文件名为usr.tar
tar cvf usr.tar /home
把/usr 目录并包括它的子目录在内的全部文件做一备份并进行压缩,备份文件名是usr.tar.gz
tar czvf usr.tar.gz /usr
压缩一组文件,文件的后缀为tar.gz
#tar cvf back.tar /back/
#gzip -q back.tar
or
#tar cvfz back.tar.gz /back/
释放一个后缀为tar.gz的文件。
#tar zxvf back.tar.gz
#gzip back.tar.gz
#tar xvf back.tar