简体   繁体   中英

go 1.5 : Is “go install” behaviour changed? Removing stale executables?

Till Go 1.4.2 when i run go install after running go build, i could find binary file in my current folder. Hence following Linux command was working

$ go build && go install && ./executable

But after installing go 1.5, when i run same command i get,

-bash: ./executable: No such file or directory

and when i checked, there is no executable to find. Did go install behavior changed in Go 1.5?

Yes, the behaviour has changed in Go 1.5:

If 'go install' (with no arguments, meaning the current directory) succeeds, remove the executable written by 'go build', if present. This avoids leaving a stale binary behind during a sequence like:

 go build <test, mostly works, make small change> go install 

Before this CL, the current directory still has the stale binary from 'go build'. If $PATH contains dot, running the name of the program will find this stale binary instead of the new, installed one.

I can't find anything mentioning that in the release notes though. Might be a documentation issue.

It seems like the solution is to use the binary that go install has produced.

EDIT: Here is the issue on the Go issue tracker if you want to follow on updates. Should be fixed by 1.5.1.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM