2012-04-30 54 views
103

Tìm cách gói golang tích cực phát triển và cải thiện Tôi tự hỏi làm thế nào vấn đề với các phiên bản gói được giải quyết?Cách Go cập nhật gói của bên thứ ba?

Tôi thấy rằng một cách là lưu trữ các gói của bên thứ ba trong một thư mục dự án.

Nhưng nếu tôi cài đặt nó với go get thì sao?

Trả lời

183

go get sẽ cài đặt gói trong thư mục đầu tiên được liệt kê tại GOPATH (biến môi trường có thể chứa danh sách thư mục được phân tách bằng dấu hai chấm). Bạn có thể sử dụng go get -u để cập nhật các gói hiện có.

Bạn cũng có thể sử dụng go get -u all để cập nhật tất cả các gói trong bạn GOPATH

Đối với dự án lớn hơn, nó có thể là hợp lý để tạo GOPATHs khác nhau cho từng dự án, do đó việc cập nhật thư viện trong dự án A sẽ không gây ra vấn đề trong dự án B .

Nhập go help gopath để tìm hiểu thêm về biến môi trường GOPATH.

+2

cảm ơn! 'go get -u' là điều tôi nghĩ về – shalakhin

+2

là có thể cập nhật tất cả các gói lên phiên bản mới nhất, giống như cập nhật gói? – chourobin

+54

chỉ nên là 'go get -u all' xin lỗi để hồi sinh, nhưng chỉ trong trường hợp bất kỳ ai khác đang tìm kiếm. –

22

@tux câu trả lời là rất tốt, chỉ muốn thêm mà bạn có thể sử dụng go get để cập nhật một gói cụ thể:

go get -u full_package_name 
8

Kể từ khi câu hỏi đề cập của bên thứ ba thư viện và không tất cả gói sau đó bạn có thể muốn quay trở lại sử dụng ký tự đại diện.

Một trường hợp sử dụng con người: Tôi chỉ muốn cập nhật tất cả các gói của tôi được lấy từ Github VCS, sau đó bạn sẽ chỉ nói:

go get -u github.com/... // ('...' being the wildcard). 

này sẽ đi trước và chỉ cập nhật các gói github của bạn trong hiện $GOPATH

Tương tự áp dụng cho vòng một VCS quá, nói rằng bạn muốn chỉ nâng cấp tất cả các gói từ ogranizaiton repo của A kể từ khi họ đã phát hành một hotfix bạn phụ thuộc vào:

go get -u github.com/orgA/... 
3

Các answeres trên có các vấn đề sau:

  1. Họ cập nhật tất cả mọi thứ bao gồm cả ứng dụng của bạn (trong trường hợp bạn có những thay đổi không bị giam).
  2. Họ đã cập nhật các gói mà bạn có thể đã xóa khỏi dự án của bạn nhưng đã có trên đĩa của bạn.

Để tránh những, làm như sau:

  1. Xóa các thư mục bên thứ 3 mà bạn muốn cập nhật.
  2. đi đến thư mục ứng dụng của bạn và chạy go get -d
0

Đến đường dẫn và gõ

go get -u ./.. 

Nó sẽ cập nhật tất cả các yêu cầu gói.

Các vấn đề liên quan