rmp 程 序 包 管 理 介 绍-20160819

rmp 程 序 包 管 理 介 绍

§·学习大纲

※包管理器

rmp常用命令介绍

*安装

*升级:

*卸载:

*查询:

*校验:

*数据库:

rmp使用实例介绍

※包管理器

◎二进制应用程序的组成部分:

二进制文件、库文件、配置文件、帮助文件

◎程序包管理器:

debian:deb文件, dpkg包管理器

redhat: rpm文件, rpm包管理器

rpm: Redhat Package  Manager

RPM P ackage  Manager

rmp常用命令介绍

*安装

◎安装符合FHS标准,程序员把文件放在什么地方都有文件路径存放路径

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

安装:

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

-v  :  verbose

-vv :

-h  : #显示程序包管理执行进度

  rpm  -ivh  PACKAGE_FILE …[常用的安装命令

rpm   -iinstallv(详细信息)h(显示进度条)  ]安装:

 

*升级:

◎升级:

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

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

upgrade[有旧版本就升级,没有就安装软件]:安装有旧版程序包,则“升级”

如果不存在旧版程序包,则“安装”

freshen[有旧版本就升级,没有就不安装软件]:安装有旧版程序包,则“升级”

如果不存在旧版程序包,则不执行升级操作

rpm  -Uvh  PACKAGE_FILE …

rpm   -Fvh  PACKAGE_FILE …

–oldpackage:降级[降级

rpm -ivh  –oldpackage  旧版本包名]

–force: 强行升级

*卸载:

rpm  {-e|–erase}  [–allmatches] [–nodeps] [–noscripts] [–notriggers] [–test]  PACKAGE_NAME …

*查询:

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

[select-options]

-a: 所有包

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

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

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

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

