Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What do the *-dev packages in the Linux package repositories actually contain?

My question is very basic, as is my knowledge right now.

I'm a long-time Linux user, but have only recently taken a major interest in programming. I see that many popular applications in the Ubuntu repositories have -dev packages (e.g. pidgin-dev in addition to pidgin). My question is this:

What is in these packages? How does downloading pidgin-dev help one to develop for Pidgin? Is it as simple as a dependency check for the tools necessary to create the plugins for the given application?

I was hoping there would be a substantial amount of documentation in the -dev packages, but if there is, I can't figure out how to access it. I'm thinking of something like a man-page, but useful for editing code.

Any and all advice more than welcome!

like image 826
conorsch Avatar asked Jul 21 '09 03:07

conorsch


People also ask

What are development packages?

A software package development process is a system for developing software packages. Packages make it easier to reuse and share code, e.g., via a software repository.

What is in a Linux package?

Packages. Most software applications designed for Linux or Unix systems are distributed as packages, which are archives that contain the pre-compiled binary software files, installation scripts, configuration files, dependency requirements, and other details about the software.

What are dev libraries?

Dev Library as a platform showcases blog posts and open source tools with easy-to-use navigation for these product areas: Machine Learning, Flutter, Firebase, Angular, Cloud, and Android.


2 Answers

The *-dev packages most often contain the headers related to a library's interface. Next most common are package-config files (*.pc) describing build options and staticly linked libraries.

In general, if you want to know the contents of a package you have installed, dpkg -L pkgname will get you that. The apt-file program can tell you the same for any package in the repositories.

Note, also, that the answers by William Pursell and caf contain useful additional details. If you find their input helpful, do upvote it.

like image 94
Phil Miller Avatar answered Nov 23 '22 15:11

Phil Miller


(disclaimer: I'm familiar with Debian but not Ubuntu, so although it is almost certain that everything I write below applies, there's is a chance it's not.)

One more item in the *-dev package is the /usr/lib/lib*.so link. The libfoo0 package will install the file /usr/lib/libfoo.so.0.0, while libfoo-dev installs the links /usr/lib/libfoo.so.0 and /usr/lib/libfoo.so. This is the mechanism that allows you to have libfoo0 and libfoo1 installed simultaneously, so that software requiring the old library can co-exist on the box with software using the new library. When you install libfoo-dev, any software that is compiled will follow the *.so link and link against the version of the library referenced by that link.

like image 39
William Pursell Avatar answered Nov 23 '22 14:11

William Pursell