CentOS Stream

📂 文件列表

状态: | 上次更新时间: | 更新源: | 镜像大小:


注意:该源只提供 CentOS Stream 9。如需较早版本的 CentOS,请转至 CentOSCentos Vault 源。

CentOS Stream 9 中源被合并至 centos.repo 和 centos-addons.repo 两个文件。由于文件中不包含 baseurl 字段,需要手动插入。而通过文本替换修改源的方法比较复杂,可以选择直接复制最后的替换结果覆盖源文件。

将以下段代码保存至一个新文件,如 update_mirror.pl。

#!/usr/bin/perl

use strict;
use warnings;
use autodie;

my $mirrors = 'http://mirrors.jxust.edu.cn/centos-stream';

if (@ARGV < 1) {
    die "Usage: $0   ...\n";
}

while (my $filename = shift @ARGV) {
    my $backup_filename = $filename . '.bak';
    rename $filename, $backup_filename;

    open my $input, "<", $backup_filename;
    open my $output, ">", $filename;

    while (<$input>) {
        s/^metalink/# metalink/;

        if (m/^name/) {
            my (undef, $repo, $arch) = split /-/;
            $repo =~ s/^\s+|\s+$//g;
            ($arch = defined $arch ? lc($arch) : '') =~ s/^\s+|\s+$//g;

            if ($repo =~ /^Extras/) {
                $_ .= "baseurl=${mirrors}/SIGs/\$releasever-stream/extras" . ($arch eq 'source' ? "/${arch}/" : "/\$basearch/") . "extras-common\n";
            } else {
                $_ .= "baseurl=${mirrors}/\$releasever-stream/$repo" . ($arch eq 'source' ? "/" : "/\$basearch/") . ($arch ne '' ? "${arch}/tree/" : "os") . "\n";
            }
        }

        print $output $_;
    }
}
              

然后,在命令行中使用以下命令来执行:

sudo perl ./update_mirror.pl /etc/yum.repos.d/centos*.repo
              

若未安装 Perl 解释器,请用 dnf 命令安装 Perl 解释器,还需注意 update_mirror.pl 的实际路径。若只需替换某些文件中的源,请勿使用上述 * 通配符,改用具体文件名。若某些 repo 未生效,请检查相应的 enabled 的值是否为 1。

最后,更新软件包缓存:

sudo dnf clean all && sudo dnf makecache