2

Yoctoのデフォルト パッケージを置き換えたいと思います。具体的には、OpenSSL に置き換えたいと考えています。

を使用IMAGE_INSTALL_removeし、 を追加しましPREFERRED_PROVIDER_virtual/openssl=<my version>た。しかし、何らかの理由で、元の openssl が引き続きビルドされ、他のレシピによって使用されます。

自分のビルドの openssl をすべてのシステムのデフォルト プロバイダーにする方法を教えてください。

4

1 に答える 1

4

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 を使用します。これは、コード スニペットの最初の 3 行から判断できます。

したがって、ターゲット ビルドに openssl を使用するように curl を変更したい場合は、最初の行gnutlsをに置き換える必要があります。sslPACKAGECONFIG ??= "......"

デフォルトはそれらによって異なりますが、かなりの数のレシピがこの種のサポートを受けています. したがって、イメージ内のどのレシピが openssl にドラッグされるかを正確に確認し、(可能であれば) それらを再構成する必要があります。

于 2014-11-13T07:42:47.237 に答える