Установка ошибки компонентов Google Cloud из команды gcloud

Я пытаюсь установить несколько компонентов GCP из командной строки gcloud и всегда получаю одну и ту же ошибку:

$ gcloud components list

Your current Cloud SDK version is: 146.0.0
The latest available version is: 146.0.0

┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                  Components                                                 │
├───────────────┬──────────────────────────────────────────────────────┬──────────────────────────┬───────────┤
│     Status    │                         Name                         │            ID            │    Size   │
├───────────────┼──────────────────────────────────────────────────────┼──────────────────────────┼───────────┤
│ Not Installed │ App Engine Go Extensions                             │ app-engine-go            │  47.9 MiB │
│ Not Installed │ Bigtable Command Line Tool                           │ cbt                      │   3.8 MiB │
│ Not Installed │ Cloud Datalab Command Line Tool                      │ datalab                  │   < 1 MiB │
│ Not Installed │ Cloud Datastore Emulator                             │ cloud-datastore-emulator │  15.4 MiB │
│ Not Installed │ Cloud Datastore Emulator (Legacy)                    │ gcd-emulator             │  38.1 MiB │
│ Not Installed │ Cloud Pub/Sub Emulator                               │ pubsub-emulator          │  21.0 MiB │
│ Not Installed │ Google Container Registry Docker credential helper │ docker-credential-gcr    │   3.3 MiB │
│ Not Installed │ gcloud app Java Extensions                           │ app-engine-java          │ 128.3 MiB │
│ Not Installed │ gcloud app Python Extensions                         │ app-engine-python        │   7.2 MiB │
│ Not Installed │ kubectl                                              │ kubectl                  │  11.5 MiB │
│ Installed     │ BigQuery Command Line Tool                           │ bq                       │   < 1 MiB │
│ Installed     │ Cloud SDK Core Libraries                             │ core                     │   5.7 MiB │
│ Installed     │ Cloud Storage Command Line Tool                      │ gsutil                   │   2.8 MiB │
│ Installed     │ Default set of gcloud commands                       │ gcloud                   │           │
│ Installed     │ gcloud Alpha Commands                                │ alpha                    │   < 1 MiB │
│ Installed     │ gcloud Beta Commands                                 │ beta                     │   < 1 MiB │
└───────────────┴──────────────────────────────────────────────────────┴──────────────────────────┴───────────┘

Компоненты $ gcloud install kubectl Вы не можете выполнить это действие, поскольку эта установка Cloud SDK управляется внешним менеджером пакетов. Если вы хотите получить последнюю версию, посетите нашу главную страницу загрузки по адресу: https://cloud.google.com/sdk/ ОШИБКА: (gcloud.components.install) Менеджер компонентов для этой установки отключен

Есть идеи, почему возникает эта ошибка?

Ответ 1

Менеджер компонентов Cloud SDK работает только в том случае, если вы не устанавливаете SDK через другой диспетчер пакетов. Если вы хотите использовать диспетчер компонентов, вы можете установить его одним из следующих способов:

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

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

Дополнительные пакеты доступны в наших репозиториях deb и yum, поэтому все те же компоненты доступны, вам просто нужно использовать существующий диспетчер пакетов для их установки:

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

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

Ответ 2

Чтобы добавить немного контекста к этому ответу для ОС Ubuntu, это шаги, которые я предпринял, когда уже установил google-cloud-sdk с помощью менеджера пакетов apt-get

  1. Удалить существующую установку, используя

    sudo apt-get remove google-cloud-sdk

  2. Перейдите на страницу https://cloud.google.com/sdk/docs/quickstart-linux и следуйте инструкциям, чтобы загрузить правильный пакет tar.gz для вашей системы.

  3. Перейдите в каталог загрузки и распакуйте архив, используя

    tar -zxf google-cloud-sdk-*

  4. Установите SDK, используя

    ./google-cloud-sdk/install.sh

  5. Сделайте команду gcloud доступной:

    • Запуск source ~/.bashrc или
    • Закрытие текущего сеанса терминала и открытие нового

Используя эту установку, я смог обновить и установить kubectl с помощью следующих команд

gcloud components update
gcloud components install kubectl

Ответ 3

В случае, если apt или apt-get не удаляет gcloud, попробуйте с помощью snap remove google-cloud-sdk.

Это может иметь место, если вы используете более новую версию Ubuntu (например, LTS 18.04).

Ответ 4

Моя проблема

Я хотел обновить gcloud CLI gcloud на существующем экземпляре GCE (Ubuntu Xenial), и запуск gcloud components update привел к следующему:

# 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/

Мое решение

Я обнаружил, что исполняемые файлы SDK устанавливаются в /usr/lib/google-cloud-sdk и включаются в PATH через символические ссылки в /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*

Поэтому для установки последней версии я выполнил шаги 3 и 4 на странице https://cloud.google.com/sdk/docs/quickstart-linux:

  1. Загрузите архивный файл, наиболее подходящий для вашей операционной системы.
# curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-247.0.0-linux-x86_64.tar.gz
  1. Распакуйте архив в любое место вашей файловой системы; желательно, ваша домашняя папка.
# tar zxvf google-cloud-sdk-247.0.0-linux-x86_64.tar.gz google-cloud-sdk

а затем просто заменили старый каталог /usr/lib/google-cloud-sdk новым:

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

Это позволяет символическим ссылкам, уже находящимся в PATH, продолжать работать, сохранять существующие auth/config на месте и, по-видимому, поддерживать обновления через gcloud components update в будущем:

# gcloud components update

All components are up to date.

Полезные команды по устранению неполадок

Может быть полезно запустить их до и после обновления gcloud.

Где gcloud на вашем пути?

$ which gcloud
/usr/bin/gcloud

Какую версию gcloud вы используете:

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

Какие учетные данные использует gcloud (по умолчанию):

$ gcloud auth list

Какой gcloud использует gcloud (по умолчанию):

$ gcloud config list