在Linux用yum/dnf管理软件包

2023-12-21 14:28
文章标签 linux 管理 yum dnf 软件包

本文主要是介绍在Linux用yum/dnf管理软件包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本章主要介绍使用 yum 对软件包进行管理。

        yum 的介绍

        搭建yum源

        创建私有仓库

        yum客户端的配置

         yum的基本使用

使用rpm安装包时经常会遇到一个问题就是包依赖,如下所示。

[root@redhat8 ~]# rpm ‐ivh /mnt/AppStream/Packages/httpd‐2.4.37‐41.modu
le+el8.5.0+11772+c8e0c271.x86_64.rpm
错误:依赖检测失败:
httpd‐filesystem 被 httpd‐2.4.37‐41.module+el8.5.0+11772+c8e0c271.x86_
64 需要
httpd‐filesystem = 2.4.37‐41.module+el8.5.0+11772+c8e0c271 被 httpd‐2.
4.37‐41.module+el8.5.0+11772+c8e0c271.x86_64 需要
httpd‐tools = 2.4.37‐41.module+el8.5.0+11772+c8e0c271 被 httpd‐2.4.37‐
41.module+el8.5.0+11772+c8e0c271.x86_64 需要
libapr‐1.so.0()(64bit) 被 httpd‐2.4.37‐41.module+el8.5.0+11772+c8e0c27
1.x86_64 需要
libaprutil‐1.so.0()(64bit) 被 httpd‐2.4.37‐41.module+el8.5.0+11772+c8e
0c271.x86_64 需要
mod_http2 被 httpd‐2.4.37‐41.module+el8.5.0+11772+c8e0c271.x86_64 需要
system‐logos(httpd‐logo‐ng) 被 httpd‐2.4.37‐41.module+el8.5.0+11772+c8
e0c271.x86_64 需要

        这里的意思是按【Tab】键。

        所谓包依赖,就是在安装A时必须先把B和C安装上去。如果用rpm一个个安装是非常困难 的,这里可以使用dnf或yum命令来解决。yum命令其实是软链接到dnf命令上的,所以输入yum或dnf都可以,后文都使用yum命令介绍。

1.yum架构介绍

        为了便于理解,先看图所示的例子。

         可能我们经常会使用360软件管家管理软件包,在360服务器上有各种软件,在PC上的360软件管家中搜索想要安装的软件,然后单击【安装】按钮,这样就可以把软件自动安装到本地了,很方便。

        yum的架构也是类似的,如图所示。

        在服务器上存在某个目录中存储了大量的软件包,然后通过ftp或http把此目录共享出去,使得客户端可以通过ftp或http能访问到此目录。

        在服务器端所存储的这些软件包中,服务器是知道哪些包之间有依赖关系的,例如,A、 B、C三者之间存在依赖关系,所以当客户端发布一个请求说要安装A时,如图所示。

        此时发现A和B、C有依赖关系,所以客户端会把A、B、C三者都从服务器下载到本机的缓存,然后再把这三个包一起给安装 上去。

        如果假设A和B、C、X有依赖关系,但是X这个包并没有出现在现在的这个源中,那么当客户端要安装A时,因为缺少了X,所 以安装是失败的。此时我们就需要在客户端上指定多个源,保证所有的这些源中包含了所有需要的包,如图所示。

        因为客户端指定了两个源,所以当客户端发布一个请求说要安装A时,此时从第一个源中检测到了需要的依赖包B、C,然后从第二个源中找到了X,客户端就会把这四个包一起下载到本地缓存中并进行安装。

2 用光盘搭建yum源

        实验拓扑图如图所示。

        因为光盘中包括了最常用的软件包,所以现在就把光盘的内容作为源,用vsftpd将光盘的内容共享出去。在rpm章节已经将 vsftpd安装上去了,如果没有安装请按前面章节讲过的内容自行安装好。

