在Linux下,对软件包的管理有三种方式源代码方式,rpm和yum方式,yum是rpm的前端管理工具。

对于普通用户来讲用源码方式是比较痛苦的。源码方式一般分为以下三个步骤。

第一步 ./configure 检查编译环境,生成makefile。第二步make 把源代码编译成二进制文件。第三步make install 安装编译好的文件。因为这种方式对普通用户来讲难于上手,所以就有了代替源码安装的软件管理工具,rpm就是其中一个。

一、RPM简介:

                   RPM程序包管理器,rpm(redhat Package Manager)

                   RPM命名规范:

                   vclownv-3.3.3-3.el6.x86_64.rpm

                   vclownv是软件名;3.3.3-3是软件版本号;el6是现在系统的版本号;x86_64就是64位系统。

RPM的特点:

1、rpm包与包之间存在复杂的依赖关系,简单说就是如果你需要安装E包必须先安装R包,为了解决这种依赖关系就有了rpm前端管理工具yum。

2、rpm包为了按需所取把不同的功能分成不同的包,用户可以根据自己的实际需要下载。

3、在/var/lib/rpm下存放着rpm的数据库

RPM_rpm、

如果要查询一个rpm包是否已安装,是通过这里来查询的。这里存放着已安装的包名,各包之间的存在的依赖关系,包的名称和版本等。

二、程序包下载途径

1、系统发行光盘与镜像站点
            http://mirrors.aliyun.com
            http://mirrors.sohu.com
            http://mirrors.163.com
2、epel(第三方组织)

RPM_rpm、_02

3、rpm包搜索引擎

     1、 http://rpmfind.net (在方框中输入需要的包名)

   RPM_rpm、_03




    2、 http://pkgs.org

   RPM_rpm、_04








二、RPM的基础命令

安装、升级、卸载、查询和校验、数据库维护

 rpm命令格式:rpm  选项(注意:每个选项还有子命令) 包名

       常用参数:

                      -i 安装

                      -U升级

                      -e卸载

                      -q查询

                      -V校验

                      --builddb --initdb

安装 -i

 子命令:

       -v:verbose,详细信息
       -vv:更详细的输出            

           -h:hash marks输出进度条;每个#表示2%的进度;
           --test:测试安装,检查并报告依赖关系及冲突消息等;
           --nodeps:忽略依赖关系;不建议;
           --replacepkgs:重新安装
           --noscripts 安装或卸载时不运行rpm包自带的以下四种脚本。

                            preinstall:安装过程开始之前运行的脚本,%pre , --nopre
                            postinstall:安装过程完成之后运行的脚本,%post , --nopost
                            preuninstall:卸载过程真正开始执行之前运行的脚本,%preun, --nopreun
                            postuninstall:卸载过程完成之后运行的脚本,%postun , --nopostun

           --nopre 不运行安装过程之前要运行的脚本。

           --nopost 不运行安装过程完成之后要运行的脚本。
           --nopreun 不运行卸载过程开始之前要运行的脚本。
           --nopostun 不运行卸载过程完成之后要运行的脚本。

  安装软件包最常用的rpm -ivh

RPM_rpm、_05

2、升级 -F

       -h (or --hash) 安装时输出hash记号 (``#'')
  --oldpackage 允许"升级"到一个老版本
  --test 只进行升级测试
  --excludedocs 不安装软件包中的文档文件
  --includedocs 安装文档
  --replacepkgs 强制重新安装已经安装的软件包
  --replacefiles 替换属于其它软件包的文件
  --force 忽略软件包及文件的冲突
  --percent 以百分比的形式输出安装的进度。
  --noscripts 不运行预安装和后安装脚本
  --prefix 将软件包安装到由 指定的路径下
  --ignorearch 不校验软件包的结构
  --ignoreos 不检查软件包运行的操作系统
  --nodeps 不检查依赖性关系

                -U:升级或安装
                -F:升级
                rpm  -Uvh
                rpm  -Fvh

RPM_rpm、_06


3、卸载 -e

           --allmatches:卸载所有匹配指定名称的程序包的各版本;

     --nodeps:忽略依赖关系

     --test:测试卸载,dry run模式

rpm -e zsh

rpm -ql zsh

RPM_rpm、_07


4、查询 -q

   子命令:

            -a, --all:查询所有已经安装过的包

            -f  FILE:查询指定的文件由哪个程序包安装生成

            -p, --package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作

            --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供

            --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖

   --changelog:查询rpm包的changlog

   -l, --list:程序安装生成的所有文件列表

   -i, --info:程序包相关的信息,版本号、大小、所属的包组,等

   -c, --configfiles:查询指定的程序包提供的配置文件

   -d, --docfiles:查询指定的程序包提供的文档

   --provides:列出指定的程序包提供的所有的CAPABILITY

   -R, --requires:查询指定的程序包的依赖关系

   --scripts:查看程序包自带的脚本片断

   查看程序包的详细内容

RPM_rpm、_08

查看包的文档信息

RPM_rpm、_09

查看包依赖的关系

RPM_rpm、_10



查询指定的功能由哪个程序包提供

RPM_rpm、_11

查询指定的功能被哪个包所依赖

RPM_rpm、_12



5、校验

校验已安装的软件包-V

   -p Verify against package file
  -f 校验所属的软件包
  -a Verify 校验所有的软件包
  -g 校验所有属于组 的软件包
  --noscripts 不运行校验脚本
  --nodeps 不校验依赖性
  --nofiles 不校验文件属性

校验软件包中的文件 -K

    -v 显示附加信息
    -vv 显示调试信息


RPM_rpm、_13

RPM_rpm、_14


6、rpm数据库在/var/lib/rpm

RPM_rpm、_15

    --rebuilddb 重建RPM资料库
  --initdb 创建一个新的RPM资料库

[--dbpath DIRECTORY]  :指明建立位置

RPM_rpm、_16

小弟不才。