四:Linux软件包管理
	A:二进制软件包(RPM,YUM)
		一:RPM包管理
			RPM软件包的一个例子:
				sudo-1.7.2p1-5.el5.i386.rpm
			其中包括软件名(sudo),版本(1.7.2pl),发行号(5.el5),和硬件平台(i386)----要注意你的硬件平台。
			
			(1)卸载:
				#rpm -e sudo
				注意:如果其它软件包有依赖关系,卸载时会产生提示信息,可以使用--nodeps 强行卸载。
		
			(2)安装
				#rpm -ivh sudo-1.7.2p1-5.el5.i386.rpm   (一般必要的选项是i--安装,v--显示命令执行的详细信息 h--安装进度)
				
				挂载光盘:
					mkdir /mnt/cdrom
					mount /dev/cdrom /mnt/cdrom
				查询:
					rpm -q sudo  查看软件是否安装在系统中
					rpm -qa | grep samba	查询系统里面安装了跟samba相关的软件	

				其他安装选项:
					--excludedocs     不安装软件包中的文档文件
					--prefix PATH     将软件包安装到由PATH指定的路径下(大多数rpm包改变不了安装目录)
					--test            只对安装进行测试,并不实际安装
				其他需要了解:
					A:软件包已经安装
						#rpm -ivh sudo-1.7.2p1-5.el5.i386.rpm 
						package sudo-1.7.2p1-5.el5.i386 is already installed
						如果覆盖安装该软件包,可以在命令行上使用 --replacepkgs选项
					B:文件冲突
						如果要安装的软件包中有一个文件已在安装系统中且比现有的文件还老等,会出现以下错误信息:
							#rpm -ivh sudo-1.7.2p1-5.el5.i386.rpm 
							conflicts with file from bark-3.2-ll
							sudo-1.7.2p1-5.el5.i386.rpm cannot be installed
					    要想让rpm忽略该错误信息,请使用 --replacefiles 命令行选项(文件冲突一般是覆盖)
					C:未解决依赖关系
						RPM软件包可能依赖于其他软件包,在安装了特定的软件包之后才能安装该软件包。
						#rpm -ivh sudo-1.7.2p1-5.el5.i386.rpm 
						 failed dependencies: sudo is needed by bark-3.12-ll
						你必须安装完所依赖的软件包,才能解决这个问题,强制安装使用 --nodeps 命令选项(但是10有8/9运行不了,因为依赖)
			
			(3)升级(RPM包升级)
				#rpm -Uvh sudo-1.8.2p1-5.el5.i386.rpm
				
			(4)查询
				选项:如:rpm -a sudo
				-a 查询所有已安装的软件包
				-f 查询文件所属软件包
				-p 查询软件包
				-i 显示软件包信息
				-l 显示软件包中的文件列表
				-d 显示被标注为文档的文件列表
				-c 显示被标注为配置文件的文件列表
				
			RPM查询应用案例:
				1:查询文件隶属的软件包 rpm -qf
				2:查询软件包信息       rpm -qi、rpm -qip
				3:查询软件包安装文件   rpm-ql (查看软件安装了那些文件)、rpm -qlp(未安装前,看下该包要安装什么文件) 
				4:查询软件包帮助文档   rpm -qd
				5:查询软件包配置文件   rpm -qc 、rpm -qcp(查看未安装软件包,需要安装那些文件)
			
			(5)校验
				#rpm -V 软件名称  (如果软件没被更改执行这个什么都没有)
				
				如:
				vi /etc/sudoers  修改里面的内容
				#rpm -V sudo 
				S.5....T c /etc/sudoers  得到的结果,能后和下面对应值匹配查看
										 直接看前面得到值就知道什么文件被改变过
				
				5文件的md5校验值  (一个文件内容改变,md5值就会改变)
				S文件大小
				L链接文件
				T文件的创建时间
				D设备文件
				U文件的用户
				G文件的用户组
				M文件的权限

			(6)软件包文件的提取(文件误删除,取回来)
				1:mkdir /backup
				2:cd backup
				3:rm /etc/inittab   不小心把这个文件给删除了,怎么在提取回来呢?
				4:rpm -qf /etc/inittab    先看下隶属那个文件包
				
				5:解压所有文件到当前目录(位置+软件包的名称 ,提取到当前目录下  )
					#rpm2cpio /mnt/cdrom/Centos/initscripts-8.45.30-3.el5.centos.i386.rpm | cpio -idv ./etc/inittab	
			
				6:cp /etc/inittab /etc/inittab  能后将当前提取出来的文件复制到误删除的目录下即可
			
				
				
			
			由于RPM软件安装有许多依赖关系,所以有人喜欢用yum	
			
		二:YUM包管理(前提是要连入互联网)
			应用yum的好处:
				自动解决软件包依赖关系、方便的软件包升级
				
			A:安装yum install
				yum install sudo    就会去互联网中找镜像的信息-->回答y -->能后自动安装即可
			B:检测升级 yum check-update
				yum check-update sudo    会自动检查看是否需要升级
			C:升级 yum update
				yum update sudo     自动升级
			D:软件包查询 yum list
				yum list | more(所有)  、 yum list | grep sudo(只查sudo)
			E:软件包信息 yum info
				yum info sudo
			F:卸载 yum remove
				yum remove sudo
			G:帮助 yum -help、man yum
			
				
	B:源代码包安装
		应用举例(proftpd)
			#tar -xzyf proftpd-1.3.3d.tar.gz   解压解包
			#cd proftpd-l.3.3d
			#./configure --prefix=/usr/local/proftpd 配置(prefix指定安装目录)停止,有错误就不会往下,执行
													 如果在检测的过程中提示缺少什么工具就按下就OK
			注意上面命令检测,如果提示说“no acceptable C comiler ...没有找到C的编译器”,我们就用这个安装下
			#yum install gcc   
			#./configure --prefix=/usr/local/proftpd    安装完后在执行下
			#make   编译
			#make install  安装
			软件下载地址:http://www.proftpd.com
	
	
	C:脚本安装(shell或Java脚本)
		应用举例:(webmin、OpenOffice)
			#tar -xzvf webmin-1.530.tar.gz
			#cd webmin-1.530
			#vi README
			#./setup.sh
						
			卸载:kill `proftpd` rm -rf /usr/local/proftpd  关闭进程,删除目录即是卸载
			软件下载地址:http://www.webmin.com	,这个功能很强大,可以下载下来玩玩
			
			
		
	D:debian系linux软件包管理简介	
		APT包管理
		搜索软件包 apt-cache search
		软件包信息 apt-cache show
		安装  apt-get install (reinstall、-f)
		删除 apt-get remove (autoremove 、--purge)
		更新软件源 apt-get update
		更新已安装包 apt-get upgrade