您的位置:首页 > 产品设计 > 产品经理

软件包管理:rpm和yum

2017-08-18 20:55 225 查看
今天小编与大家聊聊软件包管理 的俩大神器:rpmyum,它俩在我们在对软件进行安装,查询,卸载,升级等等方面可给我们带来了非常,相当,特别多的方便,哈哈,听到小编说这么多副词来形容它们就知道它们非常重要。接下来小编从下面几个方面来介绍他们,废话不多,全是干货。

1.包管理器的功能

1)将软件包打包成一个文件,其中包括:

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

1.都有配置文件,通过设置配置文件来改变程序启动时的运行特征

2.都具有二进制的程序主体

3.都自带库文件,供程序主体进行调用

4.都带有帮助文件,对程序的使用方法进行说明

2)程序包管理器:

debian:deb文件, dpkg包管理器

redhat: rpm文件, rpm包管理器

rpm: Redhat Package Manager

RPM Package Manager

2.rpm与yum的区别于联系

rpm是由红帽公司开发的软件包管理方式,使用rpm我们可以方便的进行软件的安装、查询、卸载、升级等工作。但是rpm软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个rpm包组成时。

Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。

3.RPM的用法

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


1.安装

rpm包安装

rpm -i [install-options] 包名

-v 显示详细信息

-vv 显示更详细信息

-h 显示进度

-ivh rpm包名

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

–nodeps:忽略依赖关系直接安装

–replacepkgs | replacefiles 已安装过的包重装。

–nosignature: 不检查来源合法性

–nodigest:不检查包完整性

–noscripts:不执行程序包脚本

%pre: 安装前脚本; –nopre

%post: 安装后脚本; –nopost

%preun: 卸载前脚本; –nopreun

%postun: 卸载后脚本; –nopostun

Rpm2cpio 软件包名 > name

实例:

1.安装



2 Rpm -iv 软件名和-ih 软件名



Rpm -ivh 显示名字和安装进度



-ivvh 软件名 显示详细信息



3.rpm -ivh –test 测试安装,但不真正执行安装



4000



4–nodeps:忽略依赖关系直接安装



危害:



可以用–replacepkgs | replacefiles (已安装过的包重新安装)挽救。





5–nosignature: 不检查来源合法性



6



2.升级

 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: 强制安装

-Uvh 当有旧的版本的包时,则卸载旧包再装新包,如没有旧包,直接装新包。

-Fvh 当有旧的包时,卸载旧包装新包,无旧包时,nothing

–oldpackage 降级 已有新包,装旧包。

–force 强制安装。–replacepkgs –replacefiles –oldpackage

实例:

1 -Uvh 当有旧的版本的包时,则卸载旧包再装新包,如没有旧包,直接装新包。



2 对内核进行升级



3 降级 –oldpackage 降级 已有新包,装旧包。



3 查询

包查询

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

 [select-options]

-a: 所有包

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

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

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

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

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

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

-q 软件包名  查询已安装过的软件包名。
-qa 列出所有的已安装过的rpm包
-qa "name*"
-qa |grep name
-qf 查询一个文件来自于哪一个rpm包 (已安装的rpm)在数据库中查询
-q --changelog 版本更新日志
-qc 查询软件包的配置文件(不是所有包都有配置文件)
-qd 查询软件包的帮助文档
-qi 查询![这里写图片描述](https://img-blog.csdn.net/20170818204428639?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvS2V0Y2h1cF8=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)软件包的详细信息
-ql 查询软件包所安装到系统当中的所有文件路径
-q --scripts 查询软件包自带的脚本
-q --provides 查询自身的功能
-qR 查询实现自身的功能需要什么能力
-qp[licd] rpm包 查看未安装的rpm包的各项信息


实例

1.当一个文件找不到时,而你又不知道来自哪个包:

rpm2cpio aide-0.15.1-11.el7.x86_64.rpm |cpio -id ( 解包)









2 -qa 列出所有的已安装过的rpm包



结合正则



3 -qf 查询一个文件来自于哪一个rpm包 (已安装的rpm)在数据库中查询





4 -q –changelog 版本更新日志



5 -qd 查询软件包的帮助文档



6-qi 查询软件包的详细信息



-ql 查询软件包所安装到系统当中的所有文件路径





-q –scripts 查询软件包自带的脚本



9.-q –provides 查询自身的功能



10 -qR 查询实现自身的功能需要什么能力



11 -qc 查询软件包的配置文件(不是所有包都有配置文件)



12用 -qp[licd] rpm包 查看未安装的rpm包的各项信息

4.校验

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

完整性验正:SHA256

来源合法性验正:RSA

2 公钥加密

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

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

public key: 公钥,公开所有人

secret key: 私钥, 不能公开

3 导入所需要公钥

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*”

–import GPG-KEY…. 导入公钥

-qa “gpg-pubkey*” 显示所有已导入的公钥

-e gpg-pubkey….

-K rpm包 验证某rpm签名是否合法

-V验证

实例

1–import GPG-KEY…. 导入公钥



2 -K rpm包 验证某rpm签名是否合法



5 数据库维护

 数据库重建:

/var/lib/rpm

 rpm {–initdb|–rebuilddb}

initdb: 初始化

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

否则,不执行任何操作

rebuilddb:重建已安装的包头的数据库索引目录

6 卸载

rpm -e 软件名

–nodeps 忽略依赖性。强制卸载



4.yum的用法

1.yum配置文件

 yum客户端配置文件:

/etc/yum.conf:为所有仓库提供公共配置

/etc/yum.repos.d/*.repo:为仓库的指向提供配置

2.yum仓库



仓库指向的定义:

[repositoryID]

name=Some name for this repository

baseurl=url://path/to/repository/

enabled={1|0}

gpgcheck={1|0}

gpgkey=URL

enablegroups={1|0}

failovermethod={roundrobin|priority}

roundrobin:意为随机挑选,默认值

priority:按顺序访问

cost= 默认为1000

仓库的实例





3 yum-config-manage

生成172.16.0.1_cobbler_ks_mirror_CentOS-X-x86_64_.repo

yum-config-manager –add-repo=

http://172.16.0.1/cobbler/ks_mirror/7/



对设置进行补充

1. yum-config-manager –disable “仓库名” 禁用仓库

2. yum-config-manager –enable “仓库名” 启用仓库

1.


2




yum命令1

 yum命令的用法:

yum [options] [command] [package …]

 显示仓库列表:

yum repolist [all|enabled|disabled]

 显示程序包:

yum list

yum list [all | glob_exp1] [glob_exp2] […]

yum list {available|installed|updates} [glob_exp1] […]

 安装程序包:

yum install package1 [package2] […]

yum reinstall package1 [package2] […] (重新安装)

 升级程序包:

yum update [package1] [package2] […]

yum downgrade package1 [package2] […] (降级)

 检查可用升级:

yum check-update

 卸载程序包:

yum remove | erase package1 [package2] […]

 查看程序包information:

yum info […]

 查看指定的特性(可以是某文件)是由哪个程序包所提供:

yum provides | whatprovides feature1 [feature2] […]

 清理本地缓存:

清除/var/cac
e454
he/yum/basearch/releasever缓存

yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

 构建缓存:

yum makecache

1.显示仓库列表yum repolist [all|enabled|disabled] 列出repo信息



2 安装程序包yum install package1 [package2] […]





3.显示安装过的程序包:



4.显示没安装过的程序包:



5.显示要更新的程序包:



6. 检查可用升级 :



7. -e修改之后,在卸载,用rm 删除,配置文件会另保存



8.查看程序包information:



9.查看指定的特性(可以是某文件)是由哪个程序包所提供

whatprovides查看某个文件来自那个包


当文件的名称也记不全时





10.清除/var/cache/yum/basearch/releasever缓存

yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]



yum makecache就是把服务器的包信息下载到本地电脑缓存起来



yum命令2



4.搜索

yum list 显示所有已经安装和可以安装的程序包

yum list package1 显示指定程序包安装情况package1

通过rpm -qa | grep filename去查询,发现没有返回。没返回说明没装

yum源里面有没有呢?

执行yum list | filename

Search 只是找到相关的软件包,但是是不是已经安装了,那可不一定

通过rpm -qa





2.yum history

info [number] 查看具体那一条

undo [number]

undo - 会撤销一个指定的事务。

redo - 重复一次指定的事务





3.查看日志





5安装及升级本地程序包:

yum localinstall rpmfile1 [rpmfile2] […]

(用install替代)

yum localupdate rpmfile1 [rpmfile2] […]

(用update替代)

 包组管理的相关命令:

yum grouplist

yum groupinfo “包组名”

yum groupinstall “包组名”

yum groupremove “包组名” 只删除包组中的包,不删除依赖包,可以用yum history undo 操作数字来删除包含依赖包。

yum groupupdate 更新包组中的包a

实例:

1.yum groupinfo group1 […]



2.yum grouplist [hidden] [groupwildcard] […]



3.remove和undo删除的区别

remove可以卸载包本身

undo可以卸载有依赖的包







yum的命令行选项:

–nogpgcheck:禁止进行gpg check

-y: 自动回答为“yes”

-q:静默模式

–disablerepo=repoidglob:临时禁用此处指定的repo

–enablerepo=repoidglob:临时启用此处指定的repo

–noplugins:禁用所有插件

1 –nogpgcheck:禁止进行gpg check



2静默模式









好了,今天小编就介绍到这 。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: