YUM相关命令详解—相关配置文件详解—手把手教学搭建本地yum源服务器—搭建基于ftp的yum源服务器

目录

yum --> 软件管理工具 --> 基于rpm方式但更胜于rpm的软件管理工具

YUM的基本工作流程如下:

YUM相关文件存放:

YUM的相关命令

YUM的软件群组功能

无网络情况下进行软件安装(即搭建本地yum源服务器)

多个YUM源的优先级问题

基于ftp的yum源服务器

在本地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

[root@localhost ~]# mkdir /var/ftp/centos7

# 挂载镜像文件,获得很多rpm的包,然后复制rpm到/var/ftp/centos7里

[root@localhost ~]# cp /mnt/* /var/ftp/centos7/ -r

[root@localhost ~]# du -sh /var/ftp/centos7/

4.5G        /var/ftp/centos7/

[root@localhost centos7]# ls

CentOS_BuildTag  EULA  images    LiveOS    repodata    RPM-GPG-KEY-CentOS-Testing-7

EFI         GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL

# 可以用下面命令以ftp用户访问web服务器,默认到家目录

[root@localhost centos7]# lftp 192.168.254.136

lftp 192.168.254.136:~> ls

drwxr-xr-x    8 0        0             220 Jan 13 06:26 centos7

drwxr-xr-x    2 0        0               6 Jun 09  2021 pub

lftp 192.168.254.136:/> cd centos7/

lftp 192.168.254.136:/centos7> ls

!此处要注意一个权限的问题,如果centos7目录下的文件无法读取的话,要授予该文件权力

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文件测试它的可用性,可以看出还是可以安装搭建成功!

[root@localhost yum.repos.d]# mkdir backup

[root@localhost yum.repos.d]# mv C* backup/

[root@localhost yum.repos.d]# ls

backup 

[root@localhost yum.repos.d]# yum install squid

已加载插件:fastestmirror, priorities

Loading mirror speeds from cached hostfile

正在解决依赖关系

--> 正在检查事务

---> 软件包 squid.x86_64.7.3.5.20-15.el7_8.1 将被 安装

--> 正在处理依赖关系 squid-migration-script,它被软件包 7:squid-3.5.20-15.el7_8.1.x86_64 需要.

6.如果其他客户机要是用这个yum源来安装的话,前提条件是系统的版本要一致


此时,我们再考虑个问题,如果我们要使用ftp的yum源来安装一个不是官方镜像中提供的rpm包,要怎么做呢?

在本地YUM源中增加自己的软件包(官方yum没有提供无法直接yum安装的)

此时我们可以把我们需要安装的rpm文件放到Packages文件中去,然后更新仓库的配置文件

[root@localhost yum.repos.d]# cp mysql80-community-release-el7-3.noarch.rpm  /var/ftp/centos/Packages/

# 安装createrepo命令更新仓库配置文件

[root@localhost ftp]# yum install createrepo -y

# 重新生成解决依赖关系的文件

[root@localhost ftp]# createrepo --update /var/ftp/centos

# 更新完数据库之后一定要清空YUM缓存

[root@localhost ftp]# yum clean all

或者也可以直接在当前新建一个文件夹直接在此文件夹生成repodata文件,具体命令如下

[root@localhost centos7]# mkdir mysql-router 

[root@localhost centos7]# cp mysql-router-community-8.0.21-1.el7.x86_64.rpm  mysql-router 

# 然后直接在此目录下生成repodata文件

[root@localhost centos7]# createrepo /var/ftp/centos7/mysql-router

然后将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 去安装该软件看看。

三种安装已经全部更新完毕,有不对的或者疑问欢迎交流指点呀!

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>