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

相关推荐

  • 马哥教育网络班21期+第14周课程练习

    iptables关键点 表:filter(过滤,防火墙);nat(网络地址转换);mangle(拆解报文,做出修改,封装报文);raw(关闭nat表启用的链接追踪机制);上述是根据功能来区分的,写规则要明白要实现的功能 链:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING 数据流向:流入PREROUTING–…

    Linux干货 2016-08-26
  • 用户\组的管理

    1、用户的标识符:UID与GID   每个登录的用户都至少会识别两个ID,那么就是UID与GID(username与groupneme)当我们要显示文件属性时,系统会根据/etc/passwd与/etc/group的内容,找到id对应的账号与组名再显示出来。 /etc/passwd文件结构   他的每一行都代表一个账号,并且里面许多账号都…

    Linux干货 2016-08-04
  • redis主从复制(3)— 复制超时

    1、repl-timeout前两篇[1]关于redis主从复制的文章解释了一些因为slave replication buffer或者replication backlog参数的错误配置(或者默认参数值)导致主从复制中断的现象。redis里面的repl-timeout参数值也太小也将会导致复制不成功。top redis headaches for devop…

    Linux干货 2016-04-05
  • 高级文件系统管理1

    本部分内容主要讲述了高级文件系统的管理,包括设定文件系统配额,设定和管理软RAID设备,配置逻辑卷,设定LVM快照和btrfs文件系统。其中文件系统配额和软RAID在企业中使用的频率并不很高,作为熟练即可,而逻辑卷的创建和LVM快照是非常重要的内容,必须精通并完全理解其原理。至于btrfs文件系统是新兴的一种技术,作为了解即可。 一、知识整理 1、文件系统配…

    Linux干货 2016-08-29
  • 计划任务与启动流程

    一、任务计划 未来的某时间点执行一次任务:    at:在指定的时间执行任务    batch:系统自行选择空闲时间去执行此处指定的任务周期性运行某任务:    cron:在指定的时间执行任务 1、at任务at [option] TIME  常用选项:&nbs…

    Linux干货 2016-09-13
  • 关于文件权限管理了解和使用

                    文件权限管理   文件属性格式              文件属性操作 chown          设置文件的所有者…

    系统运维 2016-08-05