您现在的位置是:焦点 >>正文

github怎么自行源码构建

焦点679人已围观

简介想自己从源码构建 GitHub,第一步不是 clone 代码,而是先搞清楚你到底要构建哪个东西。GitHub 这个平台本身是闭源的,你拿不到 github.com 的完整源码。能构建的是 GitHub ...

想自己从源码构建 GitHub,自行第一步不是源码 clone 代码,而是构建先搞清楚你到底要构建哪个东西。GitHub 这个平台本身是自行闭源的,你拿不到 github.com 的源码完整源码。能构建的构建是 GitHub 开源出来的那些组件,比如 GitHub Enterprise Server 的自行部分工具链、GitHub CLI、源码GitHub Desktop,构建还有各种 Actions runner。自行很多人第一次搜“github 源码构建”会懵,源码因为官方仓库里根本没有一个叫 github 的构建完整项目。

拿 GitHub CLI 举例。自行这玩意儿用 Go 写的源码,构建起来最省心。构建你机器上得有 Go 1.21 以上,然后:

git clone https://github.com/cli/cli.git cd cli make 

对,就三步。make 会自动跑测试、编译二进制,扔到 bin/gh。我第一次跑的时候卡在依赖下载上,因为 Go 模块代理默认走 proxy.golang.org,国内网络经常抽风。加个环境变量就行:

export GOPROXY=https://goproxy.cn,direct 

再 make,顺利通过。编译出来的 gh 大概 30MB 左右,直接替换系统里装的官方版本也没问题。

GitHub Desktop 麻烦一些。它是 Electron 应用,Node.js 和 Python 都得有。Python 是用来跑构建脚本的,Node 版本要求比较死,看 package.json 里的 engines 字段。我上次构建时 Node 18 能过,Node 20 反而报错,因为某些 native 模块还没跟上。步骤大概是:

git clone https://github.com/desktop/desktop.git cd desktop npm install npm run build:dev 

但 npm install 那步容易挂。Electron 的二进制包从 GitHub Releases 下载,国内速度你懂的。解决办法是设镜像:

export ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ 

然后重新 install。构建完用 npm start 能跑起来,但界面里登录 GitHub 账号那步会跳转 OAuth,本地开发环境得自己配 client ID,不然登不进去。这个坑官方文档没怎么提,我是在 issues 里翻到的。

Actions runner 又是另一回事。它主要是 C# 写的,需要 .NET SDK。构建命令:

git clone https://github.com/actions/runner.git cd runner/src ./dev.sh build 

Windows 上用 dev.cmd。编译出来的 runner 可以注册到自己的仓库当 self-hosted runner。我试过在树莓派上构建,ARM64 的 .NET SDK 装了半天,最后跑起来内存占用 200MB 左右,比官方预编译版稍微大一点,但能用。

几个通用建议。第一,看仓库根目录的 CONTRIBUTING.md 和 docs/,比 README 详细得多。第二,构建失败先看错误日志里有没有网络超时,八成是依赖下载问题。第三,别在 Windows 上构建 Unix 工具链的东西,WSL2 能省很多事。第四,如果只是用,直接下 release 二进制,别折腾源码。构建源码适合你想改代码、调试、或者给项目提 PR 的场景。

我自己的习惯是,clone 下来先跑一遍官方构建命令,记录所有报错,再逐个解决。这样下次换机器构建时,直接照着自己的笔记走,十分钟搞定。源码构建这事,第一次最痛苦,后面就是复制粘贴。

Tags:

相关文章

  • 免登入网页小游戏

    焦点

    打开浏览器,输入网址,回车。三秒后,一个俄罗斯方块界面直接铺满屏幕——没有注册框,没有“记住密码”,连个“游客登录”按钮都懒得放。这就是免登入网页小游戏最狠的地方:它把“开始玩”变成了唯一动作。 这类 ...

    【焦点】

    阅读更多
  • 诈骗视频下载

    焦点

    上个月我邻居老周差点把养老钱转给一个“警察”。对方发来的“逮捕令”视频里,赫然印着他的身份证照片和家庭住址,画质模糊但公章鲜红,背景音还有键盘敲击声——后来才知道,那声音是骗子故意录进去的,就为了营造 ...

    【焦点】

    阅读更多
  • 基于java的疫情防控管理系统

    焦点

    基于Java的疫情防控管理系统,到底解决了什么实际问题? 2022年春天,我在某个社区做志愿者,手里攥着一沓纸质登记表,表格上密密麻麻写着姓名、身份证号、体温、行程码截图编号。一天下来,光录入Exc ...

    【焦点】

    阅读更多


友情链接