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

[经验分享] rpm包管理命令使用详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-8-19 10:42:19 | 显示全部楼层 |阅读模式
rpm包命名格式:二进制格式
      name-VERSION.tar.gz
    VERSION的格式: major.minor.release.os.arch  
    arch:i386,x64(amd64),ppc(power pc),noarch(java编写的)
    os:e17(红帽七)

eg:主版本号为3,次版本号为0,发行号为2,编译次数为1,系统为centos7,平台为x64的rpm包
redis-3.0.2-1.centos7.x64.rpm
fc 可能是 final candidate  最终版
alpha 内测版
beta 公测版
rc 发布候选版
release 正式版
拆包: 主包和支包

程序包管理器:
源代码---> 目标二进制格式----> 组织成为一个或有限几个“包”文件
实现软件的安装,升级,卸载,查询,校验

后端管理工具:
debian:dpt,dpkg,".deb"
redhat: rpm,".rpm"  
S.u.S.E:rpm ,".rpm" 源于rpm但是组织结构不同,并不能和redhat兼容
Ubantu:是debian的分支,包管理机制一样
Gentoo;parts
Archlinux:linux界的新贵
       因为linux的哲学思想是简单命令解决复杂任务,因此每个软件的功能较单一,所以各种包之间有着复杂的依赖关系,为了解决这种可以使用前端工具:
前端管理工具: 自动解决依赖关系
     yum:rhel系列系统上的rpm包管理器的前端工具
apt-get:.deb包管理器的前端工具
zypper:suse的rpm包管理工具
dnf:Fedora系统上的rpm包管理器的前端工具,功能更强大,未来centos中也可能使用
  程序包组成包管理器的功能:
       将编译好的应用程序的各组成文件打包成一个或几个程序包文件。
   
  1.程序包的组成清单(每个程序包都单独实现)
文件清单
安装或卸载时运行脚本
  2.数据库(公共) 位于/var/lib/rpm
程序包的名称和版本
依赖关系
功能说明
安装生成的各文件的文件路径及校验码信息
等等
   I
   获得程序包的路径: 一定要保证包的安全性,不要使用随意搜索到的包,保险的做法是下面等方式
1.系统发行版的光盘或官方的文件服务器(或镜像站点)
2.项目的官方站点
3.第三方组织
EPEL(较为可靠的组织):阿里云等中的epel目录
搜素引擎:不是百度或者谷歌,
http://pkgs.org
http://rpm.pbone.net
http://rpmfind.net
       4.自己动手制作
  建议:检查其合法性
来源合法性
程序包的完整性

CentOS系统上的rpm命令管理程序包:
安装,升级,卸载,查询和校验,数据库维护

rpm命令: rpm [OPTIONS]  [PACKAGE_FILE]
    安装: -i,--install
升级:-U,--updata,-F,freshen
卸载:-e,--erase
查询:-q,--query
校验: -V,--verify
数据库维护:--builddb,--initdb

   1. 安装: 常用组合rpm -ivh PACKAGE_FILE
通用选项:
  -v:verbose 显示详细信息,
  -vv:更详细的输出
rpm {-i|--install} [install-options] PACKAGE_FILE...
  [install-options]:
-h:hash marks 输出进度条,每个#表示2%的进度
--test:仅是测试,并不真的安装
--nodeps:忽略依赖关系,可以让你安装,但是不一定可以用。你建议使用
--replacepkgs;重新安装,如果自己不小心错误修改了某些配置文件,想要安装的初始文件,可以通过这个命令,但是要把改变过的文件删除,否则重新安装不会替换它
--nodigest:不检查程序包的完整性
--nosignature:不检查包签名信息,不检查来源合法性

注意: rpm可以自带脚本;
四类:--noscripts,不执行任何脚本
preinstall:安装过程开始之前运行的脚本,%pre
postinstall:安装过程完成之后运行的脚本,%post
peruninstall:卸载过程真正开始执行之前运行的脚本,
postuninstall:卸载过程完成之后运行的脚本

2.升级:
   rpm  {-U|--upgrade} [install-options]  PACKAGE_FILE
   rpm  {-F|--freshen} [install-options]  PACKAGE_FILE
   
-U:升级或安装,有则升级,无则安装
-F :  升级,如果事先没有也不会安装
--oldpackage:降级;
--force:强制升级

   常见用法:
   rpm  -Uvh PACKAGE_FILE....
   rpm  -Fvh  PACKAGE_FILE

           注意:
   1.不要对内核做升级操作;linux支持多内核版本共存,因此,直接安装新版本内核
   2.如果某源程序的配置文件安装后被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名
(FILENAME.rpmnew)后提供

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

