码迷,mamicode.com
首页 > 其他好文 > 详细

rpm程序包管理和YUM仓库

时间:2015-09-11 12:50:05      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:应用程序   配置文件   manager   package   manual   

程序包管理:

 内核功能:进程管理、内存管理、网络协议栈、驱动程序、...
 应用程序:

 包管理器的功能:打包,包管理(安装、升级、卸载、查询及校验)
  deb: debian
  rpm: redhat package manager
   RPM is Package Manager

  程序包的组成部分:
   二进制程序:/bin, /sbin,/ /usr/bin, /usr/sbin,
   库文件:/lib64, /usr/lib64
   配置文件:/etc
   帮助文件:manual, info,

  包管理器:
   打包:一个单一的归档文件中;
   安装:
   卸载:
   升级:
   查询:
   校验:

    来源的合法性、完整性;

  rpm包:
   rpmbuild: specs文件

   10:5, 3, 2

    分包机制:
     testapp-VERSION.tar.gz

     核心包:testapp-VERSION
     支包:testapp-devel-VERSION

     VERSION:major.minor.release
      base-4.2.4.tar.gz

   rpm包的命名机制:
    name-VERSION-RELEASE.ARCH.rpm
     bash-4.2.4-1.el7.x86_64.rpm
     bash-devel-4.2.4-1.el7.x86_64.rpm

     RELEASE: rpm release

   包和包之间:有可能存在依赖关系:
    X --> Y

   rpm数据库:/var/lib/rpm/

  如何获取rpm包:
   1、发行版提供的程序包;
   2、Fedora-EPEL
   3、项目的官方站点
   4、搜索引擎
    
http://rpmfind.net
    http://rpm.pbone.net
    http://pkgs.org

  CentOS识别光盘用的设备文件:/dev/cdrom,

 基于rpm命令实现程序包管理:
  安装:
   rpm {-i|--install} [install-options] PACKAGE_FILE ...
    -i:
     -v:显示详细过程,-vv, -vvv
     -h:

     每个rpm包都提供一个或多个capabilities

    --nodeps:忽略依赖关系安装
    --replacepkgs:重装程序包

  升级:
   rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
         rpm {-F|--freshen} [install-options] PACKAGE_FILE ... 

          -Uvh: 如果有旧版程序包,则升级之;如果没有,则安装之;
          -Fvh: 如果有旧版程序包,则升级之;如果没有,则不安装;

          --nodeps
          --oldpackage:降级;
          --force:

        卸载:
         rpm {-e|--erase} [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ... 

        查询:
         rpm {-q|--query} [select-options] [query-options]

         查询选项:
          -qa: 查询本机已经安装的所有程序包;
          -qf /PATH/TO/SOMEFILE: 查询此处的文件由哪个程序包安装生成;

          -qc: 查询指定程序包安装生成的配置文件
          -qd: 查询指定的程序包安装生成的文档
          -qi: 查询指定的程序包的相关信息;
          -ql: 查询程序包安装生成的所有文件的列表;
          -q --scripts:查询程序包相关的脚本:
           preinstall: 安装前脚本
           postinstall:安装后脚本
           preuninstall: 卸载前脚本
           postuninstall: 卸载后脚本

          -p: 查询针对是未安装的程序包文件;

        校验:
         rpm {-V|--verify} [select-options] [verify-options]
       S file Size differs
         M Mode differs (includes permissions and file type)
         5 digest (formerly MD5 sum) differs
         D Device major/minor number mismatch
         L readLink(2) path mismatch
         U User ownership differs
         G Group ownership differs
         T mTime differs
         P caPabilities differ

 包校验:
  来源合法性验正:非对称加密
  完整性验正:单向加密

  导入密钥:rpm --import /PATH/TO/KEY_FILE
  校验:rpm -K /PATH/TO/RPM_FILE

YUM: Yellowdog Updater Modified

 yum repositories:
  文件服务器:
   
ftp://hostname/PATH/TO/REPO
   http://hostname/PATH/TO/REPO
   file:///PATH/TO/REPO

 yum程序的配置文件:
  /etc/yum.conf
   定义全局配置:对所有仓库都适用的配置
  /etc/yum.repos.d/*.repo
   一个文件通常用于一个或一组功能相近或相关的仓库

   定义一个仓库指向:
    [REPO_ID]
    name=
    baseurl=
    # mirrorlist=SCHEME://HOSTNAME/PATH/TO/MIRROR_LIST_FILE
    enabled={1|0}
    gpgcheck={1|0}
    gpgkey=
    cost=

   定义仓库指向可用变量:
    $releasever: 引用当前系统的主版本号;
    $basearch: 当前系统的基本架构;
     i386, i486, i586, i686: i386

    http://mirrors.magedu.com/CentOS/$releasever/os/$basearch


 yum命令:
  yum [options] [command] [package ...]

   命令:
    安装:install
    卸载:remove
    升级:update
    查询:
     info
     search KEYWORD
     list all|installed|availiable
     provides /PATH/TO/SOMEFILE: 查询指定文件由哪个包安装生成
    重新安装:reinstall
    降级:downgrade
    清理缓存:clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
    生动生成缓存:makecache

    包组:
     grouplist
     groupinfo "GRP_NAME"
     groupinstall "GRP_NAME"
     groupremove "GRP_NAME"

    仓库:
     repolist [all|enabled|disabled]
     repoinfo [all|enabled|disabled]

 如何使用光盘当做本地仓库:
  挂载光盘至某目录
  定义仓库,使用
file:///指明其访问路径;

 创建本地仓库:
  yum install createrepo

  createrepo /PATH/TO/RPMFILES/

rpm程序包管理和YUM仓库

标签:应用程序   配置文件   manager   package   manual   

原文地址:http://liulongthe.blog.51cto.com/5161098/1693722

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!