WSL Debian环境下无法升级gcloud CLI的问题求助
gcloud CLI升级失败问题解决(WSL Debian环境)
问题背景
在Windows 10的WSL Debian环境中,尝试将gcloud CLI从376.0.0版本升级到381.0.0版本(升级到最新版也会触发同类错误,缩小版本跨度无法解决),执行命令 sudo apt-get update && sudo apt-get install google-cloud-cli=381.0.0-0 时出现报错,核心错误为dpkg尝试覆盖文件失败。
报错信息
sudo apt-get update && sudo apt-get install google-cloud-cli=381.0.0-0 Hit:1 http://security.debian.org/debian-security bullseye-security InRelease Hit:2 http://deb.debian.org/debian bullseye InRelease Hit:3 http://ftp.debian.org/debian bullseye-backports InRelease Hit:4 http://deb.debian.org/debian bullseye-updates InRelease Hit:5 https://dl.google.com/linux/chrome/deb stable InRelease Hit:6 https://packages.cloud.google.com/apt cloud-sdk-bullseye InRelease Hit:7 https://packages.cloud.google.com/apt cloud-sdk InRelease Hit:8 https://packages.microsoft.com/debian/10/prod buster InRelease Hit:9 https://apt.releases.hashicorp.com bullseye InRelease Get:10 https://cli.github.com/packages stable InRelease [3,917 B] Err:10 https://cli.github.com/packages stable InRelease The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 23F3D4EA75716059 Reading package lists... Done W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://cli.github.com/packages stable InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 23F3D4EA75716059 W: Failed to fetch https://cli.github.com/packages/dists/stable/InRelease The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 23F3D4EA75716059 W: Some index files failed to download. They have been ignored, or old ones used instead. Reading package lists... Done Building dependency tree... Done Reading state information... Done Suggested packages: google-cloud-cli-app-engine-java google-cloud-cli-app-engine-python google-cloud-cli-pubsub-emulator google-cloud-cli-bigtable-emulator google-cloud-cli-datastore-emulator kubectl The following NEW packages will be installed: google-cloud-cli 0 upgraded, 1 newly installed, 0 to remove and 105 not upgraded. Need to get 130 MB of archives. After this operation, 705 MB of additional disk space will be used. Get:1 https://packages.cloud.google.com/apt cloud-sdk-bullseye/main amd64 google-cloud-cli all 381.0.0-0 [130 MB] Ign:1 https://packages.cloud.google.com/apt cloud-sdk-bullseye/main amd64 google-cloud-cli all 381.0.0-0 Get:1 https://packages.cloud.google.com/apt cloud-sdk-bullseye/main amd64 google-cloud-cli all 381.0.0-0 [130 MB] Fetched 130 MB in 50s (2,584 kB/s) (Reading database ... 133563 files and directories currently installed.) Preparing to unpack .../google-cloud-cli_381.0.0-0_all.deb ... Unpacking google-cloud-cli (381.0.0-0) ... dpkg: error processing archive /var/cache/apt/archives/google-cloud-cli_381.0.0-0_all.deb (--unpack): trying to overwrite '/usr/share/google-cloud-sdk/VERSION', which is also in package google-cloud-sdk 376.0.0-0 dpkg-deb: error: paste subprocess was killed by signal (Broken pipe) Errors were encountered while processing: /var/cache/apt/archives/google-cloud-cli_381.0.0-0_all.deb E: Sub-process /usr/bin/dpkg returned an error code (1)
问题原因
核心原因是包名冲突:Google将gcloud CLI的Debian包名从旧版的google-cloud-sdk改为了新版的google-cloud-cli,两个包会共享部分文件(比如/usr/share/google-cloud-sdk/VERSION),导致dpkg无法覆盖安装。
解决步骤
- 彻底卸载旧版的
google-cloud-sdk包:
sudo apt-get remove --purge google-cloud-sdk
- 清理系统中残留的无用依赖和缓存文件:
sudo apt-get autoremove && sudo apt-get clean
- 重新执行目标版本的安装命令:
sudo apt-get update && sudo apt-get install google-cloud-cli=381.0.0-0
如果需要直接升级到最新版本,可简化命令为:
sudo apt-get update && sudo apt-get install google-cloud-cli
额外说明
报错中出现的GitHub CLI仓库公钥错误(NO_PUBKEY 23F3D4EA75716059)与gcloud升级无关,若要解决该问题,可执行以下命令导入对应公钥:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 23F3D4EA75716059
内容的提问来源于stack exchange,提问作者Ben Franklin
相关产品推荐
相关产品推荐

