YUM在线升级功能

YUM在线升级功能

YUM是一款软件安装管理工具,它的作用是帮助用户自动处理软件安装、升级和删除时可能遇到的依赖属性问题。YUM能够通过分析软件包的标头数据,了解软件之间的相关性,然后制作出属性依赖的解决方案,以确保软件的安装、升级和删除不会出现问题。这样,用户就可以方便地管理各种软件,而无需手动解决依赖属性问题。

YUM虽然一款方便的软件安装管理工具,但要使用它的功能,需要找到适合YUM的服务器,也就是软件源。每个YUM服务器可能都提供许多不同的软件功能。CentOS已经制作出多个镜像站,提供给全世界的软件更新使用。因此,只要能够连接上互联网,理论上就能够使用YUM,不需要处理任何设置值。

利用YUM进行查询、安装、升级与删除功能

查询功能

yum [ list | search | providers | whatprovides ] 参数

如果想要使用 yum 来查询原版 Linux 发行版所提供的软件或已知某些软件的名称,想知道该软件的功能,可以利用 yum 相关的参数:

yum [option] [查询工作选项] [相关参数]
选项:
 [option] 主要的选项包括有:
 -y      :当yum要等待使用者输入时,这个选项可以自动提供 yes 的回应。
 --installroot=/some/path:将该软件安装在 /some/path 而不使用默认路径
 [查询工作选项] [相关参数] 这方面的参数有:
 search  :查找某个软件名称或是描述的重要关键字
 list    :列出目前 yum 所管理的所有的软件与版本,有点类似 rpm -qa
 info    :同上,不过有点类似rpm -qai的执行结果
 provides:从文件去查找软件,类似 rpm -qf 的功能

使用案例

查找磁盘整列(raid)相关的软件有哪些

[root@localhost ~]# yum search raid
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile    # 找出速度最快的那一台yum服务器
 * base: mirrors.aliyun.com                   # 下面三个软件源,且来源为该服务器
 * epel: mirrors.bfsu.edu.cn
 * extras: mirrors.huaweicloud.com
 * updates: mirrors.jlu.edu.cn
=================================== N/S matched: raid ===================================
dmraid.i686 : dmraid (Device-mapper RAID tool and library)
dmraid.x86_64 : dmraid (Device-mapper RAID tool and library)
dmraid-devel.x86_64 : Development libraries and headers for dmraid.
dmraid-events-logwatch.x86_64 : dmraid logwatch-based email reporting
......
......
# 在冒号(:)左边的是软件名称,右边则是在 RPM内的name设置(软件名)

找出mdadm这个软件的功能是什么

[root@localhost ~]# yum info mdadm
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * epel: mirrors.bfsu.edu.cn
 * extras: mirrors.huaweicloud.com
 * updates: mirrors.jlu.edu.cn
Available Packages
Name        : mdadm    #这个软件的名称
Arch        : x86_64   #这个软件的硬件架构
Version     : 4.1      #此软件的版本
Release     : 9.el7_9  #发布的版本
Size        : 439 k    #此软件的文件总容量
Repo        : updates/7/x86_64  #软件源的安装状态
Summary     : The mdadm program controls Linux md devices (software RAID arrays)
URL         : http://www.kernel.org/pub/linux/utils/raid/mdadm/
License     : GPLv2+
Description : The mdadm program is used to create, manage, and monitor Linux MD (software
            : RAID) devices.  As such, it provides similar functionality to the raidtools
            : package.  However, mdadm is a single program, and it can perform
            : almost all functions without a configuration file, though a configuration
            : file can be used to help with some common tasks.

列出YUM服务器上面提供的所有软件名称

[root@localhost ~]# yum list
....
.....
......
zziplib-devel.x86_64            0.13.62-12.el7                      base     
zziplib-utils.x86_64            0.13.62-12.el7                      base     
# 【软件名称  版本  在那个软件源内】

列出passwd这个命令的软件有哪些

[root@localhost ~]# yum provides passwd
....
....
passwd-0.79-6.el7.x86_64 : An utility for setting or changing passwords using PAM
Repo        : base

passwd-0.79-6.el7.x86_64 : An utility for setting or changing passwords using PAM
Repo        : @anaconda
# 就上面的软件提供了passwd这个命令

利用yum的功能,找出以pam为开头的软件有哪些?而其中尚未安装的又有哪些

