[RHEL8] 指定rpm軟件包的更高版本模塊流

背景:掛載RHEL ISO使用kickstart安裝操作系統,安裝包未指定安裝perl,但是安裝完可以查到其版本,且安裝的是ISO中多個版本中的最低版本。

原因:(1)為什么沒有裝perl,perl -v可以看到版本?

因為安裝perl其它包而安裝了perl-libs等

如何找到是哪個包依賴了perl-libs等?

- 針對包組,查看@core里裝哪些包?dnf groupinfo core -> 排除是這里面默認裝的

- 針對指定包,查看其它指定包依賴于哪些包,例如perl-xxx

查看依賴關系的命令

dnf repoquery –requires <pkg name> 查看指定包依賴于哪些包

dnf repoquery –whatrequires <pkg name> 查看哪些包依賴于指定包

dnf repoquery --help | grep require
? ? ? ? ? ? ? ? ? ? ?[--whatrequires REQ] [--whatrecommends REQ]
? ? ? ? ? ? ? ? ? ? ?[--conflicts | --depends | --enhances | --provides | --recommends | --requires | --requires-pre | --suggests | --supplements]
? --whatdepends REQ ? ? shows results that requires, suggests, supplements,
? --whatrequires REQ ? ?shows results that requires package provides and files
? --recursive ? ? ? ? ? used with --whatrequires, and --requires --resolve,
? --requires ? ? ? ? ? ?Display capabilities that the package depends on.
? --requires-pre ? ? ? ?If the package is not installed display capabilities

? --recursive ? ? ? ? ? used with --whatrequires, and --requires --resolve,
? ? ? ? ? ? ? ? ? ? ? ? query packages recursively.

[root@xxx?~]# dnf repoquery --requires perl-DBD-SQLite-1.58-2.module+el8.6.0+13408+461b4ab5.x86_64
Updating Subscription Management repositories.
Unable to read consumer identityThis system is not registered with an entitlement server. You can use subscription-manager to register.Last metadata expiration check: 2:02:32 ago on Sat 15 Mar 2025 01:18:35 PM CST.
libc.so.6(GLIBC_2.14)(64bit)
libperl.so.5.32()(64bit)
libpthread.so.0()(64bit)
libpthread.so.0(GLIBC_2.2.5)(64bit)
libsqlite3.so.0()(64bit)
perl(:MODULE_COMPAT_5.32.1)
perl(:VERSION) >= 5.6.0
perl(DBD::SQLite)
perl(DBD::SQLite::VirtualTable)
perl(DBI) >= 1.57
perl(DynaLoader)
perl(Exporter)
perl(Scalar::Util)
perl(Tie::Hash)
perl(base)
perl(constant)
perl(locale)
perl(strict)
perl(warnings)
rtld(GNU_HASH)

(2)為什么安裝的是最低版本

