본문 바로가기
IT/PROGRAM

Go Lang 설치하기 개발환경구성 샘플 테스트. 리눅스 CentOS7

by SidePower 2022. 9. 30.

 

구글에서 밀고 있는 간결한 Go 언어를 공부하려고요.

 

사실은 블록체인을 공부하고 싶은데요.

나만의 블록체인을 만들고 싶어서 찾던 중에

이더리움이 자료가 많아서 쉽게 접근할 수 있을 거 같아서 결정하게 되었어요.

 

이더리움 개발 언어가 다양하고 

(Java , Python , JavaScript , Go , Rust , .NET , Delphi , Dart)

자바로도 가능해서 시작하기에 거부감이 없을 거 같아요.ㅋ

 

가만히 생각하다가 이더리움도 처음 시작하는 거라

이왕이면 앞으로도 다양한 분야에서 활용될 기대가 되는 Go언어도 같이

처음 시작하는 의미로 이더리움과 함께 공부하기로 했어요.

 

설치부터 해볼게요.

 

우선 Go 홈페이지에 접속해서 최신 버전을 확인합니다.

 

https://go.dev/learn/

현재 1.17.3이 최신 버전이네요.

Linux에 마우스를 올리면 아래 다운로드 경로가 표시됩니다.

적어두세요.ㅋ

 

https://dl.google.com/go/go1.17.3.linux-amd64.tar.gz

 

Linux 클릭하면 바로 다운로드되지만

리눅스로 다시 옮겨야 되는 번거로움이 있잖아요.ㅋ

귀차니즘으로 리눅스에서 한번에 다운로드합니다.

 

그리고 리눅스에서 패키지 설치(rpm, yum ..)가 아닌

소스 빌드로 설치되는 프로그램이거나

지금처럼 압축 해제와 같은 응용프로그램 설치 위치는 /usr/local 입니다.

기억하세요.

 

 

 Go 설치 과정을 간단히 정리하면

① /usr/local 위치로 이동

② Go 파일 다운로드

    wget https://dl.google.com/go/go1.17.3.linux-amd64.tar.gz

③ 압축해제 , 파일 정리

④ 사용자 계정에 Go 설치 경로 환경 잡아주기

 

 /usr/local 위치로 이동
[root@localhost ~]# cd /usr/local
[root@localhost local]# ll
total 0
drwxr-xr-x. 2 root root  6 Apr 11  2018 bin
drwxr-xr-x. 2 root root  6 Apr 11  2018 etc
drwxr-xr-x. 2 root root  6 Apr 11  2018 games
drwxr-xr-x. 2 root root  6 Apr 11  2018 include
drwxr-xr-x. 2 root root  6 Apr 11  2018 lib
drwxr-xr-x. 2 root root  6 Apr 11  2018 lib64
drwxr-xr-x. 2 root root  6 Apr 11  2018 libexec
drwxr-xr-x. 2 root root  6 Apr 11  2018 sbin
drwxr-xr-x. 5 root root 49 Nov 18 03:44 share
drwxr-xr-x. 2 root root  6 Apr 11  2018 src


 Go 파일 다운로드
[root@localhost local]# wget https://dl.google.com/go/go1.17.3.linux-amd64.tar.gz
--2021-11-29 15:12:40--  https://dl.google.com/go/go1.17.3.linux-amd64.tar.gz
Resolving dl.google.com (dl.google.com)... 142.251.42.174, 2404:6800:4004:820::200e
Connecting to dl.google.com (dl.google.com)|142.251.42.174|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 134804820 (129M) [application/x-gzip]
Saving to: ‘go1.17.3.linux-amd64.tar.gz’

100%[================================================>] 134,804,820 9.91MB/s   in 13s

2021-11-29 15:12:54 (10.0 MB/s) - ‘go1.17.3.linux-amd64.tar.gz’ saved [134804820/134804820]

