“E: Sub-proses / usr / bin / dpkg mengembalikan kode kesalahan (1)” Apa artinya ini?

31

Saya telah melihat pesan ini beberapa kali setiap kali seseorang memiliki masalah menginstal, memutakhirkan atau menghapus beberapa perangkat lunak, tetapi saya bertanya-tanya, apa artinya , dan yang lebih penting, adalah mungkin untuk menyelesaikannya?

(Reading database ... 81657 files and directories currently installed.)
 Removing mongodb-10gen ...
 arg: remove
 invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
 dpkg: error processing mongodb-10gen (--remove):
  subprocess installed pre-removal script returned error exit status 100
 invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
 dpkg: error while cleaning up:
  subprocess installed post-installation script returned error exit status 100
 Errors were encountered while processing:
  mongodb-10gen
 E: Sub-process /usr/bin/dpkg returned an error code (1)

(di atas hanyalah sebuah contoh, bukan masalah saya yang sebenarnya)

Braiam
sumber
2
Jika Anda mencoba apt-get install (something)dan Anda mendapatkan pesan kesalahan ini seperti yang saya lakukan, solusi untuk saya adalah apt-get upgrade (something).
PJ Brunet

Jawaban:

30

Pesan itu generik. Ini hanya berarti bahwa dpkginstance dipanggil oleh apt/ apt-getgagal karena beberapa alasan. Itu tidak menjelaskan mengapa, bagaimana, atau memberi petunjuk bagaimana menyelesaikannya. Sebagai pesan diagnostik, itu tidak berguna.

Anda perlu membaca baris sebelum pesan (kadang-kadang cukup banyak) untuk menemukan kesalahan nyata yang mencegah Anda menyelesaikan instalasi.

Ya, tapi bagaimana cara mengatasinya?

Tidak ada satu cara untuk menyelesaikannya. Ada begitu banyak alasan mengapa ini bisa terjadi sehingga sia-sia untuk mencoba mendaftarkan semuanya dalam satu posting. Setiap keadaan hampir unik untuk paket / lingkungan itu.

Tapi, ada penebusan. Fakta bahwa Anda melihat pesan ini berarti bahwa mungkin ada informasi yang lebih relevan di baris sebelum pesan. Untuk tujuan ilustrasi saya akan menggunakan contoh:

(Reading database ... 81657 files and directories currently installed.)
 Removing mongodb-10gen ...
 arg: remove
 invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
 dpkg: error processing mongodb-10gen (--remove):
  subprocess installed pre-removal script returned error exit status 100
 invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
 dpkg: error while cleaning up:
  subprocess installed post-installation script returned error exit status 100
 Errors were encountered while processing:
  mongodb-10gen
 E: Sub-process /usr/bin/dpkg returned an error code (1)

Sekarang, untuk menemukan masalahnya, Anda perlu membaca mundur:

  • E: Sub-process /usr/bin/dpkg returned an error code (1)tidak memberitahuku sesuatu yang berguna. Jadi terus maju.
  • Errors were encountered while processing: mongodb-10genkatakan saja paket apa yang bermasalah. Bermanfaat tetapi tidak cukup.
  • subprocess installed post-installation script returned error exit status 100: ini memberitahu saya bahwa skrip yang gagal adalah postinst, yang dieksekusi di pasca instalasi. Ini akan berguna dalam beberapa situasi, tetapi tidak dalam situasi ini.
  • dpkg: error while cleaning up: tidak ada yang berguna di sini.
  • invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.BINGO! Ini memberitahu kita bahwa invoke-rc.d, biner yang mengontrol skrip init di sebagian besar sistem mirip Debian, gagal. Gagal karena tidak dapat menemukan /etc/init.d/mongodbskrip. Ini buruk. Kita perlu membuatnya atau menyalin dari tempat lain sehingga mulai berfungsi kembali. Menginstal ulang paket juga biasanya merupakan opsi untuk file not foundkesalahan.

    Dalam hal ini, melaporkan bug tidak diperlukan karena kemungkinan kami adalah orang yang menghapus skrip, tetapi jika Anda benar-benar yakin Anda tidak menyentuh file (a debsums -slaharus mengkonfirmasi), kemudian laporkan bug.

Jadi, apa sebenarnya yang Anda butuhkan untuk mendapatkan bantuan? Idealnya, hasil lengkap dari masalah. Ini juga membantu untuk menyertakan output dari sudo dpkg -Cdan sudo apt-get check, dan output di apt-cache policy package1 package2...mana "package1 package2 ..." termasuk semua paket dengan masalah.

Braiam
sumber
sebagai pesan diagnostik, IS IS membantu jika Anda membaca seluruh kesalahan (Kesalahan ditemui saat memproses: mongodb-10gen) itu sebabnya terdaftar sebagai E dan bukan Kesalahan
mchid
1
@ mchid tetapi apa yang menyebabkan kesalahan? Itu tidak memberi Anda petunjuk tanpa terlihat.
Braiam
@ mchid ya, bagaimana saya bisa mengetahui hal itu jika saya baru saja membaca Errors were encountered while processing: mongodb-10gen? Karena itu, untuk menyelesaikan masalah, garis itu tidak berharga .
Braiam
Sayangnya saya pikir Anda hanya mencari cara untuk memperbaiki masalah ("apakah mungkin untuk menyelesaikannya") Saya kira saya mengambil itu di luar konteks.
mchid
BTW, jalankan sudo touch /etc/init.d/mongodbdan kemudian jalankan sudo apt-get purge mongodb-10genuntuk memperbaiki masalah. Saya menguji ini dan selama file tersebut ada (/etc/init.d/mongodb) dpkg akan melanjutkan bahkan jika file kosong yang merupakan sentuhan apa (membuat file kosong).
mchid