一,Linux软件包:有二进制包与源代码包

包管理器:包含数据库和程序组成清单,能将编译好的程序打包成一个或几个文件,可用于实现安装,卸载,升级,检验,数据库管理,主流的有RedHatrpm后缀为.prm,Debiandpkg后缀为.deb

数据库包含

程序名及版本,程序之间的依赖关系,功能说明,安装生成的个文件路径级校验信息

程序组成清单包含

文件清单,安装卸载时运行的脚本

程序的命名格式

         源代码命名:name-version.tar.{gz|gz2|xz}

                     Version包含:major.minor.release

         Rpm命名:name-version-release.arch.rpm

                     Releaserpm包的版本号与源码发行号无关。

                     arch适用的硬件平台

                程序间的依赖关系:程序间的依赖关系非常繁杂,为了解决这个问题

                            Debiandpkg升级为apt-get

                            RedHatrpm升级为yum(依赖于rpm工作)

二,rpm包:

       rpm的分包机制:主包命名和源程序一样

                       子包需要在name后加上功能说明

                       例如:主包:

    bash-4.2.3-3.centos7.x86_64.rpm

                       子包:

                         bash-a-4.2.3-3.centos7.x86_64.rpm

                         bash-b-4.2.3-3.centos7.x86_64.rpm

                         bash-devel-4.2.3-3.centos7.x86_64.rpm

       rpm包的获取途径

           1,  发行光盘或站的服务器

            http://mirrors.163.com

            http://mirrors.sohu.com/

           2,  项目官网

           3,  第三方机构或个人制作并公开的rpm

           http://rpmfind.net

           http://rpm.pbone.net

        rpm包的合法性验证:

            来源合法性

            数据完整性

rpm包的安装

     rpm [option] /path/to/package_file

         -i:install安装

         -v:显示较详细信息

         -vv:详细信息

         -vvv:更详细的信息

         -h:使用#号表示安装进度,一个#代表2%

         组合-ivh

         --test:测试是否可安装,而不安装

         --prefix PATH:将软件安装到指定目录

         --nodeps:不考虑依赖关系,强制安装。

  --replacepkgs:重新安装,如果原文件作了修改,则不执行替换,而是将应该安装的

    配置文件重命名为.rpnew文件

        rpm包的升级:

                 新版本替换老版本

                 rpm[option] /path/to/pakage_file

                     -u:有老版本则升级,没有则安装  -Uvh

                     -F:必须有老版本,否则不安装   -Fvh

                     --force:强制升级,可能会使依赖此包的程序无法运行

                 rpm包的卸载:

                     Rpm[option] package_name

                     -e:卸载   

如果存在依赖,一种是将依赖于此的安装包一并卸载,二是忽略依赖关系,但可能回事依赖的安装包运行不正常–nodeps

如果包的配置文件安装后曾被改动过,卸载时不会卸载而是被重命名为.rpmsave文件

        rpm查询操作:

            1,  查询包是否安装

rpm –qpackage_name …可以查询多个,空格分隔

            2,  查询所有已安装的包:

rpm –qa   按条件过滤rpm –qa|grep ‘pattern’

            3,  查询包的描述信息

rpm –qipackage_name

            4,  查询包安装生成了那些文件

                 rpm –qlpackage_name

            5,查询某包安装生成了那些配置文件

                 rpm –qc package_name

            6,查询某包安装生成了那些文件

                 rpm –qdpackage_name

            7,查询程序包的相关脚本

                 rpm –q –scriptspackage_name

            8,查询某文件是由那个包安装生成的

                 rpm –qf/path/to/package_file

            9,对尚未安装的包进行查询

                 rpm –qpi /path/to/package_file

                 rpm –qpl /path/to/package_file

                 rpm –qpc /path/to/package_file

                 rpm –qpd /path/to/package_file

        效验:检查包安装后生成的文件属性是否发生变化

rpm –V package_name

   各属性代表的意义,某属性为变化显示为.

S file Size differs

M Mode differs (includes permissions and file type)

 5 digest (formerly MD5 sum)differs

D Devicemajor/minor number mismatch

L readLink(2) path mismatch

U User ownership differs

G Group ownership differs

T mTime differs

                     P caPabilities differ

       rpm包来源合法性及完整性检验

                     前提:在当前系统上导入包的制作者的公钥

                     导入:

                          rpm --import/path/to/key_file

                          # rpm -qa gpg-pubkey*

                          显示所有已经导入的gpg格式的公钥

     # rpm -qi gpg-pubkey-NAME

                      显示密钥的详细信息

                      检查包:安装过程中会自动执行

                      手动检查:

                           rpm -K /path/to/package_file

                           rpm --checksig /path/to/package_file

                      不检查包完整性:

                           rpm-K --nodigest

                      不检查来源合法性:

                           rpm-K –nosignature

        数据库重建

