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>



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