自由帳

とりとめのない学習メモです。主に Web サービスのシステム基盤や運用に関することを書いています

Ubuntu18.04LTSに Ubuntu のパッケージの Go 1.10 をインストールして世界に挨拶するだけ記事

Goを勉強しようと思って結構経ってしまったが、今さらながらとりあえず環境構築しようと思ったのでやってみて、世界に挨拶しておいた。

Goのインストール

Ubuntu18.04LTSにインストールした。

$ uname -r
4.15.0-20-generic

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04 LTS
Release:        18.04
Codename:       bionic

ソースからインストールすべきなのか、主流なやり方がわからなかったので、公式のWikiにやり方が書かれてあったのでとりあえずそれをそのまま実行してみただけ。

ちなみにソースコードは以下から取得可能。

まずはPPAの登録。以下の出力の後、メッセージ通りに[ENTER]を押せば登録完了。

$ sudo add-apt-repository ppa:gophers/archive
 Co-installable packages of Go 1.4, 1.5, 1.6, 1.7, 1.8, and tip for Ubuntu Trusty, Wily, Xenial and Yakkety.

Installing golang-1.X installs the latest point release of Go 1.X. I add the odd patch to keep older versions of Go building with new toolchains, but I do *not* make any effort to backport security fixes to Go releases that are not supported by upstream. Buyer beware!

The golang-tip package is a bit different, it will always track Go tip (it is updated manually and somewhat erratically currently). I start uploading a release when its first beta is released, so e.g. I uploaded a golang-1.7  package after 1.7 beta 1 was released.

So these packages can be co-installable, they do not install anything to /usr/bin. Once you have installed the golang-1.X package, you will need to add /usr/lib/go-1.X/bin (or maybe /usr/lib/go-tip/bin) to your $PATH, or you can just invoke /usr/lib/go-1.X/bin/go directly.

The packages all Recommend: appropriate versions of the runtime race detector support on amd64, which are also built in this PPA.
 詳しい情報: https://launchpad.net/~gophers/+archive/ubuntu/archive
[ENTER] を押すと続行します。Ctrl-c で追加をキャンセルできます。
:

後は普通のパッケージインストールと同様に、パッケージ情報を更新してインストールするだけ。

$ sudo apt-get update

$ sudo apt-get install golang-1.10-go

以下にインストールされている。

$ /usr/lib/go-1.10/bin/go version
go version go1.10.1 linux/amd64

これでインストール完了。 パッケージインストール時のGOROOTとかGOPATHとかはどうすべきなのかまだわかってない。

GoでHello World

ということで世界に挨拶してみる。 コードは以下。

package main

import "fmt"

func main() {
  fmt.Printf("Hello world !!\n")
}

上記のコードは以下のGoのチュートリアルに載っているものをそのまま。

import fmtは入出力を扱うパッケージをインポートしているとのことだが、package mainはまだちゃんとわかっていない。 package mainを外して実行すると以下のエラーになったので必要な関数?とかを使うために必要みたいなものなんだろうか。

$ /usr/lib/go-1.10/bin/go run hello.go
package main:
hello.go:2:1: expected 'package', found 'import'

コードを正常な形に戻して実行。

$ /usr/lib/go-1.10/bin/go run hello.go
Hello world !!

まとめ

Goのインストール手順とHello Worldについて書いた。 世界に挨拶するまでは簡単...

参考