Install Google Cloud components error from gcloud command

瘦欲@ 提交于 2019-11-30 04:43:58

The Cloud SDK component manager only works if you don't install the SDK through another package manager. If you want to use the component manager, you can install using one of these methods:

https://cloud.google.com/sdk/downloads#versioned

https://cloud.google.com/sdk/downloads#interactive

Additional packages are available in our deb and yum repos so all the same components are available, you just need to use your existing package manager to install them:

https://cloud.google.com/sdk/downloads#apt-get

https://cloud.google.com/sdk/downloads#yum

To add some more context to this answer for the Ubuntu OS, these are the steps that I took when I had already installed google-cloud-sdk using the apt-get package manager

  1. Remove the existing installation using

    sudo apt-get remove google-cloud-sdk

  2. Navigate to https://cloud.google.com/sdk/docs/quickstart-linux and follow the steps to download the correct tar.gz package for your system

  3. Navigate to the download directory and unzip the archive using

    tar -zxf google-cloud-sdk-*

  4. Install the SDK using

    ./google-cloud-sdk/install.sh

  5. Make the gcloud command available by either:

    • Running source ~/.bashrc or
    • Closing your current terminal session and opening a new one

Using this installation I was then able to update and install kubectl with the following commands

gcloud components update
gcloud components install kubectl

In case apt or apt-get does not uninstall gcloud try with snap remove google-cloud-sdk.

This might be the case if you use a newer Ubuntu version (eg. LTS 18.04).

My Problem

I wanted to upgrade the gcloud CLI version on an existing GCE instance (Ubuntu Xenial), and running gcloud components update resulted in this:

# gcloud components update
ERROR: (gcloud.components.update) You cannot perform this action because this Cloud SDK installation is managed by an external package manager.
Please consider using a separate installation of the Cloud SDK created through the default mechanism described at: https://cloud.google.com/sdk/

My Solution

What I found is that the SDK executables are installed in /usr/lib/google-cloud-sdk and are included on the PATH via symlinks in /usr/bin:

# ll /usr/bin | grep google-cloud
lrwxrwxrwx  1 root   root          30 Aug 20  2018 bq -> ../lib/google-cloud-sdk/bin/bq*
lrwxrwxrwx  1 root   root          34 Aug 20  2018 gcloud -> ../lib/google-cloud-sdk/bin/gcloud*
lrwxrwxrwx  1 root   root          52 Aug 20  2018 git-credential-gcloud.sh -> ../lib/google-cloud-sdk/bin/git-credential-gcloud.sh*
lrwxrwxrwx  1 root   root          34 Aug 20  2018 gsutil -> ../lib/google-cloud-sdk/bin/gsutil*

Therefore, to install the latest version, I followed steps 3 and 4 from https://cloud.google.com/sdk/docs/quickstart-linux:

  1. Download the archive file best suited to your operating system.
# curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-247.0.0-linux-x86_64.tar.gz
  1. Extract the archive to any location on your file system; preferably, your Home folder.
# tar zxvf google-cloud-sdk-247.0.0-linux-x86_64.tar.gz google-cloud-sdk

and then just replaced the old /usr/lib/google-cloud-sdk directory with the new one:

# mv /usr/lib/google-cloud-sdk /usr/lib/google-cloud-sdk-ORIG
# mv google-cloud-sdk /usr/lib/

This allows the symlinks already on the PATH to continue to work, keeps existing auth/config in place, and appears to support upgrades via gcloud components update in the future:

# gcloud components update

All components are up to date.

Useful Troubleshooting Commands

It might be helpful to run these before and after you upgrade gcloud.

Where is gcloud on your PATH:

$ which gcloud
/usr/bin/gcloud

What version of gcloud are you using:

$ gcloud version
Google Cloud SDK 247.0.0
bq 2.0.43
core 2019.05.17
gsutil 4.38

What credentials is gcloud using (by default):

$ gcloud auth list

What config is gcloud using (by default):

$ gcloud config list
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!