软件包管理工具—rpm命令总结

描述:

   RPM是RedHatPackageManager的缩写,是由RedHat公司开发的软件包安装和管理程序,同Windows平台上的Uninstaller比较类似。使用RPM,用户可以自行安装和管理Linux上的应用程序和系统工具。RPM可以让用户直接以binary方式安装软件包,并且可替用户查询是否已经安装了有关的库文件;在用RPM删除程序时,它又会聪明地询问用户是否要删除有关的程序。如果使用RPM来升级软件,RPM会保留原先的配置文件,这样用户就不用重新配置新的软件了。RPM保留一个数据库,这个数据库中包含了所有的软件包的资料,通过这个数据库,用户可以进行软件包的查询.

功能:

  1、可以安装、删除、升级和管理软件;当然也支持在线安装和升级软件;

  2、通过RPM包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪个软件包;

  3、可以在查询系统中的软件包是否安装以及其版本;

  4、作为开发者可以把自己的程序打包为RPM 包发布;

  5、软件包签名GPG和MD5的导入、验证和签名发布

  6、依赖性的检查,查看是否有软件包由于不兼容而扰乱了系统;

使用权限:

  RPM软件的安装、删除、更新只有root权限才能使用;对于查询功能任何用户都可以操作;如果普通用户拥有安装目录的权限,也可以进行安装

包命名格式:

源码包: name-VERSION.tar.gz|bz2|xz

      VERSION: major.minor.release

rpm包:name-version-arch.rpm | name-version-arch.src.rpm

wKioL1e9jNLiIPArAAB3CdBtKWg271.png

特殊标记:

1、fcXX,elXX:表示这个软件包的发行商版本,bash-4.2.46-19.e17.x86_64.rpm表示这个软件包是在RHEL 7.x(Red Hat Enterprise Linux)/CentOS 7.x下使用。

2、devel:表示这个RPM包是软件的开发包,例如mysql-devel-5.1.52-1.el6_0.1.i686.rpm。

3、noarch:说明这样的软件包可以在任何平台上安装,不需要特定的硬件平台。在任何硬件平台上都可以运行。

库文件:

查看二进制程序所依赖的库文件:

ldd /PATH/TO/BINARY_FILE

管理及查看本机装载的库文件:

ldconfig

/sbin/ldconfig -p: 显示本机已经缓存的所有可用库文件

名及文件路径映射关系