注意 下面的操作都是在server上做的。

        修改letc/vsftpd/vsftpd.conf中的anonymous enable选项,如下所示。

        由anonymous_enable=NO修改为anonymous_enable=YES,并添加如下命令。 

pasv_min_port=10010
pasv_max_port=10020

        保存退出并启动vsftpd,命令如下。

[root@redhat8 ~]# systemctl enable vsftpd --now
Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service → /usr/lib/systemd/system/vsftpd.service.

        如果已经启动过了,则通过systemctl restart vsftpd重启一下,使刚做的配置生效。 修改防火墙,命令如下。

[root@redhat8 ~]# firewall-cmd --add-port=20-21/tcp --permanent 
success
[root@redhat8 ~]# firewall-cmd --add-port=10010-10020/tcp --permanent 
success
[root@redhat8 ~]# firewall-cmd --reload 
success

        设置 SELinux相关的布尔值,命令如下。

[root@redhat8 ~]# setsebool -P ftpd_full_access 1

        记住,这个布尔值一定要设置,否则客户端会出现图所示的错误。

        创建目录/var/ftp/dvd,然后把光盘挂载到此目录上,命令如下。

[root@redhat8 ~]# mkdir /var/ftp/dvd
[root@redhat8 ~]# mount /dev/cdrom /var/ftp/dvd
mount: /var/ftp/dvd: WARNING: device write-protected, mounted read-only.

        这样其他机器通过ftp访问/var/ftp/dvd时,访问的就是光盘中的内容了。设置开机自动挂载,修改/etc/fstab,内容如下。

[root@redhat8 ~]# vim /etc/fstab 
[root@redhat8 ~]# grep ftp /etc/fstab 
/dev/cdrom /var/ftp/dvd defaults iso9660 0 0 

        至此,服务器上的yum 源就已经配置好了,查看/var/ftp/dvd中的内容

[root@redhat8 ~]# ls /var/ftp/dvd/
AppStream  EFI   extra_files.json  images    media.repo               RPM-GPG-KEY-redhat-release
BaseOS     EULA  GPL               is

        此时客户端不能直接把此目录作为源来使用,服务器是知道每个包和其他包之间的依赖关系的,因为系统会把某个目录(包括子目录)中的rpm包的元数据信息放在repodata目录中

        但是在/var/ftp/dvd中并没有repodata目录(不能单纯地用mkdir命令把此目录创建出来,创建出来里面没有元数据是没用的),所以 /var/ftp/dvd并不能直接作为源来使用。先来看AppStream目录的内容,命令如下。

[root@redhat8 ~]# ls /var/ftp/dvd/AppStream/
Packages  repodata

        这里repodata是 AppStream下的目录,记录了AppStream目录下所有的rpm信息,此处AppStream中所有的rpm都存储在Packages目录下了。repodata中的内容大概是这样的,如下所示。

[root@redhat8 ~]# ls /var/ftp/dvd/AppStream/repodata/
167822ee59a5cbd329d31b2ff030cb2146b0fd624e390ffe3ac98fb641fb62f4-comps-AppStream.x86_64.xml.gz
2adf8b14deae5cde9dd015b563abdfba1d2a4c96659bf8386ff182f9400b023b-comps-AppStream.x86_64.xml
689bd45a22fedbffbc3e3b9d82109a2c6ed02ee8b2962136d63a3026f24d6ef0-filelists.xml.gz
99f06c9bf207d0b64dfecfeb768d255367de7e22522ae4669c2bf8361a2df4ef-other.xml.gz
b591d9fa12e0ba5c6d75b84b605f44c1daefd514068152a3fd8ba53fdb5975eb-primary.xml.gz
d12f84e558ef647914eb6d20f034920765390d579888595800f915a133457a22-modules.yaml.gz
ee6f2ed466e70c8ee4dd48d8aa3897707349e31e3f546a82e121cc53cc82d8a8-productid.gz
productid
repomd.xml
TRANS.TBL

        再来看BaseOS目录的内容,命令如下。

