cyq*_*mon 0 yum centos repository geolocation 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
Run Code Online (Sandbox Code Playgroud)
我想知道查询时是否有一个参数mirrorlist.centos.org
可以指定按位置过滤,如下所示:
mirrorlist=http://mirrorlist.centos.org/?country=us&other-params-ommitted
Run Code Online (Sandbox Code Playgroud)
(country=
我试过了,什么也没做)
我在该网站的 API 上找不到任何相关文档。
因此,在发布这个问题之前,我进行了更深入的研究,并自己得到了答案,所以就在这里。
我搜索“CentosmirrorlistAPI”并找到了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'
Run Code Online (Sandbox Code Playgroud)
看起来参数只是cc
. 我使用以下 URL 进行了测试,确实得到了我想要的镜像:
原来我居然看错文件了,有点尴尬
isoredirect.py
实际上负责 ISO 下载页面;ml.py
是负责镜像列表的人。我最初没有看它,因为我认为它代表机器学习......哦,好吧。我的意思是,我只是通过不准确的过程得到了正确的答案。cc
也用于ml.py
并且做几乎完全相同的事情。
归档时间: |
|
查看次数: |
2520 次 |
最近记录: |