What are "build-essential" & "build-dep"?

Solution 1:

The build-essential package is a reference for all the packages needed to compile a Debian package. It generally includes the GCC/g++ compilers and libraries and some other utilities.

Check out the documentation here.

Solution 2:

The command sudo apt-get build-dep packagename means "As root, install all dependencies for 'packagename' so that I can build it". So build-dep is an apt-get command just like install, remove, update, etc.

build-essential is a package which contains references to numerous packages needed for building software in general.

Solution 3:

build-essential has one magical property: it does not need to be listed as a build dependency under the Build-Depends control field (debian-packages) of source packages as documented at https://www.debian.org/doc/debian-policy/ch-source.html#s-pkg-relations

You can get a list of the build-essential packages at:

cat /usr/share/doc/build-essential/list

You can also determine if a package is part of build-essential with:

apt-cache show gcc

which says:

Build-Essential: yes

Solution 4:

"build-essential" contains tools (like the gcc compiler, make tool, etc) for compiling/building software from source. So you start with (usually C) source files and create executables from them.

If you are just trying to get Ruby installed, I would highly recommend just using RVM (Ruby Version Manager):

Follow the instructions under "Github Repository (recommended)"

Note that you will need the Git version control software installed first. Use apt-get install git-core if you don't have that yet.