Thứ tư, 04/01/2017 | 00:00 GMT+7

Cách xây dựng Go từ Nguồn trên Ubuntu 16.04

Go là một ngôn ngữ lập trình open-souce hiện đại được phát triển bởi Google. Nó đơn giản và có một bộ thư viện và công cụ mạnh mẽ, giúp bạn dễ dàng xây dựng các ứng dụng tin cậy và hiệu quả.

Nếu bạn muốn kiểm tra ứng dụng Go của bạn dựa trên version mới nhất của ngôn ngữ, đóng góp vào cơ sở mã Go hoặc quản lý version Go tốt hơn, bạn cần tạo Go từ nguồn. Hướng dẫn này sẽ chỉ cho bạn cách xây dựng cờ vây, bao gồm một số cân nhắc thực tế và xây dựng ứng dụng thử nghiệm “Hello, World”.

Yêu cầu

Để làm theo hướng dẫn này, bạn cần :

Bước 1 - Cài đặt Bản dựng phụ thuộc

Trước khi bắt đầu, hãy đảm bảo bộ nhớ cache của repository của bạn được cập nhật.

  • sudo apt-get update

Theo mặc định, Ubuntu không đi kèm với tất cả các gói cần thiết để xây dựng Go, như trình biên dịch, thư viện và công cụ của nó. Thật dễ dàng để cài đặt các phụ thuộc xây dựng và biên dịch bằng cách cài đặt build-essential , một gói bao gồm gcc để biên dịch C, g++ để biên dịch C ++ và make , một công cụ tự động hóa xây dựng.

  • sudo apt-get install build-essential

Sau khi quá trình cài đặt kết thúc, bạn sẽ có tất cả các công cụ cần thiết để xây dựng Go từ nguồn. Tiếp theo, bạn cần các mã binary Go 1.4.

Bước 2 - Cài đặt Go 1.4.3

Xây dựng Go 1.5+ yêu cầu bạn phải có Go 1.4. Điều này là do các chuỗi công cụ cho Go 1.5+ được viết bằng chính Go. Bạn có thể sử dụng Go 1.4 hoặc bất kỳ bản phát hành điểm nào (1.4.1, 1.4.2 hoặc 1.4.3); trong hướng dẫn này, ta sẽ sử dụng Go 1.4.3.

Bạn có thể tìm thấy mã binary của Go với tổng kiểm tra SHA1 trên trang download của Go . Download file có tên go1.4.3.linux-amd64.tar.gz vào folder chính của bạn.

  • cd ~
  • curl -O https://storage.googleapis.com/golang/go1.4.3.linux-amd64.tar.gz

Mặc dù file này được download từ một nguồn chính hãng, nhưng vẫn là một phương pháp bảo mật tốt để xác minh tính toàn vẹn của những gì bạn đã download . Điều này dễ thực hiện nhất bằng cách so sánh hàm băm của file được cung cấp trên trang download và hàm băm của file đã download .

Đầu tiên, lấy băm của file bạn đã download .

  • sha1sum go1.4.3.linux-amd64.tar.gz

So sánh kết quả kết quả từ lệnh này với tổng kiểm tra được cung cấp trên trang download Go.

Output
  • 332b64236d30a8805fc8dd8b3a269915b4c507fe go1.4.3.linux-amd64.tar.gz

Nếu tổng kiểm tra khớp, bạn có thể extract file .

  • tar xvf go1.4.3.linux-amd64.tar.gz

Cờ x là viết tắt của e X sugar, v cho tar sử dụng kết quả V erbose (tức là để liệt kê các file đang được extract ) và f cho phép ta chỉ định tên F.

Go 1.4 hiện đã được extract trong một folder có tên là go , nhưng tập lệnh xây dựng Go sẽ tìm kiếm các file binary Go 1.4 trong ~/go1.4 theo mặc định. Đổi tên folder bằng lệnh mv .

  • mv go go1.4

Đến đây bạn có các phụ thuộc cần thiết để xây dựng Go từ nguồn. Nếu bạn muốn chuyển Go 1.4 ra khỏi folder chính của bạn đến một vị trí khác, bạn có thể làm theo bước tiếp theo. Nếu không, bạn có thể chuyển sang Bước 4 để sao chép các nguồn Go.

