软件安装与管理–rpm、yum

一、rpm包管理器

    1、介绍rpm

       在linux系统中,服务是要通过程序来提供的,通过调用API接口编写好之后的源码包文件对于普通用户来说,安装起来较为繁琐。于是人们将源码在编译安装的环境下制作了更加高级的rpm包,它的最大特点是避免了对原软件包的编译安装,以更加简便的安装方式提供给用户。可以使用rpm(RedhatPackage Manager)管理器来进行安装.

       rpm包格式

      wKiom1e4cKvT6CJrAABfNWYck44825.jpg

    2、rpm包管理器

        <1>安装

           rpm {-i|–install} [install-options] PACKAGE_FILE …

           rpm -i FILE..

             -i:表示安装        
             -v:输出详细过程
             -h:以进度条的方式显示安装过程

           常用选项

             --test:测试安装,不进行实际安装
             --nodeps:忽略依赖关系安装
             --replacepkgs:重新安装
             --force:强制安装

        <2>升级            

           rpm {-U|–upgrade} [install-options] PACKAGE_FILE …

           rpm {-F|–freshen} [install-options] PACKAGE_FILE …

           rpm -U FILE..

             -U:安装或者升级
             -F:仅升级
             -v:输出详细过程
             -h:以进度条的方式显示安装过程

           常用选项

             --oldpackage:降级成旧版本
             --force:强制升级到新版本

        <3>卸载           

           rpm {-e|–erase} [–allmatches] [–nodeps] [–test] PACKAGE_NAME …

                     rpm -e FILE..

                     常用选项

             -allmatches:卸载所有匹配指定程序包名称的程序包的各版本
             --nodeps:忽略依赖关系卸载程序包
             --test:测试卸载程序包

        <4>查询

           rpm {-q|–query} [select-options] [query-options] [FILE..]                

              -q file.rpm:查询指定的rpm包是否安装

           [select-options]

             -p:查询未安装的包的信息
             -a,--all:查询已安装的所有程序包
             -f FILE:查询指定的文件由哪个程序包安装生成
             --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供
             --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖

           [query-options]

             -c: 查询程序的配置文件
             -d: 查询程序的文档
             -i: 查询程序的详细信息
             -l: 查看指定的程序包安装后生成的所有文件;
             --scripts:程序包自带的脚本片断
             -R: 查询指定的程序包所依赖的CAPABILITY;
             --provides: 列出指定程序包所提供的CAPABILITY;

*这里注释一下cpio的特殊用法

示例:如果删除了一个rpm包的程序文件,而又不想重新安装时还原原有的配置文件,可以选择只安装rpm包中的程序文件。

步骤1、查看rpm安装包的文件列表

[root@centos6 Packages]# rpm2cpio tree-1.5.3-3.el6.x86_64.rpm | cpio -t
./usr/bin/tree
./usr/share/doc/tree-1.5.3
./usr/share/doc/tree-1.5.3/LICENSE
./usr/share/doc/tree-1.5.3/README
./usr/share/man/man1/tree.1.gz
132 blocks

 步骤2、解压包内文件

[root@centos6 ~]# rpm2cpio tree-1.5.3-3.el6.x86_64.rpm | cpio -id
132 blocks

步骤3、移动程序文件

[root@centos6 ~]# cp usr/bin/tree /usr/bin

        <5>包校验

           rpm {-V|–verify} [select-options] FILE..

                      注:[select-options]与上不同,不予列出

                      下面介绍俩个常用的检查机制

           合法性校验:rpm –import Public key

[root@localhost ~]#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[root@localhost ~]#rpm -ivh zsh-5.0.2-14.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:zsh-5.0.2-14.el7                 ################################# [100%]

                 安装过程不提示警告

           完整性校验rpm -K file.rpm

[root@localhost ~]#echo ' ' > zsh-5.0.2-14.el7.x86_64.rpm 
[root@localhost ~]#rpm -K zsh-5.0.2-14.el7.x86_64.rpm 
error: zsh-5.0.2-14.el7.x86_64.rpm: not an rpm package

                 检查出现错误          

        <6>数据库维护

           系统上的rpm包依靠一个数据库(var/lib/rpm/)来维护,一旦rpm数据库删除,系统上关于包的任何操作都将无法进行,因为程序包的操作都是由数据库来维护的。

           rpm –initdb: 创建数据库

           rpm –rebuilddb:创建数据库索引

[root@localhost /var/lib/rpm]#rm -rf *
[root@localhost /var/lib/rpm]#rpm -q bash
package bash is not installed
[root@localhost /var/lib/rpm]#rpm --initdb
[root@localhost /var/lib/rpm]#ls
Basenames     __db.001  __db.003  Group       Name          Packages     Requirename  Sigmd5
Conflictname  __db.002  Dirnames  Installtid  Obsoletename  Providename  Sha1header   Triggername
[root@localhost /var/lib/rpm]#rpm -q bash
package bash is not installed

 上面例子证明:即使使用rpm –initdb恢复数据库,也是无济于事,因为其中并没有rpm包的数据信息。友情提示:危险操作,切勿模仿 

    3、yum机制及其使用

