797: debian-main

Explain xkcd: It's 'cause you're dumb.
Jump to: navigation, search
debian-main
dpkg: error processing package (--purge): subprocess pre-removal script returned error exit 163: OH_GOD_THEYRE_INSIDE_MY_CLOTHES
Title text: dpkg: error processing package (--purge): subprocess pre-removal script returned error exit 163: OH_GOD_THEYRE_INSIDE_MY_CLOTHES

Explanation

Debian is a GNU/Linux distribution most notable for introducing APT (Advanced Packaging Tool). APT is a tool that functions as an automated general software installer for GNU/Linux systems; all one has to do is tell it what software package they would like to install, and the program will automatically fetch the software and all of its dependencies (other packages that a program relies on, such as a library for processing ZIP archives) from a central repository. It will also automatically handle upgrades by automatically checking if the repository version of a package is higher than the currently installed version, and it can even handle the use of multiple repositories and linking between them; for example, if a piece of software is deemed worthy of inclusion in Debian's main repository, but as a stable release, the software developers can provide their own repository to provide a more experimental version for users who want it, and once that repository is added to APT's source list, APT will automatically realize that it should use the experimental version, since it has a higher version than that of the main repository. Although this wasn't the first package management system for easy GNU/Linux installation (that honor goes to RPM), it is the first one that seamlessly integrated online installation and upgrades into the mix.

Debian's main repository, debian-main, is included by default in all Debian installations. It's what you might call the "canon" of Debian, containing only those packages that have been approved by official Debian developers. Thus, getting a package on debian-main means that it, theoretically, conforms to a standard of quality.

In this case, however, the Debian developers seem to have not noticed that one of the dependencies for the package is "locusts." Locusts are real insects, the migratory forms of several grasshopper species, that are best known for breeding extremely quickly, swarming, and devouring all green plant matter they come across, resulting in crop devastation (some consider this a plague). In some parts of the world they are also considered a delicacy. Cueball probably does not appreciate this as they crawl over his body searching for food, apparently spontaneously generated by APT as it saw that it needed "locusts" to install the package.

The title text is an error line from dpkg, the program used to install/remove APT packages. Every package contains several scripts (although some of them may be empty) that are run on various events related to that package; these are used to perform any setup/cleanup tasks the package needs. This line is an error line indicating that one of those scripts has failed. The relevant portions are:

  • error processing package (--purge): --purge is the option to purge a package completely from the system. This means that the program itself, all related data files, and all configuration files are removed from the system. So, the user was attempting to completely remove the locusts from the system without leaving a trace.
  • subprocess pre-removal script: The pre-removal script is the code run before actually removing a piece of software. Mostly, this allows long-running software (such as webservers) to stop themselves before removing anything, to avoid corrupting the hard disk. That means the error came while the computer was preparing to get rid of the locusts.
  • returned error exit 163: "Returned error" means just what it says, the script returned an error. "Exit" means that the error was a result of calling the exit() function with a non-zero value, specifically the value 163. The exact value has no real significance other than signifying to a user or other application that understands what the code means; neither dpkg nor the Linux kernel itself treat any exit value specially, apart from checking whether the value is 0 (which means no error).
  • OH_GOD_THEYRE_INSIDE_MY_CLOTHES: This is the message returned along with the error. This seems to be a message from the programmer, somewhat like the apocryphal "Help! I'm trapped in ... factory" urban myth. The programmer has failed to write a functioning pre-removal script, due to locusts and is calling for help via an error message.

Transcript

[A swarm of insects cover Cueball and his computer. They are leaning back on their chair, flailing to get away.]
Cueball: AAAAAAAA
Caption below comic: My package made it into debian-main because it looked innocuous enough; no one noticed "locusts" in the dependency list.

Trivia

comment.png add a comment! ⋅ comment.png add a topic (use sparingly)! ⋅ Icons-mini-action refresh blue.gif refresh comments!

Discussion

Locusts may very well be grasshoppers. There doesn't seem to be any difference in the species, the grasshoppers change into locusts when they are crowded. Wikipedia - Locust swarming behaviour --Macxcool (talk) 14:50, 13 February 2014 (UTC)

I disagree with the last part of the explanation. I feel that the statement OH_GOD_THEYRE_INSIDE_MY_CLOTHES is the (possibly final) code comment from the programmer writing the dependencies, and has nothing to do with the server on the other end (why would a computer be wearing clothes in the first place?). 141.101.81.216 14:23, 24 February 2014 (UTC)

Why would they be attacking Cueball or is Debian a bug for Haiku? -- Weatherlawyer (talk) (please sign your comments with ~~~~)
The capitalisation and underscores are consistant with the error codes given by apt commands. 108.162.246.117 05:06, 30 April 2014 (UTC)
Maybe the title text is just parsing the characters panicked thoughts as a somewhat appropriate command structure? -Pennpenn 108.162.250.162 03:54, 28 July 2015 (UTC)
The Statement looks suspiciously like the messages lintian outputs on checking a package before it is uploaded to debian. An example would be: https://lintian.debian.org/tags/binary-file-built-without-LFS-support.html A longer list of examples is here: https://lintian.debian.org/tags.html Gunterkoenigsmann (talk) 20:55, 28 October 2016 (UTC)