设为首页 收藏本站
查看: 896|回复: 0

[经验分享] 9 Linux之rpm

[复制链接]

尚未签到

发表于 2018-5-23 06:46:44 | 显示全部楼层 |阅读模式

  •   程序安装之前,来认识下程序的组成部分:

    •   二进制程序
    •   库文件
    •   配置文件
    •   帮助文件(手册、文档)
    •   。。。


    •   二进制程序:/bin,/sbin,/user/bin,/user/sbin,/usr/local/bin,/usr/local/sbin,/opt/bin,/opt/sbin
    •   库文件:/lib,/lib64,/usr/lib,/usr/lib64,/usr/local/lib,/usr/local/lib64,/opt/lib,/opt/lib64
    •   配置文件:/etc/,/etc/DIR,/usr/local/{etc,conf}。。
    •   帮助文件:/usr/share/man,/usr/share/doc,/usr/local/share/man,/usr/local/doc


    •   注:有些特殊的程序会将执行文件放置于libexec目录;


    •   编译之前:源代码
    •   编译之后:
    •   


  •   程序包管理器
      


    •   安装、卸载、升级、查询
    •   实现应用程序打包,有特定格式
    •   对兼容的程序包进行管理
    •   

    •   注:制作成的二进制格式程序与平台有相关性,故通常需要制作各种流行平台所兼容的版本



  •   编译:
  •   


    •   源代码(文本) --> 预处理 --> 编译 --> 汇编 --> 链接


    •   编译时,根据是否将被调用的库文件直接打包进生成的二进制程序文件,编译方式可分为两类:
    •   

    •   动态链接:不将被调用的库文件打包进来,而是运行时去装载它
    •   静态链接:将被调用的库文件打包进来,将来运行时,可自己完全独立运行,而无需外部库文件支持运行


    •   c程序包;
    •   


  •   程序包:
      


    •   appneme-VERSION-RELEASE.ARCH.rpm


    •   源代码:appnema-VERSION.tar.gz,appname-VERSION.tar.gz2,appname-VERSION.tar.xz
    •   包管理器(rpm)格式:
    •   


  •   常见的包管理器:
      


    •   deb:Debian
    •   rpm:Red hat Package Manager,RPM is Package Manager



  •   rpm包命名格式:
      


    •   VERSION:
    •   

    •   RELEASE:包自身的修订号,有时会有适用于os的信息
    •   ARCH:使用的平台
    •   

    •   major:主版本号
    •   minor:次版本号
    •   release:发型号
    •   x86:i386,i486,i586,i686
    •   x86_64:amd64,x86_64
    •   powerpc:ppc

    •   noarch:与平台无关


    •   appname-VERSION-RELEASE.ARCH.rpm
    •   


  •   分包机制:
  •   


    •   
    •   核心包,主包:命名与源项目名称一致;
    •   子包(支包):命名为源项目名称后附加支包中的文件提供的功能组成


  •   获取包途径:
  •   


    •   来源合法
    •   包的完整性


    •   http://rpmfind.net
    •   http://rpm.pbone.net
    •   http://pkgs.org


    •   教室:http://172.16.xx.xx/fedora-epel/6/
    •   光盘挂载
    •   lrwxrwxrwx 1 root root           3 Apr  9  2015 cdrom -> sr0
    •   lrwxrwxrwx 1 root root           3 Apr  9  2015 dvd -> sr0
    •   光盘放入光驱
    •   mkdir /media/cdrom
    •   mount -o ro -t iso9660 /dev/cdrom  /media/cdrom
    •   系统的发型光盘镜像或官方站点(或站点镜像服务器)
    •   

    •   程序包的官方站点
    •   第三方组织:epel
    •   

    •   搜索引擎
    •   

    •   建议:安装前验证其合法性
    •   


  •   CentOS系统上程序rpm包管理:
  •   


    •   安装、升级、卸载、查询、检验
    •   通过rpm命令完成



  •   安装
  •   


    •   --relocate
    •   --force
    •   --replacepkgs 相关配置文件就没了=.=!
    •   副作用:能安装成功,未必可以成功运行
    •   由众多目的单一的小程序组成,结果程序包之间存在相关性,甚至有循环依赖
    •   rpm {-i|--install } [install-options]
    •   -h:hash,以#来表示安装进度。100个#表示安装完成
    •   -v,--verbose:显示安装过程中的详细信息
    •   安装时常用的组合:-ivh,-ivvh
    •   --test,测试安装。不执行真正的安装过程,仅报告依赖关系及冲突信息等
    •   程序包之间存在的依赖关系:
    •   

    •   忽略依赖关系:--nodeps
    •   

    •   覆盖安装:重新安装并覆盖原有文件
    •   

    •   强制安装:
    •   

    •   重新定位程序包的安装位置
    •   


  •   升级:
  •   


    •   一定不要对内核进行升级(兼容性)。Linux允许多内核共存,故可直接安装多个不同版本内核
    •   若程序包的配置文件安装后曾被修改,升级时,新版本的配置文件不会覆盖老版本的配置文件,而把新版本的配置文件重命名(加后缀.rpmnew)后保存


    •   -U:升级或安装。没有安装会安装目标程序
    •   rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
    •   

    •   rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
    •   --test
    •   --nodepkgs
    •   --force
    •   --oldpackage:降级


    •   注:
    •   


  •   卸载:移除已安装的包
  •   


    •   rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]
    •   [--notriggers] [--test] PACKAGE_NAME ...

  •   简单用法:rpm -e PACKAGE_NAME
  •   --nodeps:忽略依赖关系
  •   --test:仅做测试卸载:dry-run模式
  •   --allmatches:如果一个程序包同时安装多个版本,则此选项一次全部卸载之


  •   注:
  •   


    •   如果程序包的配置文件安装后曾被修改,卸载时,此文件通常不会删除,而是被重命名(加后缀.rpmsave)后保存



  •   查询:
  •   


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

    •   [query-options]:
    •   rpm -qf  /etc/fstab
    •   rpm -qa
    •   rpm -q PACKAGE_NAME
    •   rpm -q --scripts PACKAGE_NAME
    •   rpm -q --requires PACKAGE_NAME
    •   rpm -q --provides PACKAGE_NAME
    •   rpm -q --changelog PACKAGE_NAME
    •   rpm -qd PACKAGE_NAME
    •   rpm -qc PACKAGE_NAME
    •   rpm -ql PACKAGE_NAME
    •   rpm -qi PACKAGE_NAME
    •   查询某包是否已经安装,以及检查安装的所有包,还可以查看特定包的详细信息
    •   



  •   rpm -qpi PACKAGE_FILE

  •   查询某包或某些包是否安装:
  •   查询已安装的所有包
  •   查询某文件是由哪个包安装生成:
  •   查询尚未安装的包文件的相关信息;


  •   


  •   


  •   preinstall:安装过程开始之前执行的脚本
  •   postinstall:安装过程完成后执行的脚本‘
  •   preuninstall:卸载开始之前执行的脚本
  •   postuninstall:下载过程完成之后执行的脚本



  •   脚本有四类:

  •   查询某包的简要说明信息:
  •   查询某包安装后生成的文件列表:
  •   查询某包安装后生成的配置文件:
  •   查询某包安装后生成的帮助文件:
  •   查看某包制作时随版本变化的changelog信息:
  •   查询某包提供的capabilities(包和其他功能):
  •   查询某包所依赖的capabilities:
  •   查询某包安装或卸载时会执行的脚本;
校验:

  •   rpm {-V|--verify} [select-options] [verify-options]
  •   常见用法:rpm -V PACKAGE_NAME
  •   

  •   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/RPM-GPG-KEY-GILE
  •   验证:rpm {-K|--checksig}  PACKAGE_FILE
  •   

  •   --nosignature:不检查来源合法性
  •   --nodigest:不检查完整性


  •   包未被二次修改,完整性校验成功
  •   依赖于:制作者提供的程序特征码
  •   

  •   验证方式:安装者用同样的特征码提取算法提取程序包的特征码,并与原作者提供的相比较


  •   由信任的制作者提供
  •   依赖于:制作者的数字签名:签名是作者使用自己的私钥加密程序包的特性码进行的
  •   来源合法
  •   

  •   内容合法
  •   

  •   验证其光盘中程序包的来源及完整性
  •   

rpm管理器数据库:/var/lib/rpm

  •   rpm {--initdb|--rebuilddb} [-v] [--dbpath DIRECTORY]
  •   

  •   --initdb:初始化数据库,即数据库完全不存在时,可新建之
  •   --rebuild:无论当前数据存在与否,都会直接重建此库
      

      

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-479912-1-1.html 上篇帖子: 8 Linux之grep 下篇帖子: Linux复习(一)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表