全平台通用換源工具與框架chsrc
,目標支援Linux, Windows (MSYS2, Cygwin), macOS, BSD 等盡可能多的作業系統環境,龍芯、飛騰、RISC-V 等盡可能多的CPU 。
我們使用C99來完成上述目標。我們並沒有使用Python 或JS 等解釋語言,因為一個簡單的換源工具,不應該強行塞給使用者一個龐大的解釋器和數十、數百MB 其他檔案。
本軟體為自由軟體,SDPX 軟體授權為GPL-3.0-or-later and MIT
Note
chsrc
可換源60+ 目標。每個人僅僅貢獻和維護自己熟悉的部分,回報是得到其他所有領域專家的幫助。歡迎對GitHub、Gitee 協作不熟悉的人以此為契機學習參與貢獻, 歡迎任何程式設計初學者參與貢獻,作者@ccmywish 可提供一定的貢獻指導
Tip
chsrc
不僅是命令列工具,同時也是一個換源框架,它甚至讓你能夠在不了解C語言的情況下編寫出新的換源方法(recipe)。
立刻為一個新軟體添加換源方法! Write A Recipe Even If You Don't Know C
挑戰清單:
[HELP] 提供預設來源位址,如Ubuntu,Debian,Go等的預設來源URL,幫助我們進行chsrc reset
[Challenge] 編寫統一安裝的shell 和PowerShell 腳本: 已由@Efterklang 與@xuan 完成
[Challenge] CentOS (Stream) Recipe
https://github.com/RubyMetric/chsrc/wiki
https://github.com/RubyMetric/chsrc/discussions
Important
若透過下述手動方式安裝,則會下載到目前目錄,可直接透過./chsrc
執行
可透過scoop
安裝,感謝@Gn3po4g 與@niheaven
$ scoop install chsrc
可透過PowerShell
腳本一鍵下載最新版二進位文件
$ iwr -useb "https://chsrc.run/windows" | iex
或手動下載二進位文件,這是最新版,往往比scoop
提供的更新,適用於修復Bug、添加新功能後及時使用,以及未安裝scoop
時
# x64curl -L https://gitee.com/RubyMetric/chsrc/releases/download/pre/chsrc-x64-windows.exe -o chsrc.exe# x86curl -L https://gitee.com/RubyMetric/chsrc/ releases/download/pre/chsrc-x86-windows.exe -o chsrc.exe
支持AUR
,可透過yay
安裝,感謝@Jerry-Terrasse
# AUR$ yay -S chsrc-bin # Binary from GitHub Release$ yay -S chsrc-git # Build from the latest main branch (stable)$ yay -S chsrc # Build from GitHub Release
可透過shell
腳本一鍵安裝最新版,感謝@Efterklang 與@xuan(待用戶測試,可在issue#98 on GitHub 回饋)
# 非root使用者預設安裝至~/.local/bin$ curl https:/chsrc.run/posix | bash# root使用者預設安裝至/usr/local/bin$ curl https:/chsrc.run/posix | sudo bash # 使用-d 指定目錄安裝$ curl https:/chsrc.run/posix | bash -s -- -d ./# 使用-l en 輸出英文$ curl https:/chsrc.run/posix | bash -s -- -l en
可手動下載二進位安裝
# x64curl -L https://gitee.com/RubyMetric/chsrc/releases/download/pre/chsrc-x64-linux -o chsrc; chmod +x ./chsrc# aarch64curl -L https://gitee.com/RubyMetric /chsrc/releases/download/pre/chsrc-aarch64-linux -o chsrc; chmod +x ./chsrc# riscv64curl -L https://gitee.com/RubyMetric/chsrc/releases/download/pre/chsrc-riscv64- linux -o chsrc; chmod +x ./chsrc# armv7curl -L https://gitee.com/RubyMetric/chsrc/releases/download/pre/chsrc-armv7-linux -o chsrc; chmod +x ./chsrc
可透過homebrew
安裝,感謝@Aaron-212 與@chenrui333
$ brew install chsrc
可透過shell
腳本安裝最新版,感謝@Efterklang 與@xuan(待macOS用戶測試,可在issue#98 on GitHub 回饋)
# 非root使用者預設安裝至~/.local/bin$ curl https:/chsrc.run/posix | bash# root使用者預設安裝至/usr/local/bin$ curl https:/chsrc.run/posix | sudo bash # 使用-d 指定目錄安裝$ curl https:/chsrc.run/posix | bash -s -- -d ./# 使用-l en 輸出英文$ curl https:/chsrc.run/posix | bash -s -- -l en
或手動下載二進位文件,這是最新版,往往比homebrew
提供的更新,適用於修復Bug、添加新功能後及時使用
# arm64/aarch64curl -L https://gitee.com/RubyMetric/chsrc/releases/download/pre/chsrc-aarch64-macos -o chsrc; chmod +x ./chsrc# x64curl -L https://gitee.com /RubyMetric/chsrc/releases/download/pre/chsrc-x64-macos -o chsrc; chmod +x ./chsrc
$ git clone https://gitee.com/RubyMetric/chsrc.git; cd chsrc $ clang -Iinclude src/chsrc-main.c -o chsrc
使用: chsrc[options] [target] [mirror]help # 列印此幫助,或h, -h, --helpissue # 查看相關issuelist (或ls, 或l) # 列出可用鏡像來源,和可換源目標list mirror/target # 列出可用鏡像來源,或可換源目標list os/lang/ware # 列出可換源的作業系統/程式語言/軟體measure # 對該目標所有來源測速cesu list # 查看該目標可用來源與支援功能get # 查看該目標目前來源的使用情況set # 換源,自動測速後挑選最快來源set first # 換源,使用維護團隊測速第一的來源set # 換源,指定使用某鏡像站(透過list指令查看)set https://url # 換源,用戶自訂來源URLreset # 重置,使用上游預設使用的來源選項: -dry # Dry Run,模擬換源過程,指令僅列印並不運作-local # 僅對某項目而非全域換源(僅部分軟體如bundler,pdm支援)-ipv6 # 使用IPv6測速-en(glish) # 使用英文輸出-no-color # 無色輸出
自動測速,尋找最快者,換源 $ chsrc set ruby 不想自動測速的時候,可使用維護團隊測試的最快鏡像站 $ chsrc set ruby first 先列出可用的鏡像站,然後選擇其一,如使用 RubyChina 作為鏡像站 $ chsrc ls ruby $ chsrc set ruby rubychina 若您有自己的鏡像位址,使用自訂URL $ chsrc set ruby https://gems.ruby-china.com/ 對支援 *專案級* 換源的目標,可以避免全域(*系統級* 或 *用戶級*)換源 $ chsrc set -local bundler $ chsrc set -local pdm
chsrc set ruby|rb|gem|bundler|rubygems chsrc set python | py | pypi # 同時換 pip, poetry 和 pdm 這3個套件管理器,也可以3個獨立換源 chsrc set pip chsrc set poetry chsrc set pdm chsrc set node | nodejs # 同時換 npm, yarn 和 pnpm 這3個套件管理器,也可以3個獨立換源 chsrc set npm chsrc set yarn chsrc set pnpm chsrc set nvm chsrc set bun chsrc set perl | cpan chsrc set php | composer chsrc set lua | luarocks chsrc set rust | cargo | crate chsrc set rustup chsrc set go chsrc set java | maven | mvn | gradle chsrc set clojure | clojars chsrc set dart | pub chsrc set flutter chsrc set haskell | hackage | cabal | stack chsrc set ocaml | opam# 同時會為 bioconductor 換源chsrc set r | cran chsrc set julia
sudo chsrc set ubuntu sudo chsrc set linuxmint | mint sudo chsrc set debian sudo chsrc set fedora sudo chsrc set suse | opensuse sudo chsrc set kali sudo chsrc set arch sudo chsrc set archlinuxcn sudo chsrc set manjaro sudo chsrc set gentoo sudo chsrc set rocky | rockylinux sudo chsrc set alma | almalinux sudo chsrc set alpine sudo chsrc set void | voidlinux sudo chsrc set solus sudo chsrc set ros | ros2 sudo chsrc set trisquel sudo chsrc set lite | linuxlite sudo chsrc set raspi | raspberrypi sudo chsrc set armbian sudo chsrc set openwrt sudo chsrc set openeuler sudo chsrc set openanolis | anolis sudo chsrc set openkylin sudo chsrc set deepin chsrc set msys2 | msys# BSDsudo chsrc set freebsd sudo chsrc set openbsd sudo chsrc set netbsd
chsrc set winget chsrc set brew | homebrew chsrc set cocoapods | cocoa | pod chsrc set dockerhub | docker chsrc set flathub | flatpak chsrc set nix chsrc set guix chsrc set emacs | elpa chsrc set tex | ctan | latex | texlive | miktex chsrc set conda | anaconda
請安裝好gcc
或clang
和make
以及curl
# 使用 dev 分支開發git clone https://gitee.com/RubyMetric/chsrc.git -b dev make # 預設使用 cc 編譯make CC=clang # 使用 clang 編譯make CC=gcc # 使用 gcc 編譯make test # 測試指令make test-xy # 測試 xy.hmake clean
chsrc
主程式採用GPL-3.0-or-later
許可證,保證軟體的永久自由
xy.h
使用MIT
許可證,保證該函式庫可以在盡可能多的情況下重複使用
感謝各鏡像站提供的優質免費鏡像服務
source.h 包含了通用的鏡像站訊息
各個recipe內部定義的專用鏡像站
另外特別感謝以下組織或專案:
MirrorZ 教育網鏡像站
清華大學Tuna
上海交通大學軟體來源鏡像服務
中國科學技術大學Linux 使用者協會
Thanks Mirror 專案by @eryajf
你是否因為使用chsrc
而節省了時間和精力or whatever?