--allmatchs:卸载所有匹配指定名称的程序包的各版本
--nodeps: 忽略依赖关系,即使该文件被依赖,也会卸载
--test: 仅是测试,并不真的卸载

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

[select-options]:
-a,-all:查询所有已经安装的包
-f FILE:查询指定的文件由那个程序安装生成
-p,--package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作
       eg:  rpm -qpi   PACKAGE.NAME: 不安装包查看包的具体信息
rpm  -qlp   PACKAGE.NAME:不安装包直接查看生成的文件
rpm  -qcp  PACKAGE.NAME:不安装包查看包会生成的配置文件
--whatprovides CAPABILITY:查看指定的CAPABLITY由哪个程序包提供
--whatrequires CAPABLITY:查询指定的CAPABLITY被哪个包所依赖
     
[query-options]
--changlog;查询rpm包的changlog;
-l,--list:列出该安装包生成的文件列表
-i,--info:程序包相关的信息,版本号,大小,所属的包组等
-c,--configure:查询指定的程序包提供的配置文件
-d,--docfiles:查询指定的程序包提供的文档
--provides:列出指定的程序包提供的所有的CAPABLITY,提供了某个文件也是能力
-R,--requires:查询指定包的依赖关系
--scripts:查看程序包自带的脚本程序

     eg:
[iyunv@localhost ~]# rpm -q --provides bash       bash提供的能力
config(bash) = 4.1.2-40.el6
bash = 4.1.2-40.el6
bash(x86-64) = 4.1.2-40.el6
[iyunv@localhost ~]# rpm -q --whatprovides 'config(bash)'      ;'config(bash)' 这个能力是谁提供的
bash-4.1.2-40.el6.x86_64
[iyunv@localhost ~]# rpm -q --whatrequires 'config(bash)'       ;'config(bash)'   这个能力被谁依赖
bash-4.1.2-40.el6.x86_64

  常见用法:
      已安装的包的相关命令
rpm -qi   PACKAGE.NAME: 查询安装包的具体信息
rpm  -ql   PACKAGE.NAME:列出安装包生成的文件
rpm -qf   FILE:查询某个文件是由那个安装包提供的
   eg:[iyunv@localhost ~]# rpm -qf /usr/share/man/man1/wait.1.gz
bash-4.1.2-40.el6.x86_64
rpm  -qc  PACKAGE.NAME:查看安装包生成的配置文件
rpm  -qa  :已经安装的所有包

不安装包直接查看:
eg:  rpm -qpi   PACKAGE.NAME: 不安装包查看包的具体信息
rpm  -qlp   PACKAGE.NAME:不安装包直接查看生成的文件
rpm  -qcp  PACKAGE.NAME:不安装包查看包会生成的配置文件

     校验:   务必保证公钥是安全的,合法的  
rpm {-V|--verify} [select-options] [verify-options]
  eg: rpm -Va
   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
  eg:
  [iyunv@localhost ~]# rpm -V zsh
S.5....T.    /usr/share/zsh/4.3.11/scripts/newuser   这里对应的就是上面的信息,.表示没有变化

包来源合法性验证和完整性验证:
合法性:一个包制作者利用单向加密数据,然后利用私钥对数据的MD5加密,这样大家获得公钥后就可以验证这个包的来源了
完整性:自己利用单向加密方法计算数据的MD5,然后比对md5码比对,如果一致,说明数据内容没有被修改。
   [iyunv@localhost ~]# rpm -K /media/cdrom/Packages/zsh-4.3.11-4.el6.centos.2.x86_64.rpm
/media/cdrom/Packages/zsh-4.3.11-4.el6.centos.2.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

光盘中包的校验码就在光盘中,导入即可,这样以后可以自动校验了
[iyunv@localhost ~]# rpm --import /media/cdrom/RPM-GPG-KEY-CentOS-6
查看导入的秘钥文件
[iyunv@localhost ~]# rpm -qa gpg-pubkey*
  gpg-pubkey-c105b9de-4e0fd3a3
删除导入的文件:
[iyunv@localhost ~]# rpm -e gpg-pubkey-c105b9de-4e0fd3a3

手动认证,比如提前有公钥
   
    数据库的重建:
      rpm {--initdb|--rebuilddb}[--depath DIRECTORY][--root DIRECTORY]
      --initdb:初始化数据库,当前无任何数据库可实验化创建一个新的;当前有时不执行任何操作,不要轻易操作
  --rebuilddb:重新构建,读取当前系统上所有已经安装过的程序包进行重新创建
  --depath:指定数据库的路径
  --root:指定根的路径
命令查看的帮助
  centos6:
man  rpm
  centos7:
  man  rpmdb


运维网声明 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-259984-1-1.html 上篇帖子: Linux如何创建和删除swap分区 下篇帖子: 运维监控有必要干吗
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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