如何在Yocto中替换OpenSSL包?

时间:2014-11-13 02:50:42

标签: openssl bitbake yocto

我想替换Yocto中的默认包。具体来说,我想替换OpenSSL。

我使用了IMAGE_INSTALL_remove,并添加了PREFERRED_PROVIDER_virtual/openssl=<my version>。但由于某种原因,原始的openssl不断被其他食谱构建和使用。

如何让我的openssl构建成为所有系统的默认提供者?

1 个答案:

答案 0 :(得分:3)

嗯,在Yocto中确实没有全球性的SSL提供商选择。

您必须查看openssl中哪些食谱拖动,并检查它们是否支持切换到gnutls(或任何您想要使用的)。

如果我们看一下curl_7.37.1.bb:

PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "ipv6", "ipv6", "", d)} gnutls zlib"
PACKAGECONFIG_class-native = "ipv6 ssl zlib"
PACKAGECONFIG_class-nativesdk = "ipv6 ssl zlib"

PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
PACKAGECONFIG[ssl] = "--with-ssl,--without-ssl,openssl"
PACKAGECONFIG[gnutls] = "--with-gnutls=${STAGING_LIBDIR}/../,--without-gnutls,gnutls"
PACKAGECONFIG[zlib] = "--with-zlib=${STAGING_LIBDIR}/../,--without-zlib,zlib"

你会看到curl支持gnutls和openssl。在这种特殊情况下,默认情况下使用gnutls进行目标构建,使用openssl进行本机(主机)构建。这可以从代码片段中的前三行确定。

因此,如果您想更改curl以使用openssl作为目标版本,那么您应该已在第gnutls行中将ssl替换为PACKAGECONFIG ??= "......"

相当多的食谱得到了这种支持,尽管它们之间的默认值有所不同。因此,您必须确切地检查图像中的哪些配方在openssl中拖动,并重新配置它们(如果可能)。