Linux
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 在建構映像期間既沒有顯示錯誤也沒有顯示警告,但它沒有應用我的更新檔。
創建更新檔文件後,我更改了前兩行,因為在融合版本中,它們包含比較文件的絕對路徑。我想這可能是問題,但我不知道我應該寫什麼。
預先感謝您的任何幫助。
openssh
如果版本正確,對我來說看起來是正確的。您可以在build/tmp/work
文件夾中檢查您的更新檔是否找到了建構過程的方法。我遇到的未應用更新檔的主要原因是早期層中的一些傻瓜做了
do_install_append
覆蓋所有更新檔而不是應用適當的更新檔。要找到類似的東西,請執行
grep -r do_install_append sources/*/recipes-connectivity/openssh*
我認為問題在於有一個配置過程會在應用更新檔後的編譯過程中創建 sshd_config,從而覆蓋您的更新檔。可能有更好的方法(利用並修改該配置過程),但找不到相關文件,我發現我可以通過添加 do_compile_append 階段來應用更新檔。呼叫該文件而不是 .patch 可以防止 Yocto 系統嘗試應用它兩次(並標記錯誤)。
SRC_URI += " file://my_patch.latepatch " do_compile_append() { patch -i ../my_patch.latepatch }