CentOS8剖析-新特性及安装、网络配置和软件管理

防伪码:日月星辰重置换,天高云淡我为峰!

1、Centos8新特性介绍及安装

1.1、Centos8新特性

本节主要讲解CentOS8新特性。CentOS8与前版本比较,究竟有更新哪些新特性?

CentOS8最终于2019年9月24日发布。由于这是一个源自Red Hat Enterprise Linux (RHEL)的Linux发行版,CentOS 完全遵守 Red Hat 的再发行政策,并且致力与上游产品在功能上完全兼容。CentOS 8 主要改动和 RedHat Enterprise Linux 8 (简称RHEL 8,中文名红帽企业Linux 8)是一致的,基于 Fedora 28 和内核版本 4.18,CentOS 对组件的修改主要是去除 Red Hat 的商标及美工图。

CentOS系统在开发人员和系统管理员中广泛使用,因为它提供了对其高度可定制的开源软件包的完全控制。它是稳定的,背后有一个庞大而活跃的支持社区。由于其可靠性,它已经成为服务器操作系统的主流选择。

让我们来看看CentOS8提供的所有新特性和更新。

1、使用Linux内核4.18版本,CentOS8和RedHat8新特性一致,基于4.18的内核版本,提供AMD和Intel 64位架构,以及64位的arm、IBM Power Systems、Little Endian、IBM Z。

2、软件仓库更新,内容分布在两个主要的软件仓库:BaseOS repository和AppStream Repository

BaseOS软件仓库:对于软件仓库来说,之前的系统中我们默认就有一个Base的源,在CentOS8中,BaseOS软件仓库中的内容主要是提供底层操作系统功能的RPM包,提供一个最基础的安装包,它是以RPM格式提供的。

AppStream软件仓库:而AppStream是一种新的特性,也是新版本的一个亮点,它主要是包括其他用户空间应用程序、运行时语言和数据库,简单理解就是诸多第三方的应用,因为用户空间的组件,通常比操作系统软件包更新的要频繁,所以它就将这两部分分开,引入AppStream这么一个概念,主要就是为了提供更加的灵活性和系统底层的一个稳定性。

附:AppStream解释

AppStream 是对传统 rpm 格式的全新扩展,为一个组件同时提供多个主要版本,应用程序流通常根据其分发的软件版本命名,例如mongodb:3.4或mongodb:3.6,但也可以使用“stable”和“latest”等名称。

参考资料:

https://wiki.centos.org/zh/FAQ/CentOS8

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/8.0_release_notes/distribution-of-content-in-rhel-8#application_streams

3、新版本centos8中提供最新的版本控制系统,包括:

Git 2.18,具有分散架构的分布式版本控制系统。

Mercurial 4.8,轻量级分布式版本控制系统,专为高效处理大型项目而设计

Subversion 1.10,集中版本控制系统

4、Web服务器、Web工具、开发语言和数据库

Centos 8包括多个版本的数据库、开发语言和其他可供您使用的工具的应用程序,以下是centos 8上可用的组件列表:

python:centos 8中的默认Python是Python 3.6版本。默认情况下可能未安装该软件包。要安装Python 3.6,使用yum install python3命令,同样还是继续支持python2.7,但只是有限支持 Python 2.7,生命周期较短,其目的是促进使用者向Python3的平稳过渡。

Nodejs:提供node.js 10,其他动态语言更新包括: PHP 7.2, Ruby 2.5, Perl 5.26, SWIG 3.0。

centos 8 提供Apache 2.4.37、Nginx 1.14(首次引入)

centos 8 提供的数据库服务包括:MariaDB 10.3, MySQL 8.0, PostgreSQL 10, PostgreSQL 9.6, 和 Redis 5。

Squid 版本升级到 4.4,同时也首次提供Varnish Cache 6.0。

GCC编译器8.1

glibc库基于2.28版

5、编译器和开发工具

Gcc 编译器更新到8.2版本,支持更多C++标准,更好的优化以及代码增强技术、提升警告和硬件特性支持

glibc 库升级到2.28

提供OpenJDK 11, OpenJDK 8, IcedTea-Web,以及不同 Java 工具,如 Ant, Maven,或 Scala。

6、软件管理

CentOS 8附带yum包管理器v4.0.9版本,该版本现在使用DNF (Dandified YUM)技术作为后端。DNF是新一代的YUM,新的操作系统版本允许您同时使用这两种工具来管理包。

spacer.gifspacer.gifZUSMANOZCYOH9[VL5]R~B0H.png

Centos 8中默认使用的软件管理工具由原版本的yum换成了速度更快的dnf,原有的yum命令仅为dnf的软链接。

对于熟悉的yum软件包管理也做了新的升级,新版本中YUM包管理器基于 DNF 技术,与DNF技术集成,最新版本有一个大大改进的软件管理系统。并支持模块化内容、增强了性能、并且提供了设计良好的API用于与其他工具集成。云应用程序流、容器工作负载和CI/CD。

RPM的版本是4.14.2,它在开始安装之前验证整个包的内容。

centos 8中提供的YUM版本是v4.0.9,基于DNF的YUM与centos 7上使用的先前YUM v3相比具有以下优势:

1)、提高性能

2)、支持模块化内容

3)、精心设计的稳定API,可与工具集成

详情参考:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/8.0_release_notes/RHEL-8_0_0_release#software-management

7、桌面环境

GNOME Shell 升级到 3.28。

GNOME 会话和显示管理使用 Wayland 作为默认的显示服务器,而 RHEL 7 默认的 X.Org server 依然提供。

