Ang*_*per 3 ubuntu sudo google-cloud-platform google-cloud-sdk gcp
运行Ubuntu.
通过以下方式安装Google Cloud SDK:
$ sudo curl https://sdk.cloud.google.com | sudo bash
$ exec -l $SHELL
Run Code Online (Sandbox Code Playgroud)
运行"gcloud"工作正常.
运行"sudo gcloud"会导致以下错误:
sudo: gcloud: command not found
Run Code Online (Sandbox Code Playgroud)
奇怪的是,当我通过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
Run Code Online (Sandbox Code Playgroud)
首先,这是一篇gcloud文章,我在这里找到了答案,但我也将尝试在此总结,因为答案并非完全直截了当.
如果使用curl安装google-cloud-sdk,默认情况下安装目录将是用户的主目录.在完成之前,它还会询问"修改配置文件以更新$ PATH并启用shell命令完成?" 这实际上将更新登录的用户配置文件而不是sudoers文件或root用户配置文件.
如果您手动安装gcloud(例如通过tar/gz文件)作为您的个人用户而不是root用户,则该过程仅将gcloud添加到您的用户bashrc以及随后的PATH变量.这意味着它永远不会添加到根PATH变量中,并且不可用于sudo命令.
当您运行诸如以下内容时:sudo env "PATH=$PATH" gcloud您实际上正在抓取路径(包括gcloud的完整路径)并暂时将其分配给根路径.然后,这允许gcloud使用sudo,因为它存在于根PATH变量中.
解决这个问题的几种方法包括:
只需选择其中一个解决方案!(没有必要做所有这些.)
1)尝试通过aptitude重新安装gcloud(推荐,但不适用于您的情况):
sudo apt-get install google-cloud-sdk
Run Code Online (Sandbox Code Playgroud)
这应该在过程中将gcloud添加到你的sudoers路径中.如果命令不起作用,请在此处查看完整过程.
2)手动将gcloud路径添加到sudoers secure_path变量:
sudo vi /etc/sudoers
Run Code Online (Sandbox Code Playgroud)
验证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符号链接到路径中的一个现有目录中,但我已经足够了解哪个是最好的.我会根据我的反馈更新我的答案.
| 归档时间: |
|
| 查看次数: |
8014 次 |
| 最近记录: |