What's the difference between dev package and ordinary package? [duplicate]

When I searched libmicrohttpd package using apt search, I got this

libmicrohttpd-dbg/xenial 0.9.44+dfsg-1ubuntu2 amd64
  library embedding HTTP server functionality (debug)

libmicrohttpd-dev/xenial 0.9.44+dfsg-1ubuntu2 amd64
  library embedding HTTP server functionality (development)

libmicrohttpd10/xenial,now 0.9.44+dfsg-1ubuntu2 amd64
  library embedding HTTP server functionality

I don't know what's the difference between the package ending with -dev/-dbg and the ordinary one. What's the between them? Thanks in advance!


Solution 1:

In maximally simple terms:

  • -dev packages contain files needed for writing code that links to the program
  • -dbg packages contain debugging symbols, which as the name implies are used when debugging the program

You don't need these in order to use the program, just as you don't need the -doc package if that shows up.

For more info, see:

  • How and why to create -dbg, -dev, -doc packages?
  • https://stackoverflow.com/questions/19032398/what-does-the-dev-dbg-and-utils-mean