附註:

在 Oracle Linux 上使用 DNF

簡介

Oracle Linux 提供以 Dandified Yum (DNF) 為基礎的 dnf 公用程式,作為安裝及管理系統套裝程式的從屬端軟體。這些套裝軟體來自 Unbreakable Linux Network (ULN) 或 Oracle Linux yum 伺服器。軟體套裝軟體是使用標準 dnf 指令安裝在系統上,並取決於已啟用適當 ULN 通道訂閱或 yum 儲存區域的系統。安裝或升級套裝軟體時,dnf 會自動處理套裝軟體相依性和需求。

DNF 與傳統的 yum 命令相比,大幅提升功能和效能,並帶來許多新功能,包括模組化內容和更穩定且記錄的 API。

目標

在本教學課程中,您將瞭解如何:

必要條件

部署 Oracle Linux

注意:如果是在您自己的租用戶中執行,請先閱讀 linux-virt-labs GitHub 專案 README.md 並完成先決條件,再部署實驗環境環境。

  1. 在 Luna Desktop 上開啟終端機。

  2. 複製 linux-virt-labs GitHub 專案。

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
  3. 變更至工作目錄。

    cd linux-virt-labs/ol
  4. 安裝必要的集合。

    ansible-galaxy collection install -r requirements.yml
  5. 部署實驗環境環境。

    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 儲存庫

  1. 開啟終端機,並透過 SSH 連線至 ol-node-01 執行處理。

    ssh oracle@<ip_address_of_instance>
  2. 取得已啟用的儲存區域清單。

    dnf repolist

    DNF 會在 /etc/yum.repos.d 目錄中搜尋結尾為 .repo 的檔案。您可以傳送 all 選項來查看已啟用和已停用儲存區域的清單。儲存庫檔案可以定義一或多個儲存庫,並考量 enabled=1 時啟用的儲存庫,並在 enabled=0 時停用。

  3. 啟用儲存區域。

    Oracle Linux 10:

    sudo dnf config-manager --enable ol10_codeready_builder

    Oracle Linux 9:

    sudo dnf config-manager --enable ol9_codeready_builder

    Oracle Linux 8:

    sudo dnf config-manager --enable ol8_codeready_builder
  4. 停用儲存區域。

    Oracle Linux 10:

    sudo dnf config-manager --disable ol10_codeready_builder

    Oracle Linux 9:

    sudo dnf config-manager --disable ol9_codeready_builder

    Oracle Linux 8:

    sudo dnf config-manager --disable ol8_codeready_builder
  5. 安裝儲存區域。

    Oracle Linux 為各種產品提供套裝程式格式的預先建立儲存區域。您可以搜尋這些項目,然後進行安裝並啟用。

    dnf search oracle*release*

    Oracle Linux 10:

    sudo dnf install -y oracle-instantclient-release-el10

    Oracle Linux 9:

    sudo dnf install -y oracle-instantclient-release-el9

    Oracle Linux 8:

    sudo dnf install -y oracle-instantclient-release-el8

    雖然不偏好,您也可以透過下列方式安裝儲存區域:

    1. 直接在 /etc/yum.repos.d 中建立新的 .repo 檔案
    2. 使用 dnf config-manager --add-repo <repo_file>,允許安裝儲存在本機或從 URL 儲存的儲存區域檔案
  6. 移除 DNF 快取。

    為了協助效能,DNF 會快取 /var/cache/dnf 中的資料。有時此快取資料可能會過時,並導致 dnf 命令失敗。若要修正此問題,您可以移除所有快取的項目。

    dnf clean all

    DNF 會在您執行各種命令時自動重新建立此快取。若要針對命令失敗進行疑難排解,可以清除快取,然後重試失敗的命令。

管理套裝軟體和模組

Oracle Linux 10 注意:Oracle Linux 10 並未提供 DNF 模組化 (模組和串流)。您可以從 AppStream 儲存庫安裝標準套裝軟體,但無法像舊版一樣啟用或安裝模組或串流。