Bước 3 - Chuyển vị trí đi 1.4.3 (Tùy chọn)

Khi tập lệnh xây dựng Go chạy, nó sẽ tìm kiếm Go 1.4 dựa trên một biến môi trường có tên GOROOT_BOOTSTRAP . Nếu biến đó không được đặt, theo mặc định, tập lệnh xây dựng sẽ giả định folder go1.4 nằm trong folder chính của bạn. Bạn có thể sử dụng biến GOROOT_BOOTSTRAP nếu bạn muốn chuyển Go 1.4 sang một vị trí khác. Tại đây, ta sẽ chuyển nó sang /usr/local/go1.4 .

Đầu tiên, di chuyển chính folder .

  • sudo mv go1.4 /usr/local

Tiếp theo, bạn cần đặt đường dẫn trong môi trường của bạn bằng cách sửa đổi file ~/.profile .

  • sudo nano ~/.profile

Ở cuối file , thêm dòng sau:

~ / .profile
. . . export GOROOT_BOOTSTRAP=/usr/local/go1.4 

Lưu file và thoát. Để thay đổi này có hiệu lực, hãy làm mới profile của bạn.

  • source ~/.profile

Tiếp theo, bạn sẽ sao chép các nguồn Go.

Bước 4 - Lấy nguồn đi

Vị trí được đề xuất để lưu trữ mã binary Go là /usr/local , Đây là kết quả ta sẽ sử dụng trong hướng dẫn này. Tuy nhiên, bạn có thể lưu trữ nó bất cứ nơi nào bạn muốn.

Di chuyển vào /usr/local và sử dụng Git để sao chép repository .

  • cd /usr/local
  • sudo git clone https://go.googlesource.com/go

Ta cần thực thi git clone với quyền root vì /usr/local thuộc sở hữu của root . Nếu bạn đang nhân bản Đi tới folder mà user của bạn có quyền ghi, bạn có thể chạy lệnh này mà không cần sudo.

Lưu ý: Lưu trữ Go ở một vị trí không phải /usr/local sẽ yêu cầu bạn cài đặt biến môi trường GOROOT . Tìm hiểu thêm về các biến môi trường Go ở Bước 7 .

Khi quá trình sao chép hoàn tất thành công, nó sẽ tạo một folder go trong /usr/local . Di chuyển vào folder đó.

  • cd go

Trước khi xây dựng, ta cần chọn version Go nào mà ta muốn.

Bước 5 - Chọn version Go

Các nguồn Go có một nhánh Git khác nhau cho mọi version có sẵn. Tên các chi nhánh là:

  • master cho version mới nhất đang được phát triển
  • go version cho các version ổn định

Ở đây, ta sẽ sử dụng Go 1.7.4, nghĩa là ta muốn sử dụng nhánh go1.7.4 .

Cảnh báo: Nó không được khuyến khích sử dụng các version phát triển (tức là master chi nhánh) của Go trong production . Nó không được thử nghiệm và có thể có lỗi. Các version phát triển tốt cho việc thử nghiệm ứng dụng, nhưng chỉ sử dụng các version đã phát hành để production .

Để thay đổi các nhánh, hãy sử dụng git checkout . Bạn cần chạy các lệnh này với quyền root vì /usr/local/usr/local/go1.4 thuộc sở hữu của root .

  • sudo git checkout go1.7.4

Với bước này hoàn thành, bạn đã download mã nguồn Go của version bạn muốn . Bạn đã sẵn sàng để tiếp tục phần quan trọng của hướng dẫn này: tự xây dựng Go.

Bước 6 - Xây dựng Go

Để xây dựng go, bạn cần thực thi một tập lệnh bash, src/all.bash , đi kèm với mã nguồn. Tập lệnh sẽ kiểm tra xem bạn có tất cả các phụ thuộc cần thiết hay không, chạy một số thử nghiệm và hoàn thành bản dựng.

Thực thi tập lệnh, nhưng lưu ý nếu bạn thay đổi vị trí của các file binary Go 1.4.3, bạn cần thêm cờ -E (tức là sudo -E bash ./all.bash ) để bảo toàn các biến môi trường.

  • cd src
  • sudo bash ./all.bash

