• 售前

  • 售后

热门帖子
入门百科

YUM相关命令详解—相关配置文件详解—手把手教学搭建本地yum源服

[复制链接]
123457015 显示全部楼层 发表于 2022-1-14 07:54:48 |阅读模式 打印 上一主题 下一主题
目录

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这个软件库
  1. 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
  1. <code>[root@localhost ~]# mkdir /centos
  2. [root@localhost ~]# mount /dev/cdrom /centos
复制代码
2. 创建本地的repo仓库文件 内容即如图所示

 3.然后就可以使用这个repo文件来安装软件了
多个YUM源的优先级问题



  • 使用 YUM 的 yum-plugin-priorities 插件
  • 或直接将yum.repos.d中的文件只留下想使用的repo
  1. <code>[root@localhost ~]# yum install yum-plugin-priorities
  2. [root@localhost ~]# cat /etc/yum/pluginconf.d/priorities.conf
  3. [main]
  4. enabled = 1
复制代码
然后在 /etc/yum.repos.d/local.repo 中的每一个节点加入 priority=1 (priority 越小表示优先级越高)
  
接下来举例安装一个基于ftp的yum源服务器。
基于ftp的yum源服务器

1.安装ftp软件
  
  1. yum install vsftpd -y
复制代码
2.开启ftp服务
   
  1. <code>[root@localhost ~]# service vsftpd start
  2. Redirecting to /bin/systemctl start vsftpd.service
  3. [root@localhost ~]# lsof -i:21
  4. COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
  5. vsftpd  38764 root    4u  IPv6 131336      0t0  TCP *:ftp (LISTEN)
  6. # 在配置文件中修改准许匿名登录
  7. [root@localhost ~]# cd /etc/vsftpd/
  8. [root@localhost vsftpd]# vim vsftpd.conf
  9. anonymous_enable=YES --> 在centos8中默认是no,要修改成yes
  10. [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
   
  1. cat ftp.repo
  2. [ftpyum]
  3. name="ftp yum server"
  4. baseurl=ftp://192.168.254.136/centos7
  5. enabled=1
  6. 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 去安装该软件看看。

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

来源:https://blog.caogenba.net/m0_57053326/article/details/122478684
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作