rpm包管理

rpm包管理

由于 RPM 是透过预先编译打包成为 RPM 文件格式后,再加以安装的一种方式,还能够进行数据库的记载。 所以 RPM 有以下的优点:

  1. RPM 内含已经编译过的程序与配置文件等数据,可以让用户免除重新编译的困扰;

  2. RPM 在被安装前,会先检查系统的硬盘容量、操作系统版本等,可避免档案被错误安装;

  3. RPM 档案本身提供软件版本信息、相依属性软件名称、软件用途说明、软件所含档案等信息,便于了解软件;

  4. RPM 管理的方式使用数据库记录 RPM 档案的相关参数,便于升级、移除、查询和验证。

在CentOS系统上使用rpm命令管理程序包无外乎:安装升级卸载查询校验数据库维护

安装

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

一般选项:

  • -i :install的意思

  • -v : verbose

  • -vv : 查看更完整的安装信息画面

  • -h : 以安装信息栏显示安装进度,以#显示程序包管理执行进度

常用:rpm  -ivh  包文件名(可以多个用空格分开,也可以直接从网络上安装)

普通用法
[root@localhost Packages]# rpm -ivh tree-1.6.0-10.el7.x86_64.rpm 
准备中...                          ################################# [100%]
正在升级/安装...
   1:tree-1.6.0-10.el7                ################################# [100%]

从网上直接安装
[root@www ~]# rpm -ivh http://website.name/path/pkgname.rpm

其它选项:

  • –test: 测试安装,但不真正执行安装;dry run模式

  • –nodeps:忽略依赖关系

  • –replacepkgs | replacefiles

  • –nosignature: 不检查来源合法性

  • –nodigest:不检查包完整性

  • –noscripts:不执行程序包脚本

    • %pre: 安装前脚本; –nopre

    • %post: 安装后脚本; –nopost

    • %preun: 卸载前脚本; –nopreun

    • %postun: 卸载后脚本; –nopostun
      rpm包管理

升级

语法1:rpm {-U|–upgrade} [install-options] PACKAGE_FILE…

语法2:{-F|–freshen} [install-options] PACKAGE_FILE…

rpm包管理

**rpm -Uvh PACKAGE_FILE …
rpm -Fvh PACKAGE_FILE …

而外的选项:

  –oldpackage:降级
  –force: 强行升级

注意:

(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此,对直接安装新版本内核
(2) 如果原程序包的配置文件安装后曾被修改,升级时,新版本的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留

查询

语法:rpm {-q|–query} [select-options] [query-options]

如果软件包未安装要查询的话用 -qp选项

查询已安装软件的信息参数:

  • -q  :仅查询,后面接的软件名称是否有安装;

  • -qa :列出所有的,已经安装在本机 Linux 系统上面的所有软件名称;

  • -qi :列出该软件的详细信息 (information),包开发商、版本说明等;

  • -ql :列出该软件所有的安装后生成的文件所在完整文件名 (list);

  • -qc :列出该软件的所有配置文件 (找出在 /etc/ 底下对应的文件名而已)

  • -qd :列出该软件的所有说明文件文档 (找出与 man 有关的档案而已)

  • -qR :列出不该软件有关的相依软件所属的档案 (Required 的意思)

  • -qf :由后面接的文件名,查看指定的文件由哪个程序包安装生成;

  • -q –whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供

  • -q –whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖

  • -q –changelog:查询rpm包的changelog(更新日志)

  • –provides: 列出指定程序包所提供的CAPABILITY(功能);

查询某个 RPM 档案内含有的信息:

  • -qp [ icdlR ]:注意 -qp 后面接的所有参数以上面的说明一致。但用途仅在于找出某个 RPM 档案内的信息,而非已安装的软件信息!注意!

rpm -qa |grep "" 用法

一般常用用法:

查看以tr开头的已安装文件

    [root@localhost Packages]# rpm -qa |grep "^tr"
    trousers-0.3.13-1.el7.x86_64
    tree-1.6.0-10.el7.x86_64
    tracker-1.2.6-3.el7.x86_64
    traceroute-2.0.19-5.el7.x86_64


查看是否安装某个文件包

    [root@localhost Packages]# rpm -q gcc
    gcc-4.8.5-4.el7.x86_64

查看程序的配置文件

    [root@localhost Packages]# rpm -qc bash
    /etc/skel/.bash_logout
    /etc/skel/.bash_profile
    /etc/skel/.bashrc

若要成功安装某程序包需要的文件

    [root@localhost Packages]# rpm -qR tree
    libc.so.6()(64bit)
    libc.so.6(GLIBC_2.14)(64bit)
    libc.so.6(GLIBC_2.2.5)(64bit)

查看某文件属于哪个软件

    [root@localhost Packages]# rpm -qf /etc/passwd
    setup-2.8.71-6.el7.noarch
方法适用于误删了某个文件恢复时用到

卸载:

语法:rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–notriggers] [–test] PACKAGE_NAME ..

一般: 我们直接 rpm -e 包名  就可以卸载了

普通校验

含义

作用的方式是『使用 /var/lib/rpm 底下的数据库内容来比对目前Linux 系统的环境下的所有软件档案 』用这个简单的方法来验证一下原本的文件系统吧!好让你了解这一阵子到底是修改到哪些档案数据了!

选项:

  • -V  :后面加的是软件名称,若该软件所吨的档案被更改过,才会列出来;

  • -Va :列出目前系统上面所有可能被更改过的档案;

  • -Vp :后面加的是文件名,列出该软件内可能被更改过的档案;

  • -Vf :列出某个档案是否被更改过~

结果说明:

