附註:
- 本教學課程適用於 Oracle 提供的免費實驗室環境。
- 其使用 Oracle Cloud Infrastructure 證明資料、租用戶以及區間的範例值。完成實驗室時,請將這些值替代為雲端環境特定的值。
在 Oracle Linux 上使用 DNF
簡介
Oracle Linux 提供以 Dandified Yum (DNF) 為基礎的 dnf 公用程式,作為安裝及管理系統套裝程式的從屬端軟體。這些套裝軟體來自 Unbreakable Linux Network (ULN) 或 Oracle Linux yum 伺服器。軟體套裝軟體是使用標準 dnf 指令安裝在系統上,並取決於已啟用適當 ULN 通道訂閱或 yum 儲存區域的系統。安裝或升級套裝軟體時,dnf 會自動處理套裝軟體相依性和需求。
DNF 與傳統的 yum 命令相比,大幅提升功能和效能,並帶來許多新功能,包括模組化內容和更穩定且記錄的 API。
目標
在本教學課程中,您將瞭解如何:
- 使用 DNF 儲存庫
- 管理套裝軟體和模組
- 安裝安全更新
- 運用套裝程式群組
- 使用 DNF 歷史紀錄功能
- 自動升級修補程式
必要條件
-
最低單一 Oracle Linux 系統
-
每個系統都應安裝並設定 Oracle Linux,其中包含:
- 具有 sudo 存取權的非 root 使用者帳戶
- 存取 Internet。
部署 Oracle Linux
注意:如果是在您自己的租用戶中執行,請先閱讀 linux-virt-labs GitHub 專案 README.md 並完成先決條件,再部署實驗環境環境。
-
在 Luna Desktop 上開啟終端機。
-
複製
linux-virt-labsGitHub 專案。git clone https://github.com/oracle-devrel/linux-virt-labs.git -
變更至工作目錄。
cd linux-virt-labs/ol -
安裝必要的集合。
ansible-galaxy collection install -r requirements.yml -
部署實驗環境環境。
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6"自由實驗環境環境需要額外的變數
local_python_interpreter,此變數會設定在 localhost 上執行的播放ansible_python_interpreter。由於環境會安裝 Oracle Cloud Infrastructure SDK for Python 的 RPM 套件 (位於 python3.6 模組底下),因此需要此變數。預設部署資源配置使用 AMD CPU 和 Oracle Linux 8。若要使用 Intel CPU 或 Oracle Linux 9 或 10,請新增
-e instance_shape="VM.Standard3.Flex"或設定-e os_version="10"、-e os_version="9"或-e os_version="8"至建置命令。重要事項: 請等待播放手冊順利執行,然後到達暫停工作。在手冊的這個階段,Oracle Linux 的安裝已完成,實例已就緒。記下先前的播放,此播放會列印其部署節點的公用和專用 IP 位址,以及執行實驗室時所需的任何其他部署資訊。
使用 DNF 儲存庫
-
開啟終端機,並透過 SSH 連線至 ol-node-01 執行處理。
ssh oracle@<ip_address_of_instance> -
取得已啟用的儲存區域清單。
dnf repolistDNF 會在
/etc/yum.repos.d目錄中搜尋結尾為.repo的檔案。您可以傳送all選項來查看已啟用和已停用儲存區域的清單。儲存庫檔案可以定義一或多個儲存庫,並考量enabled=1時啟用的儲存庫,並在enabled=0時停用。 -
啟用儲存區域。
Oracle Linux 10:
sudo dnf config-manager --enable ol10_codeready_builderOracle Linux 9:
sudo dnf config-manager --enable ol9_codeready_builderOracle Linux 8:
sudo dnf config-manager --enable ol8_codeready_builder -
停用儲存區域。
Oracle Linux 10:
sudo dnf config-manager --disable ol10_codeready_builderOracle Linux 9:
sudo dnf config-manager --disable ol9_codeready_builderOracle Linux 8:
sudo dnf config-manager --disable ol8_codeready_builder -
安裝儲存區域。
Oracle Linux 為各種產品提供套裝程式格式的預先建立儲存區域。您可以搜尋這些項目,然後進行安裝並啟用。
dnf search oracle*release*Oracle Linux 10:
sudo dnf install -y oracle-instantclient-release-el10Oracle Linux 9:
sudo dnf install -y oracle-instantclient-release-el9Oracle Linux 8:
sudo dnf install -y oracle-instantclient-release-el8雖然不偏好,您也可以透過下列方式安裝儲存區域:
- 直接在
/etc/yum.repos.d中建立新的.repo檔案 - 使用
dnf config-manager --add-repo <repo_file>,允許安裝儲存在本機或從 URL 儲存的儲存區域檔案
- 直接在
-
移除 DNF 快取。
為了協助效能,DNF 會快取
/var/cache/dnf中的資料。有時此快取資料可能會過時,並導致dnf命令失敗。若要修正此問題,您可以移除所有快取的項目。dnf clean allDNF 會在您執行各種命令時自動重新建立此快取。若要針對命令失敗進行疑難排解,可以清除快取,然後重試失敗的命令。
管理套裝軟體和模組
Oracle Linux 10 注意:Oracle Linux 10 並未提供 DNF 模組化 (模組和串流)。您可以從 AppStream 儲存庫安裝標準套裝軟體,但無法像舊版一樣啟用或安裝模組或串流。
在提供的步驟中,若使用 DNF 模組化,則說明僅適用於 Oracle Linux 8 和 Oracle Linux 9。
-
從已啟用的儲存區域取得可用的套裝程式清單。
dnf list您可以使用
installed或available選項來縮小傳回的輸出,甚至要求特定的套裝程式名稱 (例如dnf list available git)。 -
列出可用的模組。
dnf module list輸出顯示可供系統使用的模組、關聯的串流,以及設定檔,其中:
Name:模組名稱Stream:串流版本Profiles:可用的設定檔及其狀態common:適用於生產環境的強化部署,也是預設設定檔development:安裝修改模組所需的套裝程式minimal:安裝提供工作應用程式的最小套裝程式集
使用輸出結尾的提示,判斷哪些串流與設定檔已啟用、已停用、已安裝或 default 。
與套裝程式類似,您可以將模組名稱傳遞至
list選項,以查看該模組的狀態。 -
取得套件或模組的相關資訊 。
dnf info zsh在此情況下,
zsh是套裝軟體名稱。您對模組執行相同動作,但新增module指令並附加特定模組,例如dnf module info php。如果您需要特定模組串流的相關資訊,請傳送--profile與 module:stream 而非模組名稱。dnf module info --profile php:8.2 -
搜尋可用或已安裝的套裝軟體。
dnf search php -
搜尋提供特定檔案名稱或指令的套裝軟體。
provides指令的別名為whatprovides,會尋找符合檔案名稱的套裝軟體。若未提供完整路徑,DNF 會將/usr/sbin和/usr/bin附加至檔案名稱。基於傳統目的,它也會附加/sbin和/bin。dnf provides sudo -
安裝套裝程式。
sudo dnf install tmux請回答
y以確認套裝軟體的安裝。透過傳送-y選項,避免未來發生此額外步驟。DNF 預設只會安裝來自已啟用儲存區域的套裝程式。不過,您可以透過傳遞--enablerepo=<repo name>選項來略過該預設行為。 -
重新安裝套件。
sudo dnf reinstall -y tmux此命令基本上會執行
dnf remove,然後執行dnf install。重要的差異是,使用重新安裝會保留與套裝軟體相關之檔案的任何自訂配置。 -
啟用模組。
從模組安裝套裝軟體之前,必須先加以啟用。
Oracle Linux 9:
sudo dnf module -y enable nginx:1.22Oracle Linux 8:
sudo dnf module -y enable nginx -
安裝模組。
Oracle Linux 9:
sudo dnf module install -y nginx:1.22Oracle Linux 8:
sudo dnf module install -y nginx:1.14安裝套裝軟體之後,執行
sudo dnf module list nginx的 1.22 串流的 common [d] 設定檔旁邊會顯示一個[i]。 -
移除套件或模組。
sudo dnf remove -y tmux同樣地,您可以使用相同的語法來移除模組,方法是將套裝軟體名稱取代為 module:stream/profile 。
-
切換模組。
切換模組串流會使內容升級或降級至與系統上目前版本不同的版本。它也會處理安裝其他相依性或移除不再需要的套裝軟體。
sudo dnf module -y switch-to nginx:1.24/common -
停用模組。
sudo dnf module -y disable nginx藉由停用模組,可確保移除已安裝的設定檔,所有相關的模組串流都將無法使用,且模組化 RPMS 並非套裝軟體集的一部分。如果 DNF 偵測到任何衝突,就會拒絕該作業。停用模組的一個原因是,預設儲存區域和 Appstream 中存在較新的套裝程式。
-
重設模組。
此作業會設定模組狀態,使其不再啟用或停用。DNF 會移除所有設定檔,且只有預設設定檔中的套裝程式可以使用。
sudo dnf module -y reset nginx
安裝安全更新
-
列出所有可用的勘誤表。
dnf updateinfo list輸出顯示啟用的儲存區域,後面接著每個更新。DNF 會依 ID 的順序排序可用的勘誤表,並依其類型進一步加以識別。
Severity/Sec:優先順序 / 安全修正程式bugfix:錯誤修正enhancement:增強功能
您可以將 cves 、 bugfix 或 security 附加至命令,以便將輸出縮小為僅限於該特定的勘誤類型。您也可以傳送
--installed以取得安裝在主機上的安全修正清單。 -
顯示可用的勘誤表摘要。
dnf updateinfo summary -
取得基於嚴重性的安全性升級清單。
您可以將嚴重、重要、協調管制或低傳送至
--sec-severity選項。dnf updateinfo list --sec-severity=ImportantDNF 可讓您傳送其他選項至
list命令。您可以使用--advisory <Advisory ID>取得特定建議,或使用--cve <CVD ID取得特定 CVE。使用info命令取代list,而確切的選項則提供特定建議或 CVE 的詳細資訊。 -
將每個套裝軟體更新為最新版本。
sudo dnf upgrade -y您可以使用
-x選項,加上套裝軟體名稱後面的套裝軟體,選擇性地從升級中排除特定的套裝軟體。雖然 Oracle Linux 建議您套用所有勘誤表,但upgrade命令會採用下列選項:--cve:更新單一 CVE ID--advisory:更新單一「建議 ID」--security:更新所有安全性相關勘誤表
或者,使用者可以執行
sudo dnf upgrade-minimal,只將更新套用至提供錯誤修正、增強功能或修正安全性問題的套裝軟體。重要事項:在任何核心更新之後,請務必重新啟動系統。如果您執行無法執行重新啟動的系統,則建議您使用 Oracle Ksplice 來套用核心修補程式。
管理配套群組
DNF 允許安裝、更新或移除套裝軟體群組。這些群組是提供共同用途的相依套裝軟體集合。
-
列出可用的群組。
dnf group list -
取得群組包含的群組清單。
dnf group info "Server with GUI"Server with GUI 會安裝 GNOME 圖形桌面。
-
顯示群組包含的個別套裝軟體。
dnf group info Core -
安裝群組。
sudo dnf group install "Server with GUI" --assumeno--assumeno選項將自動回答「否」,並略過安裝以節省此教學課程的時間。將此選項保留在指令之外,並以-y選項取代,以自動進行安裝。DNF 提供dnf group update和dnf group remove命令來更新和移除群組。
使用 DNF 歷史記錄功能
DNF 歷史記錄功能會顯示 dnf 命令執行的所有動作。歷史記錄功能允許還原、重做以及倒回特定的 DNF 交易。除了 DNF 歷程記錄之外,套裝軟體安裝、更新與移除也會記錄在 /var/log/dnf.log 檔案中。
-
列出所有 DNF 交易。
dnf history您可以執行
dnf history info <transaction ID>,取得與其中一個交易相關的資訊。 -
倒回特定的交易。
rollback選項將還原指定<transaction ID>之後的所有交易。如果您只想回轉單一交易,請改用undo。sudo dnf history rollback <transaction ID>DNF
history rollback命令會增加交易 ID,並將倒回記錄為唯一的交易。 -
重複特定的交易。
您可以
redo特定交易,並重複其每個步驟。sudo dnf history redo <transaction ID>
自動修正
手動執行 dnf upgrade 的替代方法是使用「DNF 自動工具」。此工具提供升級、下載及使用 systemd 計時器自動安裝套裝軟體的通知。
-
安裝所需的套裝軟體並啟用計時器。
sudo dnf install dnf-automatic -ysudo systemctl enable --now dnf-automatic.timer -
檢視預設的 upgrade_type 組態。
「DNF 自動工具」的組態檔是
/etc/dnf/automatic.conf。依預設,自動升級會套用至所有可用的升級。您可以將upgrade_type參數變更為security,只使用安全性升級。grep upgrade_type /etc/dnf/automatic.conf
接下來的步驟
本教學課程將教導您如何管理 Oracle Linux 系統上的套裝軟體,並確保您隨時掌握最新的安全性修正。因此,請更新您的系統,然後查看「相關連結」區段,以取得更多 Oracle Linux 詳細資訊和訓練。
相關連結
其他學習資源
在 docs.oracle.com/learn 上探索其他實驗室,或在 Oracle Learning YouTube 頻道上存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。