[root@redhat8 ~]# ls /var/ftp/dvd/BaseOS/
Packages  repodata

        这里repodata是 BaseOS下的目录,记录了BaseOS目录下所有的rpm信息,此处BaseOS中所有的rpm都存储在Packages目录下了。

        总结:repodata目录中记录了repodata所在目录下所有的rpm信息,例如,BaseOS下的repodata 记录了BaseOS目录下所有的rpm信息。

        所以,当前server上有两个源,分别是/var/ftp/dvd/AppStream 和/var/ftp/dvd/BaseOS。客户端要访问这两个源,分别通过 ftp://192.168.184.100/dvd/AppStream和 ftp://192.168.184.100/dvd/BaseOS 即可。

3 创建私有仓库

        在server上利用光盘对外提供了两个源分别是/var/ftp/dvd/ AppStream和 /var/ftp/dvd/BaseOS,这两个源是光盘中自带的。下面练习如何创建一个自定义的源。

        先配置server使用光盘作为源,在server(192.168.184.100这台机器)中把光盘挂载到/mnt 上,并在/etc/fstab中设置开机自动挂载。

[root@redhat8 ~]# tail -1 /etc/fstab 
/dev/cdrom /var/ftp/dvd defaults iso9660 0 0 

这样访问/mnt时访问的就是光盘了。创建/etc/yum.repos.d/aa.repo的内容如下。

[root@redhat8 ~]# cat /etc/yum.repos.d/aa.repo 
[aa]
name=aa
baseurl=file:///mnt/AppStream
enabled=1
gpgcheck=0[bb]
name=bb
baseurl=file:///mnt/BaseOS
enabled=1
gpgcheck=0

        需要注意的是,这里file:后面是3个/,file:是类似于http;/l、ftp:;这样的写法,第三个/表示的是绝对路径。

        通过yum install安装createrepo工具包,命令如下。

[root@redhat8 ~]# yum -y install createrepo
正在更新 Subscription Management 软件仓库。

        然后创建一个目录/var/ftp/myrepo,命令如下。

[root@redhat8 ~]# mkdir /var/ftp/myrepo

        从光盘中拷贝一个测试用的安装包,这里就选择vsftpd的安装包。拷贝vsftpd到 /var/ftplmyrepo中,命令如下。

[root@redhat8 ~]# cp /mnt/AppStream/Packages/vsftpd-3.0.3-34.el8.x86_64.rpm /var/ftp/myrepo/

        现在/var/ftp/myrepo中包含了一个 vsftpd的安装包,命令如下。

        通过createrepo工具包对/var/ftp/myrepo进行操作,命令如下。

[root@redhat8 ~]# createrepo -v /var/ftp/myrepo/
10:19:41: Version: 0.17.2 (Features: DeltaRPM LegacyWeakdeps )
10:19:41: Signal handler setup
10:19:41: Thread pool ready

        /var/ftp/myrepo目录中的内容如下。

[root@redhat8 ~]# ls /var/ftp/myrepo/
repodata  vsftpd-3.0.3-34.el8.x86_64.rpm

        这里生成了repodata,里面包含了/var/ftp/myrepo中所有的rpm包(这里就一个vsftpd)的信息,那么/var/ftp/myrepo也可以作为一个源来使用了。

4 yum客户端的配置

        客户端要安装软件包必须指定使用哪些源,在客户端上指定源的方法是在目 录/etc/yum.repos.d中创建后缀是repo的文件。文件名是什么无所谓,但后缀必须是 repo,格式如下。