在提供的步驟中,若使用 DNF 模組化,則說明僅適用於 Oracle Linux 8 和 Oracle Linux 9。

  1. 從已啟用的儲存區域取得可用的套裝程式清單。

    dnf list

    您可以使用 installedavailable 選項來縮小傳回的輸出,甚至要求特定的套裝程式名稱 (例如 dnf list available git)。

  2. 列出可用的模組。

    dnf module list

    輸出顯示可供系統使用的模組、關聯的串流,以及設定檔,其中:

    • Name:模組名稱
    • Stream:串流版本
    • Profiles:可用的設定檔及其狀態
      • common:適用於生產環境的強化部署,也是預設設定檔
      • development:安裝修改模組所需的套裝程式
      • minimal:安裝提供工作應用程式的最小套裝程式集

    使用輸出結尾的提示,判斷哪些串流與設定檔已啟用已停用已安裝default

    與套裝程式類似,您可以將模組名稱傳遞至 list 選項,以查看該模組的狀態。

  3. 取得套件或模組的相關資訊 。

    dnf info zsh

    在此情況下,zsh 是套裝軟體名稱。您對模組執行相同動作,但新增 module 指令並附加特定模組,例如 dnf module info php。如果您需要特定模組串流的相關資訊,請傳送 --profilemodule:stream 而非模組名稱。

    dnf module info --profile php:8.2
  4. 搜尋可用或已安裝的套裝軟體。

    dnf search php
  5. 搜尋提供特定檔案名稱或指令的套裝軟體。

    provides 指令的別名為 whatprovides,會尋找符合檔案名稱的套裝軟體。若未提供完整路徑,DNF 會將 /usr/sbin/usr/bin 附加至檔案名稱。基於傳統目的,它也會附加 /sbin/bin

    dnf provides sudo
  6. 安裝套裝程式。

    sudo dnf install tmux

    請回答 y 以確認套裝軟體的安裝。透過傳送 -y 選項,避免未來發生此額外步驟。DNF 預設只會安裝來自已啟用儲存區域的套裝程式。不過,您可以透過傳遞 --enablerepo=<repo name> 選項來略過該預設行為。

  7. 重新安裝套件。

    sudo dnf reinstall -y tmux

    此命令基本上會執行 dnf remove,然後執行 dnf install。重要的差異是,使用重新安裝會保留與套裝軟體相關之檔案的任何自訂配置。

  8. 啟用模組。

    從模組安裝套裝軟體之前,必須先加以啟用。

    Oracle Linux 9:

    sudo dnf module -y enable nginx:1.22

    Oracle Linux 8:

    sudo dnf module -y enable nginx
  9. 安裝模組。

    Oracle Linux 9:

    sudo dnf module install -y nginx:1.22

    Oracle Linux 8:

    sudo dnf module install -y nginx:1.14

    安裝套裝軟體之後,執行 sudo dnf module list nginx1.22 串流的 common [d] 設定檔旁邊會顯示一個 [i]

  10. 移除套件或模組。

    sudo dnf remove -y tmux

    同樣地,您可以使用相同的語法來移除模組,方法是將套裝軟體名稱取代為 module:stream/profile

  11. 切換模組。

    切換模組串流會使內容升級或降級至與系統上目前版本不同的版本。它也會處理安裝其他相依性或移除不再需要的套裝軟體。

    sudo dnf module -y switch-to nginx:1.24/common
  12. 停用模組。

    sudo dnf module -y disable nginx

    藉由停用模組,可確保移除已安裝的設定檔,所有相關的模組串流都將無法使用,且模組化 RPMS 並非套裝軟體集的一部分。如果 DNF 偵測到任何衝突,就會拒絕該作業。停用模組的一個原因是,預設儲存區域和 Appstream 中存在較新的套裝程式。

  13. 重設模組。

    此作業會設定模組狀態,使其不再啟用或停用。DNF 會移除所有設定檔,且只有預設設定檔中的套裝程式可以使用。

    sudo dnf module -y reset nginx

安裝安全更新

  1. 列出所有可用的勘誤表。

    dnf updateinfo list

    輸出顯示啟用的儲存區域,後面接著每個更新。DNF 會依 ID 的順序排序可用的勘誤表,並依其類型進一步加以識別。

    • Severity/Sec :優先順序 / 安全修正程式
    • bugfix:錯誤修正
    • enhancement :增強功能

    您可以將 cvesbugfixsecurity 附加至命令,以便將輸出縮小為僅限於該特定的勘誤類型。您也可以傳送 --installed 以取得安裝在主機上的安全修正清單。

  2. 顯示可用的勘誤表摘要。

    dnf updateinfo summary
  3. 取得基於嚴重性的安全性升級清單。

    您可以將嚴重重要協調管制傳送至 --sec-severity 選項。

    dnf updateinfo list --sec-severity=Important

    DNF 可讓您傳送其他選項至 list 命令。您可以使用 --advisory <Advisory ID> 取得特定建議,或使用 --cve <CVD ID 取得特定 CVE。使用 info 命令取代 list,而確切的選項則提供特定建議或 CVE 的詳細資訊。

  4. 將每個套裝軟體更新為最新版本。

    sudo dnf upgrade -y

    您可以使用 -x 選項,加上套裝軟體名稱後面的套裝軟體,選擇性地從升級中排除特定的套裝軟體。雖然 Oracle Linux 建議您套用所有勘誤表,但 upgrade 命令會採用下列選項:

    • --cve:更新單一 CVE ID
    • --advisory:更新單一「建議 ID」
    • --security:更新所有安全性相關勘誤表

    或者,使用者可以執行 sudo dnf upgrade-minimal,只將更新套用至提供錯誤修正、增強功能或修正安全性問題的套裝軟體。

    重要事項:在任何核心更新之後,請務必重新啟動系統。如果您執行無法執行重新啟動的系統,則建議您使用 Oracle Ksplice 來套用核心修補程式。

管理配套群組

DNF 允許安裝、更新或移除套裝軟體群組。這些群組是提供共同用途的相依套裝軟體集合。

  1. 列出可用的群組。

    dnf group list
  2. 取得群組包含的群組清單。

    dnf group info "Server with GUI"

    Server with GUI 會安裝 GNOME 圖形桌面。

  3. 顯示群組包含的個別套裝軟體。

    dnf group info Core
  4. 安裝群組。

    sudo dnf group install "Server with GUI" --assumeno

    --assumeno 選項將自動回答「否」,並略過安裝以節省此教學課程的時間。將此選項保留在指令之外,並以 -y 選項取代,以自動進行安裝。DNF 提供 dnf group updatednf group remove 命令來更新和移除群組。

使用 DNF 歷史記錄功能

DNF 歷史記錄功能會顯示 dnf 命令執行的所有動作。歷史記錄功能允許還原、重做以及倒回特定的 DNF 交易。除了 DNF 歷程記錄之外,套裝軟體安裝、更新與移除也會記錄在 /var/log/dnf.log 檔案中。

  1. 列出所有 DNF 交易。

    dnf history

    您可以執行 dnf history info <transaction ID>,取得與其中一個交易相關的資訊。

  2. 倒回特定的交易。

    rollback 選項將還原指定 <transaction ID> 之後的所有交易。如果您只想回轉單一交易,請改用 undo

    sudo dnf history rollback <transaction ID>

    DNF history rollback 命令會增加交易 ID,並將倒回記錄為唯一的交易。

  3. 重複特定的交易。

    您可以 redo 特定交易,並重複其每個步驟。

    sudo dnf history redo <transaction ID>

自動修正

手動執行 dnf upgrade 的替代方法是使用「DNF 自動工具」。此工具提供升級、下載及使用 systemd 計時器自動安裝套裝軟體的通知。

  1. 安裝所需的套裝軟體並啟用計時器。

    sudo dnf install dnf-automatic -y
    sudo systemctl enable --now dnf-automatic.timer
  2. 檢視預設的 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