前提と注意事項
この記事では以下を前提としています。
- 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/amd64cannot 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を使わない場合でも簡単にインストールできます。