I[X`2NBLCW@S[8TKI%%}_[F.png

8、网络方面

使用网络管理器(nmcli 和 nmtui)进行网络配置,移除了网络脚本

nftables 框架替代 iptables 作为默认的网络包过滤工具

firewalld 守护进程使用 nftables 作为默认后端

支持 IPVLAN 虚拟网络驱动程序,可以为多个容器提供网络连接

9、文件系统和存储

XFS文件系统最大大小已从500 TiB增加为1024 TiB。

LUKS版本2(LUKS2)格式替代了旧版LUKS(LUKS1)格式;使用LUKS2作为加密卷的默认格式。LUKS2在部分元数据损坏事件的情况下为加密卷提供元数据冗余和自动恢复。

详情参考:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/8.0_release_notes/RHEL-8_0_0_release#filesystems-storage

10、Cockpit WEB控制台

开放的基于web的控制台界面,Cockpit,现在作为新的CentOS发布的一部分。使用此平台可以通过web控制台界面轻松地管理服务器。通过web浏览器执行系统任务、创建和管理虚拟机、配置网络、启动容器和检查日志。

Cockpit高度集成。它不仅有一个嵌入式终端,可以让你随时从终端切换到浏览器,而且还可以在移动设备上工作。

因此,当你安装CentOS 8时,它会自动设置Cockpit web控制台,并打开所需的防火墙端口。但是,不必担心它会加重系统的负担。该软件非常有效,因为它只在活动时使用内存和CPU。

CentOS8我就不多介绍了,详情可以参考下面的连接:

https://wiki.centos.org/zh/Manuals/ReleaseNotes/CentOS8.1905

CentOS 8官方发行说明

https://lists.centos.org/pipermail/centos-announce/2019-September/023449.html

完整的RedHat 8发行说明请看

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/8.0_release_notes/overview

1.2、Centos8安装

CentOS 8 下载:

国内阿里云镜像下载:

http://mirrors.aliyun.com/centos/8.0.1905/isos/x86_64/CentOS-8-x86_64-1905-dvd1.iso

CentOS 8 官方下载:https://centos.org/download/

6{ZSGB3~{WWW%16L@RN`NYJ.png

CentOS Linux DVD ISO:CentOS 8 的稳定操作系统,系统管理员可以用其部署或配置服务和应用。

CentOS stream DVD ISO:滚动发布的 Linux 发行版,适用于需要频繁更新的开发者。

附:CentOS Streams

CentOS 8版本还包含全新的 CentOS Streams,Centos Stream 是一个滚动发布的 Linux 发行版,你可以把 CentOS Streams 当成是用来体验最新红帽系 Linux 特性的一个版本,而无需等太久。

CentOS 8 所需的最低硬件配置:

◈ 至少2 GB 内存,官方推荐是最少2G内存,推荐4G内存或以上

◈ 64 位 x86 架构、2 GHz 或以上的 CPU

◈ 20 GB 硬盘空间

CentOS8安装也不算复杂,和之前的版本安装没啥差别,建议以最小化安装。具体安装过程略。

2、Centos8网络配置

在rhel8或CentOS8上,没有传统的network.service,在/etc/sysconfig/network-scripts/里也看不到任何脚本文件,那么该如何进行网络配置呢?

Centos7上,/etc/sysconfig/network-scripts/路径的内容:

TSW3RU21APT2R(@CHJSTOVP.png

Centos8上,/etc/sysconfig/network-scripts/路径的内容:

ZIRXZ06244Y@N_RQ40KOCX1.png

可以看到,在/etc/sysconfig/network-scripts目录下只存放着网卡的配置文件,文件名称是ifcfg-网卡名称。

本文详细阐述基于centos8的网络配置,包含多种配置方法。

2.2、centos8与centos7的区别

在centos7上,同时支持network.service和NetworkManager.service(简称NM)。默认情况下,这2个服务都有开启,但许多人都会将NM禁用掉。

H}]]H2IA26TAW@_}`ASE05J.png WA)T4SB]%230N@I$YH]CGDR.png

在centos8上,已废弃network.service,因此只能通过NM进行网络配置,包括动态ip和静态ip。换言之,在centos8上,必须开启NM,否则无法使用网络。

P6PA$(@751N583%{O}CLY@1.png

注:centos8依然支持network.service,只是默认没安装,详见本文最后的提示。

2.3、NetworkManager介绍

NetworkManager是2004年Red Hat启动的项目,旨在能够让Linux用户更轻松地处理现代网络需求,尤其是无线网络,能自动发现网卡并配置ip地址。

类似在手机上同时开启wifi和蜂窝网络,自动探测可用网络并连接,无需手动切换。

虽然初衷是针对无线网络,但在服务器领域,NM已大获成功。

2.3.2、NM能管理各种网络

有线网卡、无线网卡

动态ip、静态ip

以太网、非以太网

物理网卡、虚拟网卡

2.3.3、使用方法

nmcli:命令行。这是最常用的工具,本文将详细讲解该工具使用。

nmtui:在shell终端开启文本图形界面。示意图见本文最后的提示

Freedesktop applet:如GNOME上自带的网络管理工具

cockpit:RedHat自带的基于web图形界面的"驾驶舱"工具,具有dashborad和基础管理功能。示意图见本文最后的提示

2.3.4、为什么要用NM

工具齐全:命令行、文本界面、图形界面、web

广纳天地:纳管各种网络,有线、无线、物理、虚拟

参数丰富:多达200多项配置参数(包括ethtool参数)

一统江湖:RedHat系、SUSE系、Debian/Ubuntu系,均支持

大势所趋:下一个大版本的rhel只能通过NM管理网络

2.4、nmcli使用方法

nmcli使用方法非常类似linux ip命令、cisco交换机命令,并且支持tab补全(详见本文最后的示例),也可在命令最后通过-h、--help、help查看帮助。在nmcli中有2个命令最为常用:

1、nmcli connection

译作连接,可理解为配置文件,相当于ifcfg-ensXX。可以简写为nmcli c

%G`S}}XV5`3AYP9D7(NYCQI.png

2、nmcli device

译作设备,可理解为实际存在的网卡(包括物理网卡和虚拟网卡)。可以简写为nmcli d

%~9R]QOE3W3{QJ7)SRP8N7P.png

在NM里,有2个维度:连接(connection)和设备(device),这是多对一的关系。想给某个网卡配ip,首先NM要能纳管这个网卡。设备里存在的网卡(即nmcli d可以看到的),就是NM纳管的。接着,可以为一个设备配置多个连接(即nmcli c可以看到的),每个连接可以理解为一个ifcfg配置文件。同一时刻,一个设备只能有一个连接活跃。可以通过nmcli c up切换连接。

connection有2种状态:

活跃(带颜色字体):表示当前该connection生效

非活跃(正常字体):表示当前该connection不生效

device有4种常见状态:

connected:已被NM纳管,并且当前有活跃的connection

disconnected:已被NM纳管,但是当前没有活跃的connection

unmanaged:未被NM纳管

unavailable:不可用,NM无法纳管,通常出现于网卡link为down的时候(比如ip link set ensXX down)

2.5、nmcli常用命令一览

2.5.5、查看ip

查看ip(类似于ifconfig、ip addr)

# nmcli

XRQ`~@W}LLQGQO36WRX21J1.png

2.5.6、创建connection,配置静态ip

创建connection,配置静态ip(等同于配置ifcfg,其中BOOTPROTO=none,并ifup启动)

例如:虚拟机关机,添加一块网卡,网卡设备名ens38

系统启动后执行nmcli d和nmcli c查看

