- 开发工具
- 桌面应用
【免费下载链接】desktop
Fork of GitHub Desktop to support various Linux distributions
本指南基于当前仓库(desktop的 Linux 支持分叉)的官方 README,系统讲解该分叉的定位、三种发布格式(AppImage / Debian / RPM)、Debian/Ubuntu 与 Red Hat 系发行版的软件源配置与安装命令、Arch Linux 等跨发行版方案,并结合仓库源码解释打包链路与已知问题的排查方法。读完本文,你将掌握在主流 Linux 发行版上正确配置软件源、安装并更新 GitHub Desktop,以及独立处理白屏、组织仓库访问受限等典型故障的完整能力。
仓库定位:为 Linux 而生
当前仓库是上游desktop/desktop项目之上叠加特定补丁的 Linux 分叉,目标是让原本主要面向 Windows/macOS 的 GitHub Desktop 能够在各类 Linux 发行版上正常使用。README 中明确给出了技术栈:
- 基于 Electron 的桌面应用框架;
- 主体使用TypeScript编写;
- 界面层使用React。
这些信息在仓库中可以得到印证:应用包元数据 app/package.json 声明了name: github-desktop、productName: GitHub Desktop,并依赖dugite(Git 桥接库)、keytar-forked(系统密钥环访问)等与 Git 操作、凭据存储密切相关的组件;构建脚本与依赖清单见 package.json。换句话说,这是一个"官方产品、社区维护 Linux 版"的典型模式,安装与使用方式也因此与 Windows/macOS 版有所差异。
发布物与软件源架构
该分叉会为各 Linux 发行版发布三类安装产物:
| 格式 | 后缀 | 适用场景 |
|---|---|---|
| AppImage | .AppImage | 跨发行版免安装运行,单文件便携 |
| Debian | .deb | Debian / Ubuntu 及衍生系统 |
| RPM | .rpm | Red Hat / CentOS / Fedora / OpenSUSE 等 RPM 系系统 |
从源码看,Linux 打包在 script/package.ts 的packageLinux()中完成,整个链路依次为:
- 修正
chrome-sandbox的权限位(chmod 0o4755),确保 Electron 沙箱在 Linux 下正常工作; - 调用 packageElectronBuilder 通过
electron-builder产出AppImage(其目标与 MIME 声明配置见 script/electron-builder-linux.yml,其中注册了x-scheme-handler/x-github-client、x-scheme-handler/x-github-desktop-auth等协议处理器,用于拉起 OAuth 登录流程); - 调用 packageDebian 生成
.deb包; - 调用 packageRedhat 生成
.rpm包; - 最后为所有安装产物生成 SHA-256 校验和(
checksums.txt及每个文件的.sha256文件)。
值得注意的依赖细节:.deb包声明了libcurl3 | libcurl4、libsecret-1-0、gnome-keyring三个运行时依赖(见 script/package-debian.ts),.rpm包则声明(libcurl or libcurl4)、libsecret、gnome-keyring(见 script/package-redhat.ts)。这意味着安装后系统必须具备这些库与 GNOME 密钥环服务,否则登录凭据可能无法保存。
Debian / Ubuntu:配置 APT 软件源
Debian/Ubuntu 用户有两个 APT 源可供选择,二者均基于本仓库的 release 自动生成,只需添加其一(两个源均托管在美国,选择延迟更低或网络可达性更好的即可)。
选项一:@shiftkey 软件源
wget -qO - https://apt.packages.shiftkey.dev/gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/shiftkey-packages.gpg > /dev/null sudo sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/shiftkey-packages.gpg] https://apt.packages.shiftkey.dev/ubuntu/ any main" > /etc/apt/sources.list.d/shiftkey-packages.list'选项二:@mwt 镜像源
wget -qO - https://mirror.mwt.me/shiftkey-desktop/gpgkey | gpg --dearmor | sudo tee /usr/share/keyrings/mwt-desktop.gpg > /dev/null sudo sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/mwt-desktop.gpg] https://mirror.mwt.me/shiftkey-desktop/deb/ any main" > /etc/apt/sources.list.d/mwt-desktop.list'两条命令分别完成两件事:导入并去装甲 GPG 公钥(dearmor 后以 keyring 文件形式存放),以及写入带signed-by与arch=amd64约束的源定义。其中signed-by指定校验该源所使用的 keyring 路径,是 Debian 11+ 安全推荐的源配置写法;arch=amd64限定仅从该源拉取 amd64 架构包。
安装
源配置完成后执行:
sudo apt update && sudo apt install github-desktopapt update会读取新源并刷新索引,随后即可安装名为github-desktop的软件包。后续升级通过常规sudo apt upgrade即可自动获得新版本。
Red Hat / CentOS / Fedora:配置 RPM 软件源
RPM 系同样提供两个源,二选一即可。安装命令因包管理器而异:yum(老版本 RHEL/CentOS)、dnf(Fedora/RHEL 8+)、zypper(OpenSUSE/SUSE)。
选项一:@shiftkey 软件源
sudo rpm --import https://rpm.packages.shiftkey.dev/gpg.key sudo sh -c 'echo -e "[shiftkey-packages]\nname=GitHub Desktop\nbaseurl=https://rpm.packages.shiftkey.dev/rpm/\nenabled=1\ngpgcheck=1\nrepo_gpgcheck=1\ngpgkey=https://rpm.packages.shiftkey.dev/gpg.key" > /etc/yum.repos.d/shiftkey-packages.repo'选项二:@mwt 镜像源
sudo rpm --import https://mirror.mwt.me/shiftkey-desktop/gpgkey sudo sh -c 'echo -e "[mwt-packages]\nname=GitHub Desktop\nbaseurl=https://mirror.mwt.me/shiftkey-desktop/rpm\nenabled=1\ngpgcheck=1\nrepo_gpgcheck=1\ngpgkey=https://mirror.mwt.me/shiftkey-desktop/gpgkey" > /etc/yum.repos.d/mwt-packages.repo'这里的rpm --import导入 GPG 密钥,repo 文件中gpgcheck=1表示校验包签名,repo_gpgcheck=1表示校验仓库元数据签名,gpgkey指向校验所用公钥,baseurl为仓库地址。
安装
# 若使用 yum 作为包管理器 sudo yum install github-desktop # 若使用 dnf 作为包管理器 sudo dnf install github-desktop # 若使用 zypper 作为包管理器 sudo zypper ref && sudo zypper in github-desktopzypper ref刷新仓库索引后再执行安装,与 APT 的apt update作用一致。
OpenSUSE:RPM 源配置
OpenSUSE 使用与上述 RPM 相同的 GPG 密钥与仓库内容,仅将 repo 文件写入/etc/zypp/repos.d/目录(zypper 的仓库目录)。
选项一:@shiftkey 软件源
sudo rpm --import https://rpm.packages.shiftkey.dev/gpg.key sudo sh -c 'echo -e "[shiftkey-packages]\nname=GitHub Desktop\nbaseurl=https://rpm.packages.shiftkey.dev/rpm/\nenabled=1\ngpgcheck=1\nrepo_gpgcheck=1\ngpgkey=https://rpm.packages.shiftkey.dev/gpg.key" > /etc/zypp/repos.d/shiftkey-packages.repo'选项二:@mwt 镜像源
sudo rpm --import https://mirror.mwt.me/shiftkey-desktop/gpgkey sudo sh -c 'echo -e "[mwt-packages]\nname=GitHub Desktop\nbaseurl=https://mirror.mwt.me/shiftkey-desktop/rpm\nenabled=1\ngpgcheck=1\nrepo_gpgcheck=1\ngpgkey=https://mirror.mwt.me/shiftkey-desktop/gpgkey" > /etc/zypp/repos.d/mwt-packages.repo'安装
sudo zypper ref && sudo zypper in github-desktop其他发行版与跨发行版方案
对于不在上述范围内的发行版,README 提供了多种替代安装途径:
Arch Linux(AUR)
Arch 用户可从 AUR 安装github-desktop-bin包。前提条件:系统必须安装gnome-keyring,且其守护进程需在登录时或 X server 启动时拉起。通常显示管理器(Display Manager)会自动处理;若未自动启动,参考 Arch Wiki 中"在 GNOME 之外使用密钥环"的说明,否则会出现无法保存登录凭据的问题。这与前面.deb/.rpm包中显式声明gnome-keyring依赖的原因一致——GitHub Desktop 通过系统密钥环(keytar)存取 OAuth 令牌。
Flatpak 与 AppImage
GitHub Desktop 还有跨发行版的Flatpak包(flathub 上的io.github.shiftey.Desktop)以及AppImage格式(可在 AppImage 目录中检索GitHubDesktop)。AppImage 无需安装、解包即用,适合不愿引入软件源的场景;Flatpak 则提供沙箱隔离与统一更新机制。
deb-get
Debian/Ubuntu 用户还可以借助deb-get(一个面向第三方 GitHub release 的 apt 前端工具)直接从本仓库安装:
deb-get install github-desktopdeb-get会抓取仓库发布页中的.deb产物并交由本地包管理,适合希望绕过固定源、直接跟随 release 更新的场景。
数据目录与日志
安装方式不同,GitHub Desktop 的用户数据目录也有所差异(详见 docs/installation.md):
- Linux(AppImage / Debian / RPM):
~/.config/GitHub Desktop/——存放用户级配置数据,首次启动时自动创建; - 常规运行日志位于数据目录下的
logs子目录,按日期命名,格式为YYYY-MM-DD.desktop.production.log; - 安装/更新过程的日志则由更新框架单独管理,排查安装失败时可优先查看对应日志。
已知问题与排查
README 指向了完整的 已知问题文档,其中 Linux 相关条目(见 docs/known-issues.md#linux)最常被用户遇到,这里摘录四条并给出处置方法:
1. PackageCloud 软件源已停用
旧的 PackageCloud feed 已关闭。若安装或更新时出现与其相关的报错,应清理旧配置,改用上文的新源:
# APT 配置清理 sudo rm /etc/apt/trusted.gpg.d/shiftkey-desktop.asc sudo rm /etc/apt/sources.list.d/packagecloud-shiftkey-desktop.list # RPM 配置清理(示例,按实际路径执行) sudo rm /etc/apt/sources.list.d/packagecloud-shiftkey-desktop.list清理细节可参考 已知问题文档中的 PackageCloud 迁移说明。
2. 启动白屏
Electron 默认启用硬件加速,部分显卡或虚拟化环境(如 Parallels Desktop)下硬件加速不可用,会导致应用启动成功但界面白屏。解决办法:设置环境变量GITHUB_DESKTOP_DISABLE_HARDWARE_ACCELERATION为任意值后重新启动,即可关闭硬件加速。例如:
GITHUB_DESKTOP_DISABLE_HARDWARE_ACCELERATION=1 github-desktop3. 无法访问组织仓库
GitHub Desktop 本质是一个 OAuth 应用,而本分叉使用的开发版 OAuth 应用权限与 Windows/macOS 版不完全一致,具体表现包括"Clone a Repository"视图不显示全部组织仓库、向组织仓库推送时收到通用错误。根因是组织默认开启OAuth App access restrictions,拦截了本分叉所用的 GitHub Desktop 开发应用。解决办法:联系组织管理员在组织设置中批准 GitHub Desktop 开发应用的访问权限(尚未请求过授权的用户需先发起组织审批请求)。
4. Shell 检测异常(卡在 GNOME Terminal)
在非 GNOME 桌面环境下,应用可能无法正确设置 shell 环境,即便在设置中已选择其他终端,启动 shell 时仍可能报cannot read property 'path' of undefined。文档给出的两个临时方案:
- 安装另一个不同的终端,切换到目标终端再切回,最后卸载临时终端以触发环境重写;
- 打开应用开发者工具,逐步检查并修正 shell 设置的 JS 调用。
许可证与商标声明
本仓库以 MIT 许可证 授权,但MIT 授权不涵盖 GitHub 的商标(包括 logo 设计)。GitHub 保留其商标与版权的全部权利;logo 资源位于 app/static/logos 目录。使用 GitHub 官方 logo 时需遵守 GitHub 的 logo 使用指南。
小结
围绕"Linux 上如何安装 GitHub Desktop",本文从仓库定位出发,覆盖了 APT、RPM、zypper 三种包管理器的完整源配置命令,以及 AUR、Flatpak、AppImage、deb-get 四条替代路径,并结合 script/package.ts 等源码解释了安装包从构建到校验的产出过程,最后给出四类高频问题的处置办法。对绝大多数 Linux 用户而言,按发行版选择对应软件源执行安装即可;若遇到凭据无法保存、启动白屏或组织仓库不可见,本文的排查清单应当能覆盖常见场景。
- 开发工具
- 桌面应用
【免费下载链接】desktop
Fork of GitHub Desktop to support various Linux distributions
相关推荐
Powerline Linux 安装实战指南:发行版软件包、pip 安装与字体配置
Powerline Linux 安装实战指南:发行版软件包、pip 安装与字体配置 Powerline 是一个用 Python 编写的状态栏/提示符框架,为 v
开发工具CLIMageia Linux安装GitHub Desktop终极指南:RPM包安装教程
Mageia Linux安装GitHub Desktop终极指南:RPM包安装教程 GitHub Desktop是GitHub官方推出的桌面版Git客户端,为开
开发工具桌面应用CentOS 8终极安装指南:快速上手GitHub Desktop Linux版RPM包
CentOS 8终极安装指南:快速上手GitHub Desktop Linux版RPM包 想要在CentOS 8上体验GitHub Desktop的强大功能吗?
开发工具桌面应用
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考