S :(file Size differs) 档案的容量大小是否被改变
 M :(Mode differs) 档案的类型戒档案的属性 (rwx) 是否被改变?如是否可执行等参数已被改变
 5 :(MD5 sum differs) MD5 这一种挃纹码的内容已经丌同
 D :(Device major/minor number mis-match) 装置的主/次代码已经改变
 L :(readLink(2) path mis-match) Link 路径已被改变
 U :(User ownership differs) 档案的所属人已被改变
 G :(Group ownership differs) 档案的所属群组已被改变
 T :(mTime differs) 档案的建立时间已被改变

数字签名校验

WHY:*rpm -V 验证只能验证软件内的信息不 /var/lib/rpm/ 里面的数据库信息而已,如果该软件档案所提供的数据本身就有问题,我们可以透过数字签名来检验软件的来源的!

包来源合法性验正及完整性验正:

完整性验正:SHA256
来源合法性验正:RSA

公钥加密:

对称加密:加密、解密使用同一密钥;
非对称加密:密钥是成对儿的
public key: 公钥,公开所有人
secret key: 私钥, 不能公开

安装一个 RPM 档案时*:

  1. 首先你必须要先安装原厂释出的公钥档案;

  2. 实际安装原厂的 RPM 软件时, rpm 指令会去读取 RPM 档案的签章信息,与本机系统内的签章信息比对,

  3. 若签章相同则予以安装,若找不到相关的签章信息时,则给予警告并停止安装喔。

CentOS 7 的数字签名位于 /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

(其他centos版本把最后数字改一下就是了)

由于不同版本 GPG 密钥档案放置的位置可能不同,不过档名大多是以 GPG-KEY 来说明的, 因此你可以简单的使用 locate 或 find、
来找寻,如以下的方式来搜寻即可:

[root@www ~]# locate GPG-KEY
[root@www ~]# find /etc -name 'GPG-KEY'

导入所需要公钥:

rpm  -K |checksig rpmfile 检查包的完整性和签名

rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

CentOS 7发行版光盘提供:RPM-GPG-KEY-CentOS-7

密钥的内容基本上都是使用 pubkey 作为软件的名称的,查看方法

[root@www ~]# rpm -qa | grep pubkey    —–先列出密钥软件名称
gpg-pubkey-e8562897-459f07a4
[root@www ~]# rpm -qi gpg-pubkey-e8562897-459f07a4  ————-再以 -qi 的方式来查询看看该软件的信息

rpm数据库 : /var/lib/rpm

数据库重建:

语法: rpm {–initdb|–rebuilddb}

  • –initdb: 初始化
    如果事先不存在数据库,则新建之,否则,不执行任何操作

  • –rebuilddb:重建已安装的包头的数据库索引目录(更少)

注意:破坏库是不能恢复的虽然有命令可以重建但里面的数据就没了!!!不能这么做!!!

rpm包管理
虽然用 –initdb 能恢复目录 但也丢失了数据,用 –rebuilddb 过恢复的更少! 所以不能删库!!

其他

rpm2cpio 包文件|cpio –itv 预览包内文件

rpm2cpio 包文件|cpio –id  “ *.conf ” 释放包内文件

如果rpm软件被误删除,也可以这么安装

rpm包管理

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

(0)
qzxqzx
上一篇 2016-08-21 20:47
下一篇 2016-08-21 20:47

相关推荐

  • keepalived+haproxy实现wordpress的动静分离及负载均衡、高可用

    实验目的:使用keepalived+haproxy实现wordpress的动静分离及负载均衡、高可用 实验要求:客户端请求的动态资源代理至动态资源web组,请求的静态代理至静态资源web组,启用统计面信息并只对特定启用统计面管理功能,启用https安全连接 系统环境:CentOS 7.3、关闭selinux和清除iptables规则,A和B主机各需要两块网卡…

    2017-05-18
  • Nginx+resin调优文档[原创]

    为什么不选择Apache/mod+resin?       前面一直使用该模式,mod_caucho暴露源码的bug一直未得到彻底的解决。因此切换到Nginx+resin平台。硬件上要求除了内存一定要足够大(建议>4G),无其它要求(当然也不能太破,呵呵)。操作系统强烈要求安装64位,32位操…

    Linux干货 2015-03-27
  • N25第四周博客作业

    第四周博客作业 1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 2、编辑/etc/group文件,添加组hadoop。      3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的i…

    Linux干货 2016-12-19
  • linux的一些简单的命令与操作

    1生产环境发现一台服务器系统时间产生偏差,造成服务异常,请帮忙校正。 首先通过hwclock,clock:显示硬件时间,然后通过hwclock –s来以硬件时间为准。校正系统时间。 2生产有一个数据同步脚本需要执行很长时间,怎样做到无人值守,在管理工具退出的情况下,脚本依然能正常运行。 首先看看系统里面按没安装screen,没的话要安装。 安装:首先先把光盘…

    Linux干货 2016-10-19
  • 人志建,则无敌—网络基本知识加简单脚本练习

    马哥21期网络班-8周博客作业 1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥:网桥就是把2个不同的网段桥接起来;可隔离冲突域。 集线器:集线器就是把多根以太网线或光纤集合连接在同一段物理介质下的装置;工作在物理层;不能隔离冲突域。 二层交换机:工作于OSI模型的第2层(数据链路层),故而称为二层交换机。二层交换技术的发…

    Linux干货 2016-08-29
  • 马哥教育网络班19期+第十周课程练习

    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) CentOS主机按以下顺序启动 (1)POST     加电自检         (2)BIOS    &nbsp…

    Linux干货 2016-07-07

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-22 09:12

    文章总结的很全面,rpm管理工具中的查询语句是常用的操作需要重复练习,熟练掌握。