“Linux包管理:rpm与yum”的版本间差异
跳到导航
跳到搜索
(→配置文件修改) |
(→配置文件) |
||
第67行: | 第67行: | ||
* YUM是一个在线软件管理工具,所以使用YUM进行的操作大都是需要在联网的条件下才能正常使用。 | * YUM是一个在线软件管理工具,所以使用YUM进行的操作大都是需要在联网的条件下才能正常使用。 | ||
=== | === 配置 === | ||
yum | yum 的配置文件分为两部分:main 和 repository | ||
# main 部分定义了全局配置选项,整个yum 配置文件应该只有一个main。常位于/etc/yum.conf 中。 | |||
# repository 部分定义了每个源/服务器的具体配置,可以有一到多个。常位于/etc/yum.repo.d 目录下的各文件中。 | |||
==== | * yum.conf 文件一般位于/etc目录下,一般其中只包含main部分的配置选项。 | ||
* /etc/yum.repos.d/xxx.repoyum 中配置合适的站点镜像,以保证yum源的正常使用。 | |||
==== main ==== | |||
yum.conf 文件一般位于/etc目录下,一般其中只包含main部分的配置选项。<br/> | |||
<syntaxhighlight lang="properties"> | |||
[main] | |||
cachedir=/var/cache/yum/$basearch/$releasever | |||
keepcache=0 | |||
debuglevel=2 | |||
logfile=/var/log/yum.log | |||
exactarch=1 | |||
obsoletes=1 | |||
gpgcheck=1 | |||
plugins=1 | |||
installonly_limit=5 | |||
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum | |||
distroverpkg=centos-release | |||
# This is the default, if you make this bigger yum won't see if the metadata | |||
# is newer on the remote and so you'll "gain" the bandwidth of not having to | |||
# download the new metadata and "pay" for it by yum not having correct | |||
# information. | |||
# It is esp. important, to have correct metadata, for distributions like | |||
# Fedora which don't keep old packages around. If you don't like this checking | |||
# interupting your command line usage, it's much better to have something | |||
# manually check the metadata once an hour (yum-updatesd will do this). | |||
# metadata_expire=90m | |||
# PUT YOUR REPOS HERE OR IN separate files named file.repo | |||
# in /etc/yum.repos.d | |||
exclude=httpd nginx php mysql mairadb python-psutil python2-psutil | |||
</syntaxhighlight> | </syntaxhighlight> | ||
{| class="wikitable" | |||
! 配置 !! 说明 | |||
|- | |||
| cachedir | |||
| yum 缓存的目录,yum在此存储下载的rpm包和数据库,默认设置为/var/cache/yum | |||
|- | |||
| keepcache | |||
| 安装完成后是否保留软件包,0为不保留(默认为0),1为保留 | |||
|- | |||
| debuglevel | |||
| Debug信息输出等级,范围为0-10,缺省为2 | |||
|- | |||
| logfile | |||
| yum日志文件位置。用户可以到日志文件去查询过去所做的更新 | |||
|- | |||
| pkgpolicy | |||
| 包的策略:如果设置了多个repository时,若同一软件在不同的repository中同时存在,yum应该安装哪一个 | |||
# newest:安装最新的那个版本 | |||
# last:将服务器id 以字母表排序,并选择最后的那个服务器上的软件安装 | |||
一般用newest | |||
|- | |||
| distroverpkg | |||
| 指定一个软件包,yum会根据这个包判断你的发行版本,默认是redhat-release | |||
|- | |||
| tolerant | |||
| 是否容忍命令行发生与软件包有关的错误 | |||
# 0:默认,显示错误信息 | |||
# 1:不出现错误信息 | |||
|- | |||
| exactarch | |||
| 有1和0两个选项,设置为1(默认),则yum只会安装和系统架构匹配的软件包 | |||
|- | |||
| retries | |||
| 网络连接发生错误后的重试次数,如果设为0,则会无限重试。默认值为6. | |||
|- | |||
| obsoletes | |||
| 这是一个update的参数,简单的说就是相当于upgrade,允许更新陈旧的RPM包 | |||
|- | |||
| plugins | |||
| 是否启用插件,默认1为允许,0表示不允许 | |||
我们一般会用yum-fastestmirror这个插件 | |||
|- | |||
| bugtracker_url | |||
| | |||
|- | |||
| metadata_expire | |||
| | |||
|- | |||
| installonly_limit | |||
| | |||
|- | |||
| exclude | |||
| | |||
|- | |||
| gpgcheck | |||
| 是否是否进行gpg(GNU Private Guard) 校验,以确定rpm 包的来源是有效和安全的。0(默认,否)1(是) | |||
|} | |||
==== | ==== repository ==== | ||
所有repository 服务器设置都应该遵循如下格式: | 所有repository 服务器设置都应该遵循如下格式: | ||
<syntaxhighlight lang="properties"> | <syntaxhighlight lang="properties"> | ||
第88行: | 第172行: | ||
baseurl=url://path/to/repository/ | baseurl=url://path/to/repository/ | ||
</syntaxhighlight> | </syntaxhighlight> | ||
{| class="wikitable" | |||
! 配置 !! 说明 | |||
|- | |||
| [serverid] | |||
# | | 是用于区别各个不同的repository,必须有一个独一无二的名称; | ||
|- | |||
| name | |||
| 对repository 的描述,支持像$releasever $basearch这样的变量; | |||
|- | |||
| baseurl | |||
| 服务器设置中最重要的部分,只有设置正确,才能从上面获取软件。 | |||
# baseurl后可以跟多个url,但baseurl只能有一个,格式: | |||
#: <syntaxhighlight lang="properties"> | #: <syntaxhighlight lang="properties"> | ||
baseurl=url://server1/path/to/repository/ | baseurl=url://server1/path/to/repository/ | ||
第98行: | 第189行: | ||
url://server3/path/to/repository/ | url://server3/path/to/repository/ | ||
</syntaxhighlight> | </syntaxhighlight> | ||
# | # 其中url 支持的协议有 http:// ftp:// file:// 三种 | ||
# | # url 指向的目录必须是这个repository header 目录的上一级,它也支持$releasever、$basearch这样的变量。 | ||
|- | |||
| enable | |||
| 启动这个容器,默认值也为1。关闭这个容器可以设置enable=0。 | |||
|- | |||
| mirrorlist | |||
| 列出这个容器可以使用的镜像站点,如果不想使用可以批注掉这一行。 | |||
* 其中gpgcheck,exclude 的含义和[main] | |- | ||
| failovermethod | |||
| 有多个url可供选择时,yum选择的次序(roundrobin:随机选择;priority:默认,按url配置依次选择) | |||
|- | |||
| gpgcheck | |||
| 指定是否需要查阅RPM文件内的数字证书。 | |||
|- | |||
| gpgkey | |||
| 数字证书的公钥文件所在位置,使用默认值即可。 | |||
|} | |||
* 其中gpgcheck,exclude 的含义和[main] 部分相同,但只对此服务器起作用。 | |||
查看yum配置文件,如“vi /etc/yum.repos.d/CenOS-Base.repo”:<br/> | 查看yum配置文件,如“vi /etc/yum.repos.d/CenOS-Base.repo”:<br/> | ||
[[File:yum配置文件.png|600px]]<br/> | [[File:yum配置文件.png|600px]]<br/> | ||
==== 容器 ==== | |||
容器就是指Server端存放程序包的repository,包括centosplus、extras、fasttrack、os、updates等容器。最重要的一个目录就是那个“repodata”,该目录是分析RPM软件后所产生的软件依赖数据放置处。【???没看到】<br/> | |||
查询yum使用的容器有哪些: | |||
<syntaxhighlight lang="bash"> | |||
yum repolist all | |||
</syntaxhighlight> | |||
[[File:yum使用的容器.png|600px]] | |||
* 只有当最右边的status为enabled该容器才算激活 | |||
* /etc/yum.repos.d/ 里面会有多个配置文件(.repo),yum会从里面逐个查找,所以文件里的容器名称不能有重复。 | |||
== RPM 命令 == | == RPM 命令 == | ||
== YUM 命令 == | == YUM 命令 == |
2020年10月15日 (四) 21:03的版本
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 的配置文件分为两部分:main 和 repository
- main 部分定义了全局配置选项,整个yum 配置文件应该只有一个main。常位于/etc/yum.conf 中。
- repository 部分定义了每个源/服务器的具体配置,可以有一到多个。常位于/etc/yum.repo.d 目录下的各文件中。
- yum.conf 文件一般位于/etc目录下,一般其中只包含main部分的配置选项。
- /etc/yum.repos.d/xxx.repoyum 中配置合适的站点镜像,以保证yum源的正常使用。
main
yum.conf 文件一般位于/etc目录下,一般其中只包含main部分的配置选项。
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
# This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
# It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m
# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d
exclude=httpd nginx php mysql mairadb python-psutil python2-psutil
配置 | 说明 |
---|---|
cachedir | yum 缓存的目录,yum在此存储下载的rpm包和数据库,默认设置为/var/cache/yum |
keepcache | 安装完成后是否保留软件包,0为不保留(默认为0),1为保留 |
debuglevel | Debug信息输出等级,范围为0-10,缺省为2 |
logfile | yum日志文件位置。用户可以到日志文件去查询过去所做的更新 |
pkgpolicy | 包的策略:如果设置了多个repository时,若同一软件在不同的repository中同时存在,yum应该安装哪一个
一般用newest |
distroverpkg | 指定一个软件包,yum会根据这个包判断你的发行版本,默认是redhat-release |
tolerant | 是否容忍命令行发生与软件包有关的错误
|
exactarch | 有1和0两个选项,设置为1(默认),则yum只会安装和系统架构匹配的软件包 |
retries | 网络连接发生错误后的重试次数,如果设为0,则会无限重试。默认值为6. |
obsoletes | 这是一个update的参数,简单的说就是相当于upgrade,允许更新陈旧的RPM包 |
plugins | 是否启用插件,默认1为允许,0表示不允许
我们一般会用yum-fastestmirror这个插件 |
bugtracker_url | |
metadata_expire | |
installonly_limit | |
exclude | |
gpgcheck | 是否是否进行gpg(GNU Private Guard) 校验,以确定rpm 包的来源是有效和安全的。0(默认,否)1(是) |
repository
所有repository 服务器设置都应该遵循如下格式:
[serverid]
name=Some name for this server
baseurl=url://path/to/repository/
配置 | 说明 |
---|---|
[serverid] | 是用于区别各个不同的repository,必须有一个独一无二的名称; |
name | 对repository 的描述,支持像$releasever $basearch这样的变量; |
baseurl | 服务器设置中最重要的部分,只有设置正确,才能从上面获取软件。
|
enable | 启动这个容器,默认值也为1。关闭这个容器可以设置enable=0。 |
mirrorlist | 列出这个容器可以使用的镜像站点,如果不想使用可以批注掉这一行。 |
failovermethod | 有多个url可供选择时,yum选择的次序(roundrobin:随机选择;priority:默认,按url配置依次选择) |
gpgcheck | 指定是否需要查阅RPM文件内的数字证书。 |
gpgkey | 数字证书的公钥文件所在位置,使用默认值即可。 |
- 其中gpgcheck,exclude 的含义和[main] 部分相同,但只对此服务器起作用。
查看yum配置文件,如“vi /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会从里面逐个查找,所以文件里的容器名称不能有重复。