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

rpm和yum实现程序包管理功能

时间:2015-12-22 06:35:15      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:程序


 包管理器的功能:打包,包管理(安装,升级,卸载,查询及验证)
   打包:将源码包中的各种组成文件放在一个单一的归档文件中
   安装:相当于将打包文件中的各个文件放到对应的目录中去
   卸载:将安装的文件收集起来,然后删除
   升级:更新已经安装的包,新版本替换老版本
   查询:查询程序包的信息
   验证:验证包安装后生成的文件是否被改变
   
     Linux常用的包管理器
   dpkg:debian 下的包管理器
   rpm:redhat package manager
    RPM is Package Manager
   
  程序包的组成部分及存放目录:
   二进制程序:一般存放于/bin,/sbin,/usr/bin,/usr/sbin
   库文件:一般存放于/lib64,/usr/lib64
   配置文件:一般存放于/etc
   帮助文件:manual,info-->一般存放于/usr/share/doc, /usr/share/man
      
  rpm包:
   rpmbuild: 打包工具,依赖specs文件打包,生成.rpm包
   10:5,3,2
    rpm包制作时分包机制:按照功能划分
     testapp-VERSION.tar.gz,源码压缩程序包,做成rpm包后被分成不同功能的.rpm包
      核心包命名格式:testapp-VERSION-RELEASE.ARCH.rpm
      支包命名:testapp-devel-VERSION-RELEASE.ARCH.rpm
       VERSION的格式一般为:major.minor.release
         如:bash-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
     VERSION:4.2.4,包括应用源程序的主版本,次版本,和release
     RELEASE:1.el7: rpm 包制作者的release版本
     ARCH:x86_64为平台架构
     
   包和包之间,有可能存在依赖关系:
    x包--->Y包 
    rpm数据库:/var/lib/rpm/
   
  如何获取rpm包:
   1、发行版提供的程序包
   2、Fedora-EPEL项目仓库提供的程序包
   3、项目的官方站点,也通常提供rpm包
   4、搜索引擎,第三方发行商,可能被植入恶意程序,使用的时候要特别小心
    http://rpmfind.net
    http://rpm.pbone.net
    http://pkgs.org
     
  CentOS识别光盘用的设备文件:/dev/cdrom
 
  基于rpm命令实现程序包管理:
   安装
    rpm {-i|--install} [install-options] PACK_FILES...
     -i:表示安装
     -v:显示详细过程,vv,vvv显示的信息更详细
     -h:安装过程打印#号和进度百分比
     每个rpm包都提供一个或多个capabilities,若某个包安装时,依赖其它包,则需要先安装被依赖的包
     --nodeps:安装或升级之前不做包依赖性检测,但强行安装完后软件包不一定能正常工作
     --replacepkgs:如果包已经存在,可以重装程序包, rpm -ivh --replacepkgs name-VERSION-release.ARCH.rpm
   升级
    rpm {-U|--upgrade} [install-options] PACK_FILES...
    rpm {-F|--freshen} [install-options] PACK_FILES...
     -Uvh:如果有老版本的包,怎升级之,如果没有,则安装
     -Fvh:如果有老版本的包,怎升级之,如果没有,则不安装
     
     --nodeps:忽略包的依赖关系强行升级安装,安装升级之前不做包依赖性检测
     --oldpackage:降级,安装一个比现有版本低的程序版本, rpm -Uvh --oldpackage *.rpm, 降级不能用-Fvh
     --force:强制升级,若被升级的程序包,被其他程序包依赖,可能不可以直接升级。
       Same as using --replacepkgs, --replacefiles, and --oldpackage
   卸载
    rpm {-e|--erase} [--nodeps] [--noscripts] [--notriggers] [--test] PACK_NAME...
     --nodeps
     --noscripts                      do not execute package scriptlet(s)
     --notriggers                     do not execute any scriptlet(s) triggered by this package
     
   --test                  don‘t install, but tell if it would work or not,可用于安装,升级,卸载过程中的测试,不进行实际的操作
   
   查询
    rpm {-q|--query} [select-options] [query-options]
    select选项:
     -qa:查询本机安装的所有程序包
     -qf /PATH/TO/SOMEFILE:查询此处的文件是由哪个程序包安装生成
     
     -qc PACK_NAME:查询指定程序包安装生成的配置文件
     -qd PACK_NAME:查询指定程序包安装生成的文档
     -qi PACK_NAME:查询已安装的指定程序包相关信息
     -ql PACK_NAME:查询程序包安装生成的所有文件列表
     -qR PACK_NAME:查询安装包所依赖的功能文件
      -R, --requires
       List capabilities on which this package depends
     -q --provides PACK_NAME: 
      --provides        list capabilities that this package provides
     -q --scripts PACK_NAME:查询程序包相关的脚本
      preinstall:安装前脚本
      postinstall:安装后脚本
      preuninstall:卸载前脚本
      postuninstall:卸载后脚本
      
     -p:查询针对的是*.rpm程序包文件
   
   验证:检查程序包安装的文件是否被改变
    rpm {-V|--verify} [select-options] [verify-options] PACK_FILE...
     默认结果显示一下内容:
        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 ,KEY_FILE一般在/etc/pki/rpm-gpg目录下
   校验:rpm -K /PATH/TO/RPM_FILE
    [root@apache ~]# rpm -K ftp-0.17-53.el6.x86_64.rpm
    ftp-0.17-53.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
   
YUM:Yellowdog Updater Modifier
 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
    enable={1|0},1表示启用仓库
    gpgcheck={1|0},是否校验包,一般只要上面4行即可
    gpgkey=:当gpgcheck=1时,要指定该项用于校验的gpgkey
    cost=:用户指明仓库的开销
    
   定义仓库指向可用的变量
    $releasever:引用当前系统的主版本号
    $basearch:引用当前系统的基本架构
     i386,i486,i586,i686,x86_64
    http://mirrors.magedu.com/CentOS/$releasever/os/$basearch
    
 yum 命令:
  yum [options] [command] [packages]
   命令:
    安装:install
    卸载:remove
    升级:update
     yum -y update:升级所有包,改变软件设置和系统设置,系统版本内核都升级
     yum -y upgrade升级所有包,不改变软件设置和系统设置,系统版本升级,内核不改变
    查询:info
       search KEYWORD
       list all | installed | available
       provides /PATH/TO/SOMEFILE:查询指定文件由那个安装包生成
    重行安装:reinstall
    降级:downgrade
    清理缓存:clean all
    生成缓存:makecache
    
    包组:
     grouplist: 列出所有包组
     groupinfo "GRP_NAME":显示某个包组信息
     groupinstall "GRP_NAME":安装某个包组
     grroupremove "GRP_NAME":
     
    仓库:
     repolist [all|enabled|disabled]
     repoinfo [all|enabled|disabled]
     
 使用光盘当作本地仓库:
  挂在光盘至某目录
  定义仓库,使用baseurl=file:///指明其访问路径
  
 如何创建本地仓库,把下载的程序包组做成仓库:
  yum install createrepo
  createropo /PATH/TO/RPMFILES/
  
 DNF:yum 升级版,下一代包管理器

本文出自 “IDC之------技术成就梦想” 博客,请务必保留此出处http://blacktoo.blog.51cto.com/623428/1726986

rpm和yum实现程序包管理功能

标签:程序

原文地址:http://blacktoo.blog.51cto.com/623428/1726986

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