---
title: Go on OpenBSD
---

Go is available within the OpenBSD ports tree collection since OpenBSD 5.2. It is marked as i386- and amd64- only. See [`ports/lang/go`](http://ports.su/lang/go) for details.

| **OpenBSD release** | **Go in ports** |
| :------------------ | :-------------- |
| 6.8 (Oct 18, 2020)  | go-1.15.2       |
| 6.7 (May 19, 2020)  | go-1.13.9       |
| 6.6 (Oct 17, 2019)  | go-1.13.1       |
| 6.5 (Apr 4, 2019)   | go-1.12.1       |
| 6.4 (Oct 18, 2018)  | go-1.11         |
| 6.3 (Apr 2, 2018)   | go-1.10         |
| 6.2 (Oct 9, 2017)   | go-1.9          |
| 6.1 (Apr 11, 2017)  | go-1.8          |
| 6.0 (Sep 1, 2016)   | go-1.6.3        |
| 5.9 (Mar 29, 2016)  | go-1.5.4        |
| 5.8 (Oct 18, 2015)  | go-1.4.2        |
| 5.7 (May 1, 2015)   | go-1.4.1        |
| 5.6 (Nov 1, 2014)   | go-1.3p0        |

## Building from source

| **Kernel version** | **Architectures** | **Initial support version** | **Final support version** |
| :----------------- | :---------------- | :-------------------------- | :------------------------ |
| 6.4                | amd64, arm, 386   | Go 1.11                     |                           |
| 6.2 through 6.3    | amd64, arm, 386   | Go 1.9                      | Go 1.15.x                 |
| 6.1                | amd64, arm, 386   | Go 1.8                      | Go 1.10.8                 |
| 6.0                | amd64, 386        | Go 1.4.1 _\*_               | Go 1.10.8                 |
| 6.0                | arm               | Go 1.5                      | Go 1.10.8                 |
| 5.9                | amd64, 386        | Go 1.4.1 _\*_               | Go 1.8.7                  |
| 5.9                | arm               | Go 1.5                      | Go 1.8.7                  |
| 5.6 through 5.8    | amd64, 386        | Go 1.4.1 _\*_               | Go 1.7.6                  |
| 5.5                | amd64, 386        | Go 1.3 _\*_                 | Go 1.7.6                  |
| 5.0 through 5.4    | amd64, 386        | Go 1                        | Go 1.2.2                  |

_\*_ Go 1.5 or above is recommended.

## Longterm support

Go aims to support the two most recent OpenBSD releases, because OpenBSD officially supports only the two most recent releases, and makes a best-effort attempt to maintain ABI support in consecutive releases.

## ulimits (`/etc/login.conf`)

Edit `/etc/login.conf` so that the staff class has the proper
settings. The following is a working example of the staff class:

```
staff:\
       :datasize-cur=infinity:\
       :datasize-max=infinity:\
       :datasize=infinity:\
       :openfiles-cur=4096:\
       :maxproc-max=512:\
       :maxproc-cur=512:\
       :ignorenologin:\
       :requirehome@:\
       :tc=default:
```

If the database file `/etc/login.conf.db` exists, you need to rebuild it with:

```
# cap_mkdb /etc/login.conf
```

Ensure that the user you intend to build Go with is in the `staff` login class:

```
# usermod -L staff your_username_here
```
