四: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