[名称] ‐‐‐‐用于标注不同的源
name= ‐‐‐‐注释信息
baseurl= ‐‐‐‐指定源的URL地址
enabled= ‐‐‐用于指定是否启用这个源,值有0和1
0‐‐‐不使用这个源
1‐‐‐使用这个源
enabled也可以写成enable
gpgcheck= ‐‐‐‐用于指定安装的软件包是否要进行数字签名的验证,值有0和1
0‐‐不对每个安装包进行数字签名验证
1‐‐对每个包做数字签名的验证
gpgkey=/path/如果上面 gpgcheck的值设置为1,需要使用此选项指定公钥;如果上面gp
gcheck的值设置为0,这个选项可以不写。

        在服务器端已经配置了两个源,下面配置客户端让其能使用这两个源, 在/etc/yum.repos.d中创建aa.repo,内容如下。

[root@redhat8 ~]# cat /etc/yum.repos.d/aa.repo 
[aa]
name=aa
baseurl=ftp://192.168.184.100/dvd/AppStream
enabled=1
gpgcheck=0[bb]
name=bb
baseurl=ftp://192.168.184.100/dvd/BaseOS
enabled=1
gpgcheck=0

        这里在aa.repo中配置了两个源,分别标记为aa和 bb。可以把多个源写在同一个repo文件中,也可以把多个源写在不同的repo文件中。

        当通过ftp://192.168.184.100来访问服务器时,访问的是服务器的/var/ftp目录,千万不要写成ftp://192.168.184.100/var/ftp了,否则对应的就是服务器的/var/ftp/var/tp目录了。

      ftp://192.168.184.100/dvd对应的是服务器的/var/ftp/dvd目录,但是这个不能作为源,因 为/var/ftp/dvd下没有对应的repodata目录记录/var/ftp/dvd中的 rpm信息。

        因为rpm包都是存储在Packages中的,所以有人可能说我怕系统找不到软件包,所以写成baseurl=ftp://192.168.184.100/dvd/BaseOS/Packages行不行?答案是不行的,你不用担心系统找不到rpm在哪里。写成baseurl=ftp://192.168.184.100/dvd/BaseOS,会通过读取它的子目录repodata中的数据从而知道rpm在哪个目录中。

        此时/etc/yum.repos.d中的文件如下。

[root@redhat8 ~]# ls /etc/yum.repos.d/
aa.repo  redhat.repo

        这里/etclyum.repos.d下面的redhat.repo是系统自动生成的可以不用管,删除不删除都无所谓。

        server2通过ftp访问server上的源。如果想直接使用本地光盘作为yum源,那么可以把光盘挂载到某个目录上,然后直接使用此目录作为源。

5 yum的基本使用

        通过yum repolist查看当前正在使用的源,命令如下。

[root@redhat8 ~]# yum repolist 
正在更新 Subscription Management 软件仓库。
无法读取客户身份本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。仓库 id                                                     仓库名称
aa                                                          aa
bb                                                          bb

        可以看到,现在正在使用两个源aa和 bb,由/etc/yum.repos.d/aa.repo文件里中括号的部分定义。

        如果/etc/yum.repos.d/aa.repo的内容发生了改变,需要用yum clean all 命令清空一下缓存,命令如下。

[root@redhat8 ~]# yum clean all
正在更新 Subscription Management 软件仓库。
无法读取客户身份本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。15 文件已删除

         重新创建缓存数据用yum makecache命令,命令如下。

[root@redhat8 ~]# yum makecache 
正在更新 Subscription Management 软件仓库。
无法读取客户身份本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。aa                                                                                          101 MB/s | 7.2 MB     00:00    
bb                                                                                           85 MB/s | 2.4 MB     00:00    
元数据缓存已建立。

        这步不是必需的,即使不重新创建缓存数据,当我们下次使用yum时也会自动创建。

5.1 查询

        想查询yum源中是否存在某个包,可以通过 yum search或 yum list来查询。例如,要查询lrzsz这个包,命令如下。

