Tutorials 开发工具

在 Raspberry Pi 4 上运行 GoLand

让我们学习如何使 GoLand 或任何 JetBrains IDE 在 Raspberry Pi 4(一种流行的开发单板机)上运行。

我们将介绍:

设备需求

跟随这篇文章还需要一些硬件组件:

  • Raspberry Pi4 4GB 版本

  • 充足的电源

  • HDMI 输出线

  • 由于 Raspberry Pi 4 的运行时温度会比较高,因此建议使用散热良好的外壳或其他冷却方法。我选择了这个外壳
    注意:默认情况下,T-Cobbler GPIO 扩展电缆不适合机箱提供的空间,将需要 GPIO 提升器接头。

  • 优质的 microSD 记忆卡,因为它对于您需要运行的操作至关重要。我使用了一张 32GB Samsung Pro+。您需要平衡得很好,并且以合理的价格对小型文件进行操作的记忆卡。找到这样的卡,您可以使用在 Raspberry Pi 存储选项上具有基准的网站。
    另外,您可以尝试为 Raspberry Pi 4 启动并使用 SSD,这将大大提高性能,不过会有些复杂。

安装操作系统

从 http://cdimage.ubuntu.com/releases/19.10/release/ 的预安装服务器映像 / Raspberry Pi 3(64 位 ARM)预安装服务器映像中下载它,例如 ubuntu-19.10.1-preinstalled-server-arm64+raspi3.img.xz

将映像刷写到 microSD 卡上。您可以使用类似 https://www.balena.io/etcher/ 的方法来执行此操作。要连接到我们的 Pi,我们将使用默认的用户名 ubuntu 和密码 ubuntu

操作系统配置

我们的设备同时具有以太网和 Wi-Fi 功能。虽然用网线连接以太网可能是个快速简便的方法,但您可能没有现成的网线。在这种情况下,来自 AskUbuntu 的响应说明了如何直接从命令行连接到无线网络,将对此有所帮助。

连接了我们的互联网之后,就该更新操作系统了:

sudo apt update
sudo apt upgrade

如果您收到有关正在进行的另一个更新的错误,则最好等待大约 10 至 15 分钟,然后重试。

安装特定于 Raspberry Pi 开发的库

由于 Raspbian 尚不支持 ARM64 平台,因此我们需要为操作系统手动添加一些库并启用 ARMHF 平台:

#首先,启用 armhf 架构
sudo dpkg --add-architecture armhf
sudo apt update

#然后安装 Raspberry 依赖源
sudo add-apt-repository ppa:ubuntu-raspi2/ppa
sudo add-apt-repository ppa:ubuntu-pi-flavour-makers/ppa

#由于 ubuntu-raspi2 和 ubuntu-pi-flavor-makers 不附带对 Ubuntu 19.10 的支持,因此我们需要将其使用的版本手动更改为 18.04 发行版。
sed -i 's/eoan/bionic/g' /etc/apt/sources.list.d/ubuntu-pi-flavour-makers-ubuntu-ppa-eoan.list /etc/apt/sources.list.d/ubuntu-raspi2-ubuntu-ppa-eoan.list
mv /etc/apt/sources.list.d/ubuntu-pi-flavour-makers-ubuntu-ppa-eoan.list /etc/apt/sources.list.d/ubuntu-pi-flavour-makers-ubuntu-ppa-bionic.list
mv /etc/apt/sources.list.d/ubuntu-raspi2-ubuntu-ppa-eoan.list /etc/apt/sources.list.d/ubuntu-raspi2-ubuntu-ppa-bionic.list

#将当前用户添加到以下一些依赖项所需的更多组中
sudo groupadd -f --system i2c
sudo groupadd -f --system input
sudo groupadd -f --system spi

#最后,安装 Raspberry 依赖项
sudo apt update
sudo apt install -y libraspberrypi0:armhf libraspberrypi-bin:armhf libraspberrypi-bin-nonfree:armhf libraspberrypi-dev:armhf libraspberrypi-doc:armhf
sudo apt install raspberrypi-sys-mods raspi-config wiringpi pigpio i2c-tools

 

