☰
Ubuntu 老版本 GitKraken 6.5.1 安装与依赖沙箱修复指南
2026/10/29 11:17:38 网站建设 项目流程

简介:GitKraken v6.5.1 Ubuntu 版是一份面向 Linux 开发者、Git 初学者及需要图形化版本控制工具团队成员的离线客户端压缩包,定位于在 Ubuntu 16.04 及以上系统中提供免订阅的 GitKraken 免费版最后迭代。压缩包共 97 个文件,约 101.9MB,内含 Electron 运行时与多语言 pak 资源、node 模块、so 共享库、bin 可执行程序、asar 应用包及 sh 启动脚本等,覆盖界面渲染、依赖运行与本地化支持,目录组织贴近原应用发布结构。已有 2426 人学习下载,说明旧版免费客户端仍有稳定需求。其价值在于通过多面板视图集中呈现本地仓库、远程分支、提交历史与暂存区,借助三向合并工具和可视化差异预览降低冲突处理门槛;分支创建切换、GitHub/GitLab/Bitbucket 集成、自定义快捷键与团队协作功能,也能帮助读者在 Ubuntu 环境完成日常提交、推送、拉取与代码审查,并保留一套可继续使用的旧版工作流。

1. 老工作站重装,指定要 GitKraken-v6.5.1 ubuntu 版本

上个月重装一台跑 Ubuntu 18.04 的老工作站,负责的同学提前打了招呼:只要一个能看提交图的图形客户端,版本点名要 GitKraken-v6.5.1 的 ubuntu 包,不要最新版。理由挺实际——这台机器上的 git 版本偏老,仓库里还有几个历史遗留的子模块,新客户端一打开就报错退出,反倒是 6.5.1 能把提交图正常画出来,点开文件 diff 也不卡。

真正麻烦的地方不在用,而在装。6.5.1 是好几年前的包,依赖里有一批库在现在的软件源里改过名字甚至直接消失,双击 deb 装完,十有八九是图标点下去没反应,连个报错窗口都不给。这篇就把我从零装一遍的过程记下来:环境怎么核对、缺的库怎么补、启动参数怎么加、翻车了去哪儿看日志。

2. 装前把环境列清:Ubuntu 版本、依赖和 6.5.1 的取舍

装老版本客户端,最忌讳的就是拿到 deb 包直接dpkg -i。6.5.1 内嵌的是 4.x 时代的 Electron,它对 glibc、GTK、keyring 这一套的预期,和 Ubuntu 20.04 之后默认给你的东西不是一回事。先把系统底子摸清,后面每一步出错都能对得上号。

2.1 版本对照:18.04、20.04、22.04 各自的坑

我把手上几台机器的情况整理成了一张表,装之前先对一眼,能省掉一半排查时间。注意这里的结论只针对 GitKraken 6.5.1 这个包本身,不代表别的版本。

系统版本装 6.5.1 的难度主要卡点
Ubuntu 16.04低依赖基本都在源里,装完直接能用
Ubuntu 18.04低个别库要开 universe 源,其余顺畅
Ubuntu 20.04中libgnome-keyring0 找不到,需手工补包或改用 libsecret
Ubuntu 22.04中高上面两条之外,chrome-sandbox 权限和 GTK 主题渲染还要额外处理

18.04 是最省心的一档,源里该有的都有,装完基本不用改配置。20.04 开始,libgnome-keyring0这类老库在很多镜像里已经不再提供,apt-get -f install会报「无法修正错误,因为您要求某些软件包保持现状」,这句话是 6.5.1 安装过程中最常见的拦路虎。22.04 还要多一层:Electron 的沙箱辅助程序在新内核上更容易被判权限不对,表现就是启动瞬间闪退。

我的建议很直接:机器本来就能选系统,优先 18.04;系统已经定死不能动,就按后面的手工补依赖流程走,别指望一条命令搞定。

