Linux程序包管理rpm

CentOS系统上rpm命令管理程序包:

安装、卸载、升级、查询、校验、数据库维护

 安装:

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

-v: verbose

-vv:

-h: #显示程序包管理执行进度;每个#表示2%的进度

 rpm -ivh PACKAGE_FILE …

例一:安装程序包

[root@localhost Packages]# rpm -ivh zsh-5.0.2-25.el7.x86_64.rpm
警告:zsh-5.0.2-25.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:zsh-5.0.2-25.el7                 ################################# [100%]
[root@localhost Packages]#

[install-options]

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

–nodeps:忽略依赖关系;

–replacepkgs: 重新安装;

例一:重新安装

[root@localhost Packages]# rpm -ivh --replacepkgs zsh-5.0.2-25.el7.x86_64.rpm
警告:zsh-5.0.2-25.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:zsh-5.0.2-25.el7                 ################################# [100%]

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

–nodigest:不检查包完整性;

例一:不检查来源,不检查完整性

[root@localhost Packages]# rpm -ivh --replacepkgs zsh-5.0.2-25.el7.x86_64.rpm --nosignature --nodigest
准备中...                          ################################# [100%]
正在升级/安装...
   1:zsh-5.0.2-25.el7                 ################################# [100%]
 

–noscipts:不执行程序包脚本片断;

%pre: 安装前脚本; –nopre

%post: 安装后脚本; –nopost

%preun: 卸载前脚本; –nopreun

%postun: 卸载后脚本;  –nopostun

 升级:

rpm {-U|–upgrade} [install-options] PACKAGE_FILE …

rpm {-F|–freshen} [install-options] PACKAGE_FILE …

 upgrage:安装有旧版程序包,则“升级”;如果不存在旧版程序包,则“安装”;

freeshen:安装有旧版程序包,则“升级”;如果不存在旧版程序包,则不执行升级操作;

 rpm -Uvh PACKAGE_FILE …

rpm -Fvh PACKAGE_FILE …

 –oldpackage:降级;

