今天小编与大家聊聊软件包管理 的俩大神器:rpm和yum,它俩在我们在对软件进行安装,查询,卸载,升级等等方面可给我们带来了非常,相当,特别多的方便,哈哈,听到小编说这么多副词来形容它们就知道它们非常重要。接下来小编从下面几个方面来介绍他们,废话不多,全是干货。
1)将软件包打包成一个文件,其中包括:
二进制应用程序的组成部分:
1.都有配置文件,通过设置配置文件来改变程序启动时的运行特征
2.都具有二进制的程序主体
3.都自带库文件,供程序主体进行调用
4.都带有帮助文件,对程序的使用方法进行说明
2)程序包管理器:
debian:deb文件, dpkg包管理器
redhat: rpm文件, rpm包管理器
rpm: Redhat Package Manager
RPM Package Manager
rpm是由红帽公司开发的软件包管理方式,使用rpm我们可以方便的进行软件的安装、查询、卸载、升级等工作。但是rpm软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个rpm包组成时。
Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载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 测试安装,但不真正执行安装
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 查询软件包的详细信息
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 忽略依赖性。强制卸载
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/cache/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 - 重复一次指定的事务
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:禁用所有插件