[root@redhat8 ~]# yum search lrzsz
正在更新 Subscription Management 软件仓库。
无法读取客户身份本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。上次元数据过期检查:0:00:18 前,执行于 2023年12月21日 星期四 10时24分18秒。
============================================== 名称 精准匹配:lrzsz ==============================================
lrzsz.x86_64 : The lrz and lsz modem communications programs

        对于yum search 来说,可以在yum源中查找包名中含有lrzsz的包,如果输入的是yumsearch lrzs,它也是能查找到的,命令如下。

[root@redhat8 ~]# yum search lrzs
正在更新 Subscription Management 软件仓库。
无法读取客户身份本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。上次元数据过期检查:0:02:58 前,执行于 2023年12月21日 星期四 12时07分27秒。
===================================================== 名称 匹配:lrzs ======================================================
lrzsz.x86_64 : The lrz and lsz modem communications programs

        也就是yum search后面跟的包名可以不是完整的包名,但是这个命令查询的结果无法判断这个包在系统上是否安装。可以使用yum list命令查看包是否已经安装,命令如下。

[root@redhat8 ~]# yum list lrzsz
正在更新 Subscription Management 软件仓库。
无法读取客户身份本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。上次元数据过期检查:0:04:11 前,执行于 2023年12月21日 星期四 12时07分27秒。
可安装的软件包
lrzsz.x86_64                                               0.12.20-43.el8                                                @bb

        这里显示“可安装的”说明在系统中并没有安装,最后的bb说明lrzsz是在bb这个源中的。

        对于yum list来说,后面必须跟上完整的包名,如果跟的不是完整的包名则是查询不出来的,如下所示。

[root@redhat8 ~]# yum list lrzs
正在更新 Subscription Management 软件仓库。
无法读取客户身份本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。上次元数据过期检查:0:17:16 前,执行于 2023年12月21日 星期四 10时24分18秒。
错误:没有匹配的软件包可以列出

        所以,在使用yum list命令时,可以结合通配符一起使用,命令如下。

[root@redhat8 ~]# yum list lrzs\*
正在更新 Subscription Management 软件仓库。
无法读取客户身份本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。上次元数据过期检查:0:17:40 前,执行于 2023年12月21日 星期四 10时24分18秒。
可安装的软件包
lrzsz.x86_64                                           0.12.20-43.el8                                           bb

        这里的意思是在yum源中查找以lrzs开头的包,*前面加上\的目的是防止bash把*解析 了,希望到yum源中去解析而不是在bash中解析。到底使用yum search还是yum list就要看个人习惯了。

 5.2 安装与卸载软件包

        安装软件包用“yum install 包名”命令,现在安装 lrzsz,命令如下。

[root@redhat8 ~]# yum -y install lrzsz
正在更新 Subscription Management 软件仓库。
无法读取客户身份本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。上次元数据过期检查:0:18:01 前,执行于 2023年12月21日 星期四 10时24分18秒。
依赖关系解决。

         这样软件包就算是安装上去了,查看,命令如下,

[root@redhat8 ~]# yum list lrzsz
正在更新 Subscription Management 软件仓库。
无法读取客户身份本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。上次元数据过期检查:0:18:27 前,执行于 2023年12月21日 星期四 10时24分18秒。
已安装的软件包
lrzsz.x86_64                                          0.12.20-43.el8                                           @bb

        这里已显示“已安装”。

        不管是安装还是卸载,每次安装(或卸载)时都会询问,如果不想被询问,可以加上y选项,y加在下面1、2、3的位置都可以。

 yum 1 install 2 包名 3

        卸载软件包用“yum remove 包名”命令,现在把 Irzsz卸载掉,命令如下。

[root@redhat8 ~]# yum -y remove lrzsz
正在更新 Subscription Management 软件仓库。
无法读取客户身份

        这样就把lrzsz卸载了。下面查看系统中是否还有Irzsz,命令如下。

[root@redhat8 ~]# rpm -qa | grep lrszs
[root@redhat8 ~]# 

        如果要更新系统中的某个软件包,则用“yum update包名y”命令。如果要更新系统中所有的软件包,则直接使用yum udpate -y命令即可。

        查询包的信息用“yum info包名”命令,命令如下。

