Kubernetes在Ubuntu中找不到正确的Go语言版本。

huangapple go评论117阅读模式
英文:

The kubernetes can't find correct go in ubuntu

问题

我的操作系统是ubuntu 14.04.3服务器,我想要构建kubernetes

首先,我使用"apt-get"命令安装Golang,但是版本是1.2.1,所以我使用apt-get --purge autoremove命令将其卸载,并从golang网站安装最新的1.5.1版本。

但是执行make命令时,似乎kubernetes始终认为当前的golang版本是1.2.1

  1. $ make
  2. hack/build-go.sh
  3. +++ [1203 06:20:30] Building go targets for linux/amd64:
  4. cmd/kube-proxy
  5. cmd/kube-apiserver
  6. cmd/kube-controller-manager
  7. cmd/kubelet
  8. cmd/kubemark
  9. cmd/hyperkube
  10. cmd/linkcheck
  11. plugin/cmd/kube-scheduler
  12. cmd/kubectl
  13. cmd/integration
  14. cmd/gendocs
  15. cmd/genkubedocs
  16. cmd/genman
  17. cmd/mungedocs
  18. cmd/genbashcomp
  19. cmd/genconversion
  20. cmd/gendeepcopy
  21. cmd/genswaggertypedocs
  22. examples/k8petstore/web-server/src
  23. github.com/onsi/ginkgo/ginkgo
  24. test/e2e/e2e.test
  25. +++ [1203 06:20:30] +++ Warning: stdlib pkg with cgo flag not found.
  26. +++ [1203 06:20:30] +++ Warning: stdlib pkg cannot be rebuilt since /usr/local/go/pkg is not writable by nan
  27. +++ [1203 06:20:30] +++ Warning: Make /usr/local/go/pkg writable for nan for a one-time stdlib install, Or
  28. +++ [1203 06:20:30] +++ Warning: Rebuild stdlib using the command 'CGO_ENABLED=0 go install -a -installsuffix cgo std'
  29. +++ [1203 06:20:30] +++ Falling back to go build, which is slower
  30. # k8s.io/kubernetes/pkg/util/yaml
  31. _output/local/go/src/k8s.io/kubernetes/pkg/util/yaml/decoder.go:26: import /home/nan/kubernetes/Godeps/_workspace/pkg/linux_amd64/github.com/ghodss/yaml.a: object is [linux amd64 go1.2.1 X:none] expected [linux amd64 go1.5.1 X:none]
  32. # k8s.io/kubernetes/pkg/util/validation
  33. _output/local/go/src/k8s.io/kubernetes/pkg/util/validation/errors.go:23: import /home/nan/kubernetes/_output/local/go/pkg/linux_amd64/k8s.io/kubernetes/pkg/util/errors.a: object is [linux amd64 go1.2.1 X:none] expected [linux amd64 go1.5.1 X:none]
  34. # k8s.io/kubernetes/pkg/api/resource
  35. _output/local/go/src/k8s.io/kubernetes/pkg/api/resource/quantity.go:27: import /home/nan/kubernetes/Godeps/_workspace/pkg/linux_amd64/speter.net/go/exp/math/dec/inf.a: object is [linux amd64 go1.2.1 X:none] expected [linux amd64 go1.5.1 X:none]
  36. # github.com/spf13/cobra
  37. Godeps/_workspace/src/github.com/spf13/cobra/command.go:27: import /home/nan/kubernetes/Godeps/_workspace/pkg/linux_amd64/github.com/inconshreveable/mousetrap.a: object is [linux amd64 go1.2.1 X:none] expected [linux amd64 go1.5.1 X:none]
  38. # k8s.io/kubernetes/pkg/util/iptables
  39. _output/local/go/src/k8s.io/kubernetes/pkg/util/iptables/iptables.go:27: import /home/nan/kubernetes/Godeps/_workspace/pkg/linux_amd64/github.com/coreos/go-semver/semver.a: object is [linux amd64 go1.2.1 X:none] expected [linux amd64 go1.5.1 X:none]
  40. # github.com/prometheus/common/expfmt
  41. Godeps/_workspace/src/github.com/prometheus/common/expfmt/decode.go:23: import /home/nan/kubernetes/Godeps/_workspace/pkg/linux_amd64/github.com/prometheus/client_model/go.a: object is [linux amd64 go1.2.1 X:none] expected [linux amd64 go1.5.1 X:none]
  42. # github.com/emicklei/go-restful
  43. Godeps/_workspace/src/github.com/emicklei/go-restful/container.go:16: import /home/nan/kubernetes/Godeps/_workspace/pkg/linux_amd64/github.com/emicklei/go-restful/log.a: object is [linux amd64 go1.2.1 X:none] expected [linux amd64 go1.5.1 X:none]
  44. !!! Error in /home/nan/kubernetes/hack/lib/golang.sh:376
  45. 'CGO_ENABLED=0 go build -o "${outfile}" "${goflags[@]:+${goflags[@]}}" -ldflags "${goldflags}" "${binary}"' exited with status 2
  46. Call stack:
  47. 1: /home/nan/kubernetes/hack/lib/golang.sh:376 kube::golang::build_binaries_for_platform(...)
  48. 2: /home/nan/kubernetes/hack/lib/golang.sh:535 kube::golang::build_binaries(...)
  49. 3: hack/build-go.sh:26 main(...)
  50. Exiting with status 1
  51. !!! Error in /home/nan/kubernetes/hack/lib/golang.sh:456
  52. '( kube::golang::setup_env; local host_platform; host_platform=$(kube::golang::host_platform); local goflags goldflags; eval "goflags=(${KUBE_GOFLAGS:-})"; goldflags="${KUBE_GOLDFLAGS:-} $(kube::version::ldflags)"; local use_go_build; local -a targets=(); local arg; for arg in "$@";
  53. do
  54. if [[ "${arg}" == "--use_go_build" ]]; then
  55. use_go_build=true;
  56. else
  57. if [[ "${arg}" == -* ]]; then
  58. goflags+=("${arg}");
  59. else
  60. targets+=("${arg}");
  61. fi;
  62. fi;
  63. done; if [[ ${#targets[@]} -eq 0 ]]; then
  64. targets=("${KUBE_ALL_TARGETS[@]}");
  65. fi; local -a platforms=("${KUBE_BUILD_PLATFORMS[@]:+${KUBE_BUILD_PLATFORMS[@]}}"); if [[ ${#platforms[@]} -eq 0 ]]; then
  66. platforms=("${host_platform}");
  67. fi; local binaries; binaries=($(kube::golang::binaries_from_targets "${targets[@]}")); local parallel=false; if [[ ${#platforms[@]} -gt 1 ]]; then
  68. local gigs; gigs=$(kube::golang::get_physmem); if [[ ${gigs} -ge ${KUBE_PARALLEL_BUILD_MEMORY} ]]; then
  69. kube::log::status "Multiple platforms requested and available ${gigs}G >= threshold ${KUBE_PARALLEL_BUILD_MEMORY}G, building platforms in parallel"; parallel=true;
  70. else
  71. kube::log::status "Multiple platforms requested, but available ${gigs}G < threshold ${KUBE_PARALLEL_BUILD_MEMORY}G, building platforms in serial"; parallel=false;
  72. fi;
  73. fi; if [[ "${parallel}" == "true" ]]; then
  74. kube::log::status "Building go targets for ${platforms[@]} in parallel (output will appear in a burst when complete):" "${targets[@]}"; local platform; for platform in "${platforms[@]}";
  75. do
  76. ( kube::golang::set_platform_envs "${platform}"; kube::log::status "${platform}: go build started"; kube::golang::build_binaries_for_platform ${platform} ${use_go_build:-}; kube::log::status "${platform}: go build finished" ) &> "/tmp//${platform//\//_}.build" &;
  77. done; local fails=0; for job in $(jobs -p);
  78. do
  79. wait ${job} || let "fails+=1";
  80. done; for platform in "${platforms[@]}";
  81. do
  82. cat "/tmp//${platform//\//_}.build";
  83. done; exit ${fails};
  84. else
  85. for platform in "${platforms[@]}";
  86. do
  87. kube::log::status "Building go targets for ${platform}:" "${targets[@]}"; kube::golang::set_platform_envs "${platform}"; kube::golang::build_binaries_for_platform ${platform} ${use_go_build:-};
  88. done;
  89. fi )' exited with status 1
  90. Call stack:
  91. 1: /home/nan/kubernetes/hack/lib/golang.sh:456 kube::golang::build_binaries(...)
  92. 2: hack/build-go.sh:26 main(...)
  93. Exiting with status 1
  94. make: *** [all] Error 1

但是在"PATH"中的go1.5.1

  1. $ echo $PATH
  2. /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/local/go/bin
  3. $ which go
  4. /usr/local/go/bin/go
  5. $ go version
  6. go version go1.5.1 linux/amd64

那么我该如何解决这个问题?

英文:

My OS is ubuntu 14.04.3 Server, and I want to build kubernetes.

Firstly, I use "apt-get" command install Golang, but the version is 1.2.1, so I use apt-get --purge autoremove command to remove it.And install the newest 1.5.1 from golang website.

But executing make command, it seems kubernetes always "think" current golang is 1.2.1:

  1. $ make
  2. hack/build-go.sh
  3. +++ [1203 06:20:30] Building go targets for linux/amd64:
  4. cmd/kube-proxy
  5. cmd/kube-apiserver
  6. cmd/kube-controller-manager
  7. cmd/kubelet
  8. cmd/kubemark
  9. cmd/hyperkube
  10. cmd/linkcheck
  11. plugin/cmd/kube-scheduler
  12. cmd/kubectl
  13. cmd/integration
  14. cmd/gendocs
  15. cmd/genkubedocs
  16. cmd/genman
  17. cmd/mungedocs
  18. cmd/genbashcomp
  19. cmd/genconversion
  20. cmd/gendeepcopy
  21. cmd/genswaggertypedocs
  22. examples/k8petstore/web-server/src
  23. github.com/onsi/ginkgo/ginkgo
  24. test/e2e/e2e.test
  25. +++ [1203 06:20:30] +++ Warning: stdlib pkg with cgo flag not found.
  26. +++ [1203 06:20:30] +++ Warning: stdlib pkg cannot be rebuilt since /usr/local/go/pkg is not writable by nan
  27. +++ [1203 06:20:30] +++ Warning: Make /usr/local/go/pkg writable for nan for a one-time stdlib install, Or
  28. +++ [1203 06:20:30] +++ Warning: Rebuild stdlib using the command &#39;CGO_ENABLED=0 go install -a -installsuffix cgo std&#39;
  29. +++ [1203 06:20:30] +++ Falling back to go build, which is slower
  30. # k8s.io/kubernetes/pkg/util/yaml
  31. _output/local/go/src/k8s.io/kubernetes/pkg/util/yaml/decoder.go:26: import /home/nan/kubernetes/Godeps/_workspace/pkg/linux_amd64/github.com/ghodss/yaml.a: object is [linux amd64 go1.2.1 X:none] expected [linux amd64 go1.5.1 X:none]
  32. # k8s.io/kubernetes/pkg/util/validation
  33. _output/local/go/src/k8s.io/kubernetes/pkg/util/validation/errors.go:23: import /home/nan/kubernetes/_output/local/go/pkg/linux_amd64/k8s.io/kubernetes/pkg/util/errors.a: object is [linux amd64 go1.2.1 X:none] expected [linux amd64 go1.5.1 X:none]
  34. # k8s.io/kubernetes/pkg/api/resource
  35. _output/local/go/src/k8s.io/kubernetes/pkg/api/resource/quantity.go:27: import /home/nan/kubernetes/Godeps/_workspace/pkg/linux_amd64/speter.net/go/exp/math/dec/inf.a: object is [linux amd64 go1.2.1 X:none] expected [linux amd64 go1.5.1 X:none]
  36. # github.com/spf13/cobra
  37. Godeps/_workspace/src/github.com/spf13/cobra/command.go:27: import /home/nan/kubernetes/Godeps/_workspace/pkg/linux_amd64/github.com/inconshreveable/mousetrap.a: object is [linux amd64 go1.2.1 X:none] expected [linux amd64 go1.5.1 X:none]
  38. # k8s.io/kubernetes/pkg/util/iptables
  39. _output/local/go/src/k8s.io/kubernetes/pkg/util/iptables/iptables.go:27: import /home/nan/kubernetes/Godeps/_workspace/pkg/linux_amd64/github.com/coreos/go-semver/semver.a: object is [linux amd64 go1.2.1 X:none] expected [linux amd64 go1.5.1 X:none]
  40. # github.com/prometheus/common/expfmt
  41. Godeps/_workspace/src/github.com/prometheus/common/expfmt/decode.go:23: import /home/nan/kubernetes/Godeps/_workspace/pkg/linux_amd64/github.com/prometheus/client_model/go.a: object is [linux amd64 go1.2.1 X:none] expected [linux amd64 go1.5.1 X:none]
  42. # github.com/emicklei/go-restful
  43. Godeps/_workspace/src/github.com/emicklei/go-restful/container.go:16: import /home/nan/kubernetes/Godeps/_workspace/pkg/linux_amd64/github.com/emicklei/go-restful/log.a: object is [linux amd64 go1.2.1 X:none] expected [linux amd64 go1.5.1 X:none]
  44. !!! Error in /home/nan/kubernetes/hack/lib/golang.sh:376
  45. &#39;CGO_ENABLED=0 go build -o &quot;${outfile}&quot; &quot;${goflags[@]:+${goflags[@]}}&quot; -ldflags &quot;${goldflags}&quot; &quot;${binary}&quot;&#39; exited with status 2
  46. Call stack:
  47. 1: /home/nan/kubernetes/hack/lib/golang.sh:376 kube::golang::build_binaries_for_platform(...)
  48. 2: /home/nan/kubernetes/hack/lib/golang.sh:535 kube::golang::build_binaries(...)
  49. 3: hack/build-go.sh:26 main(...)
  50. Exiting with status 1
  51. !!! Error in /home/nan/kubernetes/hack/lib/golang.sh:456
  52. &#39;( kube::golang::setup_env; local host_platform; host_platform=$(kube::golang::host_platform); local goflags goldflags; eval &quot;goflags=(${KUBE_GOFLAGS:-})&quot;; goldflags=&quot;${KUBE_GOLDFLAGS:-} $(kube::version::ldflags)&quot;; local use_go_build; local -a targets=(); local arg; for arg in &quot;$@&quot;;
  53. do
  54. if [[ &quot;${arg}&quot; == &quot;--use_go_build&quot; ]]; then
  55. use_go_build=true;
  56. else
  57. if [[ &quot;${arg}&quot; == -* ]]; then
  58. goflags+=(&quot;${arg}&quot;);
  59. else
  60. targets+=(&quot;${arg}&quot;);
  61. fi;
  62. fi;
  63. done; if [[ ${#targets[@]} -eq 0 ]]; then
  64. targets=(&quot;${KUBE_ALL_TARGETS[@]}&quot;);
  65. fi; local -a platforms=(&quot;${KUBE_BUILD_PLATFORMS[@]:+${KUBE_BUILD_PLATFORMS[@]}}&quot;); if [[ ${#platforms[@]} -eq 0 ]]; then
  66. platforms=(&quot;${host_platform}&quot;);
  67. fi; local binaries; binaries=($(kube::golang::binaries_from_targets &quot;${targets[@]}&quot;)); local parallel=false; if [[ ${#platforms[@]} -gt 1 ]]; then
  68. local gigs; gigs=$(kube::golang::get_physmem); if [[ ${gigs} -ge ${KUBE_PARALLEL_BUILD_MEMORY} ]]; then
  69. kube::log::status &quot;Multiple platforms requested and available ${gigs}G &gt;= threshold ${KUBE_PARALLEL_BUILD_MEMORY}G, building platforms in parallel&quot;; parallel=true;
  70. else
  71. kube::log::status &quot;Multiple platforms requested, but available ${gigs}G &lt; threshold ${KUBE_PARALLEL_BUILD_MEMORY}G, building platforms in serial&quot;; parallel=false;
  72. fi;
  73. fi; if [[ &quot;${parallel}&quot; == &quot;true&quot; ]]; then
  74. kube::log::status &quot;Building go targets for ${platforms[@]} in parallel (output will appear in a burst when complete):&quot; &quot;${targets[@]}&quot;; local platform; for platform in &quot;${platforms[@]}&quot;;
  75. do
  76. ( kube::golang::set_platform_envs &quot;${platform}&quot;; kube::log::status &quot;${platform}: go build started&quot;; kube::golang::build_binaries_for_platform ${platform} ${use_go_build:-}; kube::log::status &quot;${platform}: go build finished&quot; ) &amp;&gt; &quot;/tmp//${platform//\//_}.build&quot; &amp;
  77. done; local fails=0; for job in $(jobs -p);
  78. do
  79. wait ${job} || let &quot;fails+=1&quot;;
  80. done; for platform in &quot;${platforms[@]}&quot;;
  81. do
  82. cat &quot;/tmp//${platform//\//_}.build&quot;;
  83. done; exit ${fails};
  84. else
  85. for platform in &quot;${platforms[@]}&quot;;
  86. do
  87. kube::log::status &quot;Building go targets for ${platform}:&quot; &quot;${targets[@]}&quot;; kube::golang::set_platform_envs &quot;${platform}&quot;; kube::golang::build_binaries_for_platform ${platform} ${use_go_build:-};
  88. done;
  89. fi )&#39; exited with status 1
  90. Call stack:
  91. 1: /home/nan/kubernetes/hack/lib/golang.sh:456 kube::golang::build_binaries(...)
  92. 2: hack/build-go.sh:26 main(...)
  93. Exiting with status 1
  94. make: *** [all] Error 1

But the go in "PATH" is 1.5.1:

  1. $ echo $PATH
  2. /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/local/go/bin
  3. $ which go
  4. /usr/local/go/bin/go
  5. $ go version
  6. go version go1.5.1 linux/amd64

So how can I fix this issue?

答案1

得分: 1

根据“如何完全删除一个软件包?”中的解释,sudo apt-get --purge autoremove 可能已经完全删除了 go。但这并不意味着它已经清理了之前编译的内容。

确保在执行 make clean 后删除 /home/nan/kubernetes/Godeps/_workspace/home/nan/kubernetes/_output 目录(参见 issue 16771)。
确保 /usr/local/go/pkg 目录对用户 nan 有写权限(参见 hack/lib/golang.sh)。

最后,issue 16229 提到:

> 至少更新文档以指示不能使用 go>1.4。

所以尝试只安装 go 1.4.x。

更新:OP Nan Xiao评论中报告说已经成功使用 go 1.5.1 或 1.5.2 构建了它。

英文:

As explained in "How can you completely remove a package?", a sudo apt-get --purge autoremove might have removed go completely.
But that doesn't mean it has cleaned what was compiled before

Make sure that /home/nan/kubernetes/Godeps/_workspace and /home/nan/kubernetes/_output are deleted after a make clean (See issue 16771).
Make sure /usr/local/go/pkg is writable for the user nan. (See hack/lib/golang.sh)

Finally, issue 16229 mentions:

> Would be nice to at least update the docs to indicate that you can't use go>1.4.

So try and install go 1.4.x only.

Update: the OP Nan Xiao reports in the comments having managed to build it with go 1.5.1 or 1.5.2 without any more issue.

huangapple
  • 本文由 发表于 2015年12月4日 11:45:16
  • 转载请务必保留本文链接:https://go.coder-hub.com/34080574.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定