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:初始化数据库,有则不建立,没有则建立