RHEL 8 使用 模塊化(modular)倉庫,某些軟件包(如 perl-libs)屬于 應用流(AppStream,系統會默認啟用某個流(stream)。Kickstart 默認安裝的軟件包可能受 默認模塊流 影響,而非安裝最高版本。

解決方案:

指定好repo,例如將iso掛載到/mnt,編輯os.repo

# cat /etc/yum.repos.d/os.repo
...[rhel-baseos]
name=RHEL8
baseurl=file:///mnt/BaseOS
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release[rhel-appstream]
name=RHEL8
baseurl=file:///mnt/AppStream
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

執行?dnf clean all

查看 dnf repolist

# dnf repolist
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered with an entitlement server. You can use subscription-manager to register.
repo id???????????????????????????????????????????????????????? repo name
rhel-appstream????????????????????????????????????????????????? RHEL8
rhel-baseos???????????????????????????????????????????????????? RHEL8

重置并啟用指定模塊的最新流

dnf module reset -y perl?
dnf module enable -y perl:5.32
dnf distro-sync -y

說明:
dnf module reset 清除默認模塊流,防止使用默認的舊版本。
dnf module enable 指定最新版本的模塊流。
dnf distro-sync 確保所有包同步到最高版本。

=================================================

附1:

RHEL 8 本地 RPM 升級(包括模塊化包)完整步驟

適用于 從本地目錄升級 RPM ,確保 模塊化包(AppStream)使用較新版本

步驟 1:準備本地升級包

將所有 需要升級的 RPM 放在一個目錄,例如:

mkdir -p /var/update-packages

cp /path/to/rpms/*.rpm /var/update-packages/

步驟 2:創建本地倉庫

RHEL 8 需要 createrepo_c 來索引 RPM 包:

dnf install -y createrepo_c

cd /var/update-packages/

createrepo_c ?.

如果包含 模塊化包(AppStream,還需要 處理 module metadata

# cd /var/update-packages/

# repo2module -s stable /var/update-packages/

# modifyrepo_c --mdtype=modules modules.yaml repodata/

步驟 3:配置本地 repo

在 /etc/yum.repos.d/local.repo 添加以下內容:

[local-updates]

name=Local Update Repo

baseurl=file:///var/update-packages/

enabled=1

gpgcheck=0

然后執行:

dnf clean all

dnf makecache

步驟 4:重置 & 啟用模塊

dnf module reset -y perl python nodejs

dnf module enable -y perl:5.32 python:3.9 nodejs:18

步驟 5:執行升級

dnf upgrade --disablerepo=* --enablerepo=local-updates -y

步驟 6(可選):檢查結果

dnf list installed | grep perl

dnf module list | grep '[e]'

=================================================

附2:chatGPT提問記錄

Q: 哪些軟件涉及模塊流?

RHEL 8+ 里,涉及模塊流的軟件通常是:

  1. 編程語言
    • perl(5.26, 5.30, 5.32)
    • python(3.6, 3.8, 3.9, 3.11)
    • nodejs(10, 12, 14, 16, 18)
    • ruby(2.5, 2.6, 2.7, 3.0)
    • php(7.2, 7.3, 7.4, 8.0)
    • gcc-toolset(9, 10, 11, 12)
  2. 數據庫
    • postgresql(9.6, 10, 12, 13, 14)
    • mariadb(10.3, 10.5)
  3. Web 服務器 & 代理
    • httpd(Apache HTTP Server)
    • nginx
    • varnish
  4. 消息隊列
    • redis
    • rabbitmq
  5. 其他開發工具
    • llvm-toolset
    • subversion

Q: 如何查看系統里有哪些模塊流?

dnf module list --all

  • [d] 代表默認啟用的模塊流(default)
  • [e] 代表已啟用的模塊流(enabled)
# dnf module list
Updating Subscription Management repositories.
Unable to read consumer identityThis system is not registered with an entitlement server. You can use subscription-manager to register.@modulefailsafe
Name                Stream      Profiles         Summary
perl                5.26 [e]    common, minimal  Practical Extraction and Report Language
perl-DBD-SQLite     1.58 [e]    common           SQLite DBI driver
perl-DBI            1.641 [e]   common           A database access API for Perl
perl-IO-Socket-SSL  2.066 [e]   common           Perl library for transparent TLS
perl-libwww-perl    6.34 [e]    common           A Perl interface to the World-Wide Web
x86_64              stable [e]  everything       <auto-generated module summary>Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

說明:

Name 列:模塊名稱,如 perl、perl-DBI 等。
Stream 列:已啟用的模塊流(版本),例如:
Profiles 列:模塊的 可選配置,如 common, minimal。
Summary 列:簡要描述。

perl 5.26 [e]
[e] 代表 已啟用(enabled),表示當前 dnf 只能從這個流 安裝 perl 相關包。
perl 5.26 已啟用,所以無法直接安裝 perl 5.32,需要先 dnf module reset perl,然后 dnf module enable perl:5.32。

@modulefailsafe
說明 dnf 處于“failsafe”模式,因為你的系統沒有 Red Hat 訂閱(RHSM 未注冊)。
這意味著 dnf 只能使用 本地已啟用的模塊流,不會嘗試訪問外部倉庫。

Q: 為什么環境裝了python3.12 卻不能在dnf module list里查到

  • AppStream 里有兩種類型的軟件包:
    1. 模塊化軟件包(module-based,可以使用 dnf module 管理,例如 perl, nodejs, python:3.9。
    2. 非模塊化軟件包(普通 RPM 包),可以直接用 dnf install 安裝,例如 python3.12。
  • ?python3.12 可能是 AppStream 里的普通 RPM 包,而不是模塊流,所以 dnf module list 里不會列出來。RHEL 8 默認的 Python 模塊流最高是 python:3.9

Q: 查看某個rpm包來自哪個倉庫

dnf repoquery --info python3.12

Name???????? : python3.12

Version????? : 3.12.1

Release????? : 4.el8

Architecture : x86_64

Size???????? : 29 k

Source?????? : python3.12-3.12.1-4.el8.src.rpm

Repository?? : rhel-appstream

Summary????? : Version 3.12 of the Python interpreter

URL????????? : https://www.python.org/

License????? : Python

Description? : Python 3.12

……

dnf module list python

[root@testVM1 ~]# dnf module list | grep python

libselinux-python??? 2.8???????????? common?????????????????????????????????? Python 2 bindings for libselinux??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

python27???????????? 2.7 [d]???????? common [d]?????????????????????????????? Python programming language, version 2.7??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

python36???????????? 3.6 [d]???????? build, common [d]??????????????????????? Python programming language, version 3.6??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

python38???????????? 3.8 [d]???????? build, common [d]??????????????????????? Python programming language, version 3.8??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

python39???????????? 3.9 [d]???????? build, common [d]??????????????????????? Python programming language, version 3.9??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

[root@testVM1 ~]#

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/77490.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/77490.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/77490.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring 事務管理核心機制與傳播行為應用

Spring 事務詳解 一、Spring 事務簡介 Spring 事務管理基于 AOP&#xff08;面向切面編程&#xff09;實現&#xff0c;通過 聲明式事務&#xff08;注解或 XML 配置&#xff09;統一管理數據庫操作&#xff0c;確保數據一致性。核心目標&#xff1a;保證多個數據庫操作的原子…

JavaScript解密實戰指南:從基礎到進階技巧

JavaScript加密技術廣泛應用于數據保護、反爬蟲和代碼混淆&#xff0c;但掌握解密方法能幫助開發者突破技術壁壘。本文結合爬蟲實戰與安全分析場景&#xff0c;系統梳理JS解密的核心方法與工具。 一、基礎解密方法 1. Base64解碼 適用于簡單編碼場景&#xff0c;如Cookie加密…

WEMOS LOLIN32

ESP32是結合Wi-Fi和藍牙的32位元系統單晶片&#xff08;SoC&#xff09;與外接快閃記憶體的模組。許多廠商生產採用ESP32模組的控制板&#xff0c;最基本的ESP控制板包含ESP32模組、直流電壓轉換器和USB序列通訊介面IC。一款名為WEMOS LOLIN32的ESP32控制板具備3.7V鋰電池插座。…

俄羅斯方塊-簡單開發版

一、需求分析 實現了一個經典的俄羅斯方塊小游戲&#xff0c;主要滿足以下需求&#xff1a; 1.圖形界面 使用 pygame 庫創建一個可視化的游戲窗口&#xff0c;展示游戲的各種元素&#xff0c;如游戲區域、方塊、分數等信息。 2.游戲邏輯 實現方塊的生成、移動、旋轉、下落和鎖…

使用安全繼電器的急停電路設計

使用安全繼電器的急停電路設計 一&#xff0c;急停回路的設計1&#xff0c;如何將急停接到線路當中&#xff1f;2&#xff0c;急停開關 如何接到安全繼電器中 一&#xff0c;急停回路的設計 急停是每一個設備必不可少的部分&#xff0c;因為關乎安全&#xff0c;所以說所以說他…

【讀書筆記·VLSI電路設計方法解密】問題64:什么是芯片的功耗分析

低功耗設計是一種針對VLSI芯片功耗持續攀升問題的設計策略。隨著工藝尺寸微縮&#xff0c;單顆芯片可集成更多元件&#xff0c;導致功耗相應增長。更嚴峻的是&#xff0c;現代芯片工作頻率較二十年前大幅提升&#xff0c;而功耗與頻率呈正比關系。因此&#xff0c;芯片功耗突破…

在 Debian 10.x 安裝和配置 Samba

1. 更新系統 sudo apt update sudo apt upgrade -y2. 安裝 Samba sudo apt install samba -y3. 配置 Samba 備份默認配置文件 sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak編輯配置文件 sudo nano /etc/samba/smb.conf示例配置&#xff08;共享目錄&#xff09; …

修改PointLIO項目

添加key_frame_info.msg消息 新建.msg文件&#xff0c;內容填寫為&#xff1a; # Cloud Info Header header # cloud messages sensor_msgs/PointCloud2 key_frame_cloud_ori sensor_msgs/PointCloud2 key_frame_cloud_transed sensor_msgs/PointCloud2 key_frame_poses其中k…

關于隔離1

1.隔離的目的&#xff1a; 在隔離電源設計中&#xff0c;輸入與輸出之間沒有直接電氣連接&#xff0c;提供絕緣高阻態&#xff0c;防止電流回路。這意味著輸入與輸出之間呈現為絕緣的高阻態&#xff0c;從而確保了無電流回路的形成。 隔離與可靠保護有關。電隔離是一種電路設…

【java實現+4種變體完整例子】排序算法中【插入排序】的詳細解析,包含基礎實現、常見變體的完整代碼示例,以及各變體的對比表格

以下是插入排序的詳細解析&#xff0c;包含基礎實現、常見變體的完整代碼示例&#xff0c;以及各變體的對比表格&#xff1a; 一、插入排序基礎實現 原理 將元素逐個插入到已排序序列的合適位置&#xff0c;逐步構建有序序列。 代碼示例 public class InsertionSort {void…

清醒思考的藝術

成為穿越暴風雨后的幸存者 系統性錯誤是指系統性的偏離理性&#xff0c;偏離最理想的、合乎邏輯的、理智的思考和行為。 “系統”一詞很重要&#xff0c;因為我們經常錯誤地走向同一方向。 幸存偏誤 幸存偏誤會扭曲概率&#xff0c;系統性的高估了成功概率。一旦混淆選擇標準和…

DSA數據結構與算法 6

查找技術&#xff08;Searching Techniques&#xff09; 查找簡介 在計算機科學中&#xff0c;“查找”指的是在某個集合或序列中尋找特定元素的過程。這個過程可以是成功的&#xff0c;也可以是失敗的&#xff1a; 若目標元素存在于集合中&#xff0c;我們稱之為“查找成功”…

FastAPI:現代高性能Python Web框架的技術解析與實踐指南

一、FastAPI的誕生背景與技術定位 在數字化轉型的浪潮中,API(應用程序接口)作為連接服務與數據的核心樞紐,其性能與開發效率直接影響業務迭代速度。傳統Python框架如Django和Flask雖功能豐富,但在高并發場景下面臨性能瓶頸,且缺乏對異步編程的原生支持。FastAPI應運而生…

VuePress 使用教程:從入門到精通

VuePress 使用教程&#xff1a;從入門到精通 VuePress 是一個以 Vue 驅動的靜態網站生成器&#xff0c;它為技術文檔和技術博客的編寫提供了優雅而高效的解決方案。無論你是個人開發者、團隊負責人還是開源項目維護者&#xff0c;VuePress 都能幫助你輕松地創建和管理你的文檔…

1.Vue自動化工具安裝(Vue-cli)

目錄 1.node.js 安裝&#xff1a; 2 npm 安裝 3 安裝Vue-cli 4總結&#xff1a; 一般情況下&#xff0c;單文件組件&#xff0c;我們運行在 自動化工具vue-CLI中&#xff0c;可以幫我們編譯單文件組件。所以我們在學習時一般需要在系統中先搭建vue-CLI工具 下面就是一些我…

IP數據報

IP數據報組成 IP數據報&#xff08;IP Datagram&#xff09;是網絡中傳輸數據的基本單位。 IP數據報頭部 版本&#xff08;Version&#xff09; 4bit 告訴我們使用的是哪種IP協議。IPv4版本是“4”&#xff0c;IPv6版本是“6”。 頭部長度&#xff08;IHL&#xff0c;Intern…

Leetcode 2158. 每天繪制新區域的數量【Plus題】

1.題目基本信息 1.1.題目描述 有一幅細長的畫&#xff0c;可以用數軸來表示。 給你一個長度為 n 、下標從 0 開始的二維整數數組 paint &#xff0c;其中 paint[i] [starti, endi] 表示在第 i 天你需要繪制 starti 和 endi 之間的區域。 多次繪制同一區域會導致不均勻&…

Git Flow

Git Flow深度解析&#xff1a;企業級分支管理實戰指南 前言 在持續交付時代&#xff0c;分支策略決定團隊協作效率。Git Flow作為經典的分支管理模型&#xff0c;被Apache、Spring等知名項目采用。2023年JetBrains開發者調查報告顯示&#xff0c;Git Flow仍是中大型項目最常用…

[Swift]pod install成功后運行項目報錯問題error: Sandbox: bash(84760) deny(1)

操作&#xff1a; platform :ios, 14.0target ZKMKAPP do# Comment the next line if you dont want to use dynamic frameworksuse_frameworks!# Pods for ZKMKAPPpod Moyaend pod install成功后運行報錯 報錯&#xff1a; error: Sandbox: bash(84760) deny(1) file-writ…

[管理與領導-129]:向上管理-組織架構、股權架構、業務架構、流程架構,看每個人在組織中的位置和重要性

目錄 一、股權架構&#xff1a;反映所有權與控制權 二、組織架構&#xff1a;定義角色與匯報關系 三、業務架構&#xff1a;定義業務單元與價值鏈 四、流程架構&#xff1a;規范業務運作與協作 五、綜合分析&#xff1a;個人在組織中的綜合影響力 六、案例&#xff1a;某…