サブプロセスのインストール後のdpkg構成エラーをデバッグする方法


17

要するに:私はspamassassinをインストールしようとしていますが、dpkgは次のものだけを返します:

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

何が間違っているかについての詳細な情報を見つけようとしましたが、有用なロギングはどこにも見つかりません。

/ var / crashにspamassassin crashreportが生成されますが、これは古いdpkgエラーと次のもののみを提供します:

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

スタートアップからdmesgロギングが続きます。依存性spamassassinが構成されていないため、Amavisはエラーを返します。

ログファイルを確認しました。

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

追加情報はありません。

可能なすべてのオクタルでdpkg -Dを試しましたが、何がうまくいかないかについて有用なものが見つかりません。

dpkgのエラーに関する多くの質問と可能な解決策が書かれており、私は多くのことを試みましたが、追加情報がなければ、どこでも手に入らないという感覚がありません。

間違いなく、どこに問題があるのか​​を読み取ったり、ログを記録してログに記録したりする可能性があるはずです。


ターミナルを上にスクロールして、表示されたメッセージで特定のエラーを確認する必要があります。これらをデバッグするには、これを引き起こした正確なエラーを確認する必要があります。
トーマスウォード

端末に説明があるはずです。/var/log/spamassassin/spamd.logを調べましたか?
カミル14

すべてのログを整理し、さまざまな方法でインストールをやり直しました。エラーについてもう少し情報を見つけるためにすべてが、私は見つけることができません。Spamd.logはまだ作成されていません。
Requist

回答:


16

OK、私はこの問題の解決策を見つけました。より多くのデータを取得するためにロギングを起動することはできなかったと思いましたが、すでに提示されたデータには問題の手がかりがありました。

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

configureの実行中にdpkgがspamassassinの処理中にエラーを検出したと言います。次の行は、インストール後のスクリプトが正しく終了しなかったことを示しています。

/ var / lib / dpkg /情報 DIR我々は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 $?を使用して終了コードを取得します)

問題は、ユーザーdebian-spamdが私のシステムにすでに存在していたが、そのログインシェルが/ bin / falseだったことでした。/ bin / falseを使用してSu-ingを実行すると、終了コード1以外のメッセージは表示されません。

コマンドに-s / bin / shを追加することで問題は解決しましたが、最終的にはユーザーのログインシェルを変更して、将来の更新との同期を維持しました。


同様の問題がありました。インストーラーがフラットに失敗するだけです。私のものは、wheezyのdebian-backportsから最新バージョンをインストールする際の問題であることが判明しました。彼らは、インストール後のスクリプトを変更して、「su-$ OWNER -c "sa-update ..."呼び出しを行い、/ etc / profileと互換性のない/ bin / shへの完全なログインシェルexecを実行した」および/etc/profile.dファイル '-'を削除して「su $ OWNER -c ....」にすることで修正しました
Vagnerr

正確な問題はありませんが、デバッグのヒントは大いに役立ちました!ありがとう!
chaosguru

9

通常、このような問題をデバッグするには、編集/var/lib/dpkg/info/spamassassin.postinst(または.preinst、pr .prermまたは.postrm;失敗したものに応じて)#!/bin/shし、一番上の行を#!/bin/sh -x(同じ場合は同じものをbash追加します-x)に変更します

これにより、シェルスクリプトの行ごとのデバッグが提供されるため、ゼロ以外のコードで終了する場所を特定できます(インストール/アップグレードが失敗する原因となります)。

ただし、デバッグするには少なくともいくつかのシェルスクリプトのスキルが必要になるでしょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.