Is it better to compile from source or to install from a .deb package?

Sometimes, when downloading software from the Internet, I find that there is a .deb package ready for either my Debian/Ubuntu and also a tarball to be compiled. In the beginning I would simply use the package for its ease of installation, and wouldn't even dare attempting to compile. Even the sound of it scared me a bit. Nowadays, however, when I have the option I sometimes find myself in a dilemma: is there an unpopular advantage to compiling from source compared with the .deb package? I hope to find out here, thank you.


The advantage of compiling from source is that you can compile packages with certain flags/options which may be missing/disabled in stock-standard Ubuntu packages. Also, it makes it easy to have multiple versions of the same program installed. Also, you can choose an exact version of a package which may be already removed from or not yet present in Ubuntu repositories (example: I have several versions of Python 2.4.x in my /opt/ directory as I need it to run some older software).

The disadvantage of compiling from source is that, unless you build a .deb and then install it, the normal "./configure; make; sudo make install" procedure keeps Ubuntu's package manager completely unaware of the changes you're making, so you're not going to get any updates for the manually-compiled software; and it's possible that package manager will later override/break your package if you're not careful to install it in a separate location.

In short: Always consider installing from standard Ubuntu repositories first, next consider installing a .deb; only compile from sources if you know exactly why you need to do this.


I was arguing on this just yesterday. I think it is extremely important to not build anything fragile, as it is known that there is no such as up to date and good documentation, especially when you are working with a fragile system, there will be no time to fight the fire and write documentation, and where everything is robust the documentation is not needed that much. So you should never ever compile from source, find another solution, use another software, change your architecture, but do not use something that will break after update. And yes it has no anything to do with kernel version, it is about the architecture of your machine, and in nowadays you hardly can get significant difference with compiling from the source code, I bet you will not get any.