[root@redhat8 ~]# yum info lrzsz
正在更新 Subscription Management 软件仓库。
无法读取客户身份本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。上次元数据过期检查:0:19:16 前,执行于 2023年12月21日 星期四 10时24分18秒。
可安装的软件包
名称         : lrzsz
版本         : 0.12.20
发布         : 43.el8
架构         : x86_64
大小         : 84 k
源           : lrzsz-0.12.20-43.el8.src.rpm
仓库         : bb
概况         : The lrz and lsz modem communications programs
URL          : http://www.ohse.de/uwe/software/lrzsz.html
协议         : GPLv2+
描述         : Lrzsz (consisting of lrz and lsz) is a cosmetically modified: zmodem/ymodem/xmodem package built from the public-domain version of: the rzsz package. Lrzsz was created to provide a working GNU: copylefted Zmodem solution for Linux systems.
5.3 下载

        使用yum 安装软件包时,先把要安装的软件包及所依赖的包都下载到本地缓存中,然后再一起安装。如果只想把这些包下载下来并不安装,可以使用--downloadonly和--downloaddir=/dir选项,其中--downloadonly 只让yum把软件包下载下来并不执行安装操作,下载到哪个目录由--downloaddir来指定。

        现在想把 httpd及其依赖的包全部下载到/xx目录,首先创建/xx目录,命令如下。

[root@redhat8 ~]# mkdir /xx

        然后开始下载指定的包,命令如下。

[root@redhat8 ~]# yum -y install httpd --downloadonly --downloaddir=/xx

        查看一下/xx中的内容,命令如下。

[root@redhat8 ~]# ls /xx
apr-1.6.3-12.el8.x86_64.rpm
apr-util-1.6.1-6.el8.x86_64.rpm
apr-util-bdb-1.6.1-6.el8.x86_64.rpm
apr-util-openssl-1.6.1-6.el8.x86_64.rpm
httpd-2.4.37-41.module+el8.5.0+11772+c8e0c271.x86_64.rpm
httpd-filesystem-2.4.37-41.module+el8.5.0+11772+c8e0c271.noarch.rpm
httpd-tools-2.4.37-41.module+el8.5.0+11772+c8e0c271.x86_64.rpm
mod_http2-1.15.7-3.module+el8.4.0+8625+d397f3da.x86_64.rpm
redhat-logos-httpd-84.5-1.el8.noarch.rpm

        可以看到,已经把httpd及其依赖的包全部下载下来了。

5.4 查询缺失命令

        有时想执行某个命令时却发现系统中并没有此命令,如下所示。

[root@redhat8 ~]# smbclient -L //192.168.184.100
bash: smbclient: 未找到命令...
安装软件包“samba-client”以提供命令“smbclient”? [N/y] n

        这里会检测到smbclient命令是由安装包 samba-client安装的,会询问要不要安装它,如果不安装则输入“n”并按【Enter】键,这里并没有让它自动安装。

        没有这个命令肯定是因为某个包没有安装的缘故,那么怎么知道这个命令是哪个包安装出来的呢?可以用yum whatprovides */smbclient命令来查询,意思就是往yum源中大吼一嗓子:谁能提供smbclient这个命令?

        这里*的意思是路径的通配符,即不管smbclient在哪个目录下,命令如下。

[root@redhat8 ~]# yum whatprovides */smbclient
正在更新 Subscription Management 软件仓库。
无法读取客户身份本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。上次元数据过期检查:0:21:50 前,执行于 2023年12月21日 星期四 10时24分18秒。
bash-completion-1:2.7-5.el8.noarch : Programmable completion for Bash
仓库        :@System
匹配来源:
文件名    :/usr/share/bash-completion/completions/smbclient

        因为可执行命令一般放在/bin或/usr/bin 下,所以可以判断出来要安装的软件包是 samba-client-4.13.3-3.el8.x86_64。我们现在使用yum install samba-client -y命令把它安装上去之后,然后再次执行smbclient命令,命令如下。

