前提と注意事項
この記事では以下を前提としています。
- 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 があるので、それをクリックしてダウンロードします。
もしくは、以下のように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
の末尾に以下を追記します。
# ...省略...
# 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
を使わない場合でも簡単にインストールできます。