Kịch bản sẽ mất một thời gian ngắn để hoàn thành. Sau khi xây dựng xong, bạn sẽ thấy kết quả sau:

Output of src/all.bash
ALL TESTS PASSED --- Installed Go for linux/amd64 in /usr/local/go Installed commands in /usr/local/go/bin *** You need to add /usr/local/go/bin to your PATH.

Cảnh báo: Trong một số trường hợp, bản dựng có thể bị lỗi trên Go 1.7 do kiểm tra time không thành công. Đây là kết quả của một lỗi.

Failed test output
--- FAIL: TestLoadFixed (0.00s) time_test.go:943: Now().In(loc).Zone() = "-01", -3600, want "GMT+1", -3600 FAIL FAIL time 2.403s ... 2016/12/09 22:16:40 Failed: exit status 1

Giải pháp cho vấn đề này là áp dụng bản sửa lỗi theo cách thủ công. Để làm điều này, hãy tạo một nhánh mới và anh đào chọn commit với bản sửa lỗi. Hái cherry trong Git là quá trình áp dụng các thay đổi từ commit cụ thể cho chi nhánh của bạn.

Lỗi này đã được sửa trong commit c5434f2 , vì vậy hãy thêm nó vào nhánh mới tạo của bạn.

  • cd ..
  • sudo git checkout -b go1.7.4-timefix
  • sudo git cherry-pick c5434f2973a87acff76bac359236e690d632ce95

Sau khi thực hiện việc này, bạn có thể chạy lại tập lệnh. (Đừng quên cờ -E nếu bạn đã di chuyển binary Go 1.4.3.)

  • cd src
  • sudo bash ./all.bash

Bây giờ Go đã được xây dựng, bạn cần đặt một số biến môi trường cho nó.

Bước 7 - Đặt biến Go

Các biến môi trường là một cách mạnh mẽ để tùy chỉnh cài đặt Go của bạn. Ta sẽ đi qua những điều quan trọng và hữu ích nhất.

Để bắt đầu sử dụng Go, bạn cần thêm đường dẫn binary Go, /usr/local/ go/bin , vào các biến môi trường PATHGOPATH . GOPATH là nơi mã ứng dụng Go và mã binary được lưu trữ, ta sẽ chỉ định là ~/work , mặc dù bạn có thể tùy chỉnh điều này.

Thêm các biến này vào file ~/.profile . Mở nó bằng editor yêu thích của bạn:

  • nano ~/.profile

Ở cuối file , thêm các dòng sau:

~ / .profile
. . . export GOPATH=$HOME/work export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin 

Nếu bạn đã cài đặt Go trong một đường dẫn không mặc định, tức là một cái gì đó khác sau đó là /usr/local/go , bạn cần xác định biến GOROOT . Trong trường hợp đó, hãy thêm các dòng sau:

~ / .profile
export GOROOT=$HOME/go export GOPATH=$HOME/work export PATH=$PATH:$GOROOT/bin:$GOPATH/bin 

Lưu file và thoát. Để những thay đổi này có hiệu lực, hãy làm mới profile của bạn.

  • source ~/.profile

Với bước này hoàn tất thành công, bạn đã có một cài đặt Go đầy đủ chức năng. Tiếp theo, ta sẽ kiểm tra nó đảm bảo mọi thứ hoạt động như mong đợi.

Bước 8 - Kiểm tra cài đặt Go

Một cách phổ biến để kiểm tra rằng Go đang hoạt động là viết và chạy một ứng dụng đơn giản “Hello, World”.

Để thực hiện việc này, trước tiên, ta sẽ tạo và chuyển vào một folder cho các file ứng dụng dựa trên GOPATH của bạn. Bạn có thể chọn bất kỳ thứ gì bạn thích trong đường dẫn Go của bạn , nhưng như một ví dụ ở đây, ta sẽ cài đặt loại phân cấp bạn cần nếu bạn sử dụng GitHub để quản lý mã của bạn . Tuy nhiên, hệ thống phân cấp này sẽ hoạt động ngay cả khi không có account GitHub.

  • mkdir -p $GOPATH/src/github.com/your_github_username/test_project
  • cd $GOPATH/src/github.com/your_github_username/test_project