安装 Gnome 桌面环境

要运行 GoLand,我们需要一个桌面环境。在本文的其余部分,我们将使用 Gnome 桌面。

sudo apt install -y tasksel sudo tasksel install ubuntu-desktop-minimal

如果您收到错误消息 tasksel: apt-get failed (100),则表明另一个更新/升级过程正在后台运行。等待10-15分钟后,可以安全地重试。

完成此操作后,我们现在可以使用 sudo reboot 命令重新启动设备,并启动和运行桌面环境。

安装 Go

我们需要自行安装 Go,所以请转到 https://golang.org/dl/ 并获取适用于 ARM64 的最新稳定版本。在撰写本文时,最新版本是 Go 1.13.8,因此我们将安装 go1.13.8.linux-arm64.tar.gz

mkdir ~/gosdks
cd ~/Downloads
wget https://dl.google.com/go/go1.13.8.linux-arm64.tar.gz
tar -C ~/gosdks/ -zxvf go1.13.8.linux-arm64.tar.gz
mv ~/gosdks/go ~/gosdks/go1.13.8
 
#将 Go 和 GOPATH / bin 添加到我们的 PATH 中
echo 'export PATH="${PATH}:/home/ubuntu/gosdks/go1.13.8/bin:/home/ubuntu/go/bin"' >> ~/.bashrc
 
#重新加载当前的 shell
source ~/.bashrc
 
#测试我们的更改是否有效
go version

安装 Delve

Go 调试器 Delve 最近通过此贡献获得了对 ARM64 平台的支持。

我们将安装 Delve,以便我们可以调试应用程序,因为 IDE 附带的版本与 ARM64 不兼容。为此,我们可以运行:

go get -u github.com/go-delve/delve/cmd/dlv

这将下载 Delve,并将其编译到我们的 GOPATH 中(默认为 ~/go/)。我们需要注意 Delve 二进制文件的位置,因为稍后将需要它。

安装 GoLand

现在,我们可以下载并安装 GoLand。

访问该网站下载最新版本,并可以免费试用 30 天,也可以使用免费的早期试用计划版本

在这篇文章中,我下载了最新的可用 EAP 版本 2020.1 EAP 2。
下载完成后,我们可以将其解压缩并将其移动到新目录:

wget -O golandeap.tar.gz https://download.jetbrains.com/go/goland-201.5259.15.tar.gz
tar -C ~/ -zxvf golandeap.tar.gz
mv ~/GoLand-201.5259.15 ~/GoLand2020.1EAP

 

使用 ARM64 Java Runtime

在发布本文时,我们没有为 IDE 附带适用于 ARM64 平台的正确运行时,因此我们需要从 https://bintray.com/jetbrains/intellij-jbr/jbrsdk11-linux-aarch64/722.2#files 下载正确的。

为了确保与 IDE 的兼容性,我们建议下载与我们拥有的 IDE 版本相对应的运行时。在这种情况下,它是 11.0.6+8-b722.2,我们对最后一部分感兴趣,特别是722.2

下载运行时而不下载 SDK 足以运行 IDE,因此,我们下载名为 jbr-11_0_6-linux-aarch64-b722.2.tar.gz 的文件。之后,我们将解压缩并交换相应的运行时。

# 首先,让我们删除旧的运行时
rm -rf ~/GoLand2020.1EAP/jbr
 
# 获取并解压新的
wget -O jbr.tar.gz https://bintray.com/jetbrains/intellij-jbr/download_file?file_path=jbr-11_0_6-linux-aarch64-b722.2.tar.gz
tar -C ~/GoLand2020.1EAP/ -zxvf jbr.tar.gz

 

编译文件观察程序

下一步是编译我们 ARM64 平台固有的 File Watcher。完整的说明可以在这里找到:https://confluence.jetbrains.com/display/IDEADEV/Compiling+File+Watcher。此脚本还可以帮助我们下载所需的文件:https://gist.github.com/dlsniper/97ca1287df1418aef413c465adeac6df

