<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      代碼改變世界

      解決 CentOS 7 官方 yum 倉庫無法使用的最佳實踐

      2024-07-17 19:37  曾左  閱讀(13973)  評論(0)    收藏  舉報

      一、背景介紹

      2024 年 7 月 1 日,在編譯基于 CentOS 7.6.1810 鏡像的 Dockerfile 過程中,執行 yum install 指令時,遇到了錯誤:Could not resolve host: mirrorlist.centos.org; Unknown error。

      特別指出: 編譯 Dockerfile 并執行其中的 yum install 指令時,所使用的是正在編譯的鏡像中的 yum 倉庫,非編譯機上的。

      二、原因分析

      2024 年 7 月 1 日 官方停止維護 CentOS 7。該系統內置的 yum.repo 所使用的域名 mirrorlist.centos.org 已不再提供 A 記錄。如下所示:

      root@93b1bbdc2e60:/home/# dig mirrorlist.centos.org +trace
      
      ; <<>> DiG 9.16.1-Ubuntu <<>> mirrorlist.centos.org +trace
      ;; global options: +cmd
      .                       0       IN      NS      c.root-servers.net.
      .                       0       IN      NS      i.root-servers.net.
      
      ## 省略:根和頂級域名服務器的相關解析
      
      centos.org.             3600    IN      NS      ns1.centos.org.
      centos.org.             3600    IN      NS      ns2.centos.org.
      gdtpongmpok61u9lvnipqor8lra9l4t0.org. 3600 IN NSEC3 1 1 0 332539EE7F95C32A GDTREA8KMJ2RNEQEN4M2OGJ26KFSUKJ7 NS SOA RRSIG DNSKEY NSEC3PARAM
      qeunu2n7u9cespp9113b9aougs8bsje9.org. 3600 IN NSEC3 1 1 0 332539EE7F95C32A QEUO6270NIE81LB4QN59HMMDKF8L01MV NS DS RRSIG
      gdtpongmpok61u9lvnipqor8lra9l4t0.org. 3600 IN RRSIG NSEC3 8 2 3600 20240730022208 20240709012208 36783 org. SJRvhqxd780LYLBKJvh+HK1XHVN4Jm3FReq030r3Aewe0Sus1xpbl7L9 xOJOudja1lZoBdgfVXFBQT4Ev9M6XSG6c9qYJvDT9Q9U8PQyG+KDGGTy zTNgK1QFgFM7Sq1DPiqeUc5Jc/mmD7H26TV2qrCem4Fz8/TYYlK9CirT VKU=
      qeunu2n7u9cespp9113b9aougs8bsje9.org. 3600 IN RRSIG NSEC3 8 2 3600 20240722152150 20240701142150 36783 org. wq21TFtc5dCtXghEDYN+dJLnZUiJzzcoVLIWQ2aA5FCIV/pHKfUPg7Mn jXjOGMK5Xx8lu7gBjdKvu7yQaVrlEJXC0wo8QqzlrB/yL6EcBhypBfNk b+vH7RCfrfOsIqwMKCv82wF91/S4/3uVijxeD2F+nEjvPLJheRQcxQR1 r/g=
      ;; Received 619 bytes from 199.249.120.1#53(b2.org.afilias-nst.org) in 179 ms
      
      centos.org.             3600    IN      SOA     ns1.centos.org. hostmaster.centos.org. 2024070401 28800 7200 2400000 3600
      ;; Received 129 bytes from 38.145.60.38#53(ns2.centos.org) in 269 ms
      

      dig 命令詳解,可參閱我的文章:DNS 簡介及 dig 命令詳解 。

      三、解決方案

      1. 最佳方案 - 更新及啟用 CentOS-Vault.repo 存檔倉庫

      (1)背景介紹

      CentOS-Vault.repo 是 CentOS 發行版中自帶的一個 YUM 軟件倉庫。它定義了一系列舊版本的軟件包和更新,這些軟件包和更新不再由 CentOS 項目的主要倉庫維護。當 CentOS 發布新的版本(例如,從 CentOS 7.4 升級到 CentOS 7.5)時,舊版本的軟件包通常會被移動到 Vault 倉庫中。vault.centos.org 是 CentOS-Vault.repo 關聯的倉庫站點,主要功能包括:

      1. 保存舊版本的 CentOS 系統包:當 CentOS 發布新的主版本或更新時,舊版本的 ISO 映像文件、軟件包和源代碼會被移動到這個存檔站點。

      2. 保存歷史軟件包:用戶可以瀏覽和下載舊版本 CentOS 中的軟件包,這對于運行舊軟件或維護遺留系統可能非常有用。

      因此,啟用 CentOS-Vault.repo 并將倉庫站點配置為 vault.centos.org 是 CentOS 內置的處理預案及最佳方案。

      (2)配置操作

      在 CentOS-Vault.repo 添加如下配置,以啟用 CentOS 7 的存檔倉庫,添加配置如下:

      # 文件路徑 /etc/yum.repos.d/CentOS-Vault.repo
      # Vault
      [Vault-base]
      name=Vault - CentOS-$releasever - Base
      baseurl=http://vault.centos.org/centos/$releasever/os/$basearch/
      gpgcheck=1
      gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-$releasever
      
      [Vault-updates]
      name=Vault - CentOS-$releasever - Updates
      baseurl=http://vault.centos.org/centos/$releasever/updates/$basearch/
      gpgcheck=1
      gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-$releasever
      
      [Vault-extras]
      name=Vault - CentOS-$releasever - Extras
      baseurl=http://vault.centos.org/centos/$releasever/extras/$basearch/
      gpgcheck=1
      gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-$releasever
      

      使用 enabled=0 禁用 CentOS-Base.repo 中的所有倉庫,修改后配置如下:

      [base]
      name=CentOS-$releasever - Base
      mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
      #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
      gpgcheck=1
      enabled=0
      gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
      
      # 下同
      

      特別說明: CentOS 7 各子版本中,$releasever 值都為 7。具體原因請看:releaseve 變量詳解。

      清除 YUM 緩存,如有需要可再生成新的緩存

      yum clean all ; yum makecache
      

      (3)驗證方法

      首先,使用 yum repolist 驗證可用倉庫,結果如下:

      [root@93b1bbdc2e60 /]# yum repolist
      Loaded plugins: fastestmirror, ovl
      Loading mirror speeds from cached hostfile
      repo id                                                                  repo name                                                                    status
      !Vault-base/7/x86_64                                                     Vault - CentOS-7 - Base                                                      10,072
      !Vault-extras/7/x86_64                                                   Vault - CentOS-7 - Extras                                                       526
      !Vault-updates/7/x86_64                                                  Vault - CentOS-7 - Updates                                                    6,173
      repolist: 16,771
      

      驗證結果說明:

      (1)repolist: 16,771 表示當前所有已啟用的倉庫中,總共有 16,771 個可用的軟件包,各倉庫的 status 表示其倉庫可用包的數量。

      (2)repo id 添加 !前綴表示該倉庫的元數據已經被成功下載并緩存到本地(執行了yum makecache)。這個標記意味著 YUM 已經有了這個倉庫的所有必要信息,可以進行包的安裝、更新和依賴性解析等操作。

      其次,要求安裝包正常,如執行 yum install lrzsz -y 正常。

      2. 臨時方案一 - 更新 CentOS 倉庫配置

      (1)配置操作

      啟用 *.repo 中的 baseurl,注釋 mirrorlist,將 baseurl 倉庫地址替換為 vault.centos.org 存檔站點。具體操作如下:

      sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/*.repo
      sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/*.repo
      sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/*.repo
      

      清除 YUM 緩存,如有需要可再生成新的緩存

      yum clean all ; yum makecache
      

      (2)驗證方法

      最佳方案-更新及啟用 CentOS-Vault.repo 存檔倉庫 ->(3) 驗證方法 。

      3. 臨時方案二 - 基礎倉庫替換為阿里云倉庫

      將 CentOS 7 基礎倉庫修改為阿里云倉庫,具體操作如下:

      (1)首先,備份 CentOS 7 基礎倉庫配置文件

      cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
      

      (2)然后,下載阿里云倉庫配置文件,并替換系統內置基礎倉庫(CentOS-Base.repo)配置文件

      wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/CentOS-7.repo
      

      (3)清除 YUM 緩存,如有需要可再生成新的緩存

      yum clean all ; yum makecache
      

      (4)驗證方法

      最佳方案-更新及啟用 CentOS-Vault.repo 存檔倉庫 ->(3) 驗證方法 。

      四、背景知識

      1. 簡介 CentOS 7 內置的各類倉庫

      CentOS-Base.repo:這是 CentOS 的基礎倉庫,包含了大部分用戶安裝軟件時需要的包。

      CentOS-CR.repo:CR 倉庫包含了新的 CentOS 點版本發布后,下一個版本在發布前的一些新的更新和改進。

      CentOS-Debuginfo.repo:這個倉庫包含了用于調試的包,一般用戶不會使用到。

      CentOS-fasttrack.repo:FastTrack 倉庫包含了一些新的,可能不完全穩定的包。這些包是為了提供一些新功能而提前發布的。

      CentOS-Media.repo:這個倉庫是用于從 CD 或者 DVD 安裝包的。

      CentOS-Sources.repo:這個倉庫包含了一些軟件的源碼包。

      CentOS-Vault.repo:Vault 倉庫包含了舊的,不再被維護的版本的包。

      默認情況下,僅啟用 CentOS-Base.repo 中的 base、updates 和 extras 倉庫,可以通過 yum repolist 查看

      2. *.repo 文件中各變量說明

      在 repo 文件中,$releasever,$basearch,$infra 是預定義的變量,在解析 repo 文件時被替換為具體的值。以 Base.repo 為例,配置如下:

      [Vault-base]
      name=Vault - CentOS-$releasever - Base
      baseurl=http://vault.centos.org/centos/$releasever/os/$basearch/
      gpgcheck=1
      gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-$releasever
      

      (1)$releasever:代表你的系統版本。

      [root@774ea9a9b006 yum.repos.d]# rpm -q --qf "%{VERSION}" $(rpm -q --whatprovides redhat-release)
      7
      

      (2)$basearch:代表你的系統架構。

      [root@774ea9a9b006 yum.repos.d]# arch
      x86_64
      # 或
      [root@774ea9a9b006 yum.repos.d]# uname -i
      x86_64
      

      (3)$infra:代表你的系統基礎架構,如虛擬機或物理機。這個變量通常在 /etc/yum/vars/infra 文件中定義,但并非所有系統都有這個文件。你可以通過查看這個文件獲取,如果文件不存在,那么 $infra 可能會被替換為默認值或空字符串。

      [root@774ea9a9b006 yum.repos.d]# cat /etc/yum/vars/infra
      container
      

      3. $releaseve 變量詳解

      $releasever 是 CentOS 中的一個變量,它的值來自 /etc/yum.conf 文件中的 distroverpkg 參數。默認情況下,distroverpkg 的值是 centos-release,這是一個包含有關 CentOS 發行版的信息的包。

      當你運行 yum 命令時,yum 會查找 distroverpkg 包并從中提取發行版號。在 CentOS 7 中,centos-release 包的版本號是 7.x.y,但 yum 只提取主版本號,也就是 7,因此 $releasever 的值是 7。

      這是因為 CentOS 的軟件源是按主版本號組織的,所有 7.x.y 的版本都使用相同的軟件源,所以 $releasever 只需要主版本號。

      4. *.repo 配置文件中的參數 mirrorlist 與 baseurl 的區別

      在 CentOS 的 YUM 倉庫配置文件中,mirrorlistbaseurl 是兩個常見的參數,它們用于指定軟件包倉庫的位置。以下是它們的區別:

      (1)mirrorlist

      定義mirrorlist 參數指定了一個 URL,該 URL 返回一個包含多個倉庫站點的列表。

      用途:YUM 客戶端會從這個列表中選擇一個可用、合適的倉庫站點進行連接和下載軟件包。

      優點:提供了更高的可用性、高速度和負載均衡的倉庫站點,如果一個倉庫站點不可用,YUM 可以自動切換到另一個倉庫站點。

      示例

      mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
      

      (2)baseurl

      定義baseurl 參數直接指定了一個單一的倉庫站點。

      用途:YUM 客戶端會直接連接到這個指定的 URL 進行軟件包的下載。

      優點:配置簡單,適用于有特定需求的場景,比如內部私有倉庫。

      示例

      baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
      

      (3)總結

      mirrorlist 提供了一個鏡像列表,YUM 會自動選擇一個可用的倉庫站點進行包的下載,適用于希望自動負載均衡、高性能和高可用性的場景。

      baseurl 直接指定了一個固定的倉庫站點,適用于需要特定倉庫的場景。

      五、引文

      (1)mirrorlist.centos.org no longer resolve?

      主站蜘蛛池模板: 高清有码国产一区二区| 少妇高潮毛片免费看| 极品无码国模国产在线观看| 中文精品无码中文字幕无码专区| 色综合久久中文综合久久激情 | 猫咪社区免费资源在线观看| 国产精品 亚洲一区二区三区 | 伊人成色综合人夜夜久久| 欧美性猛交xxxx乱大交丰满| 國產尤物AV尤物在線觀看| 97人人模人人爽人人喊网| 亚洲一区二区三区激情在线| 性一交一乱一伦| 午夜精品亚洲一区二区三区| 亚洲精品男男一区二区| 免费现黄频在线观看国产| 欧美视频二区欧美影视| 国产亚洲av嫩草久久| 最近中文字幕免费手机版| 日韩人妻无码精品久久久不卡| 人妻一本久道久久综合鬼色| 克山县| 国产一级精品在线免费看| 在线高清免费不卡全码| 国产成人精彩在线视频| 日韩av一区二区精品不卡| 午夜福利影院不卡影院| 一个人看的www视频免费观看| 女人被狂躁的高潮免费视频| 国产精品夫妇激情啪发布| 无码专区 人妻系列 在线| 久久天天躁夜夜躁狠狠85| 精品一区二区无码免费| 女人腿张开让男人桶爽| 国产亚洲精品久久77777| 栖霞市| 波多野结衣无内裤护士| 99久久99久久久精品久久| 福利无遮挡喷水高潮| 91精品国产老熟女在线| 少妇伦子伦精品无吗|