[root@localhost local]# ll
total 131648
drwxr-xr-x. 2 root root         6 Apr 11  2018 bin
drwxr-xr-x. 2 root root         6 Apr 11  2018 etc
drwxr-xr-x. 2 root root         6 Apr 11  2018 games
-rw-r--r--. 1 root root 134804820 Nov  4 11:22 go1.17.3.linux-amd64.tar.gz
drwxr-xr-x. 2 root root         6 Apr 11  2018 include
drwxr-xr-x. 2 root root         6 Apr 11  2018 lib
drwxr-xr-x. 2 root root         6 Apr 11  2018 lib64
drwxr-xr-x. 2 root root         6 Apr 11  2018 libexec
drwxr-xr-x. 2 root root         6 Apr 11  2018 sbin
drwxr-xr-x. 5 root root        49 Nov 18 03:44 share
drwxr-xr-x. 2 root root         6 Apr 11  2018 src


 압축해제 , 파일 정리
[root@localhost local]# tar xvfz go1.17.3.linux-amd64.tar.gz
go/
go/AUTHORS
go/CONTRIBUTING.md
go/CONTRIBUTORS
go/LICENSE
~~~~~~~~~~~~~~~~~~~~중간 생략~~~~~~~~~~~~~
go/test/varinit.go
go/test/winbatch.go
go/test/writebarrier.go
go/test/zerodivide.go

[root@localhost local]# ll
total 131648
drwxr-xr-x.  2 root root         6 Apr 11  2018 bin
drwxr-xr-x.  2 root root         6 Apr 11  2018 etc
drwxr-xr-x.  2 root root         6 Apr 11  2018 games
drwxr-xr-x. 10 root root       257 Nov  4 10:04 go
-rw-r--r--.  1 root root 134804820 Nov  4 11:22 go1.17.3.linux-amd64.tar.gz
drwxr-xr-x.  2 root root         6 Apr 11  2018 include
drwxr-xr-x.  2 root root         6 Apr 11  2018 lib
drwxr-xr-x.  2 root root         6 Apr 11  2018 lib64
drwxr-xr-x.  2 root root         6 Apr 11  2018 libexec
drwxr-xr-x.  2 root root         6 Apr 11  2018 sbin
drwxr-xr-x.  5 root root        49 Nov 18 03:44 share
drwxr-xr-x.  2 root root         6 Apr 11  2018 src

 go 디렉터리 구경하기
[root@localhost local]# cd go
[root@localhost go]# ll
total 216
drwxr-xr-x.  2 root root   4096 Nov  4 10:04 api
-rw-r--r--.  1 root root  55782 Nov  4 10:04 AUTHORS
drwxr-xr-x.  2 root root     29 Nov  4 10:07 bin
-rw-r--r--.  1 root root     52 Nov  4 10:04 codereview.cfg
-rw-r--r--.  1 root root   1339 Nov  4 10:04 CONTRIBUTING.md
-rw-r--r--.  1 root root 107225 Nov  4 10:04 CONTRIBUTORS
drwxr-xr-x.  2 root root     80 Nov  4 10:04 doc
drwxr-xr-x.  3 root root     18 Nov  4 10:04 lib
-rw-r--r--.  1 root root   1479 Nov  4 10:04 LICENSE
drwxr-xr-x. 12 root root    165 Nov  4 10:04 misc
-rw-r--r--.  1 root root   1303 Nov  4 10:04 PATENTS
drwxr-xr-x.  6 root root     76 Nov  4 10:07 pkg
-rw-r--r--.  1 root root   1480 Nov  4 10:04 README.md
-rw-r--r--.  1 root root    397 Nov  4 10:04 SECURITY.md
drwxr-xr-x. 48 root root   4096 Nov  4 10:04 src
drwxr-xr-x. 26 root root  12288 Nov  4 10:04 test
-rw-r--r--.  1 root root      8 Nov  4 10:04 VERSION


 /usr/local 디렉터리가 지져분해서 다운로드 파일을 /tmp (임시폴더)로 이동
