GCP 数据存储模拟器不会安装在 OpenJDK 10 上

Posted

技术标签:

【中文标题】GCP 数据存储模拟器不会安装在 OpenJDK 10 上【英文标题】:GCP Datastore Emulator won't install on OpenJDK 10 【发布时间】:2019-07-07 00:00:27 【问题描述】:

我有一个使用 APT 安装 OpenJDK 10 和 Gloud SDK 的 Ubuntu 主机。当我尝试安装“google-cloud-sdk-datastore-emulator”时,出现如下所示的错误。 我在 GCP GitHub 上找到了一个讨论这个问题的线程,但它已关闭。这里-https://github.com/GoogleCloudPlatform/cloud-sdk-docker/issues/144

还有其他人有这个问题吗?

错误 -

# apt install google-cloud-sdk-datastore-emulator
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 google-cloud-sdk-datastore-emulator : Depends: openjdk-8-jdk but it is not installable
E: Unable to correct problems, you have held broken packages.

我的环境 -

操作系统 -

DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.2 LTS"
NAME="Ubuntu"
VERSION="18.04.2 LTS (Bionic Beaver)"

OpenJDK -

#java -version
openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.4)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.4, mixed mode)
#javac -version
javac 10.0.2
#which java
/usr/bin/java

Gcloud SDK -

# gcloud -v
Google Cloud SDK 234.0.0
alpha 2019.02.08
beta 2019.02.08
bq 2.0.41
core 2019.02.08
gsutil 4.36
kubectl 2019.02.08

【问题讨论】:

【参考方案1】:

我们的 debian 包依赖配置存在一些问题。 虽然如果您通过 gcloud 命令安装模拟器,它应该可以工作:

gcloud components install cloud-datastore-emulator

(https://cloud.google.com/sdk/gcloud/reference/components/install)

请注意,如果 sdk 是从其他包管理器中安装的,则组件管理器将不起作用。在这种情况下,您可以删除它并按照此处的建议进行安装:***.com/questions/42697026

如果由于某些其他原因您必须通过 apt-get 安装,https://serverfault.com/questions/250224 应该会有所帮助,基本上避免通过以下方式安装 openjdk:

apt-get install google-cloud-sdk-datastore-emulator openjdk-8-jdk-

注意openjdk-8-jdk后面有个“-”

或者您可以按照同一线程中的步骤更新包依赖关系。

【讨论】:

该命令不起作用。我收到此错误消息 - # gcloud components install cloud-datastore-emulator ERROR: (gcloud.components.install) 您无法执行此操作,因为此安装禁用了 Cloud SDK 组件管理器。您可以运行以下命令来获得相同的安装结果:sudo apt-get install google-cloud-sdk-datastore-emulator 有几种方法: 1. 修复 gcloud 命令; 2.修复deb包的依赖关系。对于 1:问题是如果从其他包管理器中安装了 sdk,则组件管理器不起作用。这个问题的第一个答案应该解决它:***.com/questions/42697026 For 2.serverfault.com/questions/250224 应该有帮助,基本上你可以这样做:apt-get install google-cloud-sdk-datastore-emuilator openjdk-8-jdk- 注意有一个“- " 之后的 openjdk-8-jdk 或者你可以按照同一个线程中的步骤更新包依赖 这不再起作用,因为 openjdk-8-jdk 不再在 debian 存储库中【参考方案2】:

我的解决方案涉及使用equivs 创建一个假的 openjdk-8-jdk 包(当然你需要确保你有另一个 JDK)。

apt-get install equivs
equivs-control openjdk-8-jdk
vim openjdk-8-jdk # especially change the package name, but I also used 11.0.0 as a version (although it's probably not needed)
equivs-build openjdk-8-jdk
dpkg -i openjdk-8-jdk*.deb

【讨论】:

以上是关于GCP 数据存储模拟器不会安装在 OpenJDK 10 上的主要内容,如果未能解决你的问题,请参考以下文章

Spring+GCP Datastore:我使用存储库,并希望在开发或测试期间将其配置为使用数据存储模拟器

BigQuery 和 GCP 上的存储有啥区别?

GCP apache气流,如何从私有存储库安装Python依赖项

比较 GCP 数据存储区查询性能

无法在GCP存储中创建MySQL数据库备份

使用 sql server 作业上传到 gcp 存储桶