2.2 依赖清单:dpkg 之前先补齐的几组库

6.5.1 的运行库大致分四组:图形栈(GTK、X11 相关)、网络与证书(NSS)、音频与设备(ALSA、XTST)、以及凭据存储(keyring/secret)。缺哪一组,表现完全不一样——缺图形栈是界面起不来,缺 NSS 是登录窗口白屏,缺 keyring 是每次拉代码都弹密码框。

把下面这段存成临时脚本跑一遍,比装完再猜要快得多:

# 一次性检查 6.5.1 依赖的运行库是否齐全 # dpkg -s 只查包状态,不会真的安装,可以放心跑 for p in libgtk-3-0 libnss3 libxss1 libasound2 libxtst6 \ libsecret-1-0 libgconf-2-4 libgnome-keyring0 libappindicator1; do if dpkg -s "$p" >/dev/null 2>&1; then echo "OK $p" else echo "MISS $p" # 缺的包会在下一节集中补 fi done

这段脚本输出的MISS行就是你要补的清单。参数上没有可调项,dpkg -s只是读数据库,不会改动系统。实际用下来,18.04 机器上通常全OK,20.04 会稳定缺libgnome-keyring0,22.04 可能连libgconf-2-4也一起缺。

补齐之前先确认 universe 源是开着的,很多库在这个源里而不是 main:

# 确认 universe 已启用,没启用的话补上再 update sudo add-apt-repository universe -y sudo apt-get update

add-apt-repository这条命令在 18.04 之后都需要software-properties-common,如果提示找不到命令,先sudo apt-get install -y software-properties-common。这一步看着不起眼,但我见过不少「明明源里有包却装不上」的现场,最后都是 universe 没开。

2.3 目录与空间:装到哪儿、配置存哪儿

6.5.1 的 deb 包会把程序主体解到/usr/share/gitkraken/,然后在/usr/bin/gitkraken放一个软链。用户级配置不在这里,而是落在~/.gitkraken/,里面装着账户信息、仓库列表、窗口布局。这个区分很重要:升级或重装程序目录不影响你的仓库列表,但把~/.gitkraken删了,等于把客户端里的所有本地状态清空。

空间上留 1GB 比较稳妥。程序本体几百兆,加上首次启动要解压渲染缓存和索引,紧张的话容易在启动阶段写失败。我一般会顺手看一眼:

# 看根分区剩余空间,低于 2G 就先清理再装 df -h /usr /home du -sh ~/.gitkraken 2>/dev/null

第二条命令在第一次装的时候没有输出,属于正常,~/.gitkraken要等客户端真正启动过一次才会生成。如果你是在重装,那这个目录里的东西就是你的后悔药,删之前先备份。

3. 下载与安装:deb 包落地到 /usr/share/gitkraken

环境核对完,进入实际安装。整个流程四步:拿到包、验包、装包补依赖、修沙箱权限。每一步都有明确的失败信号,照着顺序走,出问题时能立刻定位到是哪一步。

3.1 拿到包并做完整性检查

6.5.1 这个时期官方给 Linux 的是 deb 和 tar.gz 两种,ubuntu 版走 deb 就行。包下载下来别急着装,先确认它没被下坏。我遇到过下载中断导致包里文件缺失的情况,dpkg -i会报一堆莫名其妙的解压错误,其实是包本身的问题。

cd ~/Downloads ls -lh gitkraken-amd64.deb # 记录校验值,方便和内网分发时比对 sha256sum gitkraken-amd64.deb # 读包元信息,确认版本号和架构 dpkg-deb -I gitkraken-amd64.deb | head -20

dpkg-deb -I会把包的控制信息打出来,重点看两处:Version是不是 6.5.1,Architecture是不是 amd64。如果是 i386 而你机器是 x86_64,装上去也跑不起来。sha256sum的输出建议记在部署记录里,同一批机器分发同一个包时,比对一次就能确认大家装的是同一个东西。

