Consistent IPFS install across operating systems

Fission relies on a working IPFS install. We maintain a (custom) Homebrew package to install our CLI.

Getting IPFS downloaded, installed, and setup, including long running background service, is not great across Linux systems.

On Mac, Homebrew installs IPFS simply and easily. Homebrew is pretty ubiquitous across Mac developer systems.

IPFS Desktop on Mac (which we recommend) also will install the command line IPFS tools and will just work.

I’ll leave native Windows support for another write up, as we need to do more testing, especially of IPFS Desktop plus the fission CLI native exe.

On Windows, WSL / WSL2 running (for example) Ubuntu doesn’t have systemd support. So, you need to manually run the IPFS daemon.

More broadly, an install script that includes running IPFS as a system service on any Linux is not part of the core download of IPFS. There are various systemd scripts, this one in the IPFS RaspberryPi repo looks like a good starting point:

Some possible solutions to improving this experience across platforms:

Linuxbrew

Target Ubuntu 18 and WSL2 with Ubuntu 18 and maybe one other Linux distro with Linuxbrew instructions.

Linuxbrew is still relatively new, but the approach across Mac, Linux, and WSL2 could be the same.

The open question is how stable Linuxbrew is, and how open people are to adopting it.

Nix

Nix is setup to work across MacOS, Linux, and (native) Windows. Don’t know if it has WSL2 specific support for the systemd issues (along with whatever other variations there are with WSL2).

Downside is that Nix is a lot of complexity and isn’t widely used on Mac or Windows, meaning one more “new thing” to introduce along with Fission and IPFS.

App packaging

There are a variety of Linux app packaging systems. We could concentrate on Homebrew for Mac, and then pick one app packaging system for Linux and WSL2.

Custom install script

We could write and maintain a custom install script that sets up IPFS and fission across systems.

More of a download and run rather than a curl one liner, but it amounts to the same thing.

Could still use brew on Mac, but would do “custom” across Linuxes and WSL2 that would grab IPFS and fission CLI releases and put them in the right place, setup systemd or alternate options, etc.

1 Like

The /misc folder in go-ipfs now includes systemd support:

launchd for MacOS has always been in there, I guess that’s what Homebrew uses today.

For WSL, need a non-systemd solution.

Talked to Cornelius about this, and going to get him to put a Linuxbrew package together for go-ipfs.

Ideally it should install systemd (or initd for WSL2) as well as put the package in the right place.

If there’s enough time left, will also do a Linuxbrew for the fission-cli.