上边我们说过,数据库里包含了程序名及版本,程序之间的依赖关系,功能说明,安装生成的个文件路径级校验信息,如果书没有数据库,那么rpm包的安装将会无法确定依赖关系等所以我们要学会数据库的重建

数据库的目录为/var/lib/rpm

           初始化:rpm - -initdb如果没有库则会创建一个,如果有则不创建

           重建:rpm - -rebuilddb:直接重建覆盖原有数据

三,yum                 

        yum的功能

       可以解决rpm包的依赖关系

    yum的工作流程

           第一步:获取仓库数据缓存与本地/var/cache/yum

    第二部:yum客户端程序在本地分析元数据文件,并结合本地系统环境(已安装的包)做出   

    要安装的程序包的决策

    第三部:获取程序包根据决策联系Yum仓库,下载各程序包缓存于本地后,一并进行安装;

    yum配置文件中可用的四个变量

    $releasever: 程序的版本,对Yum而言指的是redhat-release版本;只替换为主版本号,

    如RedHat6.5,则替换为6;

           $arch:系统架构

           $basearch:系统基本架构,如i686i586等的基本架构为i386

           $uuid:

           $YUM0-9:在系统中定义的环境变量,可以在yum中使用

    Linux软件安装之rpm—yum_仓库

    文件中以变量的方式指定对应的参数就是为了适应文件路径下的更新,而不用每次都更新路

    径。

        yum使用机制

           要使用yum必须确保有yum仓库可用

           Rpm包的文件服务器中,repodate目录的父目录就是一个仓库

           Rpm包的获取路径

               ftp格式的        ftp://server/path/to/repository

               http格式的    http://server/path/to/repository

               nfs格式的      nfs://server/nfs_path

               file本地文件    file:///path/to/repository

               光盘镜像文件         file:///media/cdrom

           yum还提供了repo格式的配置文件,在其中指明仓库访问路径及各种属性

               主配置文件:/etc/yum.conf

               其他配置文件:/etc/yum.repos.d/下以.repo结尾的

           yumrepo文件的格式。

               [REPOID]

               name=somefor this repository

               baseurl=file:///media/cdrom

                       http://server/path/to/repository

           enabled={0|1} 默认不启用为0,启用为1(仓库状态)

           gpgcheck={0|1}0不检测,1检查,默认

           gpgkey=URL(指向KEY地址)

           mirrorlist=URL to a file (可以讲baseurl指定在一个文件中,mirrorlist指定)

           cost={1..n}指定仓库访问开销,默认1000,越小优先级越高

    Linux软件安装之rpm—yum_yum_02

    yum仓库包含:

        数据:各种rpm

    元数据:数据文件,包名,版本信息,各个包所含的文件类表,依赖关系,报分组信息

    Yum下的各种数据包,只显示了10

    Linux软件安装之rpm—yum_rpm_03

         yum仓库的类型

            base库:通常为系统发行版所提供的程序包

            updates库:升级安装包库,优先级高于base

     yum仓库自建

            1、如何自建基于光盘镜像的yumrepo

               找一个挂载镜像

    Linux软件安装之rpm—yum_rpm_04

               创建一个yum仓库指向镜像

            2、自建提供yum仓库的中心服务器

               ftp,http, nfs

               http为例,步骤:

               (1)安装httpd程序,并启动服务

                  #rpm -ivh httpd-

                  或者

                  #yum install httpd

                  我选择yum安装

    Linux软件安装之rpm—yum_rpm_05

    Linux软件安装之rpm—yum_仓库_06

         安装成功

         启动服务

          #service httpd start                        

    Linux软件安装之rpm—yum_rpm_07

                 #chkconfig httpd on (设定开机启动状态)

              (2)httpd的文档根目录为/var/www/html

                 创建子目录,存放某相关的所有rpm

            Linux软件安装之rpm—yum_仓库_08

                 我们在html创建一个repository作为仓库目录

              (3)为仓库生成元数据文件,以使能够作为仓库使用

                 #rpm -ivh createrepo-

                 或者

                 #yum install createrepo

                 #createrepo /path/to/rpm_repo/ 

           Linux软件安装之rpm—yum_rpm_09

           Linux软件安装之rpm—yum_仓库_10

    这就是我们自己创建的仓库,然后配置/etc/yum.repos.d/*即可使用

(4) 配置yum客户端使用此仓库即可

                  配置方法见yum的使用机制

Rpm与yum的使用及仓库创建就完成了