[root@localhost ~]# yum list pam*
pam.x86_64          1.1.8-23.el7                         @base  
Available Packages      # 下面则是【可升级】或【未安装】的
pam.i686            1.1.8-23.el7                         base   
pam-devel.i686      1.1.8-23.el7                         base   
pam-devel.x86_64    1.1.8-23.el7                         base   
pam-kwallet.x86_64  5.5.2-1.el7                          epel 
.....
....

安装/升级功能

yum [option] [安装与升级的工作选项] [相关参数]
选项:
 install :后面接要安装的软件
 update  :后面接要升级的软件,若要整个系统都要升级,就直接 update 即可

将前一个练习找到的未安装的pam-devel 安装一下

[root@localhost ~]# yum install -y pam-devel
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
epel/x86_64/metalink                                              | 6.8 kB  00:00:00     
 * base: mirrors.aliyun.com
 * epel: mirrors.bfsu.edu.cn
 * extras: mirrors.huaweicloud.com
 * updates: mirrors.jlu.edu.cn
Resolving Dependencies   # 接下来先处理【属性依赖】的软件问题
--> Running transaction check
---> Package pam-devel.x86_64 0:1.1.8-23.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved
# 由上面的检查发现到pam整个软件也需要同步升级,这样才能够安装新版 pam-devel
# 至于下面则是一个总结的表格显示
=========================================================================================
 Package              Arch              Version                    Repository       Size
=========================================================================================
Installing:
 pam-devel            x86_64            1.1.8-23.el7               base            185 k

Transaction Summary
=========================================================================================
Install  1 Package         

Total download size: 185 k   
Installed size: 528 k      
Downloading packages:
pam-devel-1.1.8-23.el7.x86_64.rpm                                 | 185 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : pam-devel-1.1.8-23.el7.x86_64                                         1/1 
  Verifying  : pam-devel-1.1.8-23.el7.x86_64                                         1/1 

Installed:
  pam-devel.x86_64 0:1.1.8-23.el7                                                        

Complete!

删除功能

yum [remove] 软件

[root@localhost ~]# yum remove pam-devel
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
Resolving Dependencies     # 先解决依赖性问题
--> Running transaction check
---> Package pam-devel.x86_64 0:1.1.8-23.el7 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

=========================================================================================
 Package              Arch              Version                   Repository        Size
=========================================================================================
Removing:
 pam-devel            x86_64            1.1.8-23.el7              @base            528 k

Transaction Summary
=========================================================================================
Remove  1 Package   # 没用依赖性问题只删除了一个软件

Installed size: 528 k
Is this ok [y/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Erasing    : pam-devel-1.1.8-23.el7.x86_64                                         1/1 
  Verifying  : pam-devel-1.1.8-23.el7.x86_64                                         1/1 

Removed:
  pam-devel.x86_64 0:1.1.8-23.el7                                                        

Complete!

YUM的配置文件

虽然yum是你的主机能够连接上互联网就可以直接使用的,但是,由于CentOS的镜像站可能会选择到距离我们较远的地方,例如我们在云南,但是CentOS的镜像站选择到了北京,这样连接到北京的速度就会非常慢。为了解决这个问题,我们可以手动修改yum的配置文件,将镜像站设置为距离我们较近的地方,这样就可以加快软件下载和更新的速度。

开源镜像站

阿里云开源镜像站:https://mirrors.aliyun.com/

网易开源镜像站:https://mirrors.163.com/

中科大开源镜像站:https://mirrors.ustc.edu.cn/

清华开源镜像站:https://mirrors.tuna.tsinghua.edu.cn/

如果你连接到了上述的网址后,就会发现里面有一堆链接,那些链接就是这个yum服务器所提供的软件源了。所以高速网络中心也提供了 centosplus、cloud、extras、fasttrack、os、updates等软件源,最好认的软件源就是 os(系统默认的软件)与updates(软件升级版本)

image-20230531210556003

在使用YUM安装软件时,最重要的是要找到软件源的地址,这样才能够下载需要的软件。而软件源中最重要的是repodata目录,这个目录中存放着分析RPM软件后所产生的软件属性依赖数据。也就是说,当你找到一个软件源地址时,一定要确保该地址下面有一个名为【repodata的目录】,这样才能够正确地使用YUM安装软件。

image-20230531210618277

现在让我来修改配置文件

[root@localhost ~]# vim /etc/yum.repos.d/CentOS-Base.repo 
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

CentOS-Base.repo内容很多,仅列出base这个软件源内容而已,其他的软件源内容自行查看

  • [base]:代表软件源的名字,中括号一定要存在,里面的名称则可以随意取。但是不能有俩不能更改相同的软件源名称,否则yum会不知道该到哪里取找软件源相关的软件列表
  • name:只是说明一下这个软件源的意义而已,重要性不高
  • mirrorlist=:列出这个软件源可以使用的镜像站,如果不想使用,可以注释掉这行
  • baseurl:这个最重要,因为后面接的就是软件源的实际地址,mirrorlist是由YUM程序自行取识别镜像站,baseurl则是指定固定的一个软件源地址,我们刚刚找到的网址放到这里来(注意路径)
  • enable=1:就是让这个软件源被启用,如果不想启动可以使用enable=0
  • gpgcheck=1:还记得RPM数字签名吗?这就是指定是否需要查看RPM文件内的数字签名
  • gpgkey=:就是数字签名的公钥文件所在位置,使用默认值就可以。

了解完配置让我们修改整个文件内容吧,使用中科大镜像站的资源。修改方式仅列出base这个软件源而已,其他项目按照这个处理就行了

[root@localhost ~]# vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
baseurl=http://mirrors.ustc.edu.cn/centos/7.9.2009/os/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever - Updates
baseurl=http://mirrors.ustc.edu.cn/centos/7.9.2009/updates/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever - Extras
baseurl=http://mirrors.ustc.edu.cn/centos/7.9.2009/extras/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
# 默认情况下,软件源仅有这三个启用,所以这里仅修改这三个软件源的baseurl而已。

那么你肯定会说,配置的好麻烦什么的,有没有更简单的方法呢?有的,直接使用官方制作好的repo文件

使用 wget 下载,wget是一个网络下载工具

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
#-O参数指定要将下载的文件输出至指定路径
#/etc/yum.repos.d/CentOS-Base.repo是指定输出路径
# https://mirrors.aliyun.com/repo/Centos-7.repo是要下载的文件的URL地址。
# 执行该命令后,系统将会使用阿里云提供的软件仓库来更新和安装软件包

接下来就是测试一下这些软件源是否正常运行

[root@localhost ~]# yum repolist all

image-20230531213010593

上面最右边写enabled才是有启用的,由于/etc/yum.repos.d/ 有多个配置文件,所以你会发现还有其他的软件源存在

修改软件源产生的问题与解决之道

如果我们想要修改YUM的配置文件,让它使用特定的镜像站而不是其他软件开发商提供的软件源,我们需要在/etc/yum.repos.d/目录下创建一个.repo的文件,这是一个特定的配置文件格式。但是需要注意的是,不同的软件源可能会有新旧版本之分,YUM会在本地/var/cache/yum目录中下载软件源的列表。如果我们修改了镜像站的网址却没有修改软件源名称(中括号内的文件),就可能导致本地的列表与YUM服务器的列表不同步,从而无法更新软件。解决方法很简单,只需要清除本地的旧数据即可。

yum clean [ packages | headers |all ]
选项:
packages:将已下载的安装文件删除
headers :将下载的安装文件头删除
all     :将所有软件源数据都删除

使用案例

删除已下载过的所有软件源的相关数据(含软件本身与清单)

[root@localhost ~]# yum clean all

YUM的软件群组功能

通过yum来在线安装一个软件是非常简单的,但是,如果要安装的是一个大型软件?举例来说,我使用默认安装的方式安装了测试机,这台主机只有GNOME这个窗口管理器。那么我如果想要安装KDE?难道要重新安装?当然不需要,通过yum的软件群组功能即可

yum [群组功能] [软件群组]
选项:
 grouplist   :列出所有可使用的【软件群组组】,例如 Development Tools之类
 groupinfo   :后面接group name,则可了解该group内含的所有软件名
 groupinstall:这个很好用,可以按照一整组的软件群组,相当的不错

使用案例

查看目前软件源与本机上面的可用与安装过的软件群组有哪些

[root@localhost ~]# yum grouplist
Available Environment Groups:   #还可以安装的系统环境软件群组
   Minimal Install
   Compute Node
   Infrastructure Server
   File and Print Server
   Cinnamon Desktop
   MATE Desktop
   Basic Web Server
   Virtualization Host
   Server with GUI
   GNOME Desktop
   KDE Plasma Workspaces
   Development and Creative Workstation
Available Groups:               # 还能额外安装的软件群组
   Cinnamon
   Compatibility Libraries
   Console Internet Tools
   Development Tools
   Educational Software
   Electronic Lab
   Fedora Packager
   General Purpose Desktop
   Graphical Administration Tools
   Haskell
   LXQt Desktop
   Legacy UNIX Compatibility
   MATE
   Milkymist
   Scientific Support
   Security Tools
   Smart Card Support
   System Administration Tools
   System Management
   TurboGears application framework
   Xfce
Done

系统上的软件大多是以群组的方式来提供安装的,就像一个套餐一样,包含了很多相关的软件,这些软件一起工作可以完成一些特定的功能。比如,GNOME、KDE、X Windows等,这些名称其实就是软件群组的名称,包含了一系列相关的软件,安装了这些软件群组后,就可以使用这些软件来完成一些特定的功能。在安装CentOS时,我们可以选择需要安装的软件群组,也可以选择单个软件进行安装。如果你执行上述的命令之后,在【Available Groups】下面应该会看到一个【Scientific Support】的软件群组,可以使用如下命令查看详细内容

[root@localhost ~]# yum groupinfo "Scientific Support"
Group: Scientific Support
 Group-Id: scientific
 Description: Tools for mathematical and scientific computations, and parallel computing.  # 这句话的意思是用于数学和科学计算以及并行计算的工具。
 Optional Packages:
   Macaulay2
   atlas
   fftw
   fftw-devel
   fftw-static
   gnuplot
   gromacs
   gromacs-mpi
   gsl-devel
   hdf
   hdf5
   jmol
   lapack
   maxima
   .....
   .....
   .....

我们来安装看看

[root@localhost ~]# yum groupinstall "Scientific Support"

Scientific Support 里面的软件都是【可选择的】,而不是【主要的(mandatory)】,因此默认情况下,上面这些软件通通不会帮你安装。如果你想要安装上述软件,可以使用 【yum install fftw】 一个一个安装,如果你想要让groupinstall 默认安装好所有的optional软件?那么就得要修改配置文件,更改groupinstall 选择的软件选项即可,如下所示

distroverpkg=centos-release     # 找到这一行添加如下内容
group_package_types=default,mandatory,optional
# default:表示安装软件包群组时,同时安装默认类型的软件包;
# mandatory:表示安装软件包群组时,同时安装必须的软件包,如果不安装这些软件包,软件包群组将无法正常工作;
# optional:表示安装软件包群组时,同时安装可选的软件包,这些软件包并不是必须的,但是可以提供额外的功能。

通过设置group_package_types=default,mandatory,optional,yum在安装软件包群组时将同时安装默认类型、必须类型和可选类型的软件包,这样可以确保软件包群组能够正常工作,并且提供额外的功能。

然后再次执行安装命令/

[root@localhost ~]# yum groupinstall "Scientific Support"
# 你就会发现有一大堆软件的安装。

全系统自动升级

我们可以手动选择是否需要升级,那能不能让系统自动升级,让我们的系统随时保持在最新的状态呢?可以,通过【yum update -y】来自动升级,然后再通过 crontab 的功能来处理即可。

假设我每天在 3:00am 网络带宽比较好的适合进行升级

# 使用命令crontab -e打开定时任务编辑器。在编辑器中添加如下行
0 3 * * * /usr/bin/yum update -y
# 表示在每天的凌晨3:00执行yum update -y命令进行自动升级操作。 

通过以上设置,系统会在每天凌晨3:00自动执行yum update -y命令进行自动升级操作

管理的抉择:RPM还是Tarball

如果我要升级或是全新安装一个新的软件,那么该选择RPM还是Tarball来安装?

优先选择原厂的RPM功能

在Linux系统中,软件的管理通常使用RPM(Red Hat Package Manager)来进行。RPM是一种软件包管理器,可以方便地安装、升级和卸载软件。此外,RPM还具有安全性较高的特点,因为它提供数字签名和验证功能,可以保证软件的安全性。

通过使用RPM,可以实现自动升级和维护软件,而且原厂会持续维护软件更新,因此系统可以保持在最新的状态,提高了系统的安全性。此外,使用RPM还可以方便地查询和验证软件包,使软件管理变得更加轻松和自在。

例如,RHEL和Centos每个版本都至少提供五年以上的维护期,这意味着这些系统的软件会持续得到更新和维护,能够保证系统的稳定性和安全性。同时,yum作为RPM的一个工具,也可以自动升级软件包,提高了系统的安全性和稳定性。

因此,在Linux系统中,使用RPM来管理软件是首选的方式,因为它具有安全性高、易于管理和维护等优点,能够保证系统的稳定性和安全性。

选择软件官网发布的RPM或是提供的软件源地址

虽然原厂提供了很多软件和更新,但是并不可能包含所有的软件和功能。举例来说,CentOS并没有提供NTFS相关的驱动模块。如果需要安装这些特殊的软件,就需要自行寻找软件源并进行安装。

可以通过到官网上查找是否有提供相关的RPM文件来安装特殊软件。如果软件源网址已经提供,可以通过下载该软件源的YUM配置文件,将其加入到系统中,就能够方便地自动安装和升级该软件。

因此,在使用RPM来管理软件时,也需要注意到原厂提供的软件并不是万能的,可能会有一些特殊的软件需要自行寻找软件源来进行安装。

使用Tarball安装特殊软件

某些特殊用途的软件,可能并没有提供RPM文件来进行安装。虽然可以制作SRPM来转成RPM进行安装,但是对于只有一台主机的情况,这样做并没有什么实际意义。

如果要管理相同的多台主机,制作RPM文件就会变得很有价值,因为可以方便地在多台主机上进行安装和升级。但是如果只是单机版的特殊软件,例如学术网络常用的MPICH、PVM等并行计算函数库,建议使用Tarball进行安装即可,不需要特别去查找RPM进行安装。

因此,在使用RPM来管理软件时,也需要注意到对于某些特殊用途的软件,可能并没有提供RPM文件来进行安装。在这种情况下,可以使用Tarball等方式进行安装,而不必特别去制作RPM文件。

使用Tarball测试新版软件

有时候我们需要使用新版的某些软件,但是原厂仅提供旧版软件。在这种情况下,可以使用Tarball安装新软件到 /usr/local/ 目录下面,这样就能够同时安装两个版本的软件在系统上了。大多数软件安装多个版本时不会相互干扰,可以用来测试新软件。

不过,在使用多个版本的软件时,需要注意使用的命令是新版软件还是旧版软件。可以通过在命令前加上完整的路径来指定使用哪个版本的软件,例如 /usr/local/bin/xxx。也可以通过修改环境变量来设置默认使用哪个版本的软件。

需要注意的是,使用新版软件可能会产生问题,因此在安装新版软件之前应该备份原有的软件,以便需要回到原有软件时可以恢复。

总结

RPM和Tarball各有各的优缺点,需要根据具体情况选择合适的方式进行安装。

对于已经提供RPM文件的软件,使用RPM进行安装可以方便地管理和升级软件。而且RPM可以解决依赖性问题,可以自动安装相关的依赖软件包。因此,如果有RPM文件的话,优先考虑使用RPM进行安装。

但是对于某些软件,可能没有提供RPM文件,或者软件的架构差异性太大,或者无法解决依赖属性问题,使用Tarball进行安装可能更为方便。通过使用Tarball安装,可以避免依赖性问题,同时也可以方便地安装新版本的软件。

因此,在选择使用RPM还是Tarball进行软件安装时,需要根据具体情况进行选择,权衡各自的优缺点,选择最合适的方式进行安装。

基础服务案例:以APache为例

在默认的情况下,你无需修改服务的配置文件,都通过系统默认值来处理你的服务即可。有个江湖默认口诀你可以将他背下来,这样你在处理服务的时候就不会窘迫了

  1. 安装:yum install (你的软件)
  2. 启动:systemctl start (你的软件)
  3. 开机启动:systemctl enable (你的软件)
  4. 防火墙:firewall-cmd --add-service="(你的服务)";firewall-cmd --permanent --add-service="(你得服务)"
  5. 测试:用软件查看你得服务正常与否

下面让我们来做一下实验

  1. 安装所需的软件
[root@localhost ~]# yum install -y httpd php mariadb-server php-mysql
  1. 启动与开机启动,这两个步骤记得一定要进行
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
[root@localhost ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since 四 2023-06-01 14:40:15 CST; 10s ago
     Docs: man:httpd(8)
  1. 防火墙
[root@localhost ~]# firewall-cmd --add-service="http"
success
[root@localhost ~]# firewall-cmd --permanent --add-service="http"
success
[root@localhost ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens34
  sources: 
  services: dhcpv6-client http ssh      #这个启动才是重点
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
  1. 测试

在最后的测试中,进入浏览器中,在网址输入自己的IP地址就会出现如下界面,那就代表成功了。你的Linux已经是Web服务器了

image-20230601144455399

猜你喜欢

转载自blog.csdn.net/qq_52089863/article/details/130988097