msys2 设置优先使用国内源

import os
import sys
import shutil

def get_mirrorlist_files(mirrorlist_files_dir):
    files = [f for f in os.listdir(mirrorlist_files_dir) if not (f.endswith("_back") or f.endswith("pacnew")) and os.path.isfile(mirrorlist_files_dir + "/" + f)]
    return files

def backup_mirrorlist_files(mirrorlist_files_dir):
    files = get_mirrorlist_files(mirrorlist_files_dir)
    for file in files:
        back_file = file + "_back"
        if os.path.exists(mirrorlist_files_dir + "/" + back_file):
            continue
        shutil.copy(mirrorlist_files_dir + "/" + file, mirrorlist_files_dir + "/" + back_file)

def get_ustc_server(mirrorlist_file):
    file = open(mirrorlist_file, "r")
    lines = file.readlines()
    file.close()
    ustc_server = ""
    for line in lines:
        if line.find("mirrors.ustc.edu.cn"):
            ustc_server = line
    return ustc_server

def update_mirrorlist_file(mirrorlist_file):
    ustc_server = get_ustc_server(mirrorlist_file)
    file = open(mirrorlist_file, "r")
    lines = file.readlines()
    file.close()
    file = open(mirrorlist_file, "w")
    primary_key = "## Primary"
    is_after_primary = False
    after_cnt = 0
    for line in lines:
        if is_after_primary:
            after_cnt += 1
        if line.startswith(primary_key):
            is_after_primary = True
            after_cnt = 0
        if after_cnt == 1 or after_cnt == 2:
            if not line.startswith("#"):
                line = "#" + line
        if after_cnt == 3:
            if line.find("ustc") == -1 or line.startswith("#"):
                file.write(ustc_server)
        file.write(line)
    file.close()


def update_mirrorlist_files(mirrorlist_files_dir):
    files = get_mirrorlist_files(mirrorlist_files_dir)
    for file in files:
        mirrorlist_file = mirrorlist_files_dir + "/" + file
        update_mirrorlist_file(mirrorlist_file)

if __name__ == '__main__':
    mirrorlist_files_dir = "D:/code_tools/msys2/install/etc/pacman.d"
    backup_mirrorlist_files(mirrorlist_files_dir)
    update_mirrorlist_files(mirrorlist_files_dir)


文章目录