Yoctoのデフォルト パッケージを置き換えたいと思います。具体的には、OpenSSL に置き換えたいと考えています。
を使用IMAGE_INSTALL_remove
し、 を追加しましPREFERRED_PROVIDER_virtual/openssl=<my version>
た。しかし、何らかの理由で、元の openssl が引き続きビルドされ、他のレシピによって使用されます。
自分のビルドの openssl をすべてのシステムのデフォルト プロバイダーにする方法を教えてください。
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
をに置き換える必要があります。ssl
PACKAGECONFIG ??= "......"
デフォルトはそれらによって異なりますが、かなりの数のレシピがこの種のサポートを受けています. したがって、イメージ内のどのレシピが openssl にドラッグされるかを正確に確認し、(可能であれば) それらを再構成する必要があります。