[root@localhost local]# mv go1.17.3.linux-amd64.tar.gz /tmp
[root@localhost local]# ll
total 0
drwxr-xr-x.  2 root root   6 Apr 11  2018 bin
drwxr-xr-x.  2 root root   6 Apr 11  2018 etc
drwxr-xr-x.  2 root root   6 Apr 11  2018 games
drwxr-xr-x. 10 root root 257 Nov  4 10:04 go
drwxr-xr-x.  2 root root   6 Apr 11  2018 include
drwxr-xr-x.  2 root root   6 Apr 11  2018 lib
drwxr-xr-x.  2 root root   6 Apr 11  2018 lib64
drwxr-xr-x.  2 root root   6 Apr 11  2018 libexec
drwxr-xr-x.  2 root root   6 Apr 11  2018 sbin
drwxr-xr-x.  5 root root  49 Nov 18 03:44 share
drwxr-xr-x.  2 root root   6 Apr 11  2018 src


 사용자 계정에 Go 설치 경로 환경 잡아주기
패키지로 설치되지 않고 압축만 풀었기때문에
사용자들이 Go를 실행할수 없습니다.
그래서 사용자 계정에 PATH를 잡아줘야 됩니다.

Go 실행 경로 : /usr/local/go/bin

 tmach 계정으로 전환
[root@localhost go]# su - tmach
[tmach@localhost ~]$ ls -al
total 16
drwx------. 3 tmach tmach   95 Nov 29 04:15 .
drwxr-xr-x. 6 root  root    70 Nov 29 04:20 ..
-rw-------. 1 tmach tmach 1281 Nov 29 15:11 .bash_history
-rw-r--r--. 1 tmach tmach   18 Mar 31  2020 .bash_logout
-rw-r--r--. 1 tmach tmach  193 Mar 31  2020 .bash_profile
-rw-r--r--. 1 tmach tmach  231 Mar 31  2020 .bashrc
drwxrwxr-x. 4 tmach tmach  115 Nov 29 14:32 test

 PATH 잡아주기
[tmach@localhost ~]$ vi .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin:/usr/local/go/bin

export PATH

 profile 적용
[tmach@localhost ~]$ source .bash_profile

 profile 적용 정상인지 체크
go 명령어가 잘 실행 되는지 보기 위해 go version 또는 go 실행합니다.

[tmach@localhost ~]$ go version
go version go1.17.3 linux/amd64

[tmach@localhost ~]$ go
Go is a tool for managing Go source code.

Usage:

        go <command> [arguments]

The commands are:

        bug         start a bug report
        build       compile packages and dependencies
        clean       remove object files and cached files
        doc         show documentation for package or symbol
        env         print Go environment information
        fix         update packages to use new APIs
        fmt         gofmt (reformat) package sources
        generate    generate Go files by processing source
        get         add dependencies to current module and install them
        install     compile and install packages and dependencies
        list        list packages or modules
        mod         module maintenance
        run         compile and run Go program
        test        test packages
        tool        run specified go tool
        version     print Go version
        vet         report likely mistakes in packages

Use "go help <command>" for more information about a command.

Additional help topics:

        buildconstraint build constraints
        buildmode       build modes
        c               calling between Go and C
        cache           build and test caching
        environment     environment variables
        filetype        file types
        go.mod          the go.mod file
        gopath          GOPATH environment variable
        gopath-get      legacy GOPATH go get
        goproxy         module proxy protocol
        importpath      import path syntax
        modules         modules, module versions, and more
        module-get      module-aware go get
        module-auth     module authentication using go.sum
        packages        package lists and patterns
        private         configuration for downloading non-public code
        testflag        testing flags
        testfunc        testing functions
        vcs             controlling version control with GOVCS

Use "go help <topic>" for more information about that topic.

 

 go 샘플 작성해서 잘 실행되는지 볼게요.

[tmach@localhost test]$ vi helloWorld.go
package main

import "fmt"

func main() {

    fmt.Println("Hello World~~")
}

[tmach@localhost test]$ go run helloWorld.go
Hello World~~

hello World 글자 보니깐 맘이 안정되네요. ㅋ

 

 

감사합니다.

반응형

댓글