簡體   English   中英

dpkg-deb --build :當我使用 db_input 時 debconf 失敗

[英]dpkg-deb --build : debconf fails when I use db_input

我正在嘗試使用dpkg-deb --build命令構建一個包。

當我嘗試使用 db_input 時,它失敗了:

dpkg-deb --build audionet-0.0.8b/
dpkg-deb: building package `audionet' in `audionet-0.0.8b.deb'.

lintian audionet-0.0.8b.deb 
W: audionet: binary-without-manpage usr/bin/audionet

sudo dpkg -i audionet-0.0.8b.deb 
(Reading database ... 294473 files and directories currently installed.)
Preparing to unpack audionet-0.0.8b.deb ...
you start preinst file
dpkg: error processing archive audionet-0.0.8b.deb (--install):
 subprocess new pre-installation script returned error exit status 128
you are in postrm file
you start postinst file
you leave postinst file
Errors were encountered while processing:
 audionet-0.0.8b.deb

我的 preinst 文件是:

#!/bin/sh

# Exit on error
set -e

# echo something
echo "you start preinst file"

# Source debconf library.
. /usr/share/debconf/confmodule

# Ask questions
db_input medium audionet/question1 || true
#~ db_input medium audionet/question2 || true

# Show interface
db_go || true

echo "you leave preinst file"

模板文件:

Template: audionet/question1
Type: select
Choices: YES, no, dont know
Description: presence proxy :
 Do you use a proxy.

Template: audionet/question2
Type: string
Description: proxy def :
 Proxy serverport.

我還注意到安裝不會進入配置文件,因為沒有顯示 echo :

#!/bin/sh

# Exit on error
set -e

# echo something
echo "you are in config file"

# Source debconf library.
. /usr/share/debconf/confmodule

#~ # Ask questions
#~ db_input medium audionet/question1 || true
#~ db_input medium audionet/question2 || true

# Show interface
db_go || true

我無法找出問題所在。

謝謝。

我認為這里可能存在兩個問題。 首先,您不能在運行 debconf 的腳本中輸出到標准輸出。 一旦運行/usr/share/debconf/confmodulepreinst ,該preinst腳本從開始重新啟動,而echo語句再次運行。 要解決此問題echo 2>&1 in preinst運行echo 2>&1 in preinst 在當前腳本中,echo 行將中斷與 debconf 的通信通道。

也有可能在訪問模板時出現一些問題。 它看起來像 debconf 的前端(請參閱/usr/share/debconf/frontend很難獲得對 preinst 腳本中模板的訪問權限,但它可能存在一些問題。一旦您修復了 preinst 腳本,不要將輸出發送到標准輸出,這肯定會破壞事情並且可能是整個問題,導出DEBCONF_DEBUG=developer並重新運行腳本。這將跟蹤所有 debconf 操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM