Ошибка Debconf в системе с systemd

Попробуйте следующее (обратите внимание, что ваши переменные оболочки ДОЛЖНЫ быть целыми числами):

awk -v C1="$ColumnNo1" -v C2="$ColumnNo2" -v C3="$ColumnNo3" -v C4="$ColumnNo4" -F'|' '
       { a1[$C1]++; a2[$C2]++; a3[$C3]++; a4[$C4]++}
       END {
       printf "Non-unique entries in column %d\n", C1 
       for (key in a1) {              
         if (a1[key] > 1) print key
       }
       printf "Non-unique entries in column %d\n", C2
       for (key in a2) {              
         if (a2[key] > 1) print key
       }
       printf "Non-unique entries in column %d\n", C3
       for (key in a3) {               
         if (a3[key] > 1) print key
       }
       printf "Non-unique entries in column %d\n", C4
       for (key in a4) {               
         if (a4[key] > 1) print key
       }}' <myfile.csv
2
01.07.2016, 16:47
2 ответа

Начнем с того, что использование debconf в отдельной программе кажется неправильным. Цитирую man debconf-devel, раздел OTHER SCRIPTS:

Вы также можете использовать debconf в других, автономных программах. Здесь следует обратить внимание на то. что debconf не предназначен и не должен использоваться в качестве реестра. В конце концов, это Unix и программы настраиваются файлами в /etc, а не какой-то туманной базой данных debconf. (которая в любом случае является лишь кэшем и может быть снесена). Поэтому хорошо подумайте, прежде чем использовать debconf в отдельной программе.

Эта же страница руководства также помогает решить вашу проблему в предыдущем разделе (СПРАВОЧНИК ПОСТИНСТА):

Если ваш постинст запускает демон, убедитесь, что вы сказали debconf остановиться в конце, поскольку в противном случае debconf может немного запутаться в том, когда ваш postinst завершен.

То есть, перед запуском вашего демона (даже если он не использует сам debconf) выдайте db_stop.

1
27.01.2020, 22:11

Итак, я наконец нашел проблему и опубликую ее на случай, если она кому-то пригодится в будущем.

Как я уже сказал, я пытался запустить службу из сценария postinst , и сказал, что служба пыталась использовать debconfig для получения некоторых параметров конфигурации, но произошла ошибка с debconf , поскольку один раз уже был запущен экземпляр (хотя вся конфигурация была сделана в файле config , а не в postinst ).

Проблема заключалась в том, что во время выполнения сценария postinst был активный интерфейс debconf , в то время как я не использовал debconf . Я, однако, прокомментировал строку, загружающую confmodue :

# . /usr/share/debconf/confmodule

Очевидно, dpkg-reconfigure (и я полагаю, dpkg тоже) считают, что ] confmodule загружается, если они соответствуют строке «confmodule» в файлах ( config , postinst и prerm ). Итак, хотя я не загружал модуль confmodule эффективно, dpkg-reconfigure не выпускал интерфейс, и поэтому служба не могла инициировать другой экземпляр debconf . Решением было просто удалить эту строку.

1
27.01.2020, 22:11

Теги

Похожие вопросы