7

运行 Ubuntu。

通过以下方式安装 Google Cloud SDK:

$ sudo curl https://sdk.cloud.google.com | sudo bash 
$ exec -l $SHELL 

运行“gcloud”就可以了。

运行“sudo gcloud”会导致以下错误:

sudo: gcloud: command not found

奇怪的是,当我通过 apt-get 安装 Google Cloud SDK 时,“sudo gcloud”工作得很好。不幸的是,我无法使用 apt-get 中的 Google Cloud SDK,因为 kubectl 没有附带它,并且无法与 apt-get 版本一起安装。

为什么“gcloud”可以工作而不是“sudo gcloud”?

编辑 5/21/2017:如果我使用 sudo 命令手动设置路径,则以下工作有效。不过,我宁愿不要每次都这样做。

sudo env "PATH=$PATH" gcloud
4

2 回答 2

17

首先,这是一篇 gcloud 文章,我在其中找到了答案,但我也将在此处尝试对其进行总结,因为答案并不完全直截了当。

如果您使用 curl 安装 google-cloud-sdk,默认情况下安装目录将是用户的主目录。在完成之前,它还会询问“修改配置文件以更新您的 $PATH 并启用 shell 命令完成?” 这实际上将更新登录的用户配置文件,而不是 sudoers 文件或 root 用户配置文件。

如果您以个人用户而不是 root 身份手动安装 gcloud(例如通过 tar/gz 文件),则该过程只会将 gcloud 添加到您的用户 bashrc 和随后的 PATH 变量中。这意味着它永远不会添加到您的根 PATH 变量中,并且不可用于 sudo 命令。

当您运行以下内容时:sudo env "PATH=$PATH" gcloud您实际上是在抓取路径(包括 gcloud 的完整路径)并将其临时分配给根路径。然后,这允许 gcloud 与 sudo 一起工作,因为它存在于根 PATH 变量中。

解决此问题的几种方法包括:

只需选择其中一种解决方案!(没有必要全部都做。)

1)尝试通过 aptitude 重新安装 gcloud(推荐,但不适用于您的情况)

sudo apt-get install google-cloud-sdk

这应该在此过程中将 gcloud 添加到您的 sudoers 路径中。如果命令不起作用,请在此处查看完整过程。

2) 手动将 gcloud 路径添加到 sudoers secure_path 变量

sudo vi /etc/sudoers

验证 google-cloud-sdk 的安装目录,并将您的路径附加到 secure_path 变量的末尾,如下所示:

secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:{YOUR_PATH_TO_GCLOUD}"

在您的情况下,由于您使用 sudo curl 安装,这将是:

secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/home/<user-name>/google-cloud-sdk/bin"

3) 将 gcloud 的路径添加到您的 /etc/environment 文件中

在这里,您正在编辑文件,而不是您的 sudoers/etc/environment文件。(老实说,我不会推荐这个,因为它看起来有点矫枉过正)。

4)符号链接到现有路径目录

您可能还希望将 gcloud 符号链接到路径中的现有目录之一,但我已经足够了解哪个是最好的。我会用我在这里得到的任何反馈来更新我的答案。

于 2017-06-28T06:13:48.957 回答
0

我通过应用这两个更改使其工作:

  1. 停止 VM 实例并对其进行编辑以选择“授予对所有 API 的完全访问权限”,然后重新启动。

  2. 在终端中,以 root 用户身份运行:apt-get install google-cloud-sdk

于 2019-12-26T23:46:53.100 回答