diff --git a/chsrc.c b/chsrc.c index 94ef9999a6b15d22fcc4c562078520d9ebff06d7..ee5b3a67dd8331ae9e492f3b7e3f89a8989d4ea8 100644 --- a/chsrc.c +++ b/chsrc.c @@ -556,7 +556,9 @@ pl_julia_setsrc (char* option) - +/** + * ubuntu不同架构下的换源是不一样的,这个针对x86架构 + */ void os_ubuntu_setsrc (char* option) { @@ -579,12 +581,16 @@ os_ubuntu_setsrc (char* option) system(cmd); free(cmd); - char* rm = "rm -rf /etc/apt/source.list.bak"; - system(rm); + // char* rm = "rm -rf /etc/apt/source.list.bak"; + // system(rm); xy_info ("chsrc: 为 ubuntu 命令换源"); xy_success (xy_2strjoin("chsrc: 感谢镜像提供方:", source_name)); } +/** + * Debian Buster 以上版本默认支持 HTTPS 源。如果遇到无法拉取 HTTPS 源的情况,请先使用 HTTP 源并安装 + * sudo apt install apt-transport-https ca-certificates + */ void os_debian_setsrc (char* option) { @@ -607,14 +613,159 @@ os_debian_setsrc (char* option) system(cmd); free(cmd); - char* rm = "rm -rf /etc/apt/source.list.bak"; - system(rm); + // char* rm = "rm -rf /etc/apt/source.list.bak"; + // system(rm); - xy_info ("chsrc: 为 ubuntu 命令换源"); + xy_info ("chsrc: 为 debian 命令换源"); + xy_success (xy_2strjoin("chsrc: 感谢镜像提供方:", source_name)); +} +/** + * fedora29版本及以下暂不支持 + */ +void +os_fedora_setsrc (char* option) +{ + int selected = 0; + for (int i=0;iname; + const char* source_abbr = os_fedora_sources[selected].mirror->abbr; + const char* source_url = os_fedora_sources[selected].url; + + char* backup = "cp -rf /etc/yum.repos.d/fedora.repo /etc/yum.repos.d/fedora.repo.bak"; + system(backup); + backup = "cp -rf /etc/yum.repos.d/fedora-updates.repo /etc/yum.repos.d/fedora-updates.repo.bak"; + system(backup); + + xy_info ("chsrc: 备份文件名:1. /etc/yum.repos.d/fedora.repo.bak"); + xy_info ("chsrc: 备份文件名:2. /etc/yum.repos.d/fedora-updates.repo.bak"); + + + char* cmd = xy_strjoin(9, "sed -e 's|^metalink=|#metalink=|g' ", + "-e 's|^#baseurl=http://download.example/pub/fedora/linux/|baseurl=", + source_url, + "|g' ", + "-i.bak ", + "/etc/yum.repos.d/fedora.repo ", + "/etc/yum.repos.d/fedora-modular.repo ", + "/etc/yum.repos.d/fedora-updates.repo ", + "/etc/yum.repos.d/fedora-updates-modular.repo"); + system(cmd); + free(cmd); + + xy_info("替换文件:/etc/yum.repos.d/fedora.repo"); + xy_info("新增文件:/etc/yum.repos.d/fedora-modular.repo"); + xy_info("替换文件:/etc/yum.repos.d/fedora-updates.repo"); + xy_info("新增文件:/etc/yum.repos.d/fedora-updates-modular.repo"); + + // char* rm = "rm -rf /etc/yum.repos.d/fedora.repo.bak"; + // system(rm); + // char* rm = "rm -rf /etc/yum.repos.d/fedora-updates.repo.bak"; + // system(rm); + + xy_info ("chsrc: 为 fedora 命令换源"); xy_success (xy_2strjoin("chsrc: 感谢镜像提供方:", source_name)); } + + +void +os_kali_setsrc(char* option) +{ + int selected = 0; + for (int i=0;iname; + const char* source_abbr = os_kali_sources[selected].mirror->abbr; + const char* source_url = os_kali_sources[selected].url; + + char* backup = "cp -rf /etc/apt/sources.list /etc/apt/sources.list.bak"; + system(backup); + + xy_info ("chsrc: 备份文件名: /etc/apt/sources.list.bak"); + + char* cmd = xy_strjoin(3, "sed -i \'s@(^[^#]* .*)http[:|\\.|\\/|a-z|A-Z]*\\/kali\\/@\\1", + source_url, + "@g\' /etc/apt/sources.list"); + system(cmd); + free(cmd); + + // char* rm = "rm -rf /etc/apt/source.list.bak"; + // system(rm); + + xy_info ("chsrc: 为 kali 命令换源"); + xy_success (xy_2strjoin("chsrc: 感谢镜像提供方:", source_name)); +} + + +void +os_openbsd_setsrc(char* option) +{ + int selected = 0; + for (int i=0;iname; + const char* source_abbr = os_openbsd_sources[selected].mirror->abbr; + const char* source_url = os_openbsd_sources[selected].url; + + char* backup = "cp -rf /etc/installurl /etc/installurl.bak"; + system(backup); + + xy_info ("chsrc: 备份文件名: /etc/installurl.bak"); + + char* cmd = xy_strjoin(3,"echo ",source_url," > /etc/installurl"); + system(cmd); + free(cmd); + + // char* rm = "rm -rf /etc/installurl.bak"; + // system(rm); + + xy_info ("chsrc: 为 openbsd 命令换源"); + xy_success (xy_2strjoin("chsrc: 感谢镜像提供方:", source_name)); +} + + +void +os_mysys2_setsrc(char* option) +{ + int selected = 0; + for (int i=0;iname; + const char* source_abbr = os_mysys2_sources[selected].mirror->abbr; + const char* source_url = os_mysys2_sources[selected].url; + + char* backup = "cp -rf /etc/pacman.d/mirrorlist.mingw32 /etc/pacman.d/mirrorlist.mingw32.bak"; + system(backup); + backup = "cp -rf /etc/pacman.d/mirrorlist.mingw64 /etc/pacman.d/mirrorlist.mingw64.bak"; + system(backup); + backup = "cp -rf /etc/pacman.d/mirrorlist.msys /etc/pacman.d/mirrorlist.msys.bak"; + system(backup); + + xy_info ("chsrc: 备份文件名:1. /etc/pacman.d/mirrorlist.mingw32.bak"); + xy_info ("chsrc: 备份文件名:2. /etc/pacman.d/mirrorlist.mingw64.bak"); + xy_info ("chsrc: 备份文件名:3. /etc/pacman.d/mirrorlist.msys.bak"); + + char* cmd = xy_strjoin(3,"sed -i \"s#https\?://mirror.msys2.org/#",source_url,"#g\" /etc/pacman.d/mirrorlist* "); + system(cmd); + free(cmd); + + // char* rm = "rm -rf /etc/pacman.d/mirrorlist.mingw32.bak"; + // system(rm); + // rm = "rm -rf /etc/pacman.d/mirrorlist.mingw64.bak"; + // system(rm); + // rm = "rm -rf /etc/pacman.d/mirrorlist.msys.bak"; + // system(rm); + + xy_info ("chsrc: 为 mysys2 命令换源"); + xy_success (xy_2strjoin("chsrc: 感谢镜像提供方:", source_name)); +} + #define setsrc_fn(func) (const char const*)func #define getsrc_fn(func) (const char const*)func #define sources_ptr(ptr) (const char const*)ptr @@ -638,11 +789,15 @@ static const char const }, -*os_ubuntu [] = {"ubuntu", NULL, setsrc_fn(os_ubuntu_setsrc),NULL,sources_ptr(os_ubuntu_sources)}, -*os_debian [] = {"debian", NULL, setsrc_fn(os_debian_setsrc),NULL,sources_ptr(os_debian_sources)}, +*os_ubuntu [] = {"ubuntu", NULL, setsrc_fn(os_ubuntu_setsrc), NULL,sources_ptr(os_ubuntu_sources)}, +*os_debian [] = {"debian", NULL, setsrc_fn(os_debian_setsrc), NULL,sources_ptr(os_debian_sources)}, +*os_fedora [] = {"fedora", NULL, setsrc_fn(os_fedora_setsrc), NULL,sources_ptr(os_fedora_sources)}, +*os_kali [] = {"kali", NULL, setsrc_fn(os_kali_setsrc), NULL,sources_ptr(os_kali_sources)}, +*os_openbsd [] = {"openbsd", NULL, setsrc_fn(os_openbsd_setsrc), NULL,sources_ptr(os_openbsd_sources)}, +*os_mysys2 [] = {"mysys2", NULL, setsrc_fn(os_mysys2_setsrc), NULL,sources_ptr(os_mysys2_sources)}, **os_systems[] = { - os_ubuntu,os_debian + os_ubuntu,os_debian,os_fedora,os_kali,os_openbsd,os_mysys2 }, diff --git a/chsrc.h b/chsrc.h index e43562d0957ada4516dee845d266122bff06b52d..8f67ed503a284ae4919ca02fe3a002b8b2da68a2 100644 --- a/chsrc.h +++ b/chsrc.h @@ -261,14 +261,81 @@ os_ubuntu_sources[] = { * TODO: 1. 源并不完整,且未经测试是否有效 */ os_debian_sources[] = { - {&Ali, "https://mirrors.aliyun.com/ubuntu/"}, - {&Bfsu, "https://mirrors.bfsu.edu.cn/ubuntu/"}, - {&Ustc, "https://mirrors.ustc.edu.cn/ubuntu/"}, - {&Tuna, "https://mirrors.tuna.tsinghua.edu.cn/ubuntu/"}, - {&Tencent, "https://mirrors.tencent.com/ubuntu/"}, - {&Netease, "https://mirrors.163.com/ubuntu/"}, - {&Sohu, "https://mirrors.sohu.com/ubuntu/"}, -}; + {&Ali, "https://mirrors.aliyun.com/debian/"}, + {&Bfsu, "https://mirrors.bfsu.edu.cn/debian/"}, + {&Ustc, "https://mirrors.ustc.edu.cn/debian/"}, + {&Tuna, "https://mirrors.tuna.tsinghua.edu.cn/debian/"}, + {&Tencent, "https://mirrors.tencent.com/debian/"}, + {&Netease, "https://mirrors.163.com/debian/"}, + {&Sohu, "https://mirrors.sohu.com/debian/"}, +}, + + + +/** + * 2023-09-02 更新 + * + * TODO: 1. 源并不完整,且未经测试是否有效 + */ +os_fedora_sources[] = { + {&Ali, "https://mirrors.aliyun.com/fedora/"}, + {&Bfsu, "https://mirrors.bfsu.edu.cn/fedora/"}, + {&Ustc, "https://mirrors.ustc.edu.cn/fedora/"}, + {&Tuna, "https://mirrors.tuna.tsinghua.edu.cn/fedora/"}, + {&Tencent, "https://mirrors.tencent.com/fedora/"}, + {&Netease, "https://mirrors.163.com/fedora/"}, + {&Sohu, "https://mirrors.sohu.com/fedora/"}, +}, + + +/** + * 2023-09-02 更新 + * + * TODO: 1. 源并不完整,且未经测试是否有效 + */ +os_kali_sources[] = { + {&Ali, "https://mirrors.aliyun.com/kali/"}, + {&Bfsu, "https://mirrors.bfsu.edu.cn/kali/"}, + {&Ustc, "https://mirrors.ustc.edu.cn/kali/"}, + {&Tuna, "https://mirrors.tuna.tsinghua.edu.cn/kali/"}, + {&Tencent, "https://mirrors.tencent.com/kali/"}, + {&Netease, "https://mirrors.163.com/kali/"}, + {&Sohu, "https://mirrors.sohu.com/kali/"}, +}, + + + +/** + * 2023-09-02 更新 + * + * TODO: 1. 源并不完整,且未经测试是否有效 + */ +os_openbsd_sources[] = { + {&Ali, "https://mirrors.aliyun.com/OpenBSD/"}, + {&Bfsu, "https://mirrors.bfsu.edu.cn/OpenBSD/"}, + {&Ustc, "https://mirrors.ustc.edu.cn/OpenBSD/"}, + {&Tuna, "https://mirrors.tuna.tsinghua.edu.cn/OpenBSD/"}, + {&Tencent, "https://mirrors.tencent.com/OpenBSD/"}, + {&Netease, "https://mirrors.163.com/OpenBSD/"}, + {&Sohu, "https://mirrors.sohu.com/OpenBSD/"}, +}, + + +/** + * 2023-09-02 更新 + * + * TODO: 1. 源并不完整,且未经测试是否有效 + */ +os_mysys2_sources[] = { + {&Ali, "https://mirrors.aliyun.com/msys2/"}, + {&Bfsu, "https://mirrors.bfsu.edu.cn/msys2/"}, + {&Ustc, "https://mirrors.ustc.edu.cn/msys2/"}, + {&Tuna, "https://mirrors.tuna.tsinghua.edu.cn/msys2/"}, + {&Tencent, "https://mirrors.tencent.com/msys2/"}, + {&Netease, "https://mirrors.163.com/msys2/"}, + {&Sohu, "https://mirrors.sohu.com/msys2/"}, +} +; /* 函数签名 */ bool does_the_program_exist (char* check_cmd, char* progname); diff --git a/helper.h b/helper.h index 1bf7e31bd590c32bf2030abdada9bfef2bf508e6..3f83c878e1de13b7d57e7a032e0da87a87eacc32 100644 --- a/helper.h +++ b/helper.h @@ -12,6 +12,7 @@ #ifndef XY_H #define XY_H +#include #include #include #include @@ -29,13 +30,33 @@ #include #define xy_useutf8() SetConsoleOutputCP(65001) -#else +#elif defined(__linux__) || defined(__linux) + static bool xy_on_windows = false; static bool xy_on_linux = true; static bool xy_on_macos = false; static bool xy_on_bsds = false; #define xy_useutf8() + +#elif defined(TARGET_OS_MAC) ||defined(__MACOSX__) + + static bool xy_on_windows = false; + static bool xy_on_linux = false; + static bool xy_on_macos = true; + static bool xy_on_bsds = false; + + #define xy_useutf8() + +#elif defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) + + static bool xy_on_windows = false; + static bool xy_on_linux = false; + static bool xy_on_macos = false; + static bool xy_on_bsds = true; + + #define xy_useutf8() + #endif