Как отладить ошибку конфигурации dpkg в постинсталляции подпроцесса?

Короче говоря: я пытаюсь установить spamassassin, но dpkg возвращается только с:

dpkg: error processing spamassassin (--configure):
subprocess installed post-installation script returned error exit status 1

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

В / var / crash генерируется аварийный отчет spamassassin, но он выдает только старые ошибки dpkg и:

 Start-Date: 2014-02-17  19:18:13
 Commandline: apt-get install spamassassin
AptOrdering:
 spamassassin: Configure
 amavisd-new-postfix: Configure

После запуска dmesg при запуске. Amavis выдает ошибку, потому что зависимость spamassassin не настроена.

Я проверил файлы журнала:

apt history.log
apt term.log
dpkg.log
syslog.log

, но никакой дополнительной информации.

Я пробовал dpkg -D со всеми возможными восьмеричными числами, но я не нашел ничего полезного в том, что может пойти не так.

Было написано множество вопросов и возможных решений об ошибках dpkg, и многие из них я пробовал, но без дополнительной информации у меня нет ощущения, что я что-то получаю.

Конечно, где-то должна быть возможность прочитать, что идет не так, или запустить какую-нибудь запись, чтобы она была записана?

16
задан 14 August 2015 в 07:30

2 ответа

Хорошо, я нашел решение этой проблемы. Хотя я не смог запустить регистрацию, чтобы получить больше данных, уже представленные данные имели ключ к решению проблемы.

dpkg: error processing spamassassin (--configure):
subprocess installed post-installation script returned error exit status 1

говорит, что dpkg обнаружил ошибку при обработке spamassassin при запуске configure. Следующая строка сообщает нам, что сценарий после установки не завершился корректно.

В каталоге / var / lib / dpkg / info мы можем найти файлы сценариев dpkg, файл: spamassassin.postinst дает нам файл сценария, который сгенерировал ошибку .

В этом файле мы знаем, что нам нужно посмотреть на код, запускаемый configure:

if ["$ 1" = "configure"]; затем

и после некоторой отладки я обнаружил строку:

su debian-spamd -c "sa-update --gpghomedir / var / lib / spamassassin / sa -update-keys \ --import /usr/share/spamassassin/GPG.KEY"

вернул код выхода 1 (запустите команду @commandline и используйте echo $? next для получения кода выхода)

Проблема заключалась в том, что пользователь debian-spamd уже существовал в моей системе, но его оболочкой входа в систему была / bin / false. При использовании / bin / false возвращается без какого-либо сообщения, кроме кода выхода 1.

Добавление в команду -s / bin / sh решило проблему, хотя в конце я изменил оболочку входа пользователя, чтобы синхронизировать ее с будущими обновлениями.

0
ответ дан 14 August 2015 в 07:30
  • 1
    насколько я знаю, minicom может использоваться, чтобы соединиться с модемом и отправить текстовые команды в то же. В моем случае мне нужно что-то как wireshark inorder для отладки моего приложения, чтобы видеть, устанавливает ли это корректные коммуникационные свойства и отправляет правильные сигналы управления. Я прошел minicom конфигурации и не нашел режим сниффинга в нем, исправьте меня если I' m неправильно. – Nachiketh 6 August 2015 в 09:59

Как правило, для устранения таких проблем вы должны отредактировать /var/lib/dpkg/info/spamassassin.postinst (или .preinst, pr .prerm или .postrm; в зависимости от того, какая из них не работает) и изменить #!/bin/sh в верхней строке на #!/bin/sh -x (то же самое, если вместо этого bash: просто добавьте -x)

Это обеспечит вам построчную отладку сценария оболочки, так что вы сможете определить, где он находится, с ненулевым кодом ( вызывая сбой установки / обновления).

Вероятно, для отладки потребуются, по крайней мере, некоторые навыки написания сценариев.

0
ответ дан 14 August 2015 в 07:30

Другие вопросы по тегам:

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