3955W@K{GPBJB0`HGHHUIJY.png

7K][RNO2R2%3%)_M_ONT5}6.png

创建connection

# nmcli c add type ethernet con-name ens38  ifname ens38 ipv4.addr 192.168.1.200/24 ipv4.gateway 192.168.1.254 ipv4.method manual

Connection 'ens38' (2b3170a0-576d-4c98-94ea-0146a39173dd) successfully added.

查看创建的conntection

BL~KISCRFE3X_SK]@G`VU56.png

发现该connection是非活跃的

执行ifup启用

H`)YT]Y[WOTO3EQ6XB@GZQ6.png 查看网卡ens38的配置文件及配置文件内容

# ls /etc/sysconfig/network-scripts/

ifcfg-ens33  ifcfg-ens38

}IQ1Q{5EP@H2TH}Y2JL%WLC.png

# cat /etc/sysconfig/network-scripts/ifcfg-ens38

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=none

IPADDR=192.168.1.200

PREFIX=24

GATEWAY=192.168.1.254

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=ens38

UUID=2b3170a0-576d-4c98-94ea-0146a39173dd

DEVICE=ens38

ONBOOT=yes

AE4YMEX]BJE`N[V9B5X}X~O.png

2.5.7、修改connection的ip地址

1、修改ip(非交互式)

# nmcli c modify ens38 ipv4.addr 192.168.1.201/24 ipv4.dns 114.114.114.114

# nmcli c up ens38

Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)

HHG2H3C${K@Y$T51M~`CL%G.png

查看ip 

# ifconfig ens38

[3)J)U_QSNO@NYTEHK7U3E7.png

2、修改ip(交互式)

# nmcli c edit ens38

nmcli> goto ipv4.addresses 

nmcli ipv4.addresses> change

edit 'addresses' value: 192.168.1.202/24

Do you also want to set 'ipv4.method' to 'manual'? [yes]: yes

nmcli ipv4.addresses> back

nmcli ipv4> save

nmcli ipv4> activate

nmcli ipv4> quit

[3KSO_ZL5E9TKEA4EQ_745K.png

2.5.8、创建connection,配置动态ip

创建connection,配置动态ip(等同于配置ifcfg,其中BOOTPROTO=dhcp,并ifup启动)

例如:把前面创建的ens38连接删除

# nmcli c delete cefb5b3b-210e-45d6-b62d-c75501c68bb7

注:nmcli c delete cefb5b3b-210e-45d6-b62d-c75501c68bb7是连接ens38的uuid

XR8F)@~}HNSV{__2(5Y51FD.png

执行nmcli c和nmcli d

BGZ_R9PB{(EOAF)92_3GGKK.png

给网卡配置动态地址

# nmcli c add type ethernet con-name ens38 ifname ens38 ipv4.method auto 

Connection 'ens38' (fa46f0ae-d4cd-442c-b630-82918323827f) successfully added.

J1)~0I_ZK3Q8LM8R~FP}`(D.png

# ifup ens38

Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)

执行nmcli或ifconfig或ip a查看ip地址(略)

执行nmcli c和nmcli d

BGZ_R9PB{(EOAF)92_3GGKK.png

# cat /etc/sysconfig/network-scripts/ifcfg-ens38 

R80GEIF~2G[K7_A(~7_M$NN.png

2.5.9、停止connection

停止connection(相当于ifdown)

# nmcli c down ens38

Connection 'ens38' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/12)

FM%BIE)Q9RN2S{9YYFNXC_8.png

执行nmcli c和nmcli d

ED]~V0JGZ@3E]74P_{7~B03.png

2.5.10、启用connection

启用connection(相当于ifup)

J_SML2J]1[M[RM]02$MJMS1.png

# nmcli c up ens38

执行nmcli c和nmcli d

%6%FM[~Y8`MBW$A_I]Z6WIM.png

2.5.11、删除connection

删除connection(类似于ifdown并删除ifcfg)

# nmcli c delete ens38

Connection 'ens38' (fa46f0ae-d4cd-442c-b630-82918323827f) successfully deleted.

2)]Y[XW5SKA41ZFR6JFXCOV.png

2.5.12、查看connection

查看connection列表

# nmcli c show

4%R)`E0O5@JEYM94LBK3721.png

2.5.13、查看connection详细信息

# nmcli c show ens33

NVM{_O$U]2J1EN8J_XGGJTU.png

2.5.14、重载所有ifcfg或route到connection

重载所有ifcfg或route到connection(不会立即生效)

# nmcli c reload

_{NVEHA}907)[U__]V`}MLR.png

2.5.15、重载指定ifcfg或route到connection

重载指定ifcfg或route到connection(不会立即生效)

#nmcli c load /etc/sysconfig/network-scripts/ifcfg-ensXX

~HVG@${K`349)INZ0V_THUS.png

2.5.16、立即生效connection

立即生效connection,有4种方法

# nmcli c up ensXX

# nmcli d reapply ensXX

# nmcli d connect ensXX

# systemctl restart NetworkManager

UPAP@)I{[UM3O_[HG4N23KO.png

2.5.17、查看device

查看device列表

# nmcli d

MW]ADW3GXE`OQ]XM$7E}F82.png

2.5.18、查看所有device详细信息

# nmcli d show

HI`FXJE9R_BF]R7J9M@}UG4.png

2.5.19、查看指定device的详细信息

# nmcli d show ensXX

