Bagaimana cara men-debug dpkg mengkonfigurasi kesalahan pada sub-proses pasca-instalasi?

17

Singkatnya: Saya mencoba menginstal spamassassin tetapi dpkg hanya mengembalikan dengan:

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

Saya telah mencoba untuk menemukan informasi lebih lanjut tentang apa yang salah tetapi saya tidak dapat menemukan logging yang berguna.

Dalam / var / crash, spamassassin crashreport dihasilkan tetapi ini hanya memberikan kesalahan dpkg lama dan:

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

Diikuti oleh dmesg masuk dari startup. Amavis memberikan kesalahan karena dependensi spamassassin tidak dikonfigurasi.

Saya memeriksa file log:

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

tetapi tidak ada informasi tambahan.

Saya mencoba dpkg -D dengan semua oktal yang mungkin tetapi saya menemukan tidak ada yang berguna tentang apa yang bisa salah.

Banyak pertanyaan dan solusi yang mungkin telah ditulis tentang kesalahan dpkg dan banyak yang telah saya coba, tetapi tanpa informasi tambahan saya tidak memiliki perasaan bahwa saya mendapatkan di mana saja.

Tentunya harus ada suatu tempat kemungkinan untuk membaca apa yang salah atau untuk membuat log sehingga akan dicatat?

Meminta kembali
sumber
Anda harus menggulir ke atas di terminal Anda dan melihat kesalahan spesifik, dalam pesan yang Anda lihat. Untuk debug ini, Anda harus melihat apa yang sebenarnya kesalahan itu yang memicu ini.
Thomas Ward
harus ada deskripsi di terminal, apakah Anda sudah melihat /var/log/spamassassin/spamd.log?
kamil
Saya telah membajak semua log, membersihkan, memperbaiki instalasi dengan berbagai cara. Semua untuk menemukan sedikit informasi lebih lanjut tentang kesalahan, tetapi saya tidak dapat menemukannya. Spamd.log belum dibuat.
Requist

Jawaban:

16

Ok, saya sudah menemukan solusi untuk masalah ini. Saya pikir saya tidak dapat menghidupkan logging untuk mendapatkan lebih banyak data, data yang sudah disajikan memiliki petunjuk untuk masalah tersebut.

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

mengatakan dpkg menemui kesalahan saat memproses spamassassin saat menjalankan configure. Baris berikutnya mengirimkan skrip pasca-pemasangan kepada kami tidak selesai dengan benar.

Dalam direktori / var / lib / dpkg / info kita dapat menemukan file skrip dari dpkg, file: spamassassin.postinst memberi kita file skrip yang menghasilkan kesalahan.

Dalam file ini kita tahu kita harus melihat kode yang dijalankan oleh configure:

if ["$ 1" = "configure"]; kemudian

dan setelah beberapa debug saya menemukan baris:

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

mengembalikan kode keluar 1 (jalankan perintah @commandline dan gunakan echo $? di samping untuk mendapatkan kode keluar)

Masalahnya adalah bahwa pengguna debian-spamd sudah ada di sistem saya tetapi shell loginnya adalah / bin / false. Menyesuaikan dengan / bin / false mengembalikan tanpa pesan apa pun kecuali kode akses 1

Menambahkan -s / bin / sh ke perintah menyelesaikan masalah meskipun pada akhirnya saya memang mengubah shell login pengguna agar tetap sinkron dengan pembaruan di masa mendatang.

Meminta kembali
sumber
Saya memiliki masalah serupa dengan Anda. Dengan installer saja gagal rata. Milik saya ternyata menjadi masalah dengan menginstal versi terbaru dari debian-backports untuk mengi. Ternyata mereka mengubah skrip pemasangan pos untuk memiliki panggilan 'su - $ OWNER -c "sa-update ...' yang melakukan eksekusi shell login penuh ke / bin / sh yang tidak sesuai dengan profil / etc / kami. dan /etc/profile.d menghapus file '-' menjadikannya "su $ OWNER -c ...." memperbaikinya untuk saya
Vagnerr
Saya tidak punya masalah, tetapi petunjuk debug Anda banyak membantu saya! Terima kasih!
chaosguru
9

Umumnya untuk men-debug masalah seperti itu, Anda akan mengedit /var/lib/dpkg/info/spamassassin.postinst(atau .preinst, pr .prermatau .postrm; tergantung pada yang gagal) dan mengubah #!/bin/shpada baris teratas ke #!/bin/sh -x(hal yang sama jika itu bashsebagai gantinya: tambahkan saja -x)

Itu akan memberi Anda debug skrip shell baris-demi-baris, sehingga Anda dapat mengetahui di mana keluarnya kode non-nol (menyebabkan instalasi / peningkatan gagal).

Mungkin akan membutuhkan setidaknya beberapa keterampilan skrip shell untuk melakukan debug.

Matija Nalis
sumber