二、yum包管理器

    1、介绍yum

       前面提到rpm的安装,但是因为库调用的原因,各个软件包之间会存在依赖条件,为了解决这个问题,出现了yum(Yellow dog Updter, Modified),作为rpm的前端程序,可自动处理依赖性关系(即当一个包依赖到另一个包时,自动安装对应的包)  

    2、yum工作原理          

       yum的工作模式分为俩部分:yum服务器端,client的yum工具。

       yum服务器端存放着全部rpm包,以及特定的数据库文件来索引rpm包和记录rpm包之间的依赖关系。

       client端每次调用yum命令的时候,通过解析/etc/yum.repos.d配置文件中的URL找到yum服务器。并且yum会定期去更新yum服务器上的rpm包的元数据和依赖关系信息到本地(/var/cache/yum/),每次使用yum操作rpm包时,根据数据库里信息确定安装包的名字,版本号,所需要的依赖包等,然后再去yum服务器实现操作。

       工作原理示例图

  wKioL1e4fdjjl8ceAAB0D-vqvb8816.jpg

    3、配置yum源

      yum源配置格式      

            [repositoryID]

            name=Some name for this repository

            baseurl=url://path/to/repository/

            enabled={1|0}

            gpgcheck={1|0}

            gpgkey=URL 

       URL书写格式     

            ftp://

            http://

            file:///           

       <1>本地

         ###新建cdrom目录
         [root@localhost ~]#mkdir /media/cdrom
         ####挂载光盘文件到目录下
         [root@localhost ~]#mount /dev/cdrom /media/cdrom/
         mount: /dev/sr0 is write-protected, mounting read-only
         ####包文件就在Packages中,repodata父目录即为yum源目录
         [root@localhost ~]#cd /media/cdrom/
         [root@localhost /media/cdrom]#ls
         CentOS_BuildTag  EULA  images   LiveOS   repodata  RPM-GPG-KEY-CentOS-Testing-7
         EFI   GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL
         ####新建yum配置文件
         [root@localhost /media/cdrom]#cd /etc/yum.repos.d/
         [root@localhost /etc/yum.repos.d]#ls
         CentOS-Base.repo.bak  CentOS-Debuginfo.repo  CentOS-Media.repo CentOS-Vault.repo
         CentOS-Base.repo  CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo
         [root@localhost /etc/yum.repos.d]#vim base.repo  ###注意:要先移除原来的repo文件
         [base]
         name=Local yum repository
         baseurl=file:///media/cdrom
         gpgcheck=1              ####此处如果gpgcheck=0的话,可以不写gpgkey 
         enabled=1 
         gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

       <2>远端Server

          如果虚拟机支持联网的话,可以直接使用网络上的yum源

         ####直接在/etc/yum.repo下建立配置文件即可
         [root@localhost /etc/yum.repos.d]#vim base2.repo
         ####此处给出示例 
         [base2]
         name=Server yum repository
         baseurl=http://10.1.0.1/cobbler/ks_mirror/7/
         gpgcheck=1
         enabled=1
         gpgkey=http://10.1.0.1/cobbler/ks_mirror/7/RPM-GPG-KEY-CentOS-7

    4、yum命令

      yum [options] [command] [package …]

       <1>显示仓库列表

          yum repolist

       <2>显示程序包

          yum list {available|installed|updates} 

  •    <3>安装升级

  •       yum install package…

  •       yum apdate package…

  •       yum downgrade package..

  •    <4>查看包的详细信息

  •       yum info package…

  •    <5>删除程序包

  •       yum remove package…

  •    <6>构建缓存

  •       yum makecache

  •    <7>清理缓存

  •        yum clean [ metadata | all ]

  •    <8>搜索

  •       yum search Key_word

  •    <9>查看yum事务历史

  •       yum history

  •       yum history undo # :可以撤销某个事物历史的所有安装包,类同卸载

  •    <10>包组的查看

  •        yum gruplist 

  •    <11>包组的安装

  •        yum groupinstall group… 

  •    <12>包组的升级

  •        yum groupupdate group..

  •    <13>包组的卸载

  •        yum groupremove group…

原创文章,作者:mfwing,如若转载,请注明出处:http://www.178linux.com/38767

(1)
mfwingmfwing
上一篇 2016-08-22
下一篇 2016-08-22

相关推荐

  • 开班第一天

    我的一篇小日记

    Linux干货 2018-03-26
  • 浅谈用户名和权限

        小编已经写了两篇博客了,却忘了自我介绍,咳咳咳(隆zhuang重qiang介zuo绍shi)一下:翠衣薄纱如花艳,柳眉凤眼俏佳人说的就是我!不扯了其实,小编拥有一个四口之家,那么小编今天就借家献佛给你们讲讲用户组和权限。     所属主(me):一般为文件的创建者,谁创建了该文件,就天然的成…

    Linux干货 2017-07-30
  • Redis的编译安装

    介绍     redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更…

    Linux干货 2015-02-28
  • php-fpm

    1.安装 mariadb 服务 修改配置文件 2.musql 安全加强 3.安装 php-fpm php-mysql php-mbstring php-mcrypt 服务 修改配置文件 4.安装httpd服务 加虚拟主机配置文件 5.测试php网页 6.安装myadmin包及测试

    2017-06-07
  • 第二周

    第二周 1. Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 cp 复制文件和目录语法格式:cp [OPTION]… [-T] SOURCE DESTcp [OPTION]… SOURCE… DIRECTORYcp [OPTION]… -t DIRECTORY SOURCE&#8230…

    Linux干货 2017-07-21
  • Nginx:

    来自为知笔记(Wiz)

    Linux干货 2016-10-26