~1LKN)64{3{AA6NR{%U6GO9.png

2.5.20、激活网卡

# nmcli d connect ensXX

20`_I50[DQJ_DAIHNQ7U1}8.png

2.5.21、关闭无线网络

关闭无线网络(NM默认启用无线网络)

# nmcli r all off

3AB($O46DXGB)P0JO3E9]VB.png

2.5.22、查看NM纳管状态

# nmcli n

enabled

E~I30O1ZR$U~_AI5BQTO}PH.png

2.5.23、开启NM纳管

# nmcli n on

6CDW~_YRU48]9C1DAEVK6RQ.png

2.5.24、关闭NM纳管

关闭NM纳管(谨慎执行)

# nmcli n off

}[K~UD14CX]_FOXDL0JPZZ8.png

2.5.25监听事件

# nmcli m

P3FGDMHS]C8(})6`[$HEL4M.png

2.5.26、检测NM是否在线可用

# nm-online

I_`MADNFBHOHO$8NY17IBGC.png

注:本文提及的ifcfg均指代/etc/sysconfig/network-scripts/ifcfg-ensXX及/etc/sysconfig/network-scripts/route-ensXX

2.6、nmcli connection重点

2.6.27、nmcli c show

)E5XKOOQSA$2T8A]OX)F]WE.png

▪ 第一列是connection名字,简称con-name(注意con-name不是网卡名)

▪ 第二列是connection的UUID

▪ 第三列是connection的类型

▪ 最后一列才是网卡名(标准说法叫device名),可通过nmcil d查看device

对connection做操作时需要指定标识,标识可以是con-name、UUID、如果存在ifcfg文件则也可以用ifcfg的完整路径,即/etc/sysconfig/network-scripts/ifcfg-ensXX

例如:

# nmcli c show ens33

# nmcli c show dabe8052-ae4f-41f0-b1d4-370a76e87202

# nmcli c show /etc/sysconfig/network-scripts/ifcfg-ens33

2.6.28、nmcli c的con-name

con-name同时对应ifcfg的文件名以及文件内容中的NAME=,该参数表示连接(connection)的名字,无需和网卡名相同,可以为一个设备(device)创建多个连接,但同一时刻只能有一个连接生效。当有多个连接时候,nmcli c delete删除当前连接,就会自动选择同一个设备的其他连接来顶替生效。可以通过nmcli c up来将指定连接切换生效。

注意:通过nmcli c modify修改con-name,只会对应修改ifcfg文件中的NAME,而不会更改ifcfg文件名。

2.6.29、nmcli c的ipv4.method

对应ifcfg文件内容的BOOTPROTO,ipv4.method默认为auto,对应为BOOTPROTO=dhcp,这种时候如果指定ip,就可能导致网卡同时有dhcp分配的ip和静态ip。设置为manual表示BOOTPROTO=none,即只有静态ip。

例如:创建一个连接(connection)

#  nmcli c add type ethernet con-name ens38-test ifname ens38 ipv4.addresses '192.168.1.100/24,192.168.1.101/32' ipv4.routes '10.0.0.0/8 192.168.1.10,192.168.0.0/16 192.168.1.11' ipv4.gateway 192.168.1.254 ipv4.dns '8.8.8.8,4.4.4.4' ipv4.method manual

@}2OJFX_WJ~J]D@ALQETYMW.png

注解:

▪ type ethernet:创建连接时候必须指定类型,类型有很多,可以通过nmcli c add type -h看到,这里指定为ethernet。

▪ con-name ensXX ifname ensXX:第一个ensXX表示连接(connection)的名字,这个名字可以任意定义,无需和网卡名相同;第二个ensXX表示网卡名,这个ethX必须是在nmcli d里能看到的。

▪ ipv4.addresses '192.168.1.100/24,192.168.1.101/32':配置2个ip地址,分别为192.168.1.100/24和192.168.1.101/32

▪ ipv4.gateway 192.168.1.254:网关为192.168.1.254

▪ ipv4.dns '8.8.8.8,4.4.4.4':dns为8.8.8.8和4.4.4.4

▪ ipv4.method manual:配置静态IP

对应的ifcfg和dns就是

# cat /etc/sysconfig/network-scripts/ifcfg-ens38-test 

0D5VJ(PC{$RKIS82F{S{78M.png

# /etc/resolv.conf

HEY{UI[8H(RX)003I58S[SK.png

此时,通过nmcli c应该可以看到增加了一条连接

注意:如果这是为ensXX创建的第一个连接,则自动生效;如果此时已有连接存在,则该连接不会自动生效,可以执行nmcli c up ensXX-test来切换生效

2.7、nmcli device重点

2.7.30、nmcli d connect ensXX

由NM对指定网卡进行管理,同时刷新该网卡对应的活跃connection(如果之前有修改过connection配置);如果有connection但是都处于非活跃状态,则自动选择一个connection并将其活跃;如果没有connection,则自动生成一个并将其活跃。

例如:执行nmcli c delete 连接名,将ens38网卡的所有connection删除,然后执行nmcli d查看网卡设备

IEV(073$E(S0)B)$T1T5KH8.png

执行nmcli d connect ens38

7B[T5EX)L63Z6267KRKJ_NL.png

2.7.31nmcli d disconnect ethX

让NM暂时不管理指定网卡,此操作不会变更实际网卡的link状态,只会使对应的connection变成非活跃。若重启系统则又会自动connect。另外,如果手工将该网卡的connection全部删掉,该网卡状态也会自动变为disconnected。

N%6EVEI1]J7UDOGV03DYCBH.png

2.7.32、nmcli d reapply ensXX

专门用于刷新connection,前提是网卡的device处于connected状态,否则会报错。

例如:通过配置文件(ifcfg)修改网卡ens38的ip地址,可以通过执行nmcli d reapply ens38刷新该connection,使修改生效。

2.7.33、nmcli d set ensXX autoconnect yes|no managed yes|no

可以设置是否自动连接和是否自动管理,但经测试只能用于当前开机状态, 如果这2个参数都设置为no,然后重启系统,又会自动恢复成connected和managed yes的状态。所以该命令用途不大。

注意事项:如果managed设置为no,那么nmcli c reload会读取配置文件,但是不会立即生效,接着如果执行nmcli c up ens38X,就会立即生效,同时managed自动变为yes。

重启系统自动恢复成connected和managed yes的状态,这种逻辑并不实用也不够合理,据redhat的回复,这么设计是因为目前没有一个有效的手段来证明“我是我”,比如当网卡重新拔插到其他插槽时候,网卡名有很大可能性会发生变化,因此无法确定关机前设置的是对应开机后的哪个网卡,目前暂无办法解决。

2.8、 3种网络配置方法

在讲3种配置方法前,需要先明白ifcfg和NM connection的关联:虽然network.service被废弃了,但是redhat为了兼容传统的ifcfg,通过NM进行网络配置时候,会自动将connection同步到ifcfg配置文件中。也可以通过nmcli c reload或者nmcli c load /etc/sysconfig/network-scripts/ifcfg-ensXX的方式来让NM读取ifcfg配置文件到connection中。因此ifcfg和connection是一对一的关系,另外上面有提到,connection和device是多对一的关系。

在rhel8上,有3种方法进行网络配置

1. 手工配置ifcfg,通过NM来生效

2. 通过NM自带工具配ip,比如nmcli

3. 手工配置ifcfg,通过传统network.service来生效

2.8.34、方法一:手工配置ifcfg,使用nmcli来生效新的网络配置

建议:推荐使用上述第1种网络配置方法(手工配置ifcfg,通过NM生效),因为这样既兼容了传统的ifcfg配置,又能熟悉nmcli。

例如:假设网卡标识为ens38

cat > /etc/sysconfig/network-scripts/ifcfg-ens38 << EOF

NAME=ens38

DEVICE=ens38

ONBOOT=yes

BOOTPROTO=none

TYPE=Ethernet

IPADDR=192.168.1.150

NETMASK=255.255.255.0

GATEWAY=192.168.1.254

DNS1=114.114.114.114

EOF

使用nmcli重新加载网络配置

# nmcli c reload

# nmcli c up ens38   # 如果之前没有ens38的connection,则上一步reload后就已经自动生效了

这么做有2个好处:

 按官方建议使用NM而不是network.service

 当还不太熟悉nmcli命令时候,这样最稳妥

2.8.35、方法二:RHEL8和CentOS8完全使用nmcli来管理网络

参考前面讲解的2.5节nmcli常用命令一览

2.8.36、方法三:安装network.service服务

可以通过yum install network-scripts来安装传统的network.service,不过redhat说了,在下一个RHEL的大版本里将彻底废除,因此不建议使用network.service。

CentOS8和RHEL8上一定要习惯使用nmcli来管理网络,network.service在未来会被正式废除,没有学习的必要了。

2.9、提示

1. nmcli命令支持tab补全,但是需要yum install bash-completion

2. 如果希望NM不要纳管网卡,只有一个办法最彻底最靠谱,就是自己写ifcfg,内容加上NM_CONTROLLED=no,这样该device的状态就会始终保持unmanaged。nmcli c up、nmcli c reload、nmcil c load都不会对其起任何作用。

3. NM只能对link状态为up的网卡进行操作,如果手动ip link set ethX down,那么NM就无法对该网卡做任何操作(即使nmcli d connect也没有用)。

4. 可以通过yum install network-scripts来安装传统的network.service,不过redhat说了,在下一个rhel的大版本里将彻底废除,因此不建议使用network.service。

5. 手工创建新的ifcfg或者在ifcfg里修改ip等配置,NM不会自动读取,需要手工执行nmcli c reload或者nmcli c load /etc/sysconfig/network-scripts/ifcfg-ethX也可以重启NetworkManager服务。这一点可能和其他系统的NM行为不太一样,但这种做法实则更适合服务器。

6. 不手工配置ifcfg,使用默认的dhcp情况下,网卡的增减是不会自动生成ifcfg,此时nmcli c看到的con-name将类似'System ethX'或者'Wired connection 1'。

7. NetworkManager支持3种获取dhcp的方式:dhclient、dhcpcd、internal,当/etc/NetworkManager/NetworkManager.conf配置文件中的[main]部分没配置dhcp=时候,默认使用internal(rhel7/centos7默认是dhclient)。internal是NM内部实现的dhcp客户端。

8. NM默认会从dhcp里获取dns信息,并修改/etc/resolv.conf,如果不想让NM管理/etc/resolv.conf,则只需在/etc/NetworkManager/NetworkManager.conf里的[main]里增加dns=none即可。

9. 更多NetworkManager参数详见man NetworkManager.conf

10. nmtui示意图:

 ]IWTIH@E1I2IIH1S79AKP$X.png

11. cockpit示意图:

87QF]FN7NT7L6])_AK7}I4O.png

2.10、如何在 CentOS 8 中安装 Cockpit Web 控制台

Linux Cockpit 是一个基于 Web 界面的应用,它提供了对系统的图形化管理。

Cockpit Web控制台使您可以执行多种管理任务,包括:

管理服务

管理用户帐号

管理和监视系统服务

配置网络接口和防火墙

查看系统日志

管理虚拟机

创建诊断报告

设置内核转储配置

配置SELinux

更新软件

管理系统订阅

Cockpit Web控制台使用与终端相同的系统API,并且在终端中执行的任务会迅速反映在Web控制台中。此外,您可以直接在Web控制台中或通过终端配置设置。

在CentOS 8中安装Cockpit Web Console

1.使用CentOS 8最小安装时,默认情况下不会安装Cockpit,您可以使用以下命令将其安装在系统上,该命令将以所需的依赖项安装Cockpit。

# yum install -y cockpit

HHR]ATL5%GB@{IU$DPVZFAW.png

2.接下来,启用并启动cockpit.socket服务,以通过Web控制台连接到系统,并使用以下命令验证该服务并运行cockpit进程。

# systemctl start cockpit.socket

# systemctl enable cockpit.socket

# systemctl status cockpit.socket

~~1LCTKTL5PGK6FL%$NBC6K.png

注:设置开机自启动同时开启服务一条命令就可以搞定

# systemctl enable --now cockpit.socket

P_P6G[2F5VY10C4N%0R~H%3.png

3.如果您正在系统上运行firewalld,则需要打开防火墙中的Cockpit端口9090或关闭防火墙。

# firewall-cmd --add-service=cockpit --permanent

# firewall-cmd --reload

_T6%(`@R_RORJBV[X%RGN46.png

4.在网络浏览器中,通过以下URL打开Cockpit网络控制台:

在浏览器中输入IP地址+端口号(127.0.0.1:9090)

注:如果您使用的是自签名证书,则会在浏览器上收到警告,只需验证证书并接受安全例外,即可继续进行登录。

5.在Web控制台登录屏幕中,输入系统用户名和密码。

如果用户帐户具有sudo特权,则可以执行管理任务,例如在Web控制台中安装软件,配置系统或配置SELinux。

95_P47QFMSD2{DIO_`OKW2K.png

6.成功进行身份验证后(例如使用root账号和密码认证),将打开Cockpit Web控制台界面。

87QF]FN7NT7L6])_AK7}I4O.png

就这样。 Cockpit是一个易于使用的Web控制台,可让您在CentOS 8服务器上执行管理任务。

3、Centos 8 软件管理

3.1、Centos 8软件仓库

在Centos 8中把软件源分成了两部分:一个是BaseOS,一个是AppStream

在Centos 8中,统一的ISO自动加载BaseOS和AppStream安装源存储库。已经存在于光盘链接中,只不过要分别去配置.repo文件

7}@9`@H}`}Z3_43_1~RGP8F.png

BaseOS 存储库 - BaseOS 存储库以传统RPM包的形式提供底层核心OS内容

AppStream 存储库 - Application Stream 存储库提供您可能希望在给定用户空间中运行的所有应用程序,简单理解就是诸多第三方的应用。

3.2、DNF包管理工具介绍

Centos 8中默认使用的软件管理工具由原版本的yum换成了dnf,而centos 8默认提供的yum命令仅为dnf的软链接。 

6KCXJ4F`[0H[28(91C424SG.png

注:CentOS 8附带的yum包管理器版本是v4.0.9,该版本现在使用DNF (Dandified YUM)技术作为后端。

DNF代表Dandified YUM,是基于RPM的Linux发行版的软件包管理器。它用于在Fedora / RHEL / CentOS操作系统中安装,更新和删除软件包。 它是Fedora 22,CentOS8和RHEL8的默认软件包管理器。 DNF是YUM的下一代版本,并打算在基于RPM的系统中替代YUM。 DNF功能强大且具有健壮的特征。DNF使维护软件包组变得容易,并且能够自动解决依赖性问题。

DNF的出现,是为了解决Yum系统的性能瓶颈,优化内存使用,依赖关系解析,执行速度等,yum已被DNF取代。这不仅仅是解决yum中待解决的问题。 此外,DNF添加了许多功能,以实现基于RPM的系统中软件包的无缝管理。DNF是用Python3写的。

CentOS 8使用了dnf 作为安装程序。虽然改变了软件包的安装方式,但是 dnf 还是能兼容使用 yum 的配置文件的和命令的使用方法的。估计在下一个版本中yum就会被取消了。

用dnf --help,查看你能够使用的命令参数,跟yum差不多。

3.3、DNF的优势

DNF 和 YUM 均是 rpm 软件包管理工具,但是 DFN 替代 YUM 的说法由来已久,因为 YUM 包管理工具有一些问题长期得不到解决。这些问题包括性能低下、内存占用高以及依赖包解决方案不佳等。而 DNF 在依赖包解决方案中采用了由 SUSE 开发的”libsolv”库,用以提升依赖包解析性能。

1) DNF代码比Yum要简单,大约有29000行代码,而Yum代码有59000多行。

2) 执行速度更快,比Yum消耗更少内存。

3) 依赖包解析速度比yum更快。

3.4、DNF配置文件的位置

主配置文件: /etc/dnf/dnf.conf

仓库文件: /etc/yum.repos.d/

日志:/var/log/dnf.rpm.log,/var/log/dnf.log

Cache Files: /var/cache/dnf

例如:在dnf.conf文件中加入keepcache=true参数,就可以将从远程仓库安装的包文件缓存到本地的/var/cache/dnf目录下。

3.5、centos8 dnf源

dnf仓库文件所在目录依旧为/etc/yum.repos.d/下,在yum.repos.d目录下添加 .repo 文件。在原本的yum.repos.d目录下默认有cetnos官方源。

DMJ63PHM6CP2JHPGKPT384F.png

由于CentOS 8主要使用AppStream, BaseOS, Extras三个仓库,这三个仓库可以理解为同一个软件源中保存了不同种类软件的不同部分。

3.5.2、配置centos 8本地仓库源

CentOS 8更改了软件包的安装程序,取消了 yum 的配置方法,改而使用了dnf 作为安装程序。虽然改变了软件包的安装方式,但是 dnf 还是能兼容使用 yum 的配置文件的和命令的使用方法的。

Centos 8本地仓库源存在于光盘链接中,只不过要分别去配置.repo文件,dnf源配置方法和yum源一样。

7}@9`@H}`}Z3_43_1~RGP8F.png

先备份centos8提供的官方源

J3XBNVFYMGT%OYY49X)2M5K.png

挂载centos8的光盘到/mnt目录下

T7V{3$Y25QBR[]ERH`47@_P.png

在yum.repos.d目录下创建.repo为结尾的仓库文件,内容如下:

L@@T0AI5_OS[S1V]7[$79D0.png

使用dnf列出系统中的仓库,该命令列出了默认情况下启用的所有仓库

X7S2S75TK[7O7~KT7UUCPHY.png

测试

# dnf -y install wget   //安装wget软件包

本地dnf源配置完毕。

3.5.3、配置internet源(如阿里源、epel源)

首先将上面配置的本地源禁用

# sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/centos8.repo

访问https://mirrors.aliyun.com/或https://developer.aliyun.com/mirror/地址

(@C)9B(P(~OMO4DQ5LSFQ)5.png

点击上图用红线框起来的链接,如centos

{$I~2H)QFFKTM4Z927@[~`5.png

按照上图给出的方法下载仓库文件即可

509B{{5P7OPLI)2EXRK$G{4.png

LZGI`{@$1%G`2L(]ZBC9IRD.png

阿里源配置完成。

3.6、如何使用DNF

DNF命令的语法类似于YUM,你会发现它们之间有很多相似之处。

# man dnf

dnf [options] <command> [<args>...]

遇到不懂的地方运行 man dnf 查看dnf的man帮助就可以了。

3.6.4、DNF常用命令

检查并升级可用软件包:dnf update

删除缓存:dnf clean all

列出可用的软件源:dnf repolist

搜索软件:dnf search $package

安装软件:dnf install $package

升级软件包:dnf update $package

删除软件包:dnf remove $package

查看更多命令:dnf help

接下来,我们将学习DNF 包管理器的操作命令,使用这些命令,你可以方便有效的管理您系统中的 RPM 软件包。

3.6.5、查看 DNF 包管理器版本

该命令用于查看安装在您系统中的 DNF 包管理器的版本

3BCQC6]XIB6I67R[}6$L5PO.png

3.6.6、使用dnf列出系统中的仓库

该命令列出了默认情况下启用的所有仓库,并提供了列出其他信息的选项。 在通过dnf命令添加-v选项时,可提供了更详细的信息。

此外,它不会强制同步过期的元数据,并且你可以强制同步使用--refresh开关启用的所有存储库。

3.6.6.2、列出系统上启用的软件库

运行以下命令列出系统上启用的仓库

[root@localhost ~]# dnf repolist

8{F}BOED{S`UW(]5GR0JGJA.png

或者,你可以运行以下命令以列出系统上已启用的仓库

# dnf repolist enabled或# dnf repolist --enabled

)8C61B%`0I)Y{U~$8]EBOZN.png

3.6.6.3、列出系统上禁用的仓库

运行以下命令以列出系统上禁用的仓库

# dnf repolist disabled或# dnf repolist --disabled

(%GKTH0AT8CU4GN~)%@R%FH.png

3.6.6.4、列出系统上的所有仓库(已启用和已禁用)

运行以下命令以列出系统上的所有仓库(已启用和已禁用)

# dnf repolist all或# dnf repolist --all

_KQY]WDWL$ID`7C}%3D@CNE.png

3.6.6.5、列出每个仓库的详细信息

要查看有关每个存储库的详细信息,使用dnf命令添加-v开关。 它显示repo-id,repo-name等。

# dnf repolist -v

$DMAFYTE~]J4NIE0OM6]%5G.png

3.6.7、列出RPM包

3.6.7.6、列出所有 RPM 包

# dnf list

dnf list命令用于列出系统上的所有来自软件库的可用软件包和所有已经安装在系统上的软件包。

# dnf list或# dnf list all

[@X%_3PY(SYXZ]V@@3TGP@J.png

3.6.7.7、出所有安装了的 RPM 包

dnf list installed该命令用于列出所有安装了的 RPM 包

(BCNM{N(@EAT(ZJIS]ATL_0.png

OA0L9%MY%5IMQ1LUC68[P3F.png

3.6.7.8、列出所有可供安装的 RPM 包

该命令用于列出来自所有可用软件库的可供安装的软件包(不包括已安装的软件包)

# dnf list available

3.6.7.9、查看是否安装了给定的软件包

以下命令查看是否安装了给定的软件包。如果是,它将显示类似下面的输出。否则,它将显示以下错误消息“Error: No matching packages to list”

0CWB)X%3KNI8U@`PBQ_O~$9.png

3.6.7.10、列出可用于已安装软件包的升级包

# dnf list upgrades

X7P]9N)NI_8%[FHH6P@3ONA.png

3.6.8、搜索软件库中的 RPM 包

dnf search命令使你可以根据给定的字符串(关键字)查找可用软件包的列表。当你不知道要安装的确切软件包名称时,你可以用该命令来搜索软件包。你需要在”search”参数后面键入软件的部分名称来搜索,关键字作为不区分大小写的子字符串进行匹配。默认情况下,列出与所有请求的关键字匹配的软件包。在软件包名称和摘要中搜索关键字。

WY82~ME5I)OG5K$]BBWIIQJ.png

