Обновление google-cloud-sdk не выполняется при настройке

Обновление gcloud на Ubuntu 16.04 завершается ошибкой в ​​конфигурации postinst. Пакет google-cloud-sdk установлен и используется без проблем с установкой, но это прерывает обновление на этапе настройки. Проблема, похоже, в том, что сценарий postinst выполняет сценарий Python3 с интерпретатором Python2, который не работает в строке синтаксиса Python3.


# sudo dpkg --configure google-cloud-sdk
Setting up google-cloud-sdk (131.0.0-0) ...
dpkg: error processing package google-cloud-sdk (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 google-cloud-sdk

dpkg: error processing package google-cloud-sdk (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 google-cloud-sdk


# sudo dpkg --configure -D 777 google-cloud-sdk
D000001: ensure_diversions: new, (re)loading
D000001: process queue pkg google-cloud-sdk:all queue.len 0 progress 1, try 1
D000040: checking dependencies of google-cloud-sdk:all (- <none>)
D000400:   checking group ...
D000400:     checking possibility  -> python2.7
D000400:       checking non-provided pkg python2.7:amd64
D000400:       is installed, ok and found
D000400:     found 3
D000400:   found 3 matched 0 possfixbytrig -
D000040: ok 2 msgs >><<
D000040:     checking Breaks
Setting up google-cloud-sdk (131.0.0-0) ...
D000002: fork/exec /var/lib/dpkg/info/google-cloud-sdk.postinst ( configure 129.0.0-0 )
dpkg: error processing package google-cloud-sdk (--configure):
 subprocess installed post-installation script returned error exit status 1
D000001: ensure_diversions: same, skipping
Errors were encountered while processing:
 google-cloud-sdk


# sudo /usr/bin/gcloud components post-process

Compiling platform/gsutil/third_party/httplib2/python3/httplib2/__init__.py ...
  File "platform/gsutil/third_party/httplib2/python3/httplib2/__init__.py", line 350
    print('%s:' % h, end=' ', file=self._fp)
                        ^
SyntaxError: invalid syntax

ERROR: gcloud crashed (CommandLoadFailure): Problem loading gcloud.dns.record-sets.import: 'module' object has no attribute 'CAA'.

If you would like to report this issue, please run the following command:
  gcloud feedback


# sudo which python; sudo python --version
/usr/bin/python
Python 2.7.12

# sudo which python3; sudo python3 --version
/usr/bin/python3
Python 3.5.2

Trace:
/usr/lib/google-cloud-sdk/gcloud_main.py:130
 gcloud_cli.Execute()
  [...]
/usr/lib/google-cloud-sdk/calliope/backend.py:1630
 resources = command_instance.Run(args)
surface/components/post_process.py:40
 table.Update(self.cli)
/usr/lib/google-cloud-sdk/command_lib/static_completion/table.py:154
 table = CompletionTableGenerator(cli).Wa...
/usr/lib/google-cloud-sdk/calliope/walker.py:98
 root.LoadAllSubElements(recursive=True)
/usr/lib/google-cloud-sdk/calliope/backend.py:1490
 element.LoadAllSubElements(recursive=rec...
/usr/lib/google-cloud-sdk/calliope/backend.py:1490
 element.LoadAllSubElements(recursive=rec...
/usr/lib/google-cloud-sdk/calliope/backend.py:1488
 element = self.LoadSubElement(name)
/usr/lib/google-cloud-sdk/calliope/backend.py:1528
 parent_group=self)
/usr/lib/google-cloud-sdk/calliope/backend.py:1592
 self._GetModuleFromPath(module_dir, modu...
/usr/lib/google-cloud-sdk/calliope/backend.py:1258
 name_to_give, os.path.join(module_dir, *...
/usr/lib/google-cloud-sdk/core/util/pkg_resources.py:108
 module = imp.load_module(name_to_give, f...
surface/dns/record_sets/import.py:19
 from googlecloudsdk.api_lib.dns import i...
/usr/lib/google-cloud-sdk/api_lib/dns/import_util.py:162
 rdatatype.CAA: _CAATranslation,
CommandLoadFailure: Problem loading gcloud.dns.record-sets.import: 'module' object has no attribute 'CAA'.
[output truncated]

# sudo gcloud --version
Google Cloud SDK 131.0.0
alpha 2016.10.17
beta 2016.10.17
bq 2.0.24
bq-nix 2.0.24
core 2016.10.17
core-nix 2016.10.17
gcloud 
gsutil 4.21
gsutil-nix 4.21

person Matthew    schedule 20.10.2016    source источник


Ответы (5)


Непосредственной причиной может быть нехватка памяти. Попробуйте добавить своп перед обновлением.

sudo dd if=/dev/zero of=/var/swap bs=2048 count=524288
sudo chmod 600 /var/swap
sudo mkswap /var/swap
sudo swapon /var/swap
sudo apt upgrade
person Jia    schedule 04.09.2017
comment
Я не добавлял swap или что-либо еще, ни явно, ни неявно в последующих обновлениях google-cloud-sdk, но в конечном итоге обновление заставило его снова начать работать. - person Matthew; 05.09.2017
comment
@ Мэтью Я знал это. Мой ответ для тех, у кого такая же проблема, но они все еще страдают. - person Jia; 09.09.2017
comment
Я делаю что-то на экземпляре GCE Micro; мне никогда не приходило в голову, что памяти может быть недостаточно. Это все решило. \ o / - person wtr; 04.11.2017
comment
(Ну почти все;) - person wtr; 04.11.2017

Я столкнулся с той же проблемой на экземпляре Google Compute Engine под управлением Ubuntu 16.04, и я смог решить ее с помощью следующих команд:

sudo apt-get remove google-cloud-sdk
export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
echo "deb https://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
sudo rm /etc/apt/sources.list.d/partner.list
sudo apt-get install google-cloud-sdk
person bambam    schedule 18.02.2017
comment
Да, я попытался удалить и повторно добавить репо таким образом, но это не помогло. Только пробовал несколько обновлений, пока, наконец, не сработал. Команда Google отреагировала на заявку, но так и не смогла объяснить, почему их ПО пытается запустить код Python 3 в интерпретаторе Python 2.7. В конце концов это просто сработало без объяснения причин. Надеюсь, этого больше не повторится. - person Matthew; 20.02.2017
comment
Вам нужен жизненно важный `curl packages.cloud.google.com/apt/ doc / apt-key.gpg | sudo apt-key add -; sudo apt-get update `перед попыткой sudo apt-get instal .... - person Stoian Ivanov; 12.04.2017
comment
@Matthew Как вы разрешили эту ошибку, потому что такая же ошибка происходит со мной - person twister_void; 04.05.2017
comment
@twister_void В конце концов это просто сработало без объяснения причин. Может быть, хитрость Стояна по локонам сработает, я не знаю. - person Matthew; 06.05.2017

Все, что я сделал, это применил флаг autoremove, и он переустановил сам по себе. Работа на моем маленьком экземпляре заняла целую вечность, но, наконец, это сработало.

apt-get autoremove

Поскольку пакет представлял собой python-dialog, который был удален, я предполагаю, что проблема была в этом ... по крайней мере, для меня. :-)

Редактировать:

Поскольку мой экземпляр Google был наименьшим из возможных, памяти для выполнения задачи не хватало. Как только я остановил веб-сервер и все задачи PM2, он наконец завершился без ошибок.

person John Nelson    schedule 12.06.2017

Проблема с загрузкой gcloud.dns.record-sets.import: 'module' object has no attribute 'CAA'.

Причина:

Установлены старые пакеты Python.

Я полагаю, это старый dnspython

Если вы используете pip:

pip freeze --local | grep -v '^\-e' | cut -d = -f 1  | xargs -n1 pip install -U

Все пакеты pip будут обновлены

Если вы используете easy_install, вам нужно проверить вручную

person Roberto Bertó    schedule 22.10.2017

придерживайтесь следующих команд

ЕСЛИ ВЫ ПРОЙДЕТЕ ЧЕРЕЗ ЛЮБОЙ ЗАМОК, ИСПОЛЬЗУЙТЕ SUDO RM, ЧТОБЫ УДАЛИТЬ

sudo rm /usr/bin/click

ИСПРАВИТЬ СЛОМАННЫЕ БИБЛИОТЕКИ

sudo apt autoremove -f click

ОБНОВЛЕНИЯ И ОБНОВЛЕНИЯ БИБЛИОТЕК

sudo apt-get update && sudo apt-get install -f

sudo dpkg --configure -a

person Sindhukumari P    schedule 15.12.2019
comment
что это должно на самом деле решить? - person ppuschmann; 17.02.2021
comment
Это исправит сломанные библиотеки - person Sindhukumari P; 26.04.2021
comment
Может быть, лучше было бы одно или два поясняющих предложения. - person ppuschmann; 05.05.2021
comment
Нет причин кричать ;-) - person ppuschmann; 07.05.2021