我已經做了一個debian軟件包來自動安裝oozie。 postinst腳本基本上是一個shell腳本,在安裝該軟件包後運行。我想訪問這個腳本中的環境變量。我應該在哪裏設置環境變量?訪問Debian軟件包的postinst腳本中的環境變量
1
A
回答
0
取決於你是什麼實際上試圖完成,將信息傳遞給包腳本的正確方法是使用Debconf變量。
簡單地說,你添加一個debian/templates
文件是這樣的:
Template: oozie/secret
Type: string
Default: xyzzy
Description: Secret word for teleportation?
Configure the secret word which allows the player to teleport.
,改變你的postinst腳本像
#!/bin/sh -e
# Source debconf library.
. /usr/share/debconf/confmodule
db_input medium oozie/secret || true
db_go
# Check their answer.
db_get oozie/secret
instead_of_env=$RET
: do something with the variable
可以preseed與價值debconf數據庫爲oozie/secret
運行前包裝腳本;那麼它不會提示該值。只需執行如下操作:
預配置值爲plugh
。
0
添加到您的postinst腳本:
#!/bin/sh -e
# ...
pid=$$
while [ -z "$YOUR_EVAR" -a $pid != 1 ]; do
ppid=`ps -oppid -p$pid|tail -1|awk '{print $1}'`
env=`strings /proc/$ppid/environ`
YOUR_EVAR=`echo "$env"|awk -F= '$1 == "YOUR_EVAR" { print $2; }'`
pid=$ppid
done
# ... Do something with YOUR_EVAR if it was set.
只有export YOUR_EVAR=...
dpkg -i來運行之前。
不是推薦的方式,但它緊湊,簡單,正是PO所要求的。
相關問題
- 1. $(SUDO_USER)Debian軟件包中的變量makefile
- 2. Debian軟件包的創建postinst作爲非root
- 3. 如何訪問Expect腳本中的環境變量?
- 4. 在bash腳本中訪問系統範圍的環境變量
- 5. 爲什麼我的TextMate軟件包有時無法訪問環境/ shell變量?
- 6. debian/postinst如何知道正在安裝哪個軟件包?
- 7. 從Java訪問JRuby腳本頂級環境的變量
- 8. 如何在bash腳本中訪問PHP環境變量?
- 9. Expect腳本環境變量問題
- 10. 訪問閃存中的環境變量
- 11. 訪問package.json中的環境變量
- 12. Ansible - 訪問本地環境變量
- 13. 環境變量訪問AWS
- 14. 訪問環境變量
- 15. 使用Python腳本訪問TeamCity環境變量
- 16. 重新啓動的服務,在debian postinst腳本中死亡。
- 17. 腳本使debian軟件包管理器變得毫無價值
- 18. 運行腳本的Windows環境變量
- 19. 的log4j - 訪問環境變量
- 20. jenkins中訪問環境變量
- 21. 在Java中訪問shell環境變量
- 22. Scala:Eclipse在Ubuntu中訪問環境變量
- 23. 如何訪問腳本組件中的ssis包變量
- 24. 取消預安裝腳本中的debian軟件包安裝
- 25. 從Debian軟件包結構中的程序訪問資源
- 26. 如何在由PHP調用的shell腳本中訪問環境變量?
- 27. 在Tomcat中設置shell腳本/訪問的環境變量應用程序
- 28. Shoes Debian軟件包
- 29. 訪問反應組件中的環境變量
- 30. 如何在.desktop文件的exec行中訪問環境變量?
環境變量從父到子繼承(複製)。所以,在父母,即無論運行腳本。 – cdarke
@cdarke,當我部署debian時,仍然無法訪問env變量。我將它們設置在bashrc文件中。 –
你確定.bashrc文件正在執行嗎?它通常不會被腳本執行,並且如果bash被調用爲'sh',則不會被執行。 – cdarke