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

17

Вкратце: я пытаюсь установить 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

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

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

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

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

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

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

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

Requist
источник
Вы должны прокрутить вверх в своем терминале и увидеть конкретную ошибку в сообщении, которое вы видели. Чтобы их отладить, вы должны увидеть, какая именно ошибка вызвала это.
Томас Уорд
в терминале должно быть описание, вы заглядывали в /var/log/spamassassin/spamd.log?
Камил
Я пролистал все логи, прочистил, переделал установку разными способами. Все, чтобы найти немного больше информации об ошибке, но я не могу найти любую. Spamd.log еще не сделан.
Реквист

Ответы:

16

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

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 к команде решило проблему, хотя в конце я изменил оболочку входа пользователя, чтобы синхронизировать ее с будущими обновлениями.

Requist
источник
У меня была похожая проблема с вами. С установщиком просто плоско не получается. У меня возникла проблема с установкой последней версии из debian-backports для wheezy. Оказалось, что они изменили скрипт post install для вызова 'su - $ OWNER -c "sa-update ...', который выполнял exec оболочки полного входа в систему в / bin / sh, что было несовместимо с нашим / etc / profile и /etc/profile.d, удалив '-', сделав его "su $ OWNER -c ...." исправил это для меня
Vagnerr
У меня нет точных проблем, но ваши советы по отладке мне очень помогли! Благодарность!
Chaosguru
9

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

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

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

Матия Nalis
источник