Free tools Windows power users keep installed
One-click scans. No signup required.
On Debian 12 (Bookworm) you can install Go in two ways: the golang-go package from Debian’s repositories, or the official Go Linux archive unpacked into /usr/local/go. The package is the simpler, system-managed option, but it trails upstream Go. When the Debian package listings were checked on 7 October 2026, the Bookworm golang-go listing showed version 2:1.19~1, and the Bookworm backports listing showed 2:1.23~2~bpo12+1. If you need a specific upstream Go release, use the official archive.
Choose an installation route
| Route | Use it when | Version you get | Who handles updates |
|---|---|---|---|
Debian golang-go from the main suite |
You want Go managed by the operating system’s package tools. | 2:1.19~1 in the Bookworm listing checked 7 October 2026 |
apt, from the repositories enabled on your system |
| Bookworm backports | You want a newer packaged Go and are willing to enable backports. | 2:1.23~2~bpo12+1 in the backports listing checked 7 October 2026 |
apt, once backports is configured and selected |
| Official Go Linux archive | You need a particular upstream Go release, or you want to follow Go’s own installation procedure. | The archive you download | You, by repeating the install when you want a new release |
Neither path is universally better. Package versions are a snapshot of what Debian listed on that date, and the candidate your machine actually installs depends on your configured repositories. The step below shows how to check it.
Option 1: Install from Debian’s repositories
Install the packaged Go
- Refresh the package index:
sudo apt update - Check which version apt will install:
apt policy golang-go. Read the Candidate line. If it shows2:1.19~1, that is the Bookworm main-suite package. - Install the package:
sudo apt install golang-go - Confirm the installation:
go version
Install a newer package from Bookworm backports
Backports are optional and must be enabled by you. They are not active on a default Bookworm system.
- Add the
bookworm-backportssuite to your apt sources and refresh the index withsudo apt update. - Check the candidate:
apt policy golang-go. The Candidate should now show a version ending in~bpo12, such as2:1.23~2~bpo12+1in the listing checked on 7 October 2026. - Install from backports explicitly:
sudo apt install -t bookworm-backports golang-go - Confirm:
go version
If the candidate still shows the main-suite version, backports is not configured or not selected. Do not assume the backports package is being used until the policy output confirms it.
#1 Best Overall
Option 2: Install from the official Go Linux archive
This route gives you a chosen upstream release, installed by Go’s own procedure. Go’s download page is the authoritative source for current archives, so take the file from there rather than from a mirror or an older guide.
- Find your CPU architecture with
uname -m. On the official download page, choose the Linux archive that matches it. - Remove any existing Go tree:
sudo rm -rf /usr/local/go - Extract the archive into
/usr/local, replacing the filename with the one you downloaded:sudo tar -C /usr/local -xzf go<version>.linux-<arch>.tar.gz - Add the Go binaries to your PATH:
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.profile - Load the change into the current session with
source ~/.profile, or open a new terminal. - Verify:
go version
Profile changes do not affect a terminal that was already open. If a new terminal still cannot find go and your desktop opens non-login shells, add the same export line to ~/.bashrc as well.
Rank #2
Do not extract over an existing tree
The Go Project’s download and installation documentation states: “Do not untar the archive into an existing /usr/local/go tree. This is known to produce broken Go installations.” Removing /usr/local/go before extraction is therefore part of the procedure, not an optional cleanup step.
Running both routes on one machine
An apt-installed Go and an archive-installed Go can coexist. The one that runs is determined by PATH order. Because the archive line is appended to the end of PATH, a Go installed elsewhere earlier in PATH may take precedence. Run which -a go to list every go binary the shell can see, in the order it finds them.
Rank #3
Tools installed with go install
Commands installed with go install are placed in $HOME/go/bin by default. That directory is separate from the Go toolchain, so it needs its own PATH entry if you want to call those tools by name:
- Install a tool, for example:
go install <module-path>@latest - Add the directory:
echo 'export PATH=$PATH:$HOME/go/bin' >> ~/.profile - Reload with
source ~/.profileor open a new terminal, then run the tool by name.
Keep more than one Go version side by side
Go provides golang.org/dl wrappers for installing named versions alongside your default toolchain. These do not replace /usr/local/go. The sequence is:
Rank #4
- Install the wrapper for the version you need:
go install golang.org/dl/go<version>@latest - Download that toolchain once:
go<version> download - Run it by its versioned name:
go<version> version
The wrapper binaries land in $HOME/go/bin, so that directory must be on PATH for the versioned names to work.
Update Go later
The update method follows the route you chose. For the apt route, run sudo apt update followed by sudo apt upgrade, or sudo apt install -t bookworm-backports golang-go if you track backports. For the archive route, download the newer archive and repeat the archive steps, including the removal of the old /usr/local/go tree. Mixing the two routes in one tree is the most common cause of confusion, so pick one for your default go command.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Best Value
Troubleshooting
go: command not foundafter an archive install:/usr/local/go/binis not in the active PATH. Runecho $PATHto check, then open a new terminal or runsource ~/.profile.- Installed tools cannot be run by name:
$HOME/go/binis missing from PATH. Add it as shown above. go versionreports an older release than you expected: runwhich -a goto see whether an older binary is found first, andapt policy golang-goto see which package candidate apt uses.- Errors or missing files in the archive install: the tree was probably extracted over an existing installation. Run
sudo rm -rf /usr/local/go, then extract the archive again. - Backports install did not take effect: the
-t bookworm-backportsoption was omitted, or the suite is not configured. Recheck the policy output before reinstalling.
Verification is the same on every route: go version should print the version you intended to install. If it does not, use the checks above before reinstalling.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




