I could find very little information online about running JetBrains GoLand on Fedora Silverblue. I hope this post will change that. I have tested the instructions below with the latest version,
2020.1 — released yesterday — and the previous version
2019.3.4 both on Fedora Silverblue 30.
Using Fedora Silverblue as a desktop operating system means that “every installation is identical to every other installation of the same version”. I am a very happy Fedora Silverblue user; last year I gave a talk explaining why.
I normally try to use open source rather than proprietary software wherever possible. I am a long term vim user. Saying that, I also actively try to stay open minded about technology. In the end, I decided to try out GoLand because:
- it was widely endorsed at Belfast Gophers
- a lot of people I respect from SoCraTes UK are JetBrains fans
- a recent coding test / interview involved pairing with a developer using another JetBrains product; a bit of exposure to JetBrains can only help in that sort of situation
- I've already got a licence, from a Legacy Code Retreat event in 2019; the first year of a GoLand licence normally costs £149.00.
On Fedora Silverblue the root filesystem is immutable although certain mutable directories are made available from
/var. On another system I would install into
/opt, to follow the Filesystem Hierarchy Standard. On Fedora Silverblue
/opt is a symbolic link to
/var/opt so I'll install there. I also add a link to the
/usr/local/bin is writable via
/var/usrlocal which is mounted at
version=2020.1 sudo mkdir /var/opt/goland cd /var/opt/goland sudo chown "$LOGNAME:$LOGNAME" . curl -OL https://download.jetbrains.com/go/goland-$version.tar.gz curl -O https://download.jetbrains.com/go/goland-$version.tar.gz.sha256 sha256sum -c goland-$version.tar.gz.sha256 tar xf goland-$version.tar.gz cd GoLand-$version/bin sudo ln -s "$PWD/goland.sh" /var/usrlocal/bin
goland.sh⏎ should start GoLand!
Next up activate your licence. Then use the UI to download an SDK ( File → Settings → GOROOT ); this happens in the background. I chose 1.13.8 to match the current version in Alpine Linux edge. After that I was all set; I started working through “The Hitchhiker's Guide to GoLand”.
If you have an issue it might help to see messages printed to a terminal; instead at the same terminal as above try:
./goland.sh⏎. At first I was connected via SSH without
$DISPLAY set properly.
Fedora Silverblue is an immutable desktop operating system. The recommended methods for running GUI software include Flatpaks and or other containers using toolbox or even Podman directly. It is also possible to layer or install traditionally packaged applications with
rpm-ostree but that introduces differences between one system and the next.
My early research didn't show a straight forward answer. The possibilities I came across included: an unofficial container, the official snap that JetBrains publish or even using an AppImage. No Flatpak is available. Snaps are more common on Ubuntu, on Fedora Silverblue the background service would have to be installed first: either inside a container or as a layer with
I should probably have jumped into trying this out practically more quickly. The JetBrains installation guide doesn't give much detail about this approach, but the files are clearly linked from the JetBrains Linux download page.
This isn't the perfect installation method but a set of compromises; one disadvantage is that it doesn't provide a launcher. While I knew there would be compromises, I wanted to:
- Avoid changing the base Fedora Silverblue system with
- Avoid a complicated setup that includes manually installed dependencies
- Use a supported, official method
In the end I didn't have to compromise on these three points. The process of writing out and ordering the potential compromises for someone else to follow helped me to prioritise the order in which I investigated options.
Installing GoLand under Fedora Silverblue was easier than I expected. I wonder what other surprises I will find now I have GoLand up and running.