并且不要忘记调整 inotify(7)实例监视限制。现在有了正确的运行时,并编译了正确的 File Watcher 二进制文件,我们现在可以启动 IDE。我们可以这样运行:

JAVA_HOME=~/GoLand2020.1EAP/jbr ~/GoLand2020.1EAP/bin/goland.sh &

 

IDE 配置

由于这是我们第一次启动 IDE,因此在创建项目之前需要做一些配置。

单击 Configure 按钮,然后选择 Edit Custom Properties 操作,添加以下行,然后重新启动 IDE:

idea.filewatcher.executable.path=fsnotifier-aarch64
dlv.path=/home/ubuntu/go/bin/dlv

该条目应如下所示:

在重新启动 IDE 之前,让我们进行最后一个配置更改。

按 Find Action 快捷键 Ctrl+Shift+A,调出对话框并搜索Registry…
。 打开此窗口,然后在窗口中键入搜索 run.process.with.pty,然后通过单击禁用它。

现在,我们可以关闭 IDE 并重新启动它。

使用 IDE

完成所有这些设置后,所有熟悉的 IDE 功能(例如代码完成、重构、应用程序运行或调试它们)都应在常规台式计算机上正常工作。

技术所限

由于与所使用的基础库不兼容,内置终端目前无法正常使用,请订阅https://github.com/JetBrains/pty4j/issues/82,问题解决后立即收到通知。

删除这些限制或发现新的限制后,我们将更新文章。

IDE 性能

最大的问题是:由于硬件有限,IDE 可以使用吗?

令我惊讶和高兴的是,这些操作有些顺利,至少远远超出了我的期望。

因此,我进行了一些特殊测试,以检查具有运行 Ubuntu 19.10 ARM64 的 4GB RAM Raspberry Pi 4 和我的笔记本电脑之间的速度差异,该笔记本电脑具有 32GB RAM 和 Windows 10 的 Intel Core i7 6700HQ。

毫不奇怪,我的 Windows 笔记本电脑更快,结果如下:

 

Raspberry Pi

笔记本电脑

启动时间

29 秒

9 秒

索引 github.com/influxdata/flux

93 秒

12 秒

如前所述,您可以通过从 SSD 上运行来改进这些设置,但这会使初始设置更加复杂。

远程桌面控制

如果远程控制 Raspberry Pi,则在某些情况下可能会更舒适。

我们如何做到这一点?

RealVNC 在这里拯救了我们。让我们安装 VNC 服务器,以便我们可以舒适的计在算机上远程控制设置。

通常,RealVNC 与 Raspbian 捆绑在一起,但是由于我们使用 ARM64 架构运行 Ubuntu,因此我们需要安装一些其他依赖项才能继续:

sudo apt install -y libc6:armhf libbsd0:armhf libx11-6:armhf libxau6:armhf libxcb1:armhf libxdmcp6:armhf libxext6:armhf libxtst6:armhf
wget https://www.realvnc.com/download/file/vnc.files/VNC-Server-6.7.1-Linux-ARM.deb -O /tmp/VNC-Server-6.7.1-Linux-ARM.deb
sudo dpkg -i /tmp/VNC-Server-6.7.1-Linux-ARM.deb

首先,我们可以运行:

sudo systemctl start vncserver-x11-serviced.service

要使该服务在启动时运行:

sudo systemctl enable vncserver-x11-serviced.service

注意:使用 RealVNC 服务器远程控制 Raspberry Pi 4 设备将导致相当大的性能损失,CPU 峰值使用率高达 50%,而恒定使用率超过 15%,因此可能会损害您的开发经验。

到此,我们结束了有关使用 GoLand 在 Raspberry Pi 上进行 Go 开发入门的指南。在其中,我们首先学习了如何安装 Ubuntu 19.10 ARM64,然后安装了 Go、Delve 和 GoLand。

最后,我们设置了 RealVNC,以使我们能够远程控制设备,即使我们没有连接屏幕也是如此。在下面的意见部分、问题跟踪器官方微博官方微信我们的 Twitter 账户 上,与我们分享您的问题和反馈。

原文发表于 2020 年 2 月 18 日,作者 Florin Pățan

image description

Discover more