Câu trả lời:
go get
sẽ cài đặt gói trong thư mục đầu tiên được liệt kê tại GOPATH
(một biến môi trường có thể chứa danh sách các 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 trongGOPATH
Đối với các dự án lớn hơn, có thể hợp lý khi tạo các GOPATH khác nhau cho mỗi dự án, để việc cập nhật thư viện trong dự án A sẽ không gây ra sự cố trong dự án B.
Nhập go help gopath
để tìm hiểu thêm về GOPATH
biến môi trường.
go get -u all
xin lỗi để hồi sinh, nhưng chỉ trong trường hợp bất cứ ai khác đang tìm kiếm.
go get -u all
công việc ngắn hạn! Chạy lệnh này trong GOPATH, ít nhất là cho Go 1.13, sẽ trả về một cảnh báo: `cảnh báo" tất cả "khớp không có gói nào"
@tux trả lời là tuyệt vời, chỉ muốn thêm rằng 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
Vì câu hỏi đã đề cập đến các thư viện của bên thứ ba và không phải tất cả các gói nên bạn có thể muốn quay lại sử dụng các ký tự đại diện.
Một trường hợp sử dụng là: Tôi chỉ muốn cập nhật tất cả các gói được lấy từ Github VCS, sau đó bạn chỉ cần nói:
go get -u github.com/... // ('...' being the wildcard).
Điều này sẽ đi trước và chỉ cập nhật các gói github của bạn trong hiện tại $GOPATH
Áp dụng tương tự cho bên trong một VCS, giả sử bạn chỉ muốn nâng cấp tất cả các gói từ repo của ogranizaiton A vì họ đã phát hành một hotfix mà bạn phụ thuộc vào:
go get -u github.com/orgA/...
Các câu trả lời trên có các vấn đề sau:
Để tránh những điều này, hãy làm như sau:
go get -d
đi 1,13
(thực hiện từ thư mục gốc mô-đun)
Cập nhật các phụ thuộc được chỉ định:
go get -u <package-name>
Cập nhật tất cả các phụ thuộc trực tiếp và gián tiếp lên các bản nâng cấp nhỏ hoặc vá mới nhất (bản phát hành trước bị bỏ qua):
go get -u ./...
# or
go get -u=patch ./...
Tài liệu tham khảo:
https://github.com/golang/go/wiki/Modules#daily-workflow
go help get
Để chỉ định phiên bản hoặc cam kết:
go get -u otherpackage@1.2.3
go get -u otherpackage@git-sha
Xem https://github.com/golang/go/wiki/Modules#daily-workflow
Đi đến đường dẫn và gõ
go get -u ./..
Nó sẽ cập nhật tất cả các gói yêu cầu.
go get -u ./...
(3 chấm)