Loading...

2023-11-16(木) 15:00

🥤 Ubuntuに最新版のGoをインストールする

Ubuntu
Ubuntuでaptを使わずに最新版のGoをインストールする手順について解説します。

目次

前提と注意事項

この記事では以下を前提としています。

  • Ubuntu22.04

この記事のゴール

Ubuntu ではaptコマンドを使って Go をインストールすることができますが、aptコマンド経由では少し古いバージョンがインストールされます。そこでこの記事では、aptコマンドを使用せずに最新の Go をインストールし、Go のバージョンを表示するところまでをゴールとします。

既存の Go を削除する

もし過去に Go をインストールしたことがある場合は、/usr/local/goに古い Go が存在する可能性があります。 その場合は最新版の Go インストールする前に既存の Go を削除します。
以下のコマンドを実行して削除します。

ターミナル
$ sudo rm -rf /usr/local/go

この後の作業で/usr/local/goに最新の Go をインストールするため、既存の/usr/local/goに古い Go が存在すると、最新の Go を正常にインストールできないためこの作業が必要になります。

最新の Go をダウンロードする

公式ダウンロードページに最新の Go があるので、それをクリックしてダウンロードします。

Go公式ダウンロードページ

もしくは、以下のようにwgetやcurlコマンドを実行してダウンロードします。 最新の Go の URL は上記の公式ダウンロードページのリンク先を参照してください。

ターミナル
$ wget https://go.dev/dl/go1.21.4.linux-amd64.tar.gz
// or
$ curl -OL https://go.dev/dl/go1.21.4.linux-amd64.tar.gz

なお、curlコマンドの-O (大文字のオー)オプションは、指定された URL からダウンロードしたファイルを、URL に含まれるファイル名で保存するために使用します。つまり、curl はダウンロードしたファイルに対して、元のファイル名(この場合は go1.21.4.linux-amd64.tar.gz)をそのまま使用して保存します。
-Lオプションは、curl が HTTP 3xx リダイレクトに遭遇した場合に、リダイレクト先の URL に自動的にフォローするために使用します。つまり、もし指定された URL が別の場所へリダイレクトされていた場合、curl は新しい URL からファイルをダウンロードします。
したがって、-OL オプションを組み合わせることで、リダイレクトに対応しつつ、元のファイル名を保持してファイルをダウンロードできるようになります。この特定のコマンドでは、Go 言語の特定のバージョンをダウンロードし、元のファイル名で保存するために使用しています。

Go をインストールする

以下を実行してダウンロードしたgo1.21.4.linux-amd64.tar.gzを展開しインストールします。

ターミナル
$ sudo tar -C /usr/local -xzf go1.21.4.linux-amd64.tar.gz

上記で完了です。

環境変数を追記する

あとはインストールした Go を使えるように環境変数を追記します。

ターミナル
$ vi ~/.bashrc

.bashrcの末尾に以下を追記します。

~/.bashrc
# ...省略...
 
# Go
export PATH=$PATH:/usr/local/go/bin

.bashrcを保存したら、以下のようにsourceコマンドを実行して再読み込みして変更を反映します。

ターミナル
$ source ~/.bashrc

以上で Ubuntu に最新版の Go をインストール完了です。

動作確認

以下のようにgoコマンドを使ってバージョンを確認し、バージョンが表示されれば正常にインストールが完了しています。

ターミナル
$ go version
go version go1.21.4 linux/amd64

cannot execute binary file: Exec format error が出る場合

go versionを実行した時に以下のようにエラーcannot execute binary file: Exec format errorが出る場合は、インストールした Go のバイナリが間違ったアーキテクチャのものである可能性が高いです。

ターミナル
$ go version
bash: /usr/local/go/bin/go: cannot execute binary file: Exec format error

例えば、Raspberry Pi で Ubuntu を動かしている場合は、Raspberry Pi 用に ARM のバイナリを以下のようにダウンロード、インストールする必要があります。

ターミナル
$ wget https://go.dev/dl/go1.21.4.linux-armv6l.tar.gz
$ sudo tar -C /usr/local -xzf go1.21.4.linux-armv6l.tar.gz

上記のエラーが出た場合は、一度アーキテクチャを確認してみるのも良いかもしれません。

まとめ

Ubuntu にaptを使わずに最新版の Go をインストールする手順を解説しました。 aptを使わない場合でも簡単にインストールできます。