discussions icon indicating copy to clipboard operation
discussions copied to clipboard

turnkeylinux for PVE 元数据 aplinfo.dat 内容不正确

Open azraelrabbit opened this issue 5 years ago • 5 comments

https://mirrors.ustc.edu.cn/turnkeylinux/metadata/pve/aplinfo.dat 此文件内的各镜像实际下载地址依然是 turnkey官方服务器地址, 未正确替换未ustc 的镜像地址

azraelrabbit avatar Jun 06 '20 07:06 azraelrabbit

建议在同步完官方镜像后, 替换 aplinfo.dat 内的 镜像地址

sed -i"s#http://mirror.turnkeylinux.org/turnkeylinux/images#https://mirrors.ustc.edu.cn/turnkeylinux/images#g"

azraelrabbit avatar Jun 06 '20 07:06 azraelrabbit

我看了一下,aplinfo.dat 在相同目录下有个签名文件 aplinfo.dat.asc。如果修改了 aplinfo.dat 的内容,可能签名校验不会通过。

taoky avatar Jun 06 '20 07:06 taoky

感谢回复, 但是如果不替换实际镜像地址, 这个mirror就完全没有意义了

azraelrabbit avatar Jun 06 '20 07:06 azraelrabbit

我现在在 PVE 6.2 下面,是 手动 替换本地的 aplinfo.dat 内容. 实际使用中,目前没有发现 PVE会校验 aplinfo.dat.asc

azraelrabbit avatar Jun 06 '20 07:06 azraelrabbit

@taoky 我确实发现了校验 asc 的逻辑, 而且不能简单的修改 aplinfo.dat 还有对 aplinfo.dat.gz 的校验. 看来,只能硬改本地hosts的办法了.

`my $aplsrcurl = "$aplinfo->{url}/$aplinfo->{file}.gz"; my $aplsigurl = "$aplinfo->{url}/$aplinfo->{file}.asc"; my $host = $aplinfo->{host};

my $tmp = "$aplinfodir/pveam-${host}.tmp.$$";
my $tmpgz = "$tmp.gz";
my $sigfn = "$tmp.asc";

eval {

    if (url_get($ua, $aplsigurl, $sigfn, $logfd) != 0) {
        die "update failed - no signature file '$sigfn'\n";
    }

    if (url_get($ua, $aplsrcurl, $tmpgz, $logfd) != 0) {
        die "update failed - no data file '$aplsrcurl'\n";
    }

   eval { run_command(["gunzip", "-f", $tmpgz]) };
   die "update failed: unable to unpack '$tmpgz'\n" if $@;

    # verify signature
    my $trustedkeyring = "/usr/share/doc/pve-manager/trustedkeys.gpg";
    my $cmd = "/usr/bin/gpgv -q --keyring $trustedkeyring $sigfn $tmp";

    my $logfunc = sub { logmsg($logfd, "signature verification: $_[0]"); };
    eval {
        run_command($cmd, outfunc => $logfunc, errfunc => $logfunc);
    };
    die "unable to verify signature - $@\n" if $@;

    # test syntax
    eval { read_aplinfo($tmp, {}, $aplinfo->{url}, 1) };
    die "update failed: $@" if $@;

    rename($tmp, "$aplinfodir/$host") or
        die "update failed: unable to store data: $!\n";

    logmsg($logfd, "update successful");
};

`

azraelrabbit avatar Jun 06 '20 07:06 azraelrabbit

https://github.com/turnkeylinux/tracker/issues/1963

我联系turnkeylinux那边,他们给我提供了非常不错的方案,增加个任务,在同步完成后替换了镜像地址,我已经验证确实好用 还是自己没学好英文,是非常基础简单的解决方案,可惜自己是文盲。另外对方大佬真是非常好且耐心

dunkeng avatar Jul 27 '24 08:07 dunkeng

turnkeylinux/tracker#1963

我联系turnkeylinux那边,他们给我提供了非常不错的方案,增加个任务,在同步完成后替换了镜像地址,我已经验证确实好用 还是自己没学好英文,是非常基础简单的解决方案,可惜自己是文盲。另外对方大佬真是非常好且耐心

感谢!相关帮助文档已经添加:https://mirrors.ustc.edu.cn/help/turnkeylinux.html

taoky avatar Jul 27 '24 16:07 taoky