Yocto - パッチはまだ適用されていません。

Yocto - パッチはまだ適用されていません。

私はYoctoが作成したLinuxを使用しています。/etc/ssh/sshd_configファイルにいくつかの変更を追加する必要があります。次のコマンドを使用して、次のパッチファイルを作成しましたmeld

--- a/sshd_config
+++ b/sshd_config
@@ -116,3 +116,8 @@
 #  AllowTcpForwarding no
 #  PermitTTY no
 #  ForceCommand cvs server
+
+#SFTP server configuration
+Match Group root
+ChrootDirectory /share
+ForceCommand internal-sftp

次の内容でファイルを作成しmeta-mylayer/recipes-connectivity/opensshました。openssh_8.2p1.bbappend

FILESEXTRAPATHS_prepend := "${THISDIR}:"
SRC_URI += "file://configure_sftp_server.patch"

.patchファイルを同じディレクトリに配置しました。問題は、Yoctoが画像をビルドしている間にエラーや警告を表示しないが、私のパッチを適用しないことです。

パッチファイルを作成した後、最初の2行を変更しました。なぜなら、Meldバージョンには比較ファイルへの絶対パスが含まれていたからです。これが問題だと思いますが、何と書くべきかわかりません。

助けてくれてありがとう。

答え1

考える問題は、パッチの適用後にコンパイルプロセス中にsshd_configを生成してパッチを上書きする構成プロセスがあることです。より良い方法(この設定プロセスを利用して修正すること)があるかもしれませんが、ドキュメントが見つからず、do_compile_appendステップを追加するとパッチを適用できることがわかりました。 .patch以外の名前でファイル名を指定すると、Yoctoシステムはそのファイルを2回適用しようとする(およびエラー表示)を防ぐことができます。

   SRC_URI += " file://my_patch.latepatch "
    
    do_compile_append() {
       patch -i ../my_patch.latepatch
    }

答え2

opensshバージョンが正しければ、私は見るのに適しているようです。このフォルダでは、build/tmp/workパッチがビルドプロセスに入ることができることを確認できます。

適用されないパッチが発生する主な理由は、初期レイヤーの一部の愚か者がdo_install_append正しいパッチを適用するのではなく、すべてのパッチを上書きするためです。

そのようなものを見つけるには、次を実行します。

grep -r do_install_append sources/*/recipes-connectivity/openssh*

関連情報