How to install a Program from Source on Linux

Most of the popular applications are readily packaged into the easily executable deb and rpm packages, which can be easily installed on the Linux distributions. There are also thousands of other packages that aren't compiled. Developers provide them 'as is' in the source code format and getting these installed may be challenging for newbies to Linux. Let's try to make it easier for you.

One of the things open source programs are great to work with is flexibility. You can access the source code, which means that you can turn it into anything you want. Users have the permission to configure it however desired so that they can make it suit any system or add/remove any feature. Program developers often release their program in what is known as source code.

What is the Source Code?

The source code is a collection of code written using a readable programming language, which is typically a plain text. It is then transformed by a compiler into binary code for making ready to install packages like .deb, rpm, etc.. Most of the popular packages are readily packaged into the easily executable deb and rpm packages, but there are also thousands of other packages that aren’t compiled. Developers provide them ‘as is’ in the source code format.

Formats of Source packages

The most common formats and the ones that we are going to show here are .tar.xz, .tar.gz and .tar.bz2 packages. TAR is an archiving utility provided by GNU. The different formats use different archiving methods. Other than that, there is not much difference between the three.

Compiling and Installing Source Packages

We are going to show three different package types with three different scenarios. These are the situations that you are most likely to find while installing any kind of source package. The following image shows the three packages that I have:

Source packages
Source packages

Step 1 – Extract the content of archive packages

First off, extracting the source packages. The following are the commands for all three kinds of packages:

For .tar.bz2

tar -xjvf <package-name>
  • The ‘x‘ stands for extract.
  • The ‘j‘ tells the system that the package uses bzip2 utility.
  • The ‘v‘ means verbose, which means that your system will show the names of the file as they are being extracted. This is not necessary, but useful.
  • The ‘f‘ means that you are referring to a file with the name, that you are going to write next.

For .tar.gz

tar -xzvf <package-name>
  • The ‘x‘, ‘v‘ and ‘f‘ are the same as the previous case.
  • The ‘z‘ tells the system to use gzip utility.

For .tar.xz

tar -xvf <package-name>

Step 2 – Install the package

Case I: Configure

Once you extract the package a new directory will be created by the name of the program. In my case of Pidgin, its named pidgin-2.13.0. To proceed further, you need to make that the working directory. To do that, just use this:

cd <directory name>

So for me, it would be:

cd pidgin-2.13.0

The first thing to do now is to run the ls command. Your further steps depend on the output of this. In the output of ls, look for a file named ‘configure‘.

Case 1: ‘configure’ present

If its present, proceed like this:


This basically runs the executable ‘configure‘ file, which compiles the program according to your system. This also shows any unmet dependencies that you might encounter as it does in this case:

Displaying unmet dependencies
Displaying unmet dependencies

Now you can install these dependencies individually with your terminal. So the tool in this case in ‘intltool‘, and I can install it with this:

sudo apt-get install intltool

Now recompile it by running ‘./configure‘.

We’re done with compiling it. So now we can install it. To install, first run this:


And then the following command to install it.

sudo make install

We’re done with the first part. Luckily, this is the way it goes in the majority of the cases. Now let us look at another case.

Case II: Program file

Many times, after extracting the program, there is no ‘configure‘ file. What to do then? Look for a file with the name similar to the name of the program you’re trying to install. For the example of the VS Code, this is the output:

File with program's name
File with program’s name

So we do have a file named ‘code‘ here, which is the actual name of the program. In cases like this, you have to run the program right from the directory. So you can either double-click on it in the file manager, or you can run a command from the terminal in the following format:


So for me, it was:


The program will start running. This is inconvenient, obviously, to run it from the directory again and again, but one thing you can do is add an entry in your application launcher, or add a keyboard shortcut to open the file. Explaining those methods are out of the scope of this article as the steps vary between Linux distros.

When you set it up, you will be asked for a command to execute to run the program. For that, you just have to write the whole path of the file and put a ‘./’ in front of it. In this case, the command is:


Case III: Instructions

The first two cases generally ought to cover most cases. Now the third case, where there is neither a ‘configure‘ file and nor a file with the name of the program.

Case III
Case III

What do you do? Well, for these cases, there will always be a ‘README‘ or ‘COMPILING‘ file. Just open that file, and you will find the instructions. For example here, in Tellico, there is a ‘COMPILING‘ file, and the instructions are present there. To read the file, run this command:

cat <filename>

For in this case:


Instruction in the'COMPILING' file
Instruction in the ‘COMPILING’ file


That’s all about the various ways to compile and install the applications from the source codes. The source packages are a little complicated, but they have their perks. Easy configuration, extreme flexibility, and adaptability make it an ideal package. In any program, if there is just one package for installation, it has to be a source package. This is why almost all programs always provide a source package.

Let us know about any issues that you might have or anything that you would want to say in the comments below. Cheers!

Pulkit Chandak
Pulkit Chandak is a Linux enthusiast and has been using and experimenting with open source software, and hardware too since a long time. He is a huge admirer of open source software and wants to ventilate it to all around him. He is interested in reviewing and writing tutorials on Linux and its innumerable distributions. He believes that freedom in software leads to freedom of the mind from the chains of limits.


  1. Hi. I have an ASUS 2n1 tablet. Would FOSS or someone have a set of screen prints or lines for DOS that I could use to download a Linux distribution? After downloading, I would like to use DOS if available to install Linux. I cannot for some reason get into to BIOS to have the ASUS recognize a ‘Live’ USB. I want to install the Linux over MS Pro. That’s all…Thank-you


Please enter your comment!
Please enter your name here




How to create a Clonezilla Live USB drive on Linux

There are three Clonezilla types, Clonezilla live, Clonezilla lite server, and Clonezilla SE (server edition). Clonezilla live for single machine backup and restoration. While Clonezilla's lite server is for massive deployment.
If you are looking for an open-source Linux alternative for Acronis True Image, Norton Ghost, Paragon Drive Copy, you have landed in the right place. Meet Clonezilla. Clonezilla is a free and open-source disk partition and disk cloning software that helps you also do system deployment, bare metal backup, and recovery.
screen capture apps linux
Do you want to make a video tutorial for YouTube or show-off your epic victory royale to your friends? Look no further — as we have compiled the 10 Best Screen Capturing Software for Linux. Whether you need to record your desktop screen or take a simple screenshot, FOSSLinux has got your back.
foss and linux
The rise of the Linux operating system, in all its various distributions, over the past few decades has catapulted the popularity of Free or Open Source Software (FOSS). Let's guide you in understanding what is FOSS, how it differs from freeware and is Linux a FOSS.