[root@redhat8 ~]# smbclient -L //192.168.184.100
6 组的使用

        前面安装软件包时都是一个个安装的,假设现在想在服务器上实现某个“功能”,这个“功能”需要很多个包,但是不清楚需要安装哪些包,怎么办?可以利用yum中的group功能,用yum grouplist命令查询系统中一共有多少组,命令如下。

[root@redhat8 ~]# yum grouplist 
正在更新 Subscription Management 软件仓库。
无法读取客户身份本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。上次元数据过期检查:0:23:43 前,执行于 2023年12月21日 星期四 10时24分18秒。
可用环境组:服务器最小安装工作站虚拟化主机定制操作系统
已安装的环境组:带 GUI 的服务器
已安装组:容器管理开发工具无头系统管理
可用组:.NET 核心开发RPM 开发工具图形管理工具传统 UNIX 兼容性网络服务器科学记数法支持安全性工具智能卡支持系统工具

        这里显示的可用组是系统没有安装或组中的包没有安装全,已安装组说明这个组是已经安装过的。如果要查看某个组的信息,可以用“yum groupinfo组名”命令。例如,现在要查看虚拟化主机这个组的信息,命令如下。

[root@redhat8 ~]# yum groupinfo 虚拟化主机
正在更新 Subscription Management 软件仓库。
无法读取客户身份本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。上次元数据过期检查:0:24:10 前,执行于 2023年12月21日 星期四 10时24分18秒。
环境组:虚拟化主机描述:最小虚拟化主机。必选软件包组:BaseCoreStandardVirtualization HypervisorVirtualization Tools可选软件包组:Debugging ToolsNetwork File System ClientRemote Management for LinuxVirtualization Platform

        可以通过“yum groupinstall 组名”来安装某个组。例如,要安装虚拟化功能,就把“虚拟化主机”这个组安装上去,命令如下。

[root@redhat8 ~]# yum groupinstall 虚拟化主机 -y

        这样就把需要的组安装完成了。如果卸载,用“yum groupremove 组名”命令即可。

这篇关于在Linux用yum/dnf管理软件包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/520341

相关文章

linux ssh如何实现增加访问端口

《linuxssh如何实现增加访问端口》Linux中SSH默认使用22端口,为了增强安全性或满足特定需求,可以通过修改SSH配置来增加或更改SSH访问端口,具体步骤包括修改SSH配置文件、增加或修改... 目录1. 修改 SSH 配置文件2. 增加或修改端口3. 保存并退出编辑器4. 更新防火墙规则使用uf

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

Linux挂载linux/Windows共享目录实现方式

《Linux挂载linux/Windows共享目录实现方式》:本文主要介绍Linux挂载linux/Windows共享目录实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录文件共享协议linux环境作为服务端(NFS)在服务器端安装 NFS创建要共享的目录修改 NFS 配

linux系统中java的cacerts的优先级详解

《linux系统中java的cacerts的优先级详解》文章讲解了Java信任库(cacerts)的优先级与管理方式,指出JDK自带的cacerts默认优先级更高,系统级cacerts需手动同步或显式... 目录Java 默认使用哪个?如何检查当前使用的信任库?简要了解Java的信任库总结了解 Java 信

Linux命令rm如何删除名字以“-”开头的文件

《Linux命令rm如何删除名字以“-”开头的文件》Linux中,命令的解析机制非常灵活,它会根据命令的开头字符来判断是否需要执行命令选项,对于文件操作命令(如rm、ls等),系统默认会将命令开头的某... 目录先搞懂:为啥“-”开头的文件删不掉?两种超简单的删除方法(小白也能学会)方法1:用“--”分隔命