3.2 dpkg -i 与 apt-get -f install 的正确顺序

这是整个安装里最容易做错的一步。很多人图省事直接sudo apt install ./gitkraken-amd64.deb,在 18.04 上确实能用,但在 20.04 上遇到源里没有的依赖时,它会直接把事务中止,什么也没装进去,也没留下任何可修复的中间状态。更稳的做法是先用dpkg把包体放进去,再让apt去补依赖。

# 第一步:只解包安装,不处理依赖,缺依赖会报错但不影响已解包内容 sudo dpkg -i gitkraken-amd64.deb # 第二步:让 apt 自动补齐缺失的依赖 sudo apt-get -f install -y # 第三步:复查是否还有半配置状态的包 sudo dpkg -C

dpkg -i报「依赖关系问题,仍处于未配置状态」是预期行为,不用慌,接着跑第二条就行。apt-get -f install的-f是--fix-broken,它会扫描系统里所有依赖不满足的包并尝试修复,所以这一步之后如果还报错,说明缺的库在当前源里确实没有,得走手工补包。

dpkg -C是最后的体检命令,正常情况应该没有任何输出。只要它还在打印gitkraken,就说明包还没配置完,此时点图标是没反应的。

如果卡在libgnome-keyring0上,常见做法是从系统对应的旧版本源里单独取这个 deb 补进来,或者确认 6.5.1 在你这台机器上能不能走libsecret-1-0。判断方法很简单,看apt-cache depends gitkraken里列的是哪个:

# 看包声明的依赖,确认 keyring 到底是哪一条 apt-cache depends gitkraken

3.3 chrome-sandbox 权限与首次启动

依赖补齐之后,很多人在这一步翻车:命令行敲gitkraken回车,终端刷出一行The SUID sandbox helper binary was found, but is not configured correctly,然后进程直接退出。这不是包坏了,是 Electron 的沙箱辅助程序权限不对。

# 沙箱程序必须属于 root 且带 SUID 位,两步都要做 sudo chown root:root /usr/share/gitkraken/chrome-sandbox sudo chmod 4755 /usr/share/gitkraken/chrome-sandbox # 确认权限结果,期望是 -rwsr-xr-x ls -l /usr/share/gitkraken/chrome-sandbox

4755里的 4 就是 SUID 位,缺了它沙箱起不来;chown root:root也不能省,属主不对同样会被拒绝。这两条命令每次重装或升级后都要重跑一遍,因为包安装过程会把权限重置回去。

实在搞不定权限,还有个退路是加--no-sandbox启动,功能上能用,但安全边界会弱一些,我一般只在内网测试机上这么干,不写进正式环境的启动脚本。

# 临时绕过沙箱启动,仅用于确认「是不是沙箱的问题」 gitkraken --no-sandbox

如果加了--no-sandbox就能起来,那问题百分之百在权限上,回头把 4755 修好再正常启动。

3.4 锁版本:别让一次 update 把 6.5.1 换掉

装好之后还有一件事必须做——锁住版本。这台机器的整个选择前提就是「必须是 6.5.1」,一旦执行apt-get upgrade,它会被更高的版本替换掉,之前的适配工作全白费。

# 锁定版本,后续 upgrade 不会动它 sudo apt-mark hold gitkraken # 确认锁定状态,输出里应该能看到 gitkraken apt-mark showhold apt-cache policy gitkraken

apt-mark hold只是给包打个标记,不占空间也不影响运行。apt-cache policy的输出里,Installed应该是 6.5.1,Candidate可能更高,看到候选版本高于已装版本不用紧张,那只是说明锁生效了。将来确实要升级,sudo apt-mark unhold gitkraken解锁即可。

4. 配置:账户、Git 身份、SSH 密钥与凭据存储

程序装上了,但此时它还只是个空壳。真正决定你日常用起来顺不顺的,是接下来这几项配置。6.5.1 的界面配置项不算多,绝大多数问题都出在它读取的是系统级 git 配置,而不是客户端里另存一份。