配置文件: /etc/ld.so.conf, /etc/ld.so.conf.d/*.conf

缓存文件: /etc/ld.so.cache

程序包的来源

管理程序包的方式:

使用包管理器: rpm

使用前端工具: yum, dnf

获取程序包的途径:

(1) 系统发版的光盘或官方的服务器;

CentOS镜像:

https://www.centos.org/download/

http://mirrors.aliyun.com

http://mirrors.sohu.com

http://mirrors.163.com

(2) 项目官方站点

(3) 第三方组织:

Fedora-EPEL:

Extra Packages for Enterprise Linux

Rpmforge:RHEL推荐,包很全

搜索引擎:

http://pkgs.org

http://rpmfind.net

http://rpm.pbone.net

https://sourceforge.net/

(4) 自己制作

注意:检查其合法性: 来源合法性,程序包的完整性

常用命令组合:

 -ivh:安装显示安装进度–install–verbose–hash

 -Uvh:升级软件包–Update;

 -qpl:列出RPM软件包内的文件信息[Query Package list];

 -qpi:列出RPM软件包的描述信息[Query Package install package(s)];

 -qf:查找指定文件属于哪个RPM软件包[Query File];

 -Va:校验所有的RPM软件包,查找丢失的文件[View Lost];

 -e:删除包

安装:

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

-v: verbose 详细安装过程

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

rpm -ivh PACKAGE_FILE …

示例:

安装html软件包

wKiom1e6sSGxihbcAAAcWWsahRY196.png

rpm包安装

[install-options]

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

wKiom1e6shjA03zlAAAxdKXNwSk308.png–nodeps:忽略依赖关系,不建议使用该选项

–replacepkgs | replacefiles

–nosignature: 不检查来源合法性,不建议使用该选项

–nodigest:不检查包完整性,不建议使用该选项

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

%pre: 安装前脚本; –nopre

%post: 安装后脚本; –nopost

%preun: 卸载前脚本; –nopreun

%postun: 卸载后脚本; –nopostun

升级:

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:降级

–force: 强行升级

升级注意项

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

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

包查询

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

[root@localhost Packages]# rpm -q tree    查询tree包是否已安装
tree-1.6.0-10.el7.x86_64

-a: 所有包

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

[root@localhost Packages]# rpm -qf /usr/share/doc/tree-1.6.0    
tree-1.6.0-10.el7.x86_64

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

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

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

rpm2cpio 包文件|cpio –itv 预览包内文件

rpm2cpio 包文件|cpio –id “ *.conf” 释放包内文件

包查询

[query-options]

–changelog:查询rpm包的changelog

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

-d: 查询程序的文档

-i: information

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

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

-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

包校验

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

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  Link路径改变

U User ownership differs  文件的所有者是否改变

G Group ownership differs  文件的所属组是否改变

T mTime differs   文件的创建时间是否改变

P capabilities differ 

包校验

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

完整性验正: SHA256

来源合法性验正: RSA

公钥加密:

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

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

public key: 公钥,公开所有人

secret key: 私钥, 不能公开

导入所需要公钥:

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

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

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

rpm -qa gpg-pubkey*

rpm数据库

数据库重建:

/var/lib/rpm

rpm {–initdb|–rebuilddb}

initdb: 初始化    如果事先不存在数据库,则新建之否则,不执行任何操作

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

总结:

一、删除rpm包后利用本地光盘恢复rpm包的实验的步骤:(以CentOS 7为例,CentOS 6的方法类似)

1,rpm -e rpm –nodeps (在执行此操作前先做快照);reboot

2,光盘启动,进入救援模式

   Centos 6

  df

  mkdir /mnt/cdrom  

  mount /dev/sr0 /mnt/cdrom  (执行此操作前确保光盘处于正在使用状态)

   Cenots 7

3, df (查看光盘是否挂载)

4,rpm -ivh /run/../Package/rpm-4…*.rpm  –root=/mnt/sysimage

5,reboot

wKiom1e8SkyTsj-kAAAUTxvWDqg783.png

wKioL1e8SpLR9DB2AAAO2kdwqxI001.png

wKiom1e8SreyY_TXAAALMAHTpSA123.png

wKioL1e8SxiCWYtsAAAeo0PgNy8989.png

wKioL1e8SzuDwAcSAAA4c5ToDN0683.png

wKiom1e8S1-w29-BAAARt_7dBD0774.png

wKioL1e8S5bBuVSLAAAYOvHVJpY805.png

1,rpm解决不了软件包之间的依赖性

2,常用组合选项:

  -ivh:安装显示安装进度–install–verbose–hash

  -Uvh:升级软件包–Update;

  -qpl:列出RPM软件包内的文件信息[Query Package list];

  -qpi:列出RPM软件包的描述信息[Query Package install package(s)];

  -qf:查找指定文件属于哪个RPM软件包[Query File];

  -Va:校验所有的RPM软件包,查找丢失的文件[View Lost];

  -e:删除包

3,常用参数:

 Install/Upgrade/Erase options:

  -i, –install                     install package(s)

  -v, –verbose                     provide more detailed output

  -h, –hash                        print hash marks as package installs (good with -v)

  -e, –erase                       erase (uninstall) package

  -U, –upgrade=+      upgrade package(s)

  --replacepkge                    无论软件包是否已被安装,都强行安装软件包

  –test                            安装测试,并不实际安装

  –nodeps                          忽略软件包的依赖关系强行安装

  –force                           忽略软件包及文件的冲突

 Query options (with -q or –query):

  -a, –all                         query/verify all packages

  -p, –package                     query/verify a package file

  -l, –list                        list files in package

  -d, –docfiles                    list all documentation files

  -f, –file                        query/verify package(s) owning file

作业:

1,删除kernel包后,无法启动,并恢复之 (CentOS 7为例)

wKioL1e8_bKSXZqEAAAQqgTjbxU591.png

wKioL1e8_bOi7DtbAAAOSwE_Vgk518.png

wKiom1e8_bOCZ2YfAAAN5Mon9jE053.png

wKioL1e8_bPxMp0HAAAN5gB5mSc565.png

wKiom1e8_bSQbjJxAAAW4Pl7aqg196.png

wKioL1e8_bSj3O1CAAAL5rH15U8252.png

wKiom1e8_bXT84mBAAAlpUpi_bg718.png

wKioL1e8_bXQE18TAAAUiQasjOA982.png

wKiom1e8_bWhDygKAAA0bOW53TA217.png

wKioL1e8_bbjCslUAAAW4H99nKw905.png

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

(0)
上一篇 2016-08-29 08:45
下一篇 2016-08-29 08:45

相关推荐

  • 第三周作业

    1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# who | cut -d' ' -f1 | sort -u 2.取出最后登录到当前系统的用户的相关信息。 […

    Linux干货 2017-01-04
  • N26-博客作业-week10

    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) 2、为运行于虚拟机上的CentOS 6添加一块新硬件,提供两个主分区;  (1) 为硬盘新建两个主分区;并为其安装grub;  (2) 为硬盘的第一个主分区提供内核和ramdisk文件; 为第二个分区提供rootfs;  (3) 为rootfs提供bas…

    2017-04-09
  • shell脚本编程基础

    ★ 编程基础★ 脚本基本格式★ 变量★ 运算★ 条件测试★ 配置用户环境一.编程基础  程序:指令+数据  程序编程风格:      过程式:以指令为中心,数据服务于指令      对象式:以数据为中心,指令服务于数据  shell程序:提供了编程能力,解释执行&nbs…

    Linux干货 2017-03-28
  • 第二周作业

    一、文件管理命令以及演示方法  1.1. mkdir命令     作用:创建文件夹     基本用法:mkdir [OPTION]… DIRECTORY…     参数:   &nbsp…

    Linux干货 2016-08-22
  • 利用PXE技术批量安装linux系统

    技术背景 对与运维人员来说,如何安装操作系统想必并不陌生;但当我们面对大量需要安装系统的环境时,自动化安装系统就成了一项必备的技能;下面就让我们一起走进PXE这项批量自动化安装操作系统的技术吧。 PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,…

    2017-09-18
  • 第一周博客作业

    1、描述计算机的组成及其功能。
    2、按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。
    3、描述Linux的哲学思想,并按照自己的理解对其进行解释性描述。
    4、说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相应的示例来阐述。
    5、如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的。
    6、请罗列Linux发行版的基础目录名称命名法则及功用规定

    Linux干货 2018-03-13