我的目标是通过尽可能少的步骤将helm
二进制文件helm-v2.5.0-linux-amd64.tar.gz
放入我的系统中。/usr/local/bin
挑战在于该.tar.gz
文件在子目录中包含二进制文件linux-amd64
。
所以当我这样做时:
$ wget -P /tmp https://storage.googleapis.com/kubernetes-helm/helm-v2.5.0-linux-amd64.tar.gz
$ tar -xzvf /tmp/helm-v2.5.0-linux-amd64.tar.gz -C /usr/local/bin linux-amd64/helm
我最终得到的/usr/local/bin/linux-amd64/helm
不是/usr/local/bin/linux-amd64/helm
.
我是否tar
缺少某个参数,或者我是否需要包含一些mv
清理步骤?
答案1
您需要使用--strip-components=NUMBER
:
--strip-components=NUMBER
Strip NUMBER leading components from file names on extraction.
这意味着您的命令应如下所示:
tar -xzvf /tmp/helm-v2.5.0-linux-amd64.tar.gz -C /usr/local/bin --strip-components=1 linux-amd64/helm
答案2
另一种方法是wget
直接通过管道输入tar
并使用转换参数。
wget -O- https://storage.googleapis.com/kubernetes-helm/helm-v2.5.0-linux-amd64.tar.gz | tar --transform 's!linux-amd64!/usr/local/bin!' -Pxzf - linux-amd64/helm