Tiếp theo, tạo một file “Hello, World” Go có tên hello.go .

  • nano hello.go

Thêm mã sau vào file :

xin chào.go
package main  import "fmt"  func main() {     fmt.Printf("Hello World!\n") } 

Ví dụ này sử dụng gói fmt , thực hiện các hàm I / O như Printf() và xác định hàm main() sẽ in Hello World khi chương trình được chạy.

Lưu nó và thoát khỏi file , sau đó biên dịch nó bằng cách sử dụng lệnh Go install .

  • go install github.com/your_github_username/test_project

Khi quá trình biên dịch kết thúc, bạn có thể chạy nó bằng lệnh sau:

  • hello

Bạn sẽ thấy Hello World! được in ra terminal , nghĩa là cài đặt Go của bạn đang hoạt động.

Bước 9 - Thay đổi version Go (Tùy chọn)

Hướng dẫn này cài đặt Go 1.7.4. Nếu bạn muốn sử dụng một version khác, bạn cần thay đổi nhánh Git đang hoạt động và xây dựng lại Go.

Để kiểm tra version Go hiện tại của bạn, bạn có thể sử dụng go version .

  • go version
Output
go version go1.7.4 linux/amd64

Ví dụ: ta sẽ chuyển sang version Go sang 1.6.4. Phiên bản này nằm trong nhánh go1.6.4 , vì vậy hãy chuyển sang nó.

  • cd /usr/local/go
  • sudo git checkout go1.6.4

Để đảm bảo mọi thứ đều được cập nhật, hãy chạy git pull để nhận những thay đổi mới nhất cho nhánh đã chọn.

  • sudo git pull origin go1.6.4

Bây giờ, hãy chạy tập lệnh xây dựng như trước, đảm bảo thêm cờ -E nếu bạn đã di chuyển lại Go 1.4 ở Bước 3.

  • cd src
  • sudo bash ./all.bash

Quá trình này sẽ mất một thời gian để hoàn thành. Khi quá trình xây dựng hoàn tất, bạn sẽ thấy kết quả sau:

Output of src/all.bash
ALL TESTS PASSED --- Installed Go for linux/amd64 in /usr/local/go Installed commands in /usr/local/go/bin *** You need to add /usr/local/go/bin to your PATH.

Bạn đã cài đặt các biến Go trong ~/.profile từ Bước 5, vì vậy đây là tất cả những gì bạn cần làm để thay đổi version .

Kết luận

Bằng cách xây dựng từ nguồn và cài đặt đường dẫn, giờ đây bạn có một cơ sở tuyệt vời để phát triển và thử nghiệm các ứng dụng Go hoặc đóng góp vào cơ sở mã Go.

Để tìm hiểu thêm, bạn có thể khám phá cách bắt đầu với cờ vây hoặc cách cung cấp các ứng dụng cờ vây với Martini , một khuôn khổ web về cờ vây. Nếu bạn đang tìm kiếm nguồn cảm hứng để đóng góp cho open-souce của Go, bạn có thể đọc về các dự án go-qemu và go-libvirt .


Tags:

Các tin liên quan

Cách thiết lập firewall với UFW trên Ubuntu 16.04
2016-12-22
Cách cài đặt và bảo mật Mosquitto MQTT Messaging Broker trên Ubuntu 16.04
2016-12-09
Cách cài đặt Puppet 4 trên Ubuntu 16.04
2016-12-09
Cách sử dụng Vault để bảo vệ dữ liệu nhạy cảm có thể xem được trên Ubuntu 16.04
2016-12-09
Cách cài đặt Discourse trên Ubuntu 16.04
2016-12-02
Cách thiết lập giám sát hiệu suất thời gian thực với Netdata trên Ubuntu 16.04
2016-12-01
Cách sắp xếp công việc theo nhóm với ONLYOFFICE trên Ubuntu 14.04
2016-11-22
Cách triển khai CockroachDB trên Cụm ba node trên Ubuntu 16.04
2016-11-18
Cách thu thập các chỉ số cơ sở hạ tầng với Packetbeat và ELK trên Ubuntu 16.04
2016-11-03
Cách thu thập số liệu cơ sở hạ tầng với Packetbeat và ELK trên Ubuntu 14.04
2016-11-02