linux下rpm软件包管理命令详解
1.linux下软件的基本概念
程序需要用到的重要文件:配置文件,指令,库文件,帮助信息
/etc, /bin, /sbin, /lib,/usr/share/man
1.1.系统启动需用到的程序路径,必须在根文件系统的分区上
/etc, /bin, /sbin, /lib,/usr/share/man
1.2.系统启动后需用到的操作作系统核心功能或必要功能程序路径
/etc,/usr/bin,/usr/sbin/,/usr/lib,/usr/share/man
1.3.用户安装的第三方程序所需附加功能程序路径,与操作系统启动等无关
/usr/local/etc,/usr/local/bin,/usr/local/sbin,/usr/local/lib,/usr/local/man
2.rpm叫软件包管理器
rpm包由主包和子包组成,命名格式如下
name-version-release2.arch.rpm
version:major.minor.release1
即name-major.minor.release1-release2.arch.rpm
如:kernel-2.6.18-308.el5.i686.rpm
name:包名-->kernel
major代表:主版本号,有重大改进--->2
minor代表:次版本号,某个子功能发生重大变化--->6
release1代表发行号,修正了部分bug,调整了一点功能--->18
release2代表二次发行版本--->308
arch:平台--->i686
rpm包:是作者下载源程序,编译配置完成后,制作成rpm包,属于二进制格式
3.安装,需自行处理rpm包之间依赖关系
格式:rpm -i rpm包完整路径名
-h: 以#显示进度;每个#表示2%;
-v: 显示详细过程
-vv: 更详细的过程
rpm -ivh rpm包完整路径名
--nodeps: 忽略依赖关系;
--replacepkgs: 重新安装,替换原有安装;
--oldpackage: 降级
--force: 强行安装,可以实现重装或降级;
4.查询
格式:rpm -q 仅rpm包名: 查询指定的包是否已经安装
例如:rpm -q httpd
rpm -qa : 查询已经安装的所有包
rpm -qi 仅rpm包名: 查询指定包的说明信息;
rpm -ql 仅rpm包名: 查询指定包安装后生成的文件列表;
rpm -qc 仅rpm包名:查询指定包安装的配置文件;
rpm -qd 仅rpm包名: 查询指定包安装的帮助文件;
rpm -q --scripts 仅rpm包名: 查询指定包中包含的脚本
rpm -qf 特定文件路径名: 查询指定的文件是由哪个rpm包安装生成的;
例如:rpm -qf /etc/passwd
如果某rpm包尚未安装,我们需查询其说明信息、安装以后会生成的文件;
格式:rpm -qpi rpm包完整路径名 查询没有安装的包的说明信息;
rpm -qpl rpm包完整路径名 查询没有安装的包要生成的文件列表
5.升级
格式:rpm -Uvh rpm包完整路径名: 如果装有老版本的,则升级;否则,则安装;
rpm -Fvh rpm包完整路径名:如果装有老版本的,则升级;否则,退出;
--oldpackage: 降级
6.卸载
格式:rpm -e 仅rpm包名
--nodeps
例如:rpm -e httpd
7.校验:安装后的包是否被人修改过
格式:rpm -V 仅rpm包名
例如:rpm -V httpd 如果没有返回信息,证明安装包正常没有被人修改
8.检验来源合法性,及软件包完整性;
Redhat公钥存放路径:/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release: 导入密钥文件
rpm -K rpm包完整路径名
dsa, gpg: 验证来源合法性,也即验正签名;可以使用--nosignature,略过此项
sha1, md5: 验证软件包完整性;可以使用--nodigest,略过此项
例如:rpm -K httpd-2.2.3-63.el5.i386.rpm
rpm -K --nodigest httpd-2.2.3-63.el5.i386.rpm
9.重建数据库
rpm --rebuilddb: 重建数据库,一定会重新建立;
--initdb:初始化数据库,有则不建立,没有则建立