giải pháp thực tế:
Tôi tái tạo vấn đề này với:
- gọi 1.1.2
go.exe
trực tiếp (Tôi không có %GOROOT%\bin
trong con đường của tôi)
- với
GOROOT
trỏ đến trước 1.1.1 thư mục cài đặt (tôi giữ 1.1.1 và 1.1.2 cài đặt trong các thư mục riêng biệt).
Nếu bạn đang gắn bó với các thiết lập mặc định đi (ví dụ: thư mục cài đặt mộtC:\go
, và %GOROOT%\bin
trong PATH
của bạn), bạn sẽ không thấy lỗi này.
Nhưng nếu bạn thấy lỗi này:
- đảm bảo
%GOROOT%
là phù hợp với go.exe
bạn đang gọi
go install -a
như được giải thích dưới đây. Các go clean
được đề cập dưới đây sẽ không cần thiết.
Như jnmlcomments:
the Go build system is supposed to figure out any obsolete stuff in $GOPATH/pkg
and (transitively) rebuild it on demand.
giải pháp gốc:
Trong mục "file đối tượng Remove" trong trang "Command go", tôi bỏ lỡ go clean -i
tùy chọn:
-i
The -i
flag causes clean to remove the corresponding installed archive or binary (what 'go install' would create).
Và những tệp .a
(như hopwatch.a) là chính xác những gì đi cài đặt tạo ra cho các thư viện (trong Windows).
Vì vậy, các lệnh sạch đầy đủ, để đảm bảo đi xây dựng lại tất cả mọi thứ, sẽ là:
cd C:\Users\VonC\prog\go\src\github.com\spf13\hugo
go clean -r -i
go install -a
Đó sẽ xây dựng lại và cài đặt tất cả mọi thứ, bao gồm tất cả các gói phụ thuộc.
-a
thực sự là tùy chọn xây dựng, buộc xây dựng lại các gói đã được cập nhật.
Như thường lệ, go clean -r -n
sẽ hiển thị bạn biết những gì sẽ được làm sạch (-n
: Tùy chọn xem trước).
Nó không làm tổn thương để chắc chắn về những gì sẽ bị xóa ... trước khi thực sự xóa bất cứ điều gì.
Tôi ngạc nhiên khi hệ thống xây dựng Go được cho là sẽ tìm ra bất kỳ công cụ lỗi thời nào trong $ GOPATH/pkg và (chuyển tiếp) xây dựng lại theo yêu cầu. – zzzz
@jnml Tôi đồng ý. Nó bỏ lỡ sự phụ thuộc, nhưng có lẽ vì tôi đã không sử dụng 'đi xây dựng -a' ban đầu? – VonC
@jnml. Tôi đã tìm thấy sự không thống nhất trong quá trình thiết lập của tôi, điều này đã kích hoạt thông báo lỗi đó. Tôi đã chỉnh sửa câu trả lời của mình bên dưới. – VonC