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

相关推荐

  • Linux基础知识——SHELL之循环

    1、写一个脚本,判断当前系统用户shell是否都为可登陆shell(即非/sbin/nologin),分别计算两类用户的个数(通过比较字符串实现) #!/bin/bash #       check the user could login&nbsp…

    Linux干货 2016-12-13
  • 练习-vim的使用

    vi编辑器是linux上最常用的编辑器,vim是vi增强版, 一、vim的几种模式     编辑模式、插入模式、命令行模式     编辑模式:可以进行光标移动,字符删除,行的增删复制粘贴等操作  插入模式:对字符进行编辑,  命令行模式:通过各种命令进行保存,查找,替换,环境设置等操作 &…

    Linux干货 2016-07-04
  • socket编程原理

    1、问题的引入 1) 普通的I/O操作过程: UNIX系统的I/O命令集,是从Maltics和早期系统中的命令演变出来的,其模式为打开一读/写一关闭(open-write-read-close)。在一个用户进程进行I/O操作时,它首先调用“打开”获得对指定文件或设备的使用权,并返回称为文件描述符的整型数,以描述用户在打开的文件或设备上进行I/O操作的进程。然…

    Linux干货 2015-04-10
  • 作业管理

    作业管理 ·Linux的作业控制:          前台作业:通过终端启动,且启动后一直占据终端;          后台作业:可通过终端启动,但启动后即转入后台运行(释放终端) ·如何让作业运行于…

    Linux干货 2016-09-11
  • wordpress和discuz的负载均衡(lvs-dr)

    wordpress和discuz的负载均衡 实验目的:利用lvs-dr模型实现wordpress和discuz的负载均衡 实验要求:客户端访问wordpress或discuz服务器时,无论被调度至哪台RS上,其会话和访问的页面都应保持一致; 实验环境:一台server用作VS,两台server用作RS,一台server用于部署mysql、NFS、wordpr…

    2017-05-13
  • 第二十周作业

    一、用keepalived实现nginx与lvs的高可用集群 keepalived+nginx高可用环境:node1:    192.168.31.233     keepalived+nginx masternode2:    192.168.31.72      k…

    2017-07-22