Rpm
無法將變數從 kickstart 傳遞到 rpm
我有一個需要安裝到不同伺服器中的通用軟體包。安裝是通過相同的 kickstart 模板文件完成的。因此,kickstart 模板用於為每個伺服器生成 kickstart,然後在不同的伺服器中執行,並將相同的包安裝到這些伺服器中。在這個包中,我需要創建 ssh 密鑰(我設法正確地做到了這一點,並且在 key-gen 的註釋部分我想傳遞一個對於每個伺服器都不同的變數。)所以我認為應該怎麼做就是在這個模板文件中創建一個變數,然後把這個變數傳給spec文件。所以:
在 kickstart 模板中,我這樣做:
svr_name=<xsl:value-of select="$node"/> packages=("svr_xxxxxxx_common" "svr_common" )
每個 kickstart 實例都會有所不同。在我在 %post 階段執行的一個包中:
ssh-keygen -q -t rsa -f /home/xxx/.ssh/id_rsa -C "${svr_name}" -N ""
但這不起作用。此變數在安裝後顯示為不存在。ssh-keygen 工作正常,但沒有評論。
在執行 scriptlet 之前,環境由 rpm 淨化。
您可以使用文件。例如,在 kickstart 中:
%pre echo "svr_XXX" > /foo
然後在
%post
rpm 的 scriptlet 中。%post SVR_NAME=$(cat /foo) ssh-keygen -q -t rsa -f /home/xxx/.ssh/id_rsa -C "${SVR_NAME}" -N ""
也應該處理文件的(不)存在以及該文件的更好位置。我會把它留給你:)