Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

I've seen this message several times whenever someone has a problem installing, upgrading or removing some piece of software, but I wonder, what does it mean, and more importantly, how can I solve it?

share|improve this question

1 Answer 1

up vote 5 down vote accepted

That message is generic. It just means that the dpkg instance called by apt/apt-get failed for some motive. It doesn't explain why, how, or give hints how to solve it. As diagnostic message it is not useful.

You need to read the lines before the message (sometimes quite an amount of them) to find the real error that prevents you from manipulating the installation.

Yeah, but how do I solve it?

There is no single way to solve it. There are just way too many reasons why this can happen that it's just futile to list them all in a single post. Each and every circumstance is almost unique to that package/environment that it would be a titanic task just start to find some of them.

But, there's redemption. The fact that you see this message means that probably there are more relevant information in the lines before. For illustrative propose I will use a example:

(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)

Now, to find the problem, you need to read backwards:

  • E: Sub-process /usr/bin/dpkg returned an error code (1) doesn't tell me anything useful. So moving on.
  • Errors were encountered while processing: mongodb-10gen just says me what package have problems. Is useful but not enough.
  • subprocess installed post-installation script returned error exit status 100 this tells me that the script that failed was the postinst, the one executed in post-installation. This will come handy in some situations, but not in this one.
  • dpkg: error while cleaning up: nothing useful here.
  • invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found. BINGO! This tells us that invoke-rc.d, a binary that controls the init script in most Debian-like system, failed. It failed because it couldn't find the /etc/init.d/mongodb script. This is bad. We need to create it or copy from somewhere else so it start working again. Reinstalling the package is also normally an option for file not found errors.

    In this case, reporting a bug is not necessary because is probable that we were the ones that removed the script, but if you are completely sure you didn't touch the file (a debsums -sla should confirm it) then report a bug.

So, what exactly do you need to get help? Ideally, the complete output of the problem. It's also helpful to include the output of sudo dpkg -C and sudo apt-get check, and the output of apt-cache policy package where "package" is all the packages with problems.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.