3.6.9、查找某一文件的提供者

dnf provides命令将查找提供给定文件的软件包。如果您想找出哪个软件包(已安装或未安装)提供了此文件,这将很有用。

例如,我们将查找”/bin/bash”这个文件的提供者

Z}}6AD7SRFKPY$I)LP_VE@1.png

例如,我们都知道sar的使用,而我们大多数人都不知道哪个软件包提供了此文件。使用以下命令找到它。

S[5J31QD283[7}A`KX}U54G.png

3.6.10、查看软件包详情

当你想在安装某一个软件包之前查看它的详细信息时,这条命令可以帮到你

以下命令用于列出有关已安装和可用软件包的描述和摘要信息。它显示了有关软件包的各种信息,例如名称,Arch,版本,发行版,大小,存储库名称等。

# dnf info httpd

P@J8AZ2VXO)PVDA[Y8W8(A0.png

3.6.11、安装软件包

使用该命令,系统将会自动安装对应的软件及其所需的所有依赖,默认情况下,每次DNF要求您确认安装软件包时,都添加-y选项以避免确认。

3.6.11.11、安装单个软件包:

# dnf install gcc

3.6.11.12、安装多个软件包:

# dnf install vsftpd ftp

3.6.11.13、在dnf中添加-y选项以安装软件包,无需确认直接安装:

# dnf -y install nginx

3.6.11.14、安装rpm包文件:

# dnf install /path/to/file.rpm

3.6.11.15、从url安装rpm包:

# dnf install https://xyz.com/file.rpm

3.6.11.16、要安装提供/usr/bin/[xxx]文件的软件包,请运行以下命令。 

例如,sar应用程序是“ sysstat”软件包的一部分,但我们大多数人都不知道其父软件包的名称。 但是,很难找到其父程序包名称,但是此命令允许您在不知道父程序包名称的情况下进行安装。

# dnf install /usr/bin/sar

3.6.12、删除软件包

3.6.12.17、删除系统中指定的软件包

例如删除一个名为nginx的软件包

# dnf remove nginx -y

3.6.12.18、删除无用孤立的软件包

当没有软件再依赖它们时,某一些用于解决特定软件依赖的软件包将会变得没有存在的意义,该命令就是用来自动移除这些没用的孤立软件包。

# dnf autoremove

3.6.13、升级软件包

将所有已安装的软件包更新为最新的可用版本

# dnf upgrade或# dnf update

3.6.13.20、将给定的一个或多个软件包更新为最新的可用版本

# dnf upgrade [Package_Name]

例如,我们将用命令升级”systemd”这一软件包

# dnf upgrade system或# dnf update system

3.6.13.21、检查系统软件包的更新

该命令用于检查系统中所有软件包的更新

# dnf check-update

或者,使用下面的命令检查可用更新。

# dnf list updates

以下命令检查对指定软件包的更新

# dnf check-update [Package_Name]

# dnf check-update sudo

3.6.14、清除系统上的缓存数据

默认情况下,当你执行各种dnf操作时,dnf会将包和存储库元数据之类的数据缓存到“/var/cache/dnf”目录中。该缓存在一段时间内会占用大量空间。这将允许您删除所有缓存的数据。

# dnf clean all

3.6.15、获取有关某条命令的使用帮助

该命令用于获取有关某条命令的使用帮助(包括可用于该命令的参数和该命令的用途说明)(本例中我们将使用命令获取有关命令”clean”的使用帮助)

# dnf help clean

3.6.16、查看所有的 DNF 命令及其用途

命令用于列出所有的 DNF 命令及其用途

# dnf help

FSLV_BC~M8T1[XA`IEO4YXN.png

3.6.17、查看 DNF 命令的执行历史

你可以使用该命令来查看你系统上 DNF 命令的执行历史。通过这个手段你可以知道在自你使用 DNF 开始有什么软件被安装和卸载。

3.6.17.22、显示dnf历史记录

dnf history命令允许用户查看在过去的事务中发生了什么操作

# dnf history

NZD2HP6~V@HVQN[ZQP4E~@2.png

注:此报错不影响使用,只需要yum module enable perl:5.26即可

8LC60`%JOW}VD~1S)D_SXQ1.png

或者,你可以使用以下命令获得相同的结果。

# dnf history list

3.6.17.23、显示有关历史的详细信息

显示有关历史的详细信息。如果未指定,则显示最近一次历史信息

# dnf history info

YAG(0%750}SP)@0[FJLD)QS.png

运行以下命令以查看有关给定ID的历史详细信息。

# dnf history info 3

)9Q6{[YNTT{4(H@W$_H8PMK.png

3.6.18、查看所有的软件包组

该命令用于列出所有的软件包组

# dnf grouplist

JKTPAQ8_%~GTBY6)2ODZVNU.png

3.6.19、安装一个软件包组

该命令用于安装一个软件包组

# dnf groupinstall 'Development Tools'

3.6.20、升级一个软件包组中的软件包

该命令用于升级一个软件包组中的软件包

# dnf groupupdate 'Development Tools'

3.6.21、删除一个软件包组

该命令用于删除一个软件包组

# dnf groupremove 'Development Tools'

3.7、模块化管理功能

3.7.22、利用AppStream管理软件

随着linux系统越来越庞大,软件包也越来越多,越来越复杂。CentOS 8 跟随上游RHEL8中引入了一种新的结构来管理软件内容,所有的软件内容被划分成了两个repository:BaseOS 和AppStream

BaseOS:类似于原来的软件仓库,主要提供了OS系统的基础组件,提供的是RPM形式的包,因为都是RPM包形式所以它支持与之前版本兼容。

AppStream:这是一个特殊类型的仓库,它提供的是用户空间的应用,运行时语言等,它提供了两种形式的内容:第一种是RPM形式的独立的软件包,第二种是Module形式的包集合,Module是代表着一组通常一起安装的RPM包,一个典型的module包含应用,依赖库,文档库,帮助组件等,即将相关的包组合在一起。

为什么要引入AppStream?

CentOS 8引入了新的仓库 AppStream,这个仓库通过流式更新可以为 CentOS 带来新的版本,不会像以前那样,软件包过于陈旧。但是这样带来一个问题,如何保证用户的迁移成本,比如一些程序运行时,主版本对于大部分人来说不能轻易更新。解决问题的方法是引入模块化。模块化让软件包仓库可以同时分发相同软件的不同版本,一个模块代表一个版本,需要指定版本安装或启用对应模块即可,一个模块可以包含多个软件包以解决依赖性问题。

当你在 CentOS 8 添加新的没有模块的软件仓库,比如 NodeJS 的官方仓库,然后准备运行dnf install nodejs安装的时候,却发现软件版本没有变,并没有使用第三方软件仓库的包,这是因为模块拥有更高的优先级,而第三方软件仓库没有引入模块化或者是模块没有被启用,解决方法是禁用掉当前启用的模块或者启用新的模块。

请注意,并非AppStream软件仓库中的所有包都分布在一个模块中。

3.7.23、模块化基础知识

AppStream这个软件仓库有一个不同的管理软件的方法,将它分为几个子类:

Packages:作为常规包处理(即RPM形式的独立的软件包)。

Module:是代表着一组通常一起安装的RPM包,一个典型的module包含应用,依赖库,文档库,帮助组件等。

Module stream:代表一组组件的不同版本,模块通常有多个流,这通常代表软件的主要版本。它可以并行使用,但在给定系统上只能安装每个模块的一个流。

Module profiles:代表为了某个功能需要一起安装的包列表,module stream中可以包含多个profiles,可以根据profiles 选择性地安装模块。例如,数据库模块可以作为客户端,服务端或同时安装。

GRO{[LYCDE02{5FL%~DB)ZV.png

3.7.24、dnf module命令来管理模块

你可以通过dnf module命令来管理模块,常用的用法:

注:可通过man dnf查看dnf的帮助手册中关于module的的命令用法

3.7.24.24、模块列表:dnf module list

输出模块列表,显示每个模块关联的流、版本和可用安装配置文件。模块流旁边的 [d] 表示安装命名模块时使用的默认流。

# dnf module list

执行该命令后会有如下的输出信息

]}5IL]MYQ`_HF[(%)1@CG3J.png

要显示有关特定模块的信息,请提供名称作为上一个命令的参数:

# dnf module list nginx    //列出模块名为nginx的列表

[3A$8`I@A7~P)GIZTBZTC`5.png

# dnf module list mysql    //列出模块名为mysql的列表

HUHD713M67WO)5VG0SN@JMU.png

可以看到四列输出,分别是:Name、Stream、Profiles、Summary

Name代表模块(module)名,stream代表模块流即软件版本,模块流旁边的 [d] 表示安装命名模块时使用的默认流。Profile代表为了某个功能需要一起安装的包列表。比如mysql模块,包含了一个8.0版本的流,其下有client、server两种安装组合,其中,server组合后,有一个“[d]”,那是缺省的安装组合。如果你安装的时候没有指定组合,则会安装这个server组合。下面两条命令的最终效果是一样的:

# dnf module install mysql:8.0/server

# dnf module install mysql:8.0

module stream中可以包含多个profiles,可以根据profiles 选择性地安装模块。例如,mysql模块可以作为客户端,服务端或同时安装。

3.7.24.25、查看模块:dnf module info <module_spec>…

要获取有关该模块的一些详细信息,请运行以下命令:

# dnf module info mysql  //获取mysql模块的详细信息

WMUOO$~GHH0S}H(HA7[N]AA.pngZ24X8RR5S)$LS1OE_HSIZMK.png

关于 module_spec 取值,不同的命令有些许不同,先列出模块列表,可以看到四列输出,分别是:Name、Stream、Profiles、Summary,除了 Summary 之外其他三列都有用。

例如:显示nginx模块流1.14的详细信息

# dnf module info nginx:1.14

如要显示更加详细的信息可以视同-v选项

3.7.24.26、安装模块:dnf module install <module_spec>…

安装模块配置文件命令用法是:

# dnf [options] module install <module_spec>...

安装模块配置文件,包括其软件包。如果没有提供配置文件,则安装所有默认配置文件。相应地启用模块流。

首先获取模块stream,例如:

# dnf module list mariadb

Y[_[P15)SXO8V4~63G`77BB.png

你可以看到模块mariadb有一个stream,要安装MongoDB的server,请运行:

# dnf -y module install mariadb:10.3/server

因为mariadb模块的stream 10.3和profiles server是默认的,所以也可以执行下面的命令

# dnf module install mariadb

安装后,你可以使用rpm命令确认包版本:

# rpm -qa | grep mariadb

如果要安装的是mariadb模块的配置文件client,就需要指定profiles

# dnf module install mariadb:10.3/client

3.7.24.27、卸载模块:dnf module remove <module_spec>…

删除已安装的模块配置文件,包括其软件包。如果没有提供配置文件,则会删除所有已安装的配置文件。

# dnf module remove mariadb

3.7.24.28、启用模块:dnf module enable <module_spec>…

这将启用module stream并使包RPM中的流RPM可用。

# dnf module enable <module_spec>

注:模块不需要启用也可以直接安装

3.7.24.29、禁用模块:dnf module disable <module-name>…

要禁用模块并使所有相关module streams不可用,请使用:

$ dnf module disable <module-name>

3.7.24.30、重置模块状态

你还可以重置模块状态,以便不再启用或禁用它:

# dnf module reset <module_spec>



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章