4.1 全局 Git 身份与默认分支

GitKraken 启动时会去读~/.gitconfig,如果user.name和user.email是空的,第一次提交会被拦下来,界面上给的理由还挺含糊。装完客户端第一件事就是把这几个值写进去。

# 全局身份,提交记录里显示的就是这两项 git config --global user.name "你的名字" git config --global user.email "you@example.com" # 新仓库默认分支名,避免和团队规范打架 git config --global init.defaultBranch main # 跨平台协作时行尾统一,Linux 侧用 input git config --global core.autocrlf input # 看一眼写到了哪个文件里 git config --list --show-origin | grep -E "user|core"

--show-origin这个参数值得养成习惯,它会把每个配置项的来源文件打出来。多台机器、多个身份混用时,经常出现「明明改了却没生效」,八成是被某个仓库级的.git/config覆盖了,一眼就能看出来。

core.autocrlf input的含义是提交时把 CRLF 转成 LF,检出时不转。团队里如果全是 Linux 和 macOS,这个值最省事;如果有 Windows 同事,需要和他们对齐,别一边input一边true,否则 diff 里全是行尾噪音。

4.2 SSH 密钥与多账号 config

图形客户端里点「克隆」很方便,但底层还是走 SSH 或 HTTPS。用 SSH 的话,密钥别用默认的id_rsa,给它一个能认出用途的名字,将来一台机器上挂多个身份时不会打架。

# 生成专用密钥,ed25519 比 rsa 短且够用 ssh-keygen -t ed25519 -C "workstation-gitkraken" -f ~/.ssh/id_ed25519_gitkraken # 启动 agent 并加载,避免每次操作都问口令 eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519_gitkraken

-C后面的注释只是给人看的标签,写在公钥末尾,方便你在远程仓库的密钥列表里认出这是哪台机器。-f指定文件名,不指定就会落到默认路径并可能覆盖已有密钥。ssh-add之后如果提示Could not open a connection to your authentication agent,说明eval那一步没在同一终端里执行,重来一次即可。

多身份的话,在~/.ssh/config里写一条别名,比在客户端里逐个改远端地址可靠得多:

Host git-work HostName <远程仓库域名> User git IdentityFile ~/.ssh/id_ed25519_gitkraken IdentitiesOnly yes

IdentitiesOnly yes是关键,不加的话 ssh 会把 agent 里所有密钥挨个试一遍,某些服务端在尝试次数超限后直接断开,表现就是「密钥明明对的却认证失败」。配好之后用别名测一下连通性,返回欢迎语就说明链路通了。

4.3 凭据存储:libsecret 与 keyring 的选择

HTTPS 方式拉代码时,客户端需要把账号密码存到某个地方,否则每次推送都弹框。6.5.1 支持走后端 keyring,这里就是前面依赖清单里为什么盯着libsecret-1-0和libgnome-keyring0的原因。

# 优先走 libsecret,现代桌面环境都自带 git config --global credential.helper libsecret # 确认后端库在位 dpkg -s libsecret-1-0 | grep -E "Status|Version"

credential.helper libsecret通过 D-Bus 和桌面钥匙环通信,优点是不落明文。如果这台机器根本没有桌面会话(比如通过远程终端操作),钥匙环服务起不来,那就退回store,代价是密码以明文存在~/.git-credentials里,权限必须收紧:

# 无桌面环境时的退路,务必限制文件权限 git config --global credential.helper store chmod 600 ~/.git-credentials 2>/dev/null

我的取舍是:有图形界面就用 libsecret,没有就别在服务器上配凭据助手,改用部署密钥或者只读令牌,从源头上避免明文密码躺在磁盘上。

4.4 界面、缩放与启动参数

6.5.1 在高分屏上默认缩放经常不合适,字小得像蚂蚁。这不是 bug,是 Electron 对 X11 缩放的处理方式问题。可以通过环境变量或者启动参数调。

