文章目录
获取程序包途径
- 系统发行版的光盘或官方的服务器
- http://mirrors.aliyun.com
- http://mirrors.sohu.com
- http://mirrors.163.com
- 第三方组织
- http://pkgs.org
- http://rpmfind.net
- http://rpm.pbone.net
软件包分类
- 二进制格式
- 源码格式
软件包管理工具
- 前端工具
- yum
- apt-get
- zypper (suse上的rpm前端管理工具)
- dnf(Fedora 22+ rpm前端管理工具)
现在考红帽的认证使用的是RHEL8.0,不再使用
yum
,而是dnf
。总体没有太大变化。想要了解的可以去官网看相关的资料
- 后端工具
- rpm
- dpt
rpm
是RHCSA中的需要使用到的一个工具,在升级内核时,需要使用rpm
rpm
也是我们用到的比较多的一个工具,可以查看是否安装了某个程序。学Linux的时候,就在想能不能在Linux中装个QQ。下载的rpm的包,就是使用rpm安装的。
RPM包命名规范
这里的版本号跟我们很多的软件的版本号相同,偶数为稳定版,奇数为开发版。在我们使用的时候,建议使用偶数版
RPM包管理
RPM包安装
- 语法:
rpm -ivh
包所在的绝对路径 - 常用选项:
-i
安装-v
显示详细信息-h
显示安装进度条--test
测试安装,但不真正执行安装过程--nodeps
忽略依赖关系--replacepkgs
重新安装,替换原有安装--oldpackage
降级--force
强行安装,可以实现重装或降级--nodigest
不检查包的完整性--nosignature
不检查包的来源合法性--noscripts
不执行程序包脚本片断
RPM包查询
- 常用选项:
rpm -qa
查询已经安装的所有包。(我们用到比较多的命令)rpm -q package_name
查询指定的包是否已安装
- 较少用的选项:
rpm -qi package_name
查询指定包的说明信息rpm -ql package_name
查询指定软件包安装后生成的文件列表rpm -qf /path/to/somefile
查询指定的文件是由哪个rpm包安装生成的rpm -qc package_name
查询指定包安装的配置文件rpm -qd package_name
查询指定包安装的帮助文件rpm -q --scripts package_name
查询指定包中包含的脚本rpm -q --whatrequires CAPABILITY
查询指定的CAPABILITY被哪个包所依赖rpm -q --changelog COMMAND
查询COMMAND的制作日志rpm -q --scripts package_name
查询指定软件包包含的所有脚本文件rpm -qR package_name
查询指定的软件包所依赖的CAPABILITYrpm -q --provides package_name
列出指定软件包所提供的CAPABILITYrpm -qpi /PATH/TO/PACKAGE_FILE
查询指定未安装包的说明信息rpm -qpl /PATH/TO/PACKAGE_FILE
查询未安装的软件包会产生哪些文件
RPM包升级
rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE
如果装有老版本的,则升级;否则,则安装rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE
如果装有老版本的,则升级;否则,退出--oldpackage
降级
这里是RHCSA中的移一道考题,升级系统内核。因为Linux是支持多内核的,所以用
-ivh
而不要使用-Uvh
。
升级注意事项
- 不要对内核做升级操作
- Linux支持多内核版本并存,因此,可直接安装新版本内核。直接使用
rpm -ivh
安装新版本 - 如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留
RPM包卸载
- 用法:
rpm -e
[package_name]
[root@bad ~]# rpm -qa |grep vsftpd //查询是否安装
[root@bad ~]# rpm -e vsftpd //卸载
RPM包校验
如果执行以下命令无内容输出说明此包未被修改过
[root@badt ~]# rpm -V vsftpd
S //文件的容量大小是否被改变
M //文件的类型或者文件的属性是否被修改
5 //MD5这一种指纹加密的内容已经不同
D //装置的主/次代码已经改变
L //路径已经被改变
U //文件的所属主已被修改
G //文件的所属组已被修改
T //文件的创建时间已被改变
RPM重建数据库
- 数据库信息再
/var/lib/rpm
目录中 rpm --rebuilddb
重建数据库,一定会重新建立rpm --initdb
初始化数据库,没有才建立,有就不用建立
检查软件包来源合法性和完整性
- 加密类型:
- 对称加密,加密解密使用同一个密钥
- 公钥加密,一对密钥,公钥和私钥。公钥隐含于私钥中,可以提取出来并公布出去
- 单向加密,只能加密不能解密
- /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release红帽官方公钥
rpm -K PACKAGE_FILE
检查指定包有无密钥信息
- dsa,gpg //验证来源合法性,也即验证签名。可以使用–nosignatrue略过此项
- sha1,md5 //验证软件包完整性。可以使用–nodigest略过此项
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
导入密钥文件- CentOS 7发行版光盘提供的密钥文件 //RPM-GPG-KEY-CentOS-7
配置本地仓库
我们在学习Linux时,会需要装很多的程序,以及很多的依赖包,那么我们就使用yum来安装。但是在使用yum之前,我们需要先在指定目录下搭建好我们的仓库,指明软件包放在哪里,是否需要检查,是否启用等信息。
- 注意,使用yum前,iso文件要已经连接虚拟机,才可以使用iso中的软件包
[root@bad ~]# cd etc/yum.repos.d //进入到仓库配置的目录中
//先看一下是否有其他的仓库,有的话需要全部删除,或全部禁用。不然将会报错
[root@bad ~]# ls
[root@bad ~]# vi yum.repo //编辑本地仓库,必须以.repo结尾,然后将以下内容写入文件
[base] //仓库标识
name=Redhat //仓库名
baseurl=file:///mnt //指定软件包的位置
gpgcheck=0 //是否检查许可,0标识不检查,一般不检查
enabled=1 //是否启用此仓库
[root@bad ~]# mount /dev/cdrom /mnt/ //挂载光驱
[root@bad ~]# yum clean all //清理yum缓存
[root@bad ~]# yum list all //列出所有包
[root@bad ~]# yum repolist //刷新仓库源
- 在进入仓库配置目录中之后,一定要看是否有其他的仓库源,有要删除,否则配置的yum仓库源可能无法使用
- 仓库标识和名称可以随便取,但是之后的内容,不要写错
baseurl
是指你软件包的url,file://
是协议,就像是我们访问网址前的http://
一样。后面的/mnt
标识根下的这个目录。在考RHCSA的时,配置路径时,是给定的网页地址,不要再习惯性的写file://- 检查许可信息一定要设置0,不允许。不然在装软件的时候会很慢
- 挂载时,
/dev/cdrom
是光驱的默认位置,挂载到/mnt
下,中间有空格- 使用
yum list all
时,如果没有红色报错,就表示yum仓库配置好了,可以用。报错了就检查自己的仓库是否写错,光盘是否挂载。- 使用
yum repolist
时,可以看到仓库的信息,有具体的数字不是0就可以使用了
以上内容均属原创,如有不详或错误,敬请指出。
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!