rpm2cpio 包文件|cpioitv预览包内文件[

查看rpm的包内的文件。

rpm2cpio 包文件|cpio id *.conf”释放包内文件[rpm单个的文件解压出来]

[query-options]

–changelog:查询rpm包的changelog[更新日志]

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

-d: 查询程序的文档

-i: information

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

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

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

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

◎查询用法:

-qi  PACKAGE, -qfFILE, -qc PACKAGE, -qlPACKAGE, -qdPACKAGE

-qpi  PACKAGE_FILE, -qplPACKAGE_FILE, …

-qa :查询所有的安装包

*校验:

rpm {-V|–verify} [select-options] [verify-options][rpm -V tree 查看文件包哪些属性被修改过。

可以修改帮助文件内容,测试用一用。

查询所有包的校验

rpm -Va

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  mTimediffers

P  capabilities differ

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

完整性验正:SHA256

来源合法性验正:RSA

◎公钥加密:

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

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

public key: 公钥,公开所有人

secret key: 私钥, 不能公开

◎导入所需要公钥:

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

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

oot@Centos7 /]# rpm -qa | grep  gpg

gpg-pubkey-f4a80eb5-53a7ff4b

删除  gpg-pubkey-f4a80eb5-53a7ff4b即可删除公钥

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

rpm  -qa  gpg-pubkey*

*数据库:

◎数据库重建:

/var/lib/rpm

rpm  {–initdb | –rebuilddb}

initdb: 初始化

如果事先不存在数据库,则新建之

否则,不执行任何操作

rebuilddb:重建

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

rmp使用实例介绍

安装tree命令最新版,下载后校验数据包的完整性,安装前测试安装,看看需要安装后有哪些文件,该程序包依赖哪些软件包?(主要在于熟悉软件包的命令)

解:

1.我们在系统软件光盘中查找 tree。

[root@Centos7 Packages]# ls | grep "^tree"
tree-1.6.0-10.el7.x86_64.rpm
[root@Centos7 Packages]# pwd
/run/media/root/CentOS 7 x86_64/Packages
[root@Centos7 Packages]#

 

2.需要校验文件包,我们需要导入公钥。

[root@Centos7 Packages]# rpm -K tree-1.6.0-10.el7.x86_64.rpm #检测包的完整性
tree-1.6.0-10.el7.x86_64.rpm: RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: (MD5) PGP#f4a80eb5) 
[root@Centos7 Packages]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #导入公钥
[root@Centos7 Packages]# rpm -K tree-1.6.0-10.el7.x86_64.rpm 
tree-1.6.0-10.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
[root@Centos7 Packages]#

 

[root@Centos7 Packages]# rpm -qi gpg-pubkey-f4a80eb5-53a7ff4b  #查看公钥信息
Name        : gpg-pubkey
Version     : f4a80eb5
Release     : 53a7ff4b
Architecture: (none)
Install Date: Fri 19 Aug 2016 05:05:56 PM CST
Group       : Public Keys
Size        : 0
License     : pubkey
Signature   : (none)
Source RPM  : (none)
Build Date  : Mon 23 Jun 2014 06:19:55 PM CST
Build Host  : localhost
Relocations : (not relocatable)
Packager    : CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>
Summary     : gpg(CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>)
Description :
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: rpm-4.11.3 (NSS-3)
 
mQINBFOn/0sBEADLDyZ+DQHkcTHDQSE0a0B2iYAEXwpPvs67cJ4tmhe/iMOyVMh9
Yw/vBIF8scm6T/vPN5fopsKiW9UsAhGKg0epC6y5ed+NAUHTEa6pSOdo7CyFDwtn
4HF61Esyb4gzPT6QiSr0zvdTtgYBRZjAEPFVu3Dio0oZ5UQZ7fzdZfeixMQ8VMTQ
4y4x5vik9B+cqmGiq9AW71ixlDYVWasgR093fXiD9NLT4DTtK+KLGYNjJ8eMRqfZ
Ws7g7C+9aEGHfsGZ/SxLOumx/GfiTloal0dnq8TC7XQ/JuNdB9qjoXzRF+faDUsj
WuvNSQEqUXW1dzJjBvroEvgTdfCJfRpIgOrc256qvDMp1SxchMFltPlo5mbSMKu1
x1p4UkAzx543meMlRXOgx2/hnBm6H6L0FsSyDS6P224yF+30eeODD4Ju4BCyQ0jO
IpUxmUnApo/m0eRelI6TRl7jK6aGqSYUNhFBuFxSPKgKYBpFhVzRM63Jsvib82rY
438q3sIOUdxZY6pvMOWRkdUVoz7WBExTdx5NtGX4kdW5QtcQHM+2kht6sBnJsvcB
JYcYIwAUeA5vdRfwLKuZn6SgAUKdgeOtuf+cPR3/E68LZr784SlokiHLtQkfk98j
NXm6fJjXwJvwiM2IiFyg8aUwEEDX5U+QOCA0wYrgUQ/h8iathvBJKSc9jQARAQAB
tEJDZW50T1MtNyBLZXkgKENlbnRPUyA3IE9mZmljaWFsIFNpZ25pbmcgS2V5KSA8
c2VjdXJpdHlAY2VudG9zLm9yZz6JAjUEEwECAB8FAlOn/0sCGwMGCwkIBwMCBBUC
CAMDFgIBAh4BAheAAAoJECTGqKf0qA61TN0P/2730Th8cM+d1pEON7n0F1YiyxqG
QzwpC2Fhr2UIsXpi/lWTXIG6AlRvrajjFhw9HktYjlF4oMG032SnI0XPdmrN29lL
F+ee1ANdyvtkw4mMu2yQweVxU7Ku4oATPBvWRv+6pCQPTOMe5xPG0ZPjPGNiJ0xw
4Ns+f5Q6Gqm927oHXpylUQEmuHKsCp3dK/kZaxJOXsmq6syY1gbrLj2Anq0iWWP4
Tq8WMktUrTcc+zQ2pFR7ovEihK0Rvhmk6/N4+4JwAGijfhejxwNX8T6PCuYs5Jiv
hQvsI9FdIIlTP4XhFZ4N9ndnEwA4AH7tNBsmB3HEbLqUSmu2Rr8hGiT2Plc4Y9AO
aliW1kOMsZFYrX39krfRk2n2NXvieQJ/lw318gSGR67uckkz2ZekbCEpj/0mnHWD
3R6V7m95R6UYqjcw++Q5CtZ2tzmxomZTf42IGIKBbSVmIS75WY+cBULUx3PcZYHD
ZqAbB0Dl4MbdEH61kOI8EbN/TLl1i077r+9LXR1mOnlC3GLD03+XfY8eEBQf7137
YSMiW5r/5xwQk7xEcKlbZdmUJp3ZDTQBXT06vavvp3jlkqqH9QOE8ViZZ6aKQLqv
pL+4bs52jzuGwTMT7gOR5MzD+vT0fVS7Xm8MjOxvZgbHsAgzyFGlI1ggUQmU7lu3
uPNL0eRx4S1G4Jn5
=OGYX
-----END PGP PUBLIC KEY BLOCK-----

 

3.测试模式安装tree,查询

 

[root@Centos7 Packages]# rpm -ivh tree-1.6.0-10.el7.x86_64.rpm  --test #测试安装
Preparing...                          ################################# [100%]
package tree-1.6.0-10.el7.x86_64 is already installed
[root@Centos7 Packages]# rpm -qa | grep tree-1.6.0-10.el7.x86_64.rpm 
[root@Centos7 Packages]#

 

[root@Centos7 Packages]# rpm -qpi tree-1.6.0-10.el7.x86_64.rpm  #查询未安装的包文件信息
Name        : tree
Version     : 1.6.0
Release     : 10.el7
Architecture: x86_64
Install Date: (not installed)
Group       : Applications/File
Size        : 89505
License     : GPLv2+
Signature   : RSA/SHA256, Fri 04 Jul 2014 01:36:46 PM CST, Key ID 24c6a8a7f4a80eb5
Source RPM  : tree-1.6.0-10.el7.src.rpm
Build Date  : Tue 10 Jun 2014 03:28:53 AM CST
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://mama.indstate.edu/users/ice/tree/
Summary     : File system tree viewer
Description :
The tree utility recursively displays the contents of directories in a
tree-like format.  Tree is basically a UNIX port of the DOS tree
utility.

[root@Centos7 Packages]# rpm -qpl tree-1.6.0-10.el7.x86_64.rpm  #查询安装后生成的文件
/usr/bin/tree
/usr/share/doc/tree-1.6.0
/usr/share/doc/tree-1.6.0/LICENSE
/usr/share/doc/tree-1.6.0/README
/usr/share/man/man1/tree.1.gz

[root@Centos7 Packages]# rpm -qpR tree-1.6.0-10.el7.x86_64.rpm  #查询包安装需要的库文件
libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)
rpmlib(PayloadIsXz) <= 5.2-1

 

 

4.rpm程序包安装。

3步没有实际的安装程序包,只是对文件包做检测,查询程序包的信息,查询生成的文件,查询需要的依赖库文件等等。

#安装rpm程序包[root@Centos7 Packages]# rpm -qa | grep tree [root@Centos7 Packages]# rpm -ivh tree-1.6.0-10.el7.x86_64.rpm  #安装程序包Preparing...                          ################################# [100%]Updating / installing...   1:tree-1.6.0-10.el7                ################################# [100%][root@Centos7 Packages]# rpm -qa | grep treetree-1.6.0-10.el7.x86_64

 

小结:

以上是rpm包常用的安装命令,由于rpm命令无法解决包与包之间的依赖关系,需要手工解决。手工卸载软件时,当你卸载的软件有其它软件依赖时,无法正常的卸载,但是可以忽略依赖关系,但是不建议。例如你卸载bash时是无法正常卸载的,卸载的时候带 –-nodeps 参数可以卸载,但是系统重启后无法启动,切记不要-nodeps卸载软件。 

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

(0)
linux_rootlinux_root
上一篇 2016-08-21
下一篇 2016-08-21

相关推荐

  • LVS实现

    一 LVS-NAT实验前的准备 操作系统:CentOS 6.7 64位 配置防火墙,iptables –F 清理防火墙规则或者关闭iptables 关闭SELINUX, setenforce 0  #立即生效(实际是宽容模式) Director ip:172.16.2.1  VIP:192.168.1.8 RS1 ip:172.16.2.…

    Linux干货 2016-12-29
  • N25-第九周博客作业

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash # 统计登录用户和非登陆用户的个数 # author: han declare -i loginnum=0 declare -i nologinnum=0 whil…

    Linux干货 2017-02-24
  • 走入系统命令

    一、inode节点号         在linux中,每一个文件都有唯一的inode号,inode号也是系统识别的唯一编码,而文件名仅仅是为了使用者区分辨认, inode (index node )表中包含文件系统所有文件列表 一个节点(索引节点)是在一个表项,包含有关…

    2017-05-25
  • YUM工具的工作原理、用法及源 码包的编译安装

    YUM工具的工作原理,用法及源码包的编译安装 _ueditor_page_break_tag_ 一、 CentOS: yum, dnf       1.YUM: (Yellow dogUpdate Modifier),rpm的前端程序,用来解决软件包相关依赖性,可以在多个库之间定位软件包,up2date的替代工具   …

    Linux干货 2016-09-01
  • 搭建LAMP+NFS(附加mysql共享NFS目录练习总结)

    练习一 环境布局: 主机6 route A (10.1.32.14)作为DNS服务器 主机centos 7 class (10.1.32.3)作为Apache,PHP(模块方式)服务器1(有discuz程序) 主机centos 7 server (10.1.32.13)作为Apache,php(模块方式)服务器2(无discuz) 主机centos 6 cl…

    系统运维 2016-10-25
  • shell脚本的if语句

                                  第一篇  shell脚本中的if语句 一、shell脚本的语句控制        □前面提到了过程式…

    Linux干货 2016-08-19