Linux包管理:rpm与yum
跳到导航
跳到搜索
RPM
RPM 即“RedHat Package Manager”,由RedHat公司开发并被广大Linux发行版所应用(如:Fedora,CentOS,SuSE等)。
特点:
- 需要安装的软件已经编译过,打包成RPM机制的安装包(.rpm),并通过里头默认的数据库记录这个软件安装时需要的依赖软件;
- 安装时,RPM会根据安装包里面的依赖关系,查询系统中是否满足相应的条件,如果满足则安装,否则会报错。
- 安装后,RPM会把该软件的信息写入到主机RPM的数据库中,以便将来的查询、验证、升级和卸载等操作。
缺点:
- 软件包安装的环境必须与打包时的环境一致或相当
- 必须安装了软件的依赖软件
- 卸载时,最底层的软件不能先移除,否则可能造成整个系统不能用
为了解决RPM属性依赖的问题,可以使用YUM进行操作。
原理
包命名规则
“软件名称-版本号-发布次数.适合linux系统.硬件平台.rpm”
- rpm 操作未安装的软件包使用的是包全名,如“ftp-0.17-74.fc27.i686.rpm”;
- rpm 操作已安装的软件使用的是包名,如“ftp”;
安装路径
RPM包文件默认安装位置
路径 | 说明 |
---|---|
/etc/ | 配置文件默认安装目录 |
/usr/bin/ | 可执行的命令安装目录 |
/usr/lib/ | 所依赖的函数库文件保存位置 |
/usr/share/doc/ | 软件帮助文档,使用手册保存位置 |
/usr/share/man/ | 软件手册,man page档案保存位置 |
yum
YUM 即 “Yellow dog Updater, Modified”,基于 RPM 包管理的前端工具,YUM 可以看作是CS架构的软件,能够从指定的服务器自动下载 RPM 包并且安装,并自动处理依赖性关系,一次安装所有依赖的软体包。
- YUM的存在很好的解决了RPM的属性依赖问题。提供了查找、安装、删除某一个、一组甚至全部软件包的命令。
- YUM 通过依赖rpm软件包管理器, 实现了rpm软件包管理器在功能上的扩展, 因此YUM是不能脱离rpm而独立运行的。
特点:
- 可以同时配置多个资源库(Repository)
- 简洁的配置文件(/etc/yum.conf)
- 自动解决增加或删除rpm包时遇到的依赖性问题
- 使用方便
- 保持与RPM数据库的一致性
原理
Server端:
- 对程序包进行分类后存储到不同repository容器中;
- 再通过收集到的大量的rpm数据库文件,获得程序包之间的依赖关系数据,并在本地的repodata目录生成对应说明文件(.xml),以供Client端取用;
- 说明文件:存放依赖关系和所需文件在本地的存放位置
Cilent端:
- 通过yum命令安装软件时发现缺少某些依赖性程序包,Client会根据本地的配置文件(/etc/yum.repos.d/*.repo)找到指定的Server端;
- 从Server端repo目录下获取说明文件(.xml)后存储在本地/var/cache/yum中方便以后读取, 通过xxx.xml文件查找到需要安装的依赖性程序包在Server端的存放位置;
- 再进入Server端yum库中的指定repository容器中获取所需程序包, 下载完成后在本地实现安装。
- YUM是一个在线软件管理工具,所以使用YUM进行的操作大都是需要在联网的条件下才能正常使用。
配置文件
yum 使用时,需要选用合适的站点镜像,才能保证yum的正常使用。这就需要手动修改yum的设置文档“/etc/yum.repos.d/CenOS-Base.repo”。
容器查询
容器就是指Server端存放程序包的repository,包括centosplus、extras、fasttrack、os、updates等容器。最重要的一个目录就是那个“repodata”,该目录是分析RPM软件后所产生的软件依赖数据放置处。【???没看到】
查询yum使用的容器有哪些:
yum repolist all
- 只有当最右边的status为enabled该容器才算激活
- /etc/yum.repos.d/ 里面会有多个配置文件(.repo),yum会从里面逐个查找,所以文件里的容器名称不能有重复。
配置文件修改
其中:
- [base]:代表容器的名字为base(不能有两个相同的容器名称)。
- name:只是说明一下这个容器的意义而已,重要性不高。
- mirrorlist:列出这个容器可以使用的镜像站点,如果不想使用可以批注掉这一行。
baseurl:这个最重要,因为后面接的就是容器的实际网址。mirrorlist是由yum程序自行去找镜像站点, baseurl则是指定固定的一个容器网址。
enable=1:启动这个容器,默认值也为1。关闭这个容器可以设置enable=0。
gpgcheck=1:指定是否需要查阅RPM文件内的数字证书。
gpgkey:数字证书的公钥文件所在位置,使用默认值即可。