Centos

CentOS 強制 dnf 使用特定位置的鏡像

  • September 15, 2021

使用 CentOS 8。

我想強制dnf只在某個位置附近使用鏡子,而不必手動維護所需鏡子的列表。所以我希望在/etc/yum.repo.d/.

舉個/etc/yum.repo.d/CentOS-Linux-BaseOS.repo例子,這是它的預設狀態:

[baseos]
name=CentOS Linux $releasever - BaseOS
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

我想知道查詢時是否有參數mirrorlist.centos.org我可以指定按位置過濾,如下所示:

mirrorlist=http://mirrorlist.centos.org/?country=us&other-params-ommitted

country=我試過了,什麼都沒做)

我無法在該網站的 API 上找到任何相關文件。

所以我在發布這個問題之前深入探勘並自己得到了答案,所以就在這裡。

我搜尋了“Centos mirrorlist API”並找到了 webservice 的程式碼庫我探勘了它的原始碼並在這裡找到了這段程式碼:

 ip=request.remote_route[-1]
 cc=request.query.cc
 debug=request.query.debug
 remote_ip = ipaddr.IPAddress(ip)
 mirrorlistpage = "https://www.centos.org/download/mirrors/"
 if branch == "altarch":
   mirrorlistpage = "https://www.centos.org/download/altarch-mirrors/"

 region = None
 if len(cc) == 5 and cc[2:3] == "-":
   country = cc[:2]
   region = cc[3:]
 elif len(cc) > 0:
   country = cc
 else:
   try:
     country = geodb.city(ip).country.iso_code.lower()
     if country == 'us' or country == 'ca':
       try:
         region = geodb.city(ip).subdivisions.most_specific.iso_code
       except:
         pass
   except:
     country = 'fallback'

似乎參數只是cc. 我使用以下 URL 進行了測試,確實得到了我想要的鏡像:


編輯

原來我居然看錯文件了,有點尷尬😅

  • isoredirect.py實際負責 ISO 下載頁面;
  • ml.py是負責mirrorlist的人。我最初沒有看它,因為我認為它代表機器學習……哦,好吧。

我的意思是,我得到了正確的答案,只是通過一個不准確的過程。cc也用於ml.py並且做幾乎完全相同的事情。

引用自:https://unix.stackexchange.com/questions/669075