Yum

YUM 外掛 yum-fastestmirror 是如何工作的?

  • September 18, 2019

我注意到,當我執行yum update命令時,YUM 似乎會一遍又一遍地選擇特定的伺服器,但偶爾它會切換並使用替代伺服器。

在四處尋找時,我注意到它使用了一個名為yum-fastestmirror.

YUM 和這個外掛是如何做到這一點的?

背景

外掛yum-fastestmirror在概念上非常簡單。它只是維護一個文本文件,其中包含 YUM 關於每個鏡像的累積次數,然後當要求 YUM 下載軟體包時,它使用在下載期間顯示為最快的伺服器。

時間儲存在此位置:

$ locate timedhosts.txt
/var/cache/yum/x86_64/7/timedhosts.txt

如果我們檢查這個文件,我們會發現它只是主機名,每個主機名旁邊都有時間。在這裡,我們將其從最快到最慢排序:

$ sort -k2,2 /var/cache/yum/x86_64/7/timedhosts.txt
mirror.atlanticmetro.net 0.00165295600891
mirror.cc.columbia.edu 0.00172901153564
ewr.edge.kernel.org 0.00207901000977
mirror.es.its.nyu.edu 0.00217700004578
mirror.siena.edu 0.00543117523193
mirror.pit.teraswitch.com 0.0140120983124
mirrors.rit.edu 0.0208911895752
mirror.clarkson.edu 0.0243170261383
mirror.linux.duke.edu 0.0244128704071
mirror.mia11.us.leaseweb.net 0.0328259468079
mirror.hackingand.coffee 0.0435431003571
ftp.ussg.iu.edu 0.0479228496552
mirror.genesishosting.com 0.0481269359589
repo1.ash.innoscale.net 0.050274848938
mirror.den1.denvercolo.net 0.0838551521301
mirror.keystealth.org 0.134334802628
centos.mirror.ndchost.com 0.140916824341

現在,當我們查詢特定包的位置時,是否要使用以下命令下載它repoquery

$ $ repoquery --location java-1.8.0-openjdk
http://mirror.atlanticmetro.net/centos/7.7.1908/updates/x86_64/Packages/java-1.8.0-openjdk-1.8.0.222.b10-1.el7_7.i686.rpm
http://mirror.atlanticmetro.net/centos/7.7.1908/updates/x86_64/Packages/java-1.8.0-openjdk-1.8.0.222.b10-1.el7_7.x86_64.rpm

配置

yum-fastestmirror 外掛也有自己的配置文件:

$ more /etc/yum/pluginconf.d/fastestmirror.conf
[main]
enabled=1
verbose=0
always_print_best_host = true
socket_timeout=3
#  Relative paths are relative to the cachedir (and so works for users as well
# as root).
hostfilepath=timedhosts.txt
maxhostfileage=10
maxthreads=15
#exclude=.gov, facebook
#include_only=.nl,.de,.uk,.ie

通過這個文件,我們可以指示外掛將特定鏡像列入白名單和黑名單,這些鏡像要麼在過去向我們提出問題,要麼出於任何原因我們認為不可接受。

參考

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