首页 > 解决方案 > 插件是用不同版本的包加密/内部/无聊构建的

问题描述

我在 golang 中有一个使用构建模式插件的代码。我正在同一个图像(goboring/golang:1.15.8b5)中构建主程序和插件,一个接一个。运行主程序时,一旦尝试加载插件,我就会收到错误消息:

E0319 14:27:38.417362   34123 daemon.go:639] loadVendorPlugins(): fail to load plugin /plugins/my_plugin.so: plugin.Open("/plugins/my_plugin"): plugin was built with a different version of package crypto/internal/boring​

如果我将图像更改为 golang:1.15,则不会发生这种情况。知道为什么即使两者都构建在同一个映像中,为什么会发现一个包的不同版本?为什么基础映像可能会对此产生影响?

标签: goboringssl

解决方案


显然,在使用 buildmode=plugin 的时候,看到这个问题并不奇怪。解决方案是将标志添加-trimpath到 go 构建中,如下所述:https ://github.com/golang/go/issues/27751#issuecomment-593082117


推荐阅读