dpkg-deb --build: ошибка debconf при использовании 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

Мой предварительный файл:

#!/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.

Я также заметил, что установка не переходит в файл конфигурации, так как эхо не отображается:

#!/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

Я не могу понять, в чем проблема.

Спасибо.


person doom    schedule 26.03.2018    source источник
comment
При попытке сортировки ошибки добавьте к команде LANG=C, чтобы отображались стандартные сообщения об ошибках (и мы можем погуглить источники).   -  person Giacomo Catenazzi    schedule 26.03.2018
comment
Добавить LANG=C к какой команде? Пробовал три и, кажется, ничего не меняет, кроме добавления ошибок.   -  person doom    schedule 27.03.2018
comment
например LANG=C dpkg-deb ..., поэтому вы получаете ошибки, как в коде.   -  person Giacomo Catenazzi    schedule 27.03.2018
comment
предваряю, извините   -  person Giacomo Catenazzi    schedule 27.03.2018
comment
вроде больше ничего :LANG=C dpkg-deb --build audionet-0.0.8b/ dpkg-deb: building package `audionet' in `audionet-0.0.8b.deb'.   -  person doom    schedule 27.03.2018
comment
Он просто напишет сообщение об ошибке на английском языке, чтобы мы могли лучше помочь (и вы можете погуглить более широкое сообщество). Это не решение.   -  person Giacomo Catenazzi    schedule 27.03.2018
comment
ХОРОШО. Спасибо за этот совет. Я обновил свой вопрос на английском языке.   -  person doom    schedule 27.03.2018


Ответы (1)


Я думаю, что здесь потенциально могут быть две проблемы. Во-первых, вы не можете вывести стандартный вывод в сценарии, запускающем debconf. Как только вы запустите /usr/share/debconf/confmodule в preinst, сценарий preinst перезапустится с самого начала, и снова запустится оператор echo. Чтобы обойти это, запустите echo 2>&1 in preinst . В текущем скрипте эхо-строка нарушит канал связи с debconf.

Также потенциально возможна проблема с доступом к шаблонам. Похоже, что внешний интерфейс debconf (см. /usr/share/debconf/frontend работает довольно усердно, чтобы получить доступ к шаблонам в сценарии preinst, но, возможно, с этим есть какая-то проблема. Как только вы исправите сценарий preinst, чтобы он не отправлял вывод на стандартный вывод, что определенно сломает все и может быть вся проблема, экспортируйте DEBCONF_DEBUG=developer и перезапустите скрипт.Это отследит все операции debconf.

person Sam Hartman    schedule 18.02.2021