# 强制 2 倍缩放,适合 4K 屏 GDK_SCALE=2 gitkraken # 显卡驱动不匹配导致界面花屏时,关掉 GPU 渲染 gitkraken --disable-gpu # 两个一起用 GDK_SCALE=2 gitkraken --disable-gpu

GDK_SCALE影响的是整个 GTK 应用,值只能是整数,1.5 这种小数在部分版本上会被截断成 1。--disable-gpu是把渲染丢回 CPU,界面会稍微迟滞一点,但花屏、白块、拖动残影这类问题基本都能压下去,尤其常见于虚拟机里没装增强工具的机器。

想把这些参数固化下来,别去改/usr/bin/gitkraken那个软链,建一个本地桌面入口更干净:

# 复制一份桌面入口到用户目录再改,不动系统文件 cp /usr/share/applications/gitkraken.desktop ~/.local/share/applications/ sed -i 's|^Exec=.*|Exec=env GDK_SCALE=2 gitkraken --disable-gpu %U|' \ ~/.local/share/applications/gitkraken.desktop

改完~/.local/share/applications下的这份优先级高于系统那份,重装客户端也不会被覆盖。sed那行是把Exec=整行替换掉,%U保留着,它是桌面环境传 URL 的占位符,删了会导致从文件管理器里点仓库链接失效。

5. 避坑与排查:六个翻车现场的记录

下面这几条都是我在不同机器上真碰到的,按现象、原因、解决三段记。装 6.5.1 遇到的问题,九成跑不出这个范围。

5.1 安装阶段的三个坑

坑一:dpkg -i报依赖错误,apt-get -f install又报「保持现状」

现象是两条命令来回跑,dpkg -C始终显示 gitkraken 处于未配置状态,界面图标点了没反应。原因是 6.5.1 声明的某个依赖(多数情况是libgnome-keyring0)在当前系统源里已经不存在,apt 无法通过正常途径满足依赖,于是选择不动。解决办法是先确认到底缺哪个:apt-cache depends gitkraken | grep -i 依赖缺失项,然后从对应旧版本系统的源里单独下载那个 deb,sudo dpkg -i装进去,再回到apt-get -f install。补完之后一定跑一次sudo dpkg -C,没有输出才算真正装完。

坑二:装完提示成功,但/usr/bin/gitkraken不存在

现象是dpkg -l gitkraken显示ii,可which gitkraken空空如也。原因是之前装过 tar.gz 版本,手工在/usr/local/bin建过同名文件或坏掉的软链,deb 安装时检测到冲突跳过了创建。解决办法是先ls -l /usr/bin/gitkraken /usr/local/bin/gitkraken看清有没有残留,把/usr/local/bin下那个旧的手工版本删掉,再sudo apt-get install --reinstall gitkraken重装一次。/usr/local/bin在 PATH 里的优先级高于/usr/bin,残留文件会一直挡在前面。

坑三:apt-get upgrade之后客户端变了样

现象是某天开机发现界面全变,版本号已经不是 6.5.1。原因是安装时没锁版本,系统例行更新把它升到了最新。解决办法是装完立刻sudo apt-mark hold gitkraken,已经被升级的机器先sudo apt-get install gitkraken=6.5.1回退(版本号要写全),再 hold 住。回退前建议把~/.gitkraken备份一份,高版本写过配置之后,低版本读起来可能不认。

5.2 启动与使用阶段的三个坑

坑四:命令行启动一闪而过,终端只有一行 SUID sandbox 报错

现象是gitkraken回车后立刻回到提示符,图形界面完全不出现。原因是/usr/share/gitkraken/chrome-sandbox的属主或 SUID 位不对,这在每次重装、每次系统大版本升级后都会复现。解决办法是sudo chown root:root加sudo chmod 4755两条一起执行,然后ls -l确认是-rwsr-xr-x。只想先确认判断是否成立,可以gitkraken --no-sandbox试一次,能起来就说明方向对了。

坑五:登录窗口白屏,或者一直转圈

现象是主窗口出来了,中间那块内容区空白,等多久都不变。原因是内嵌的 Chromium 需要 NSS 提供证书和加解密能力,libnss3版本不匹配或者被别的软件降级过,渲染进程就直接挂住。解决办法是先dpkg -s libnss3 | grep Version看版本,再sudo apt-get install --reinstall libnss3恢复成源里的版本。判断是不是同一个问题有个简单办法:终端里启动,白屏时看终端有没有SSL或NSS相关输出,有就是它。

坑六:每次推送都弹账号密码框

现象是明明配了凭据助手,客户端还是反复要密码。原因是credential.helper全局配了libsecret,但当前这个仓库的.git/config里被写过helper =空值把它覆盖了,或者桌面钥匙环服务没随会话启动。解决办法是先git config --show-origin --get-all credential.helper把所有层级的设置列出来,看到空值就用git config --unset credential.helper在仓库级删掉,让全局的生效。确认钥匙环是否在跑,可以ps -ef | grep -i keyring看一眼,没进程就先手动启动一次会话。

6. 装完怎么验证:五步跑通一条完整链路

装完不等于能用。我习惯用一条从「包在不在」到「代码推得上去」的完整链路来验收,任何一环断了都能立刻定位。下面这套流程大概五分钟,建议每台机器装完都走一遍,别等到交付那天才发现推不上去。

第一步查包状态和版本,这是最基础的一层:

# 版本、状态、可执行文件位置三件套 dpkg -l gitkraken | tail -1 sudo dpkg -C which gitkraken

dpkg -l那行开头应该是ii,两个字母分别代表期望状态和当前状态都是已安装;版本列必须是 6.5.1。dpkg -C没有输出才合格,有输出说明还有半配置的包。which应该指向/usr/bin/gitkraken,如果指向/usr/local/bin,说明有旧版本残留。

第二步确认沙箱权限和版本锁定,这两项最容易被忽略又最容易复发:

ls -l /usr/share/gitkraken/chrome-sandbox # 期望 -rwsr-xr-x apt-mark showhold | grep gitkraken # 期望有输出

第三步是启动验证,别只看窗口出来就完事,要看进程是不是完整的:

# 启动后另开一个终端查进程,应该有主进程和若干渲染进程 pgrep -af gitkraken | head -5

正常情况能看到不止一个进程,这是 Electron 的多进程结构。只有一个进程且 CPU 占用一直很高,多半是渲染进程崩了在反复重启,回头查第 5 章坑五那条。

第四步是走一次真实的仓库操作。找一个测试用的小仓库,在客户端里完成克隆、改一个文件、提交、推到测试分支。这一步能一次性验证 SSH 密钥、凭据助手、远端权限三件事。推不上去的时候不要瞎猜,终端里跑一次ssh -T git-work(用你 config 里配的别名),返回欢迎语说明密钥没问题,问题在凭据或权限上。

第五步留个记录,把关键值写进部署笔记:

验证项命令合格标准
包版本dpkg -l gitkraken状态ii,版本 6.5.1
依赖完整sudo dpkg -C无任何输出
沙箱权限ls -l .../chrome-sandbox-rwsr-xr-x,属主 root
版本锁定apt-mark showhold列表含 gitkraken
凭据后端git config --get credential.helper有明确值,非空
链路连通克隆并推送测试分支推送成功,无弹框

那张表我一般会贴在机器的部署记录里,下次有人接手,照着跑一遍就知道这台机器处于什么状态。

从那以后我每次装这类老版本客户端,都强制先跑一遍依赖预检、再 chmod 一次 chrome-sandbox,最后拿一个小仓库走完克隆到推送。三步看着啰嗦,但比交付当天被叫回去救火省事得多。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询