Centos
CentOS 強制 dnf 使用特定位置的鏡像
使用 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 進行了測試,確實得到了我想要的鏡像:
- http://mirrorlist.centos.org/?release=8&arch=x86_64&repo=BaseOS&cc=us
- http://mirrorlist.centos.org/?release=8&arch=x86_64&repo=BaseOS&cc=cn
編輯
原來我居然看錯文件了,有點尷尬😅
isoredirect.py
實際負責 ISO 下載頁面;ml.py
是負責mirrorlist的人。我最初沒有看它,因為我認為它代表機器學習……哦,好吧。我的意思是,我得到了正確的答案,只是通過一個不准確的過程。
cc
也用於ml.py
並且做幾乎完全相同的事情。