{"id":14967931,"url":"https://github.com/rubymetric/chsrc","last_synced_at":"2025-05-12T15:20:10.651Z","repository":{"id":193055873,"uuid":"686497147","full_name":"RubyMetric/chsrc","owner":"RubyMetric","description":"chsrc 全平台通用换源工具与框架. Change Source everywhere for every software","archived":false,"fork":false,"pushed_at":"2025-04-16T08:46:01.000Z","size":1943,"stargazers_count":5256,"open_issues_count":12,"forks_count":215,"subscribers_count":21,"default_branch":"main","last_synced_at":"2025-05-12T15:19:37.282Z","etag":null,"topics":["archlinux","brew","bsd","c99","cargo","composer","cpan","debian","fedora","flathub","gem","guix","linux","macos","maven","nix","npm","pip","ubuntu","windows"],"latest_commit_sha":null,"homepage":"https://chsrc.run/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RubyMetric.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"custom":["https://github.com/ccmywish/support-my-oss-work"]}},"created_at":"2023-09-03T01:36:28.000Z","updated_at":"2025-05-12T12:02:12.000Z","dependencies_parsed_at":"2024-06-11T18:26:30.601Z","dependency_job_id":"54b452cf-79ca-418e-be92-deeb4158551c","html_url":"https://github.com/RubyMetric/chsrc","commit_stats":{"total_commits":814,"total_committers":11,"mean_commits":74.0,"dds":0.07002457002457008,"last_synced_commit":"30490d75e1829c569d51f1522665cfe0ae43a83c"},"previous_names":["rubymetric/chsrc"],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RubyMetric%2Fchsrc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RubyMetric%2Fchsrc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RubyMetric%2Fchsrc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RubyMetric%2Fchsrc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RubyMetric","download_url":"https://codeload.github.com/RubyMetric/chsrc/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253763962,"owners_count":21960484,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["archlinux","brew","bsd","c99","cargo","composer","cpan","debian","fedora","flathub","gem","guix","linux","macos","maven","nix","npm","pip","ubuntu","windows"],"created_at":"2024-09-24T13:38:53.985Z","updated_at":"2025-05-12T15:20:10.571Z","avatar_url":"https://github.com/RubyMetric.png","language":"C","readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg alt=\"chsrc logo\" src=\"image/chsrc.png\"/\u003e\n\u003c/div\u003e\n\n全平台通用换源工具与框架 `chsrc`，**目标支持 Linux, Windows (MSYS2, Cygwin), macOS, BSD 等尽可能多的操作系统环境，龙芯、飞腾、RISC-V 等尽可能多的 CPU**。\n\n我们使用 **C99** 来完成上述目标。我们并不使用 Python 或 JS 等解释语言，因为一个简单的换源工具，不应该强行塞给用户一个庞大的解释器和数十、数百 MB 其他文件。\n\n本软件为**自由软件**，SDPX 软件许可证为 `GPL-3.0-or-later and MIT`\n\n\u003cbr\u003e\n\n\u003ctable align=\"center\"\u003e\n  \u003ctr\u003e\n  \u003ctd\u003e\n    \u003ca href=\"https://trendshift.io/repositories/10744\" target=\"_blank\"\u003e\u003cimg src=\"https://trendshift.io/api/badge/repositories/10744\" alt=\"RubyMetric%2Fchsrc | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/\u003e\u003c/a\u003e\n  \u003c/td\u003e\n  \u003ctd\u003e\n    \u003ca href=\"https://hellogithub.com/repository/7666ba91e01e4a59be5809b02d9e8ff6\" target=\"_blank\"\u003e\u003cimg src=\"https://abroad.hellogithub.com/v1/widgets/recommend.svg?rid=7666ba91e01e4a59be5809b02d9e8ff6\u0026claim_uid=H6YVMUy7ulev8R4\u0026theme=dark\" alt=\"Featured｜HelloGitHub\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" /\u003e\u003c/a\u003e\n  \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003cbr\u003e\n\n## 🤝 协作与贡献\n\n\u003e [!TIP]\n\u003e **`chsrc` 不仅是一个命令行工具，同时也是一个体现了 Ruby on Rails 思想的 MVC 换源框架，它甚至使你能够在不了解C语言的情况下编写出新的换源方法(recipe)。** [Write A Recipe Even If You Don't Know C](./doc/02-Write-A-Recipe-Even-If-You-Dont-Know-C.md)\n\n\u003e [!NOTE]\n\u003e **`chsrc` 可换源 60+ 目标。每个人仅仅贡献和维护自己熟悉的部分，回报是得到其他所有领域专家的帮助**。欢迎对 GitHub、Gitee 协作不熟悉的人以此为契机学习参与贡献, 欢迎任何编程初学者参与贡献。[从开发到提交贡献，我们覆盖全流程文档](./doc/)\n，另外作者可提供一定的 [贡献指导](https://github.com/RubyMetric/chsrc/discussions/50)\n\n\u003e [!IMPORTANT]\n\u003e [招募 recipe 维护者](https://github.com/RubyMetric/chsrc/issues/130)\n\n\u003cbr\u003e\n\n可参与的任务与挑战：\n\n1. [提供默认源地址，如Maven等的默认源URL，帮助我们进行 `chsrc reset`](https://github.com/RubyMetric/chsrc/issues/111)\n\n2. [CentOS (Stream) Recipe](https://github.com/RubyMetric/chsrc/issues/48)\n\n\u003cbr\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e已由贡献者完成的挑战\u003c/summary\u003e\n\n1. [[Challenge] 编写统一安装的 shell 和 PowerShell 脚本](https://github.com/RubyMetric/chsrc/issues/98)\n\n    已由 [@Efterklang] 与 [@wickdynex] 完成\n\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n\u003csummary\u003e镜像站可用性\u003c/summary\u003e\n\n1. https://github.com/RubyMetric/chsrc/wiki\n2. https://github.com/RubyMetric/chsrc/discussions\n\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n\u003csummary\u003e打包\u003c/summary\u003e\n\n想通过 `flatpak`,`snap`,`pacman`,`apt`,`dnf` 等系统包管理工具来安装和更新`chsrc`？若您可提供维护，请访问 [issue#16 on GitHub](https://github.com/RubyMetric/chsrc/issues/16)\n\n- [x] `Homebrew`\n- [x] `Scoop`\n- [x] `WinGet`\n- [x] `AUR`\n- [ ] `Flatpak`\n- [ ] `snap`\n- [ ] 缺乏其他平台/包维护者\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n## 📌 示例\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg alt=\"chsrc set node\" src=\"image/example-set-nodejs.png\"/\u003e\n\u003c/div\u003e\n\n\u003cbr\u003e\n\n## 🚀 安装\n\n\u003ca href=\"https://repology.org/project/chsrc/versions\"\u003e\n  \u003cimg src=\"https://repology.org/badge/vertical-allrepos/chsrc.svg\" alt=\"Packaging status\" align=\"right\"\u003e\n\u003c/a\u003e\n\n\u003e [!IMPORTANT]\n\u003e 若通过下述手动方式安装，则会下载到当前目录，可直接通过 `./chsrc` 运行\n\n\u003cdetails\u003e\n\u003csummary\u003eWindows\u003c/summary\u003e\n\n- 可通过 `scoop` 安装，感谢 [@Gn3po4g] 与 [@niheaven]\n\n```bash\n$ scoop install chsrc\n```\n\n\u003cbr\u003e\n\n- 可通过 `WinGet` 安装，感谢 [@YU-7]\n\n```bash\n$ winget install RubyMetric.chsrc\n```\n\n\u003cbr\u003e\n\n- 可通过 `PowerShell` 脚本一键下载最新版二进制文件，感谢 [@wickdynex]\n\n    若下方链接无法访问，可使用 `https://gitee.com/RubyMetric/chsrc/raw/main/tool/installer.ps1` 替代\n\n```PowerShell\n\"\u0026 { $(iwr -useb https://chsrc.run/windows) } -Version pre\" | iex\n```\n\n\u003cbr\u003e\n\n- 或手动下载二进制文件，这是最新版，往往比 `scoop` 提供的更新，适用于修复 Bug、添加新功能后及时使用，以及未安装 `scoop` 时\n\n```bash\n# x64\ncurl -L https://gitee.com/RubyMetric/chsrc/releases/download/pre/chsrc-x64-windows.exe -o chsrc.exe\n\n# x86\ncurl -L https://gitee.com/RubyMetric/chsrc/releases/download/pre/chsrc-x86-windows.exe -o chsrc.exe\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eLinux\u003c/summary\u003e\n\n- 支持 `AUR`，可通过 `yay` 安装，感谢 [@Jerry-Terrasse]\n\n```bash\n# AUR\n$ yay -S chsrc-bin # Binary from GitHub Release\n$ yay -S chsrc-git # Build  from the latest main branch (stable)\n$ yay -S chsrc     # Build  from GitHub Release\n```\n\n\u003cbr\u003e\n\n- 可通过 `shell` 脚本一键安装最新版，感谢 [@Efterklang] 与 [@wickdynex]\n\n    若下方链接无法访问，可使用 `https://gitee.com/RubyMetric/chsrc/raw/main/tool/installer.sh` 替代\n\n```bash\n# 非root用户默认安装至 ~/.local/bin\n$ curl https://chsrc.run/posix | bash\n\n# root用户默认安装至 /usr/local/bin\n$ curl https://chsrc.run/posix | sudo bash\n\n# 使用 -d 指定目录安装\n$ curl https://chsrc.run/posix | bash -s -- -d ./\n\n# 使用 -l en 输出英文\n$ curl https://chsrc.run/posix | bash -s -- -l en\n```\n\n\u003cbr\u003e\n\n- 可手动下载二进制文件安装\n\n```bash\n# x64\ncurl -L https://gitee.com/RubyMetric/chsrc/releases/download/pre/chsrc-x64-linux -o chsrc; chmod +x ./chsrc\n\n# aarch64\ncurl -L https://gitee.com/RubyMetric/chsrc/releases/download/pre/chsrc-aarch64-linux -o chsrc; chmod +x ./chsrc\n\n# riscv64\ncurl -L https://gitee.com/RubyMetric/chsrc/releases/download/pre/chsrc-riscv64-linux -o chsrc; chmod +x ./chsrc\n\n# armv7\ncurl -L https://gitee.com/RubyMetric/chsrc/releases/download/pre/chsrc-armv7-linux -o chsrc; chmod +x ./chsrc\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003emacOS\u003c/summary\u003e\n\n- 可通过 `homebrew` 安装，感谢 [@Aaron-212] 与 [@chenrui333]\n\n```bash\n$ brew install chsrc\n```\n\n\u003cbr\u003e\n\n- 可通过 `shell` 脚本安装最新版，感谢 [@Efterklang] 与 [@wickdynex]\n\n    若下方链接无法访问，可使用 `https://gitee.com/RubyMetric/chsrc/raw/main/tool/installer.sh` 替代\n\n```bash\n# 非root用户默认安装至 ~/.local/bin\n$ curl https://chsrc.run/posix | bash\n\n# root用户默认安装至 /usr/local/bin\n$ curl https://chsrc.run/posix | sudo bash\n\n# 使用 -d 指定目录安装\n$ curl https://chsrc.run/posix | bash -s -- -d ./\n\n# 使用 -l en 输出英文\n$ curl https://chsrc.run/posix | bash -s -- -l en\n```\n\n\u003cbr\u003e\n\n- 或手动下载二进制文件，这是最新版，往往比 `homebrew` 提供的更新，适用于修复 Bug、添加新功能后及时使用\n\n```bash\n# arm64/aarch64\ncurl -L https://gitee.com/RubyMetric/chsrc/releases/download/pre/chsrc-aarch64-macos -o chsrc; chmod +x ./chsrc\n\n# x64\ncurl -L https://gitee.com/RubyMetric/chsrc/releases/download/pre/chsrc-x64-macos -o chsrc; chmod +x ./chsrc\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eBSD\u003c/summary\u003e\n\n```bash\n$ git clone https://gitee.com/RubyMetric/chsrc.git; cd chsrc\n$ clang -Iinclude -Ilib src/chsrc-main.c -o chsrc\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e其他平台\u003c/summary\u003e\n\n```bash\n$ git clone https://gitee.com/RubyMetric/chsrc.git; cd chsrc; make\n```\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n## 💡 使用\n\n```bash\n使用: chsrc \u003ccommand\u003e [options] [target] [mirror]\n\nhelp                      # 打印此帮助，或 h, -h, --help\nissue                     # 查看相关issue\n\nlist (或 ls, 或 l)        # 列出可用镜像源，和可换源目标\nlist mirror/target        # 列出可用镜像源，或可换源目标\nlist os/lang/ware         # 列出可换源的操作系统/编程语言/软件\n\nmeasure \u003ctarget\u003e          # 对该目标所有源测速\ncesu    \u003ctarget\u003e\n\nlist \u003ctarget\u003e             # 查看该目标可用源与支持功能\nget  \u003ctarget\u003e             # 查看该目标当前源的使用情况\n\nset  \u003ctarget\u003e             # 换源，自动测速后挑选最快源\nset  \u003ctarget\u003e  first      # 换源，使用维护团队测速第一的源\nset  \u003ctarget\u003e \u003cmirror\u003e    # 换源，指定使用某镜像站 (通过list命令查看)\nset  \u003ctarget\u003e https://url # 换源，用户自定义源URL\nreset \u003ctarget\u003e            # 重置，使用上游默认使用的源\n\n选项:\n-dry                      # Dry Run，模拟换源过程，命令仅打印并不运行\n-local                    # 仅对某项目而非全局换源 (仅部分软件如bundler,pdm支持)\n-ipv6                     # 使用IPv6测速\n-en(glish)                # 使用英文输出\n-no-color                 # 无颜色输出\n```\n\n\u003cbr\u003e\n\n```bash\n自动测速，寻找最快者，换源\n\n    $ chsrc set ruby\n\n不想自动测速的时候，可使用维护团队测试的最快镜像站\n\n    $ chsrc set ruby first\n\n先列出可用的镜像站，然后选择其一，如使用 RubyChina 作为镜像站\n\n    $ chsrc ls  ruby\n    $ chsrc set ruby rubychina\n\n若您有自己的镜像地址，使用自定义URL\n\n    $ chsrc set ruby https://gems.ruby-china.com/\n\n对支持 *项目级* 换源的目标，可以避免全局（*系统级* 或 *用户级*）换源\n\n    $ chsrc set -local bundler\n    $ chsrc set -local pdm\n```\n\n\u003cbr\u003e\n\n## 编程语言开发\n\n```bash\nchsrc set ruby|rb|gem|bundler|rubygems\n\nchsrc set python | py | pypi # 同时换 pip, poetry, pdm, uv 这4个包管理器，也可以4个独立换源\n  chsrc set pip\n  chsrc set poetry\n  chsrc set pdm\n  chsrc set uv\n\nchsrc set rye\n\nchsrc set node | nodejs # 同时换 npm, yarn 和 pnpm 这3个包管理器，也可以3个独立换源\n  chsrc set npm\n  chsrc set yarn\n  chsrc set pnpm\n\nchsrc set nvm\nchsrc set bun\n\nchsrc set perl | cpan\nchsrc set php  | composer\nchsrc set lua  | luarocks\n\nchsrc set rust | cargo | crate\nchsrc set rustup\n\nchsrc set go\nchsrc set java    | maven | mvn | gradle\nchsrc set clojure | clojars\nchsrc set dart    | pub\nchsrc set flutter\nchsrc set haskell | hackage | cabal | stack\nchsrc set ocaml   | opam\n\n# 同时会为 bioconductor 换源\nchsrc set r | cran\nchsrc set julia\n```\n\n\u003cbr\u003e\n\n## 操作系统\n\n```bash\nsudo chsrc set ubuntu\nsudo chsrc set linuxmint | mint\nsudo chsrc set debian\nsudo chsrc set fedora\nsudo chsrc set suse  | opensuse\nsudo chsrc set kali\nsudo chsrc set arch\nsudo chsrc set archlinuxcn\nsudo chsrc set manjaro\nsudo chsrc set gentoo\nsudo chsrc set rocky | rockylinux\nsudo chsrc set alma  | almalinux\nsudo chsrc set alpine\nsudo chsrc set void  | voidlinux\nsudo chsrc set solus\nsudo chsrc set ros   | ros2\nsudo chsrc set trisquel\nsudo chsrc set lite  | linuxlite\nsudo chsrc set raspi | raspberrypi\nsudo chsrc set armbian\nsudo chsrc set openwrt\n\nsudo chsrc set openeuler\nsudo chsrc set openanolis | anolis\nsudo chsrc set openkylin\nsudo chsrc set deepin\n\nchsrc set msys2 | msys\n\n# Android\nchsrc set termux\n\n# BSD\nsudo chsrc set freebsd\nsudo chsrc set openbsd\nsudo chsrc set netbsd\n```\n\n\u003cbr\u003e\n\n## 软件\n\n```bash\nchsrc set winget\nchsrc set brew      | homebrew\nchsrc set cocoapods | cocoa | pod\nchsrc set dockerhub | docker\nchsrc set flathub   | flatpak\nchsrc set nix\nchsrc set guix\nchsrc set emacs  | elpa\nchsrc set tex    | ctan | latex | texlive | miktex\nchsrc set conda  | anaconda\n```\n\n\u003cbr\u003e\n\n## 📝 许可证\n\n- `chsrc` 主程序采用 `GPL-3.0-or-later` 许可证，保证该软件的永久自由\n- `xy.h` 使用 `MIT` 许可证，保证该库可以在尽可能多的情况下复用\n\n\u003cbr\u003e\n\n## ❤️ 致谢\n\n感谢各个镜像站提供的优质免费镜像服务\n1. [mirror.c](./src/framework/mirror.c) 包含了通用的镜像站信息\n2. 各个recipe内部定义的专用镜像站\n\n另外特别感谢以下组织或项目:\n\n1. [MirrorZ 教育网镜像站](https://help.mirrors.cernet.edu.cn/)\n2. [清华大学 Tuna](https://mirrors.tuna.tsinghua.edu.cn/)\n3. [上海交通大学软件源镜像服务](https://mirrors.sjtug.sjtu.edu.cn/)\n4. [中国科学技术大学 Linux 用户协会](https://github.com/ustclug)\n5. [Thanks Mirror 项目](https://github.com/eryajf/Thanks-Mirror) by [@eryajf](https://github.com/eryajf)\n\n\u003cbr\u003e\n\n## 🚀 赞赏支持\n\n你是否因为使用 `chsrc` 而节省了时间和精力 or whatever?\n\n\u003cimg src=\"https://raw.githubusercontent.com/ccmywish/support-my-oss-work/main/wechat.png\" alt=\"wechat-reward\" style=\"width:300px;\"/\u003e\n\n\u003cbr\u003e\n\n\n\n[@Aaron-212]:      https://github.com/Aaron-212\n[@chenrui333]:     https://github.com/chenrui333\n[@niheaven]:       https://github.com/niheaven\n[@Gn3po4g]:        https://github.com/Gn3po4g\n[@Jerry-Terrasse]: https://github.com/Jerry-Terrasse\n[@ccmywish]:       https://github.com/ccmywish\n[@Efterklang]:     https://github.com/Efterklang\n[@wickdynex]:      https://github.com/wickdynex\n[@YU-7]:           https://github.com/YU-7\n\n[issue#98 on GitHub]: https://github.com/RubyMetric/chsrc/issues/98\n","funding_links":["https://github.com/ccmywish/support-my-oss-work"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frubymetric%2Fchsrc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frubymetric%2Fchsrc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frubymetric%2Fchsrc/lists"}