やりたいこと
公式サイトからダウンロードした圧縮ファイルから、go環境を構築する
ただし、インストール先(?)がレンタルサーバーなため、管理者権限は使えない
環境
レンタルサーバー「Core Server」
OS:CentOS (amd64)
ざっくり作業手順
- ソースのダウンロード
- 圧縮ファイルの解凍
- bin/にある実行ファイルをシンボリックリンクで接続
- goコマンドが使える!
1.ソースのダウンロード
cd ~/usr
# 公式よりgo環境の圧縮ファイルをゲット。置き場所はどこでも良いけど~/usr/にした
wget https://go.dev/dl/go1.20.3.linux-amd64.tar.gz
# サムチェック。これが公式サイトのSUMと一致すれば良い
# やらなくても良いがデータが正規のサイトから欠損なくダウンロードできたかを確認する
sha256sum go1.20.3.linux-amd64.tar.gz
2. 圧縮ファイルの解凍
# 解凍
tar -zxvf go1.20.3.linux-amd64.tar.gz
# 用済み
rm go1.20.3.linux-amd64.tar.gz
# お目当ての中身を確認
cd ./go
ls -la
↓ goの中身 コマンドのお目当ては/binにあるが、他にも必要そうな資材が含まれている
↓ go/binの中身。コマンドとして使う、goとgofmtが入っている
./go/binにお目当ての実行ファイルが入っている。ここから実行させればgoのコンパイル等はできてしまうのだが、せっかくなのでコマンドとしてどこでも使えるようにしたい。
3. 実行ファイルをシンボリックリンクでurs/binに接続
ここからgoコマンドを使えるようにしていくのだが、実行ファイルとlsやgccのようにどこでも使える状態にするには何をする必要があるのだろうか。
ここでLinuxの小話。
/bin, /usr/bin, /home/bin など、linuxが指定するbinディレクトリに入っている実行ファイルは、自分がどのディレクトリにいてもカレントディレクトリからその実行ファイルが使えるようになる。
...実際、lsやmoreの実行ファイルというものは/binに設置されている。そのため、どこのディレクトリにいてもこれらをコマンドとして使用することができる。
この性質を理解すれば、インストーラーなどなくても、goとgofmtをどこからでも使えるコマンドに変えることができる。
幸いなことにコアサーバーでは ~/usr/bin のディレクトリが使用可能なので、ここにgo,gofmtファイルを移すことにした。
# ”貴方のユーザー名”欄は人によって違う
cd ~/usr/bin
ln -s /virtual/貴方のユーザー名/usr/go/bin/go go
ln -s /virtual/貴方のユーザー名/usr/go/bin/gofmt gofmt
⚠mvコマンドで直接移動させるのが本来の手法な気もするが、素人的にはおすすめはしない。インストラーがない以上、下手にファイルの構成をいじるとパスが狂って面倒くさいことになる可能性が高いからだ。
そのため、lnコマンドを使って、シンボリックリンクとしてgo,gofmtをbin傘下に入れるのが安全だった。
4. goコマンドが使える!
go version と入力して返ってくれば完了!レンタルサーバーでもgoが使える!!
余談ながら、このあと外部モジュールを取り入れるときに使う
go get 〇〇
のコマンドでも管理者権限が不要なのでこれもありがたい。
以上