I don't understand why us, Linux's users, have to compile source code in order to install apps? Why it can't be like Windows platform, everything is ready to serve as binary packages?

Of course, please don't misunderstand that I complain the face compiling-to-run. In fact I love it, it helps me a lot in practicing with command lines, deeper understanding in programming process. But my friends and my family don't think so. Well, their point is they aren't programmer. Indeed that we do have some distros such as Ubuntu and its family which is easy to install apps. But not every apps found on the internet could do that, even on Ubuntu or Mint.

So, why we have to compile source code to install app? (It would be very kind of you if I could have a bonus answer on 'What is benefit from compiling source code but not using binary package?')

closed as unclear what you're asking by DopeGhoti, G-Man, Rui F Ribeiro, slm May 4 '18 at 22:52

Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 5
    Most standard stuff is available via some package manger as I'm sure you know... so I don't really get the point of this complaint. Lots of apps are also experimental created by someone that doesn't have time nor interest into packing them. That is the beauty of Linux, ultimate freedom. – TCB13 May 4 '18 at 16:18
  • 4
    What "apps" are you talking about? There are thousands of pre-compiled ready-to-install packages in all major Linux distros. – NickD May 4 '18 at 16:21
  • @Nick totally agree, though I would add tens of thousands of apps ;-) – thecarpy May 4 '18 at 16:58

As @ivanivan answered, very few distributions require you to compile from source (and Gentoo automates the process.) Traditionally, the main reason why source was preferred was because of the extreme difference in flavour of Unix and architecture that existed between Unix systems (System V vs. BSD, or MIPS vs. Intel as examples), but the biggest reason I have had to compile from scratch is when a program that I want to install is not included in the repository or there is a patch to fix something or add a specific feature.

Even when a program isn't in a repository, there are often .deb or .rpm packages that you can download and install on most distributions: here's an example for Java. The distribution will then do the hard work of tracking down dependencies (and updating them if necessary.) The main difference between installing these packages in Linux and Windows is that the installer is generally separate from the package in Linux, and functionally self-contained in Windows (even when they use the Windows installation system; MSI installers use Windows' installer directly.)


Who says it is required? OK, well, I'll give you that a couple of distributions require it, mostly Linux From Scratch and Gentoo.

But 98% of the time I can get what I want either via my distributions repos and package manager, or from a 3rd party repository (ie, the webupd8te team for Java, etc)

For your bonus - you can compile and target specific architecture (ie, i686 vs i486 instructions) or to include OR remove specific options. Or perhaps you want your own version of something to do something special, so you grab the source, make some changes, compile and install.

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