–force: 强行升级;

 注意:(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此,对直接安装新版本内核;

  (2) 如果原程序包的配置文件安装后曾被修改,长级时,新版本的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留;

 查询:

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

 [select-options]

-a: 所有包

-f: 查看指定的文件由哪个程序包安装生成

 -p /PATH/TO/PACKAGE_FILE:针对尚未安装的程序包文件做查询操作;

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

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

例一:查询系统上所有已安装的包

[root@localhost Packages]# rpm -qa
dracut-network-033-463.el7.x86_64

 [query-options]

–changelog:查询rpm包的changlog

例一:查询rpm包的bug

[root@localhost Packages]# rpm -q --changelog zsh
* 四 7月 14 2016 Kamil Dudka <kdudka@redhat.com> - 5.0.2-25
- improve use of new command substitution in completion (#1356388)

 -c: 查询程序的配置文件

例一:查询程序包的配置文件

[root@localhost Packages]# rpm -qc zsh
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
/etc/zprofile
/etc/zshenv
/etc/zshrc

 -d: 查询程序的文档

例一:查询文档

[root@localhost Packages]# rpm -qd zsh
/usr/share/doc/zsh-5.0.2/BUGS

 -i: information 信息

例一:查看程序包信息

[root@localhost Packages]# rpm -qi zsh

-l: 查看指定的程序包安装后生成的所有文件;

例一:查看指定的程序包安装后生成的所有文件;

[root@localhost Packages]# rpm -ql zsh

–scripts:程序包自带的脚本片断

例一:程序包自带的脚本片断

[root@localhost Packages]# rpm -q --scripts zsh
postinstall scriptlet (using /bin/sh):
if [ ! -f /etc/shells ] ; then
    echo "/bin/zsh" > /etc/shells
else
    grep -q "^/bin/zsh$" /etc/shells || echo "/bin/zsh" >> /etc/shells

 -R: 查询指定的程序包所依赖的CAPABILITY

–provides: 列出指定程序包所提供的CAPABILITY

 用法:

-qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE

-qpi PACKAGE_FILE, -qpl PACKAGE_FILE, …

-qa

 卸载:

rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts]

           [–notriggers] [–test] PACKAGE_NAME …

            –nodeps忽略软件包的依赖关系

例一:卸载软件

[root@localhost Packages]# rpm -e zsh
[root@localhost Packages]# rpm -q zsh
未安装软件包 zsh

  校验:

 rpm {-V|–verify} [select-options] [verify-options]

例一:核验文件是否有改动

[root@localhost Packages]# rpm -V zsh
S.5....T.    /usr/share/zsh/5.0.2/functions/tcp_read

        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

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

完整性验正:SHA256

来源合法性验正:RSA

公钥加密:

对称加密:加密、解密使用同一密钥;

非对称加密:密钥是成对儿的,

public key: 公钥,公开所有人

secret key: 私钥, 不能公开

导入所需要公钥:

rpm –import /PATH/FROM/GPG-PUBKEY-FILE

[root@localhost cdrom]# rpm --import RPM-GPG-KEY-CentOS-7

CentOS 7发行版光盘提供的密钥文件:RPM-GPG-KEY-CentOS-7

 数据库重建:

rpm {–initdb|–rebuilddb}

initdb: 初始化

如果事先不存在数据库,则新建之;否则,不执行任何操作;

 rebuilddb:重建

无论当前存在与否,直接重新创建数据库;

 回顾:Linux程序包管理的实现、rpm包管理器

 rpm命令实现程序管理:

安装:-ivh, –nodeps, –replacepkgs

卸载:-e, –nodeps

升级:-Uvh, -Fvh, –nodeps, –oldpackage

查询:-q, -qa, -qf, -qi, -qd, -qc, -q –scripts, -q –changlog, -q –provides, -q –requires

校验:-V

 导入GPG密钥:–import, -K, –nodigest, –nosignature

数据库重建:–initdb, –rebuilddb

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

(0)
kangkang
上一篇 2015-06-18
下一篇 2015-06-21

相关推荐

  • MYSQL高级运用-MHA(提供主从复制高可用,主节点故障时,进行故障转移)

    MHA的介绍、重用工具;
    MHA的安装;
    搭建MYSQL主从复制架构,运用MHA实现其高可用,主节点故障时,进行故障转移;并恢复整个架构;

    2017-09-24
  • redis主从复制(2)— replication buffer与replication backlog

    1、redis主从复制过程先不解释replication buffer和replication backlog,而先看看redis主从复制的过程。 redis的主从复制分为两个阶段: 1)同步(sync rdb snapshot):slave复制master的某时间点(t)的全量数据,t为master接收到slave的sync命令后执行rdb bgsave的…

    Linux干货 2016-04-05
  • Linux运维学习历程-第六天-Linux重定向和管道

    Linux运维学习历程-第六天-Linux重定向和管道 2 本章内容我们将学习linux中的重定向和管道两大用法   I/O输入与输出设备   重定向   管道   tee命令与tr命令 一、I/O设备   1、什么是I/O设备   管理和控制计算机的所有输入/输出(I/O)设备是操作系统…

    Linux干货 2016-08-03
  • ACL权限详解

    1.ACL简介 2.前期准备 3.ACL的基本操作:添加和修改 4.ACL的其他功能:删除和覆盖 5.目录的默认ACL 6.备份和恢复ACL 7.结束语 1.ACL简介 用户权限管理始终是Linux系统管理中最重要的环节。大家对Linux/Unix的UGO权限管理方式一定不陌生,还有最常用的chmod命令。为了实现一些比较复杂的权限管理,往往不得不创建很多的…

    Linux干货 2017-03-11
  • 安全和加密与创建签名证书

    安全和加密:NIST定义的安全属性:(美国国家标准与技术研究院)保密性:        数据保密性        隐私性完整性:不可篡改        数据完整性        系统完整性高可用性: …

    Linux干货 2017-04-11