目录
yum --> 软件管理工具 --> 基于rpm方式但更胜于rpm的软件管理工具
在本地YUM源中增加自己的软件包(官方yum没有提供无法直接yum安装的)
yum --> 软件管理工具 --> 基于rpm方式但更胜于rpm的软件管理工具
优点:
- 更方便的管理rpm软件包
- 自动解决rpm包的依赖关系
- 可以配置多个资源仓库
资源仓库:repository --> /etc/yum.repos.d
YUM的基本工作流程如下:
- 服务器端:在服务器上面存放了所有的RPM软件包,搭建ftp或者http提供软件下载,然后以相关的功能去分析每个RPM文件的依赖性关系,将这些数据记录成文件存放在服务器的某特定目录内。
- 客户端:如果需要安装某个软件时,先下载服务器上面记录的依赖性关系文件(可通过www或FTP方式),通过对服务器端下载的纪录数据进行分析,然后取得所有相关的软件,一次全部下载下来进行安装。
- 先下载解决依赖关系的元文件,根据元文件分析安装A软件时还需要下载哪些软件,依赖关系的分析,然后去下载所有需要的软件,安装完成后,直接删除刚刚下载的除A软件之外的软件
YUM相关文件存放:
- RHEL(Red Hat Enterprise Linux)默认已经安装YUM
- YUM的配置文件:/etc/yum.conf
- 通常无需修改
- YUM的缓存目录(元数据目录):/var/cache/yum --> centos7
- /var/cache/dnf --> centos8
- YUM的日志目录:/var/log/yum.log
- 创建仓库索引文件的软件包:createrepo.noarch(未安装)
以下是yum的配置文件,以下仅列出base这个软件库
vim /etc/yum.repos.d/CentOS-Base.repo
然后解释一下 这几行的大致意思
[仓库的名字] |
源的名字 --> 名字可以定义 |
name |
后面是对仓库(源)进行简单的介绍 |
mirrorlist |
镜像站点的列表 --> 有哪些镜像可以使用 --> 合作伙伴的服务器 |
baseurl |
是直接访问centos官方的服务器下载软件 |
gpgcheck |
客户端下载软件后进行安装时,是否对下载的软件进行gpg签名的验证 --> 防止软件不是官方的,会有病毒,centos官方出品的每个软件都有签名(防伪标志),1是表示进行签名的检查,0表示不进行签名的检查;gpg是一种加密算法 |
gpgkey |
提供公钥文件的路径,供gpgcheck使用 |
enabled=0 |
是否使用这个源 1 表示可以使用 0 表示禁用 |
三个源仓库意思
[base] |
绝大多数的软件都在这个源里 |
[updates] |
更新使用的源 |
[extras] |
扩展的源 --> epel |
除了以上几个源外,Linux还有个第三方库叫epel,epel源里提供了很多第三方强大的软件
通过安装 epel-release 会得到 epel 源
YUM的相关命令
1.列出 yum 服务器上面提供的所有软件名称
[root@kafka01 ~]# yum list
-
@anaconda
表示安装系统的时候安装
@base
表示后来通过baase源安装
@AppStream 、@BaseOS
表示通过官方源安装
@epel(extras)
表示通过epel(第三方)源安装
installed
使用rpm命令安装
前面没有@符号
表示没有安装但可以安装的软件,通过没有@符号的源安装
也可以模糊列出 yum list pam*
2.yum repolist 列出服务器能使用的源(以下为Centos7)
3.yum search 搜寻某个软件名称或是描述的重要关键词(查询名字里包含raid的软件包)
- 在冒号:左边的是软件名称,右边的则是在 RPM 内的 name 设定 (软件名)
4.yum info 查询软件的功能和具体信息
5.yum makecache 生成解决依赖关系的缓存元数据
6.yum groupinstall 开发工具 yum grouplist "Development Tools" -y
7.yum remove 卸载软件包
8.yum update 升级整个系统里所有的软件(可以做crontab计划任务来自动升级),若接具体软件名可以只升级此软件
9.yum list updates 列出服务器上可供本机进行升级的软件 一定要打对updates
10.yum clean all 清楚缓存数据 --> 清楚所有的yum源的元数据
11.yum reinstall 重新安装软件
12.yum provides pstree 列出提供pstree的软件有哪些 --> psmisc
YUM的软件群组功能
用法:yum [群组功能] [软件群组]
选项与参数:
- grouplist:列出所有可使用的软件群组组,例如 Development Tools 之类的
- groupinfo:后面接 group_name,则可以了解该group内含的所有软件名
- groupinstall:安装一整组的软件群组
- 但如果想要让 groupinstall 预设安装好所有的 optional 软件呢,就得要修改配置文件!更改选 groupinstall 选择的软件项目即可,即在配置文件中添加一行 group_package_types=default,mandatory,optional
- 然后就可以直接 yum groupinstall "Scientific Support"
- groupremove:移除某个软件群组
无网络情况下进行软件安装(即搭建本地yum源服务器)
如上图所示,即直接使用光盘作为主要的软件来源。
1. 在虚拟机中将镜像文件放入光驱,挂载镜像文件到新建文件夹 /centos7
[root@localhost ~]# mkdir /centos
[root@localhost ~]# mount /dev/cdrom /centos
2. 创建本地的repo仓库文件 内容即如图所示
3.然后就可以使用这个repo文件来安装软件了
多个YUM源的优先级问题
- 使用 YUM 的 yum-plugin-priorities 插件
- 或直接将yum.repos.d中的文件只留下想使用的repo
[root@localhost ~]# yum install yum-plugin-priorities
[root@localhost ~]# cat /etc/yum/pluginconf.d/priorities.conf
[main]
enabled = 1
然后在 /etc/yum.repos.d/local.repo 中的每一个节点加入 priority=1 (priority 越小表示优先级越高)
接下来举例安装一个基于ftp的yum源服务器。
基于ftp的yum源服务器
1.安装ftp软件
yum install vsftpd -y
2.开启ftp服务
[root@localhost ~]# service vsftpd start
Redirecting to /bin/systemctl start vsftpd.service
[root@localhost ~]# lsof -i:21
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
vsftpd 38764 root 4u IPv6 131336 0t0 TCP *:ftp (LISTEN)
# 在配置文件中修改准许匿名登录
[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# vim vsftpd.conf
anonymous_enable=YES --> 在centos8中默认是no,要修改成yes
[root@localhost ~]# service vsftpd restart
3.想让别的用户访问过来进行yum下载,应该把软件放到ftp在家目录
ftp这个用户是专门用来匿名登录ftp服务的,家目录在/var/ftp
|
4.编写ftp的repo仓库配置文件,指向我们自己搭建的ftp服务器,以下是示范Centos7
cat ftp.repo
[ftpyum]
name="ftp yum server"
baseurl=ftp://192.168.254.136/centos7
enabled=1
gpgcheck=0
考虑到Centos8的repodata文件路径不一样,我们的配置文件要改成
5.测试,将其他repo结尾文件移动到backup目录下,只留下ftp.repo文件测试它的可用性,可以看出还是可以安装搭建成功!
|
6.如果其他客户机要是用这个yum源来安装的话,前提条件是系统的版本要一致
此时,我们再考虑个问题,如果我们要使用ftp的yum源来安装一个不是官方镜像中提供的rpm包,要怎么做呢?
在本地YUM源中增加自己的软件包(官方yum没有提供无法直接yum安装的)
此时我们可以把我们需要安装的rpm文件放到Packages文件中去,然后更新仓库的配置文件
|
或者也可以直接在当前新建一个文件夹直接在此文件夹生成repodata文件,具体命令如下
|
然后将ftp.repo文件新建一个源
关键其实就是 repodata 目录!只要能产生这个目录就能使用 yum 安装相应的软件
但这样使用的话,软件的升级是一个问题,必须要紧跟着官方的脚步
问题:
- 假设有一个厂商推出软件时,自行处理了数字签名,你想要安装他们的软件所以需要使用数字签名,假设数字签名的档名为 signe, 那你该如何安装?
- rpm --import signe
- 承上,假设该软件厂商提供了 yum 的安装网址为: http://their.server.name/path/ ,那你该如何处理 yum 的配置文件?
- 可自行取个档名,在此例中我们使用『 vim /etc/yum.repos.d/their.repo 』,扩展名要正确! 内容像这样即可:
-
[their]
name=their server name
baseurl=http://their.server.name/path/
enable=1
gpgcheck=0
- 然后使用 yum 去安装该软件看看。
三种安装已经全部更新完毕,有不对的或者疑问欢迎交流指点呀!