Skip to main content

开发环境

不如先试一试 ChromeBrew

如果你知道 HomeBrew,那你就知道了 ChromeBrew
brunch 默认启用了开发者模式,如果你不是开发者,可能不会对本小节感兴趣,甚至需要关闭开发者模式
ChromeBrew 是社区为 Chrome 编写的包管理器,经过四年的发展目前已经非常完善了,支持的软件包也越来越丰富。与 Linux 容器不同,crew 是安装在 ChromeOS 本身的命令行环境中的,就是那个你在安装阶段使用CTRL+ALT+T打开的命令行环境。因为 ChromeOS 部分路径只读,所以 crew 会把文件放在 /usr/local 下,由于 ChromeOS 阉割了大量命令行工具,所以 crew 的安装耗时也比较长,安装操作倒是简单,一行即可

wget -q -O - https://raw.github.com/skycocker/chromebrew/master/install.sh | bash

使用 ChromeBrew 还是 Crostini 更多的还是要看个人喜好,前者可以让你更方便地在系统层面操作,后者清除数据的成本更低。仅仅一个包管理器可能并不会让人抛弃 Crostini,但是如果再加上一个强大的编辑器呢?接下来我们介绍在前面的截图中多次出现的 VScode

我不知道喜欢 VScode 的人有多少,我只知道我是其中之一。在其他平台,你可能因为有更喜欢的编辑器而放弃 VScode,而在 ChromeOS 里 VScode 大概是唯一选择了。如果你使用 crew 或者 crostini 安装 vscode,你会发现它对于触摸屏的支持十分差,只能响应最简单的点击事件。但是我们还有另一个选择
VScode 是基于 electron 开发的开源软件,开源特性使得修改源码成为可能。而 electron 是一个以 Chromium 作为前端,Node.js 作为后端的跨平台应用框架,发布应用时将两端打包成一个可执行文件供用户使用,这使得拆分 VScode 成为可能。即使你不熟悉前端技术栈,也可以想到我们可以把 VScode 的后端单独运行,然后将独立的 Chrome 浏览器作为前端使用,按照这个思路我们可以把后端放在任意一个拥有网络支持的 Linux 环境中,前端可以放在任意一个可以访问到后端的位置。理论很简单,实现起来还是有一定难度的,但幸运的是已经有人做到了:

code-server 项目

考虑到一年前的 code-server 使用方法已经不适用于现在,下面介绍的使用方式也可能在某个未来不再适用
以下使用的是系统命令行环境,并且会将 code-server 配置为开机自启动
code-server 的配置稍微有一点复杂,首先让我们抛弃官方的安装方式,直接下载 release 文件并放到一个路径中,这里以/opt为例

wget https://github.com/cdr/code-server/releases/download/ <version> /code-server- <version> -linux-x86_64.tar.gz
tar -zxvf code-server- <version> -linux-x86_64.tar.gz
mv -r code-server- <version> -linux-x86_64 /opt

然后为 code-server 编写 upstart 配置

# /etc/init/code-server.conf
start on started system-services
stop on stopping system-services
respawn

exec sudo -u chronos /opt/code-server/node /opt/code-server

保存后重启系统,回到命令行环境,检查~/.config/code-server路径是否存在,(如果不存在还可以检查一下/mnt/stateful_partition/encrypted/chronos/user/.config/code-server路径,)在该路径下保存着 code-server 自动生成的配置文件,打开配置文件可以修改监听地址和前端的访问密码。修改之后在命令行执行sudo restart code-server,在浏览器中打开对应的端口即可看到 code 页面。

code-server 出于某些原因不能使用 VScode 的 logo,但是作为用户我们可以自己修改回去。首先我们修改 PWA 的 logo

cd /opt/code-server/src/browser/media
curl https://code.visualstudio.com/favicon.ico -o vscode-favicon.ico
vim manifest.json
# 修改 icon src 的文件名为 vscode-favicon.ico

此时删除 code-server 页面的所有缓存重新加载并点击地址栏的安装应用看到的应该就是 VScode 的 logo 了,如果还想修改页面内的 logo 可以使用我编写的脚本,同样可以在我的博客上找到。
现在我们得到了一个像模像样的“vscode-server”,你可以尝试以下它的各种功能,与官方的客户端版本没什么差别。但是在我使用的时候我发现它的默认设置和 VScode 有些许不同,比如在 VScode 中自动保存默认关闭,而在这里是默认开启,不过这些都取决于你的个人喜好。code-server 同样适用官方的插件中心,但相比客户端版本会缺失部分插件。

一个便携开发环境

装好了 ChromeBrew 和 code-server,一个轻量开发环境就初具雏形了。现在按照你的需要安装一些 code 插件,在 code 里调出 bash,用 crew 安装你需要的软件包,运行你的代码,只要你的代码对标准 Linux 系统环境没有严重的依赖,剩下的应该就是性能问题了。
如果你的项目有基于 X11 的图形界面,那你大概不会正常的看到它打开,你需要一个 sommelier 来将 X11 应用的窗口投影到 ChromeOS 的桌面环境中(crew 提供的 vscode 就是如此实现的)。

如果你觉得 code 的开发环境太轻量了,即使是二合一设备也应该能运行 JetBrains 全家桶才行,那只需要下载 Linux 版本使用上面提到的 sommelier 投影窗口即可。 如果你不只是开发者,还是个艺术创作者,需要使用 Adobe 全家桶,请注意最开始安装系统的时候我们使用的是双系统方案,重启到 Windows 即可。

似乎不需要再介绍 crostini 了

经过上面的一系列配置,似乎已经解决了很多棘手的问题,而且相比系统环境,crostini 需要额外的启动时间,我本人是没有启用 crostini 的。 和安卓容器类似,crostini 也是在设置中启用,等待系统自动安装即可,一般来说 crostini 的使用会比系统命令行容易一些,也更难对系统造成损伤,如果你想要了解高级操作可以参考Arch Wiki:如何在 Crostini 中安装 Arch Linux

可以尝试的 CrossOver

CrossOver 是基于 wine 的商业软件,wine 的目的是在非 Windows 环境中运行为 Windows 编写的软件,CrossOver for ChromeOS 通过 Google Play 分发,可以实现在 ChromeOS 上运行常用的 Windows 软件,虽然会有各种各样的小毛病,不过也值得一试。 不过就像前面提到的,我们是使用的是双系统安装方案,ChromeOS 作为日用系统可以给你更好的操作体验,但如果你要开始进行一些 ChromeOS 无法胜任的工作,何不直接重启系统到 Windows 中使用呢?