如果有人劳烦下载并运行了一下, 麻烦复制一下结果, 我也不确定一些参数的设置是否有问题.
呃,这种下载测试不能模拟真实情况…真实情况是卡在下载 metadata…我的代码复杂度虽然高,但考虑的也多一些…
我好像测速代码已经写完了,就差修改源的代码就能发布了…这个礼拜看看把完全体弄出来
哈哈哈, 我主要是练习, 不会写的东西, 就翻你的代码. 我对计算机网络那块不是很了解, 几乎没学过…
我也没学过,摊手…不过 traceroute + 物理距离 + ping 速度 + 下载 metadata 速度我觉得应该可以适应国内糟糕的网络环境了…大部分镜像不是大文件慢而是小文件慢,我也不知道为什么,100+ mb 的 kernel 安装飞快,6mb 的 metadata 能下载超时…
这有什么区别嘛, metadata 不就是服务器上的几个配置文件嘛…
不,是 repo 的 package metadata,可以看成是一个索引…
我们可不可以直接调用 zypper 或者修改 /etc/zypper/repo.d 然后轮流切换每个镜像, 比如 non-oss 那个仓库. 然后安装一两个软件包, 并读取输出的结果就可以.
这样就真实还原了, hhhhh :)
这个思路没玩过,不过听起来非常的正确,可以用 docker image 配合 golang 做一个
这里有如何用 golang 操作 docker,只要拉取一个 openSUSE 镜像,研究研究怎么传递命令获取输出就行了
只用 zypper --root=~/.cache/Tumbleweed 也可以弄出一个 “容器 “差不多的功能,不断切换 /.cache/tumbleweed/etc/zypp/repos.d/tumbleweed.repo
里的链接,记录一下 refreash 和 download only 的时间就可以。
rankmirror-ng/test_zypper.go at master · shenlebantongying/rankmirror-ng · GitHub
sudo zypper --root=~/.cache/Tumbleweed --no-gpg-checks ar -c https://download.opensuse.org/Tumbleweed/repo/oss Tumbleweed
sudo zypper --root=~/.cache/tumbleweed --no-gpg-checks refresh
sudo zypper --root=~/.cache/tumbleweed --no-gpg-checks install --no-recommends --download-only VIM
~/.cache/tumbleweed> tree
.
├── etc
│ └── zypp
│ └── repos.d
│ └── tumbleweed.repo
├── run
│ └── zypp.pid
├── usr
│ └── lib
│ └── sysimage
│ └── rpm
│ ├── Index.db
│ └── Packages.db
└── var
├── cache
│ └── zypp
│ └── solv
│ └── @System
│ ├── cookie
│ ├── solv
│ └── solv.idx
├── lib
│ └── rpm -> ./../../usr/lib/sysimage/rpm
└── log
└── zypp
└── history
这个方案比 docker 更好
可以改进的地方:
- 随机包而不是 VIM
- golang tmpfs 放到内存里搞会更快
- 不要每次都添加源,直接改 .repo file 然后 refresh
我回头改一下。
BTW,rankmirror-ng 已经完全体了。下一步是添加新加入的源,然后 systemd timer。
到时候可以比较一下哪个更快,这个也没优化运行速度。
v2 版本也搞完了,就是不知道是我超时设置的小还是什么原因,无论多大的包都没速度,还需要在真机上测试一下。
那你 Git push 呀 ,
在 v2 branch 里。
你可以注释掉 os.RemoveAll 那行,然后去 /tmp/rankmirror-ng-* 的文件夹去执行 zypper —root,结果是一样的,我怀疑是不是这些 mirror 本身出问题了。
openSUSE 的长毛象账号说了 Tumbleweed mirror 之前出问题了,我怀疑是不是现在都在 rsync 新的所以下载不了
我尝试了一下单线程的版本,是可以用的,
可能是我没加 —no-confirm……然后一直不 confirm 就超时了