tunasync-scripts icon indicating copy to clipboard operation
tunasync-scripts copied to clipboard

Add sha256 validation

Open jack9603301 opened this issue 4 years ago • 14 comments

Add sha256 validation

jack9603301 avatar Jul 18 '21 14:07 jack9603301

Computing sha256 takes much disk io. It should be avoided in a large repo.

jiegec avatar Jul 18 '21 15:07 jiegec

如果不进行比较,有可能出现大小一致但是文件被更新的情况

jack9603301 avatar Jul 18 '21 16:07 jack9603301

如果不进行比较,有可能出现大小一致但是文件被更新的情况

Yes indeed, but this case can be fixed manually. Disk IO is more precious for user experience.

jiegec avatar Jul 18 '21 16:07 jiegec

@jiegec 我改进了校验算法,但同时也改进了包信息检测机制

新的校验算法要求脚本为上一次的拉取保留必要的包配置信息,然后通过比较两者的包信息判断是否需要更新。。

此PR可能需要进一步测试

jack9603301 avatar Jul 18 '21 18:07 jack9603301

图片

jack9603301 avatar Jul 18 '21 18:07 jack9603301

我们不接受这个 PR。主要原因是,APT 仓库中的 deb 包文件一经发布,一般不会发生改变(如果有改变,往往是再发布一个新的版本)。因此,对大小进行校验足以检查出绝大多数包发生改变或者文件不完整的情况。

shankerwangmiao avatar Jul 19 '21 02:07 shankerwangmiao

事实上,即使必须要对比新旧的 Packages 文件,我也没能理解为何要将旧的 Packages 文件再复制一份。

shankerwangmiao avatar Jul 19 '21 03:07 shankerwangmiao

我们不接受这个 PR。主要原因是,APT 仓库中的 deb 包文件一经发布,一般不会发生改变(如果有改变,往往是再发布一个新的版本)。因此,对大小进行校验足以检查出绝大多数包发生改变或者文件不完整的情况。

我不同意你的观点,事实上vyos的开发版本包,就没有改变发布的版本号,这直接导致了包和上游的不一致

jack9603301 avatar Jul 19 '21 07:07 jack9603301

建议您重新实现该功能,apt-sync 先下载 packages 文件到临时目录,然后下载 deb 包,然后再将 packages 文件移动到正确位置。因此,并不需要存储一份 .old 文件

shankerwangmiao avatar Jul 19 '21 09:07 shankerwangmiao

@shankerwangmiao 这个新的实现比较临时目录和真实路径的Packages,请审核,如果需要改进,请继续说

无论如何,新的包基本信息检查方式比旧的实现好多了(即便只比较大小也一样,同时方便扩展其他的检查项)

jack9603301 avatar Jul 19 '21 19:07 jack9603301

让我再测试一下

jack9603301 avatar Jul 20 '21 10:07 jack9603301

@iBug 你也能帮忙测试一下吗?

shankerwangmiao avatar Jul 20 '21 10:07 shankerwangmiao

@iBug 测试我的最后提交

图片

jack9603301 avatar Jul 20 '21 10:07 jack9603301

LGTM

但是还需要测试,可能还要需要一段时间。

shankerwangmiao avatar Jul 21 '21 03:07 shankerwangmiao