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 11:04
下一篇 2015-06-21 18:50

相关推荐

  • tcp socket文件句柄泄漏

    今天发现有台redis机器上出现socket个数告警,这是很奇怪的现象。因为一台redis服务器上就部署了几个redis实例,打开的端口应该是有限。 1、netstat显示的tcp连接数正常 netstat -n | awk '/^tcp/ {++state[$NF]} END …

    Linux干货 2016-04-13
  • Linux文本处理及用户组管理命令练习

    一.文本处理基础命令 (1).  列出当前系统上所有已经登录的用户的用户名。           完成命令:who  |  cut  -d’ ‘  -f1  |  uniq  -u 示例: (2).取出最后登录到当前系统对的用户的相关信息。         完成命令:w  |  tail -1 示例: (3).取出当前系统上被用户当作…

    2018-03-11
  • MySQL存储过程中IN、OUT、INOUT参数使用

    MySQL存储过程中IN、OUT、INOUT参数使用 MySQL存储过程的参数用在存储过程的定义,共有三种参数类型,IN、OUT、INOUT形式如:CREATE PROCEDURE([IN|OUT|INOUT] 参数名 数据类型,…) IN 输入参数:表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值。| 意思…

    Linux干货 2017-05-08
  • 基于rsync+inotify实现数据实时同步传输

    前言 与传统的cp、tar备份方式相比,rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,但随着文件数量的增大和实时同步的要求,rsync已不能满足需求,随之rsync+inotify便应运而生。本文将讲解rsync的基础知识和如何基于rsync+inotify实现数据实时同步传输。 rsync相关介…

    Linux干货 2015-04-27
  • 8.3_Linux文件系统权限和特殊权限浅析

    什么是Linux文件系统权限? 在Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。 Linux文件系统权限的分类 Linux中的权限分为:read(读)、write(写)、execut(执行)三种权限 文件和目录表示的权限也各有不同 权限对于文件的意义: r: 可使用文件查看类工具获取其内容 w: 可修改内…

    Linux干货 2016-08-05
  • 8-12 文件查找

    8-12 文件查找   8–1该节主要分为三部分,分别是作业,自己对德·摩根定律的了解及find常用选项   一、作业 1、查找/var目录下属主为root,且属组为mail的所有文件 2、查找/var目录下不属于root、lp、gdm的所有文件 3、查找/var目录下最近一周内其内容修改过,同时属主不为root,也不是pos…

    Linux干货 2016-08-15