There used to be a popular tutorial for beginners about this titled How to install ANYTHING in Ubuntu!, however it has not been updated since 2006 and it is a bit outdated (some of it still applies though). This is why I decided to start writing a guide which should cover pretty much anything related to installing applications in Ubuntu.

This tutorial aims to include detailed explanations about installing software from the official repositories, PPAs, .deb packages, archived packages, shell or binary installers, source code, and even Windows applications that work with Wine. I will try to include real life examples for every different way of installing software. Both graphical and command-line ways will be explained.

Since this is a work in progress, the chapters will be published as I finish writing them, hoping that in the end everything regarding installing software will be covered. This tutorial will cover the following topics:

Part I: The Package Manager
Part 2: Installing Software in Ubuntu
Part 3: Compiling and Installing Software from Source
  • Prerequisites
  • Compiling and Installing Software from Source
Part 4: Installing Windows Programs Using Wine
  • What is Wine?
  • Installing Windows Programs with Wine
The Package Manager
Introduction to the Debian Package Manager: APT and DPKG

Ubuntu is based on Debian, which in turn uses APT, the Advanced Packaging Tool, for installing software. Using APT is the default, recommended way of installing software in Ubuntu (and other Debian-based distributions for that matter, like Linux Mint). All the applications which can be installed this way reside in the so-called repositories, which are archives containing programs. There are thousands of such programs in the official Ubuntu repositories, and this includes music or movie players, image viewers and editors, web browsers, office suites and text editors, and a huge number of handy utilities, compilers, developer tools. APT uses DPKG, a low-level tool for taking care of installing and removing programs.

For now I will stick with the command-line interface, discussing the graphical interface tools that Ubuntu provides in the next chapter.
What Are Repositories?

Repositories are online archives which contain programs that can be installing using the package manager. Most of the applications included in the Ubuntu repositories are free, open-source and licensed under a permissive license like the GPL. All programs in the official repositories are tested and all dependencies needed for them to work are in place. When you install an application from the official repositories you don't have to worry about missing libraries or incompatibilities. On the other hand, this also has a small drawback: with few exceptions, the applications in the official repositories remain at the same version. This means that when a new version of a program appears you will have to use a PPA or the backports repositories (explanations on these included in the next chapter). There are a few exceptions from this rule, for example Firefox will always be updated to the latest version. Still, this shouldn't worry you since there are PPAs for pretty much all the popular applications out there, allowing you to install the latest versions available.

Ubuntu has four main repository categories, as follows:
  • main - contains officially supported software
  • restricted - contains officially supported software that is not available under a completely free license
  • universe - contains community-maintained software (not officially supported)
  • multiverse - contains software that is not free
You can see which section a program belongs to by typing apt-cache show package_name | grep Section. Example:
$ apt-cache show amarok | grep Section
Section: universe/kde
$ apt-cache show acidrip | grep Section
Section: multiverse/graphics
As you can see, Amarok is located in the universe section, while AcidRip, a program used to rip DVDs, belongs to the multiverse section (although AcidRip itself is open-source, it uses some non-free libraries). The same goes for the package ubuntu-restricted-extras, which provides support for decoding various audio and video files, or the package flashplugin-installer, which provides Flash support.

You can search for packages at http://packages.ubuntu.com/, or browse packages for all Ubuntu versions here.

The file /etc/apt/sources.list has lines that start with deb and lines that may start with deb-src. The first ones are repositories for binary packages (software that you install), while the second ones are repositories to the source code packages. Everything after the # character is a comment and will be ignored.

You can read more about repositories on the Ubuntu Wiki, here.

How to Add Repositories

The list of repositories is located inside the /etc/apt/sources.list file. In addition to this, any file ending in .list from inside the /etc/apt/sources.list.d directory will also be checked for packages. You can add repositories by adding lines to the end of the /etc/apt/sources.list file, or create new files inside the /etc/apt/sources.list.d folder and add repositories there. You can either edit the /etc/apt/sources.list file manually with a text editor (in a terminal or with a graphical editor like Gedit) or you can use the Ubuntu Software Center for this. I will cover the USC part in the next chapter. For now, let's add a new line containing the packages for the 0 A.D. game, a strategy game for Linux, which has instructions for this on the official website. There are two ways of doing this, adding repositories manually or using the add-apt-repository command. We'll use the latter, so open a terminal and type in the following:
sudo add-apt-repository ppa:wfg/0ad
The repositories are added by default inside the /etc/apt/sources.list.d/wfg-0ad-precise.list file, which should look similar to the screenshot below. Now APT recognizes the have the default repositories, and the ones inside the file which was freshly created.
At this point we will only need to tell APT new sources have been added and install the game:
sudo apt-get update
sudo apt-get install 0ad
Useful APT and DPKG Commands

Show package info
apt-cache show package_name
This command will show detailed information about a specific package, like the section, dependencies, a brief description.

Search for packages
apt-cache search pattern
This command will search and list all the packages which include pattern in their name or description.

Install a package
sudo apt-get install package_name
This will install the specified program. Notice that you only need to specify the package name (e.g. sudo apt-get install amarok).

Remove a package
sudo apt-get remove package_name
This will remove the specified program from the system. You can tell it to remove the additional configuration files by using sudo apt-get remove --purge package_name. Once a program is removed, the dependencies it fetched will remain on the system. To remove those too, issue the following command:
sudo apt-get autoremove
This command will only remove dependency packages that are not needed anymore by other programs.

List what files installed a certain package
dpkg -L package_name
Example:
$ dpkg -L irssi 
/.
/etc
/etc/irssi.conf
/usr
/usr/bin
/usr/bin/botti
/usr/bin/irssi
...
Notice that the package has to be installed in the first place for this to work.

Clean package archives
sudo apt-get clean
Archives of installed packages are kept inside the /var/cache/apt/archives folder. This command deletes them.

sudo apt-get autoclean
This command deletes archives of packages which have been updated, and so the old version is no longer in use.

Update the packages list, upgrade the system
sudo apt-get update
This command will update the packages list. This is needed because very often packages are updated with security updates.

sudo apt-get upgrade
This installs available updates to all packages installed from the repositories.

Install source dependencies for a package
sudo apt-get build-dep package_name
This will install source dependencies for a certain package. You need to have sources repositories enabled (e.g. lines beginning with deb-src inside your sources.list file.

Show the control file for a binary package
dpkg -f ubuntu_package.deb
The control file contains information like dependencies, maintainer, homepage, description of the package and more.

List the contents of a .deb file
dpkg -c ubuntu_package.deb
This command lists the contents of a .deb file (all the files that will be installed).

Add an official CD or DVD ISO to the sources.list file
Enter these commands in your terminal:
sudo mount -o loop /path/to/image.iso /mnt/iso/
sudo ln -s /mnt/iso /media/apt
sudo apt-cdrom -d=/cdrom add
The first command will mount the image (e.g. ubuntu-12.10-desktop-i386.iso) inside the /mnt/iso folder. Notice that this directory has to exist and has to be empty before mounting (create it using sudo mkdir /mnt/iso). The second command is a workaround for versions newer than Ubuntu 11.04, while the third one will add the contents of the mounted image to the sources.list file. Workaround taken from here.

This is quite useful if you don't have an Internet connection but you do have the Ubuntu official ISO images.

Fix broken dependencies
sudo apt-get -f install
This command will attempt to fix broken dependencies.

Fetch the source code for a package
apt-get source package_name
This command will fetch the source code for the specified package, which will be downloaded in the current working directory.

List all installed packages
dpkg --get-selections
This command will simply list all packages that are installed on a system via APT. For example, to see if package amarok is installed, you could use dpkg --get-selections | grep amarok, and if the output is not blank and amarok is listed, then it means it is installed.

See what files a package will install
For this you will first have to install apt-file (e.g. sudo apt-get install apt-file). Once it is installed, update the package list using apt-file update, and then use it like this:
apt-file show vorbis-tools
vorbis-tools: /usr/bin/ogg123
vorbis-tools: /usr/bin/oggdec
...
Installing Software in Ubuntu
There are several ways of installing applications in Ubuntu, each of them explained below.
Installing Software from the Official Repositories
Installing Software Using the Ubuntu Software Center
The Ubuntu Software Center (USC) is the official, recommended way of installing applications in Ubuntu. The USC is a graphical wrapper around low-level tools like APT or DPKG, so there is nothing you could do in USC that you couldn't do in command-line. However, a graphical interface is appealing to some, may be easier to use, and it may be more visible which packages are installed and which are not, mark software to be installed or undo choices you don't need anymore. Let's proceed and start up the Ubuntu Software Center.

By default, the USC icon is located in the Unity bar on the left side of screen:
Alternatively, you can start it by pressing Alt+F2 to launch Dash, then type software-center followed by Enter. You can also launch it from a terminal typing the same thing, software-center.

Start it up and let's have a look at how it works.

Let's say we want to install VLC, a full-fledged movie player. We can either search for vlc in the top-right Search box, or just click the Sound & Video section on the left sidebar:
Find VLC in the list (should be somewhere at the top), select it and then click the Install button on the right:
A new dialog prompting for your password will appear. Enter your password and press Enter or click Authenticate:
At this point VLC is being installed. Wait for the installation to finish, indicated by the progress bar:
And that should be all. If you want to remove it any time later, just search for it and click the Remove button, which replaces the normal Install button when a package is already installed.

In USC you can also view installed software and a history of installed packages. Just click the Installed or History buttons on the top of the application. You can also choose, for instance, to show all the packages provided by Ubuntu, sorted by name or ratings, for example:
Why not try installing Wesnoth, which is a great turn-based strategy game, or GIMP, a powerful image manipulation tool?

Another thing you can do in USC is adding additional repositories to your sources.list. Any changes done here can be done by manually editing the sources.list file with a text editor, like we did in the first part of this tutorial. Adding additional repositories will allow you to install software that is not included by default in Ubuntu's repositories, or install newer versions of applications. For this, to the Edit->Software Sources... menu, and click on the Other Software tab at the top of the window that appears. Then click on the Add... button and add some custom line, like for example deb http://ppa.launchpad.net/wfg/0ad/ubuntu precise main, which is the repository for the 0 A.D. game.
Installing Software Using Synaptic
Synaptic is a powerful application for installing software, just like USC, but I find it to have more features than USC. If you want to try Synaptic, first install it (from USC, or open up a terminal and type sudo apt-get install synaptic). Here's how it looks like:
Synaptic provides some neat features, allowing you to select which applications to be installed, and check them all separately, finally applying all changes. If you make a mistake or change your mind, you can just cancel all changes. After installing Synaptic, launch it by pressing Alt+F2 and typing synaptic followed by Enter. You will be asked for your user password, so enter it. To install packages in Synaptic, click a package name, click Mark for Installation and then click the Apply button in the toolbar.

Installing Software in Kubuntu/Xubuntu/Lubuntu
Although this tutorial is about Ubuntu, all other flavors of Ubuntu have their own installation program, resembling more or less the Ubuntu Software Center. The way you can handle them is similar with the USC, I will not go into details. Just keep in mind they all use APT, so underneath their interface they all perform the same tasks (e.g. clicking Install to install a package will use sudo apt-get install).

Installing Software Using the Command-Line
I explained most of this in the first part of this tutorial. Open a terminal (you can press Ctrl+Alt+T to do it, or launch it by pressing Alt+F2 and typing gnome-terminal followed by Enter. Basically, you will only need to use a few commands, which you have to write in your terminal:
sudo apt-get update
This will update your packages list. The next one will install package SMPlayer, a video player:
sudo apt-get install smplayer
Notice how package names are case-sensitive (smplayer, not SMPlayer), and how you need not specify the version or any other details. Dependencies will be fetched and installed automatically.
Installing Software from PPAs
A PPA (Personal Package Archive) is a repository which usually contains software not available in Ubuntu's default repositories, or newer versions of certain applications. There are hundreds of PPAs hosted at Launchpad.net. It is a simple way for various developers to integrate their applications in Ubuntu, or projects like GNOME, KDE or LibreOffice to provide packaged versions of their latest releases which will work with a certain Ubuntu release. The advantage of this is that PPAs will usually not break APT, and all packages installed this way fetch the needed dependencies automatically.

There are several ways to add PPAs to your sources.list file:
  • use USC or Synaptic to add these lines in a comfortable fashion (explained above)
  • add PPA lines manually to your sources.list file using a text editor (explained in Part 1)
  • use the apt-repository-add command in a terminal (explained in Part 1)
Let's take, for example, LibreOffice. Ubuntu 12.04 has version 3.5 installed, but a PPA is available to install the latest version, which is 4.0. Open up a terminal with Ctrl+Alt+T and type:
sudo add-apt-repository ppa:libreoffice/ppa
sudo apt-get update
sudo apt-get install libreoffice
The first command will add the LibreOffice PPA to your sources, inside the cat /etc/apt/sources.list.d/libreoffice-ppa-precise.list file. This is practically the same thing as manually adding the following two lines at the end of /etc/apt/sources.list (notice that all files ending in .list inside /etc/apt/sources.list.d directory will be read):
deb http://ppa.launchpad.net/libreoffice/ppa/ubuntu precise main
deb-src http://ppa.launchpad.net/libreoffice/ppa/ubuntu precise main
The second command, sudo apt-get update will update your sources list, while the third one will install LibreOffice.
Installing Software from Backports
Backports are similar to PPAs, and the Ubuntu backports are enabled by default in Precise. They offer newer versions of several applications on a specific Ubuntu release. Backports are enabled by default in 12.04 and 12.10, however if you miss them somehow you can add the following lines to your /etc/apt/sources.list:
deb http://ro.archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse
deb-src http://ro.archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse
Notice how the precise entry is replaced by precise-backports.
Installing .deb Files
Files ending in .deb are Debian packages, the same packages Ubuntu uses. These can be installed manually using the dpkg command or your graphical installer.

Notice: In the older versions of dpkg, one should've installed manually all the needed dependencies when installing a .deb file, however now the package manager takes care of the dependencies too. Still, some .deb packages may not be compatible with your current Ubuntu release when it comes to additional needed libraries, so make sure you download a version built for your Ubuntu release (e.g. if you are using Ubuntu 12.10 Quantal Quetzal don't install a .deb package found somewhere on the Internet saying that it was built for 8.04, chances are the installation will fail.) If you run into problems, you can try fixing a broken package by typing in the terminal:
sudo apt-get -f install
Usually this won't be the case if you are careful downloading the right packages.
The Graphical Way
Download the .deb file somewhere on the hard drive. I will use the .deb for Google Chrome in this example:
Next open the file manager and go to the location where your file was downloaded (or, in Firefox, go to Tools->Downloads, then right-click the file after it finished downloading and click the Open containing folder option). Double-click the .deb file in your package manager:
USC will open it automatically. Follow the instructions to install:
The Command-Line Way
First, open a terminal (Ctrl+Alt+T), then navigate to where your file was downloaded. For example, if your file was downloaded in the Downloads directory inside your home, type:
cd ~/Downloads
Now, type the following command to install it:
sudo dpkg -i google-chrome-stable_current_i386.deb
Wait for the installation to finish. That's it.
Installing Programs with a Shell or Binary Installer (.sh, .run, .bundle etc)
Some programs offer an installation script or a binary installation file. These files can have various extensions or no extension at all. For example, games like ioQuake3 or Wolfenstein: Enemy Territory are packaged as .sh (Shell script) or .run files, VMWare may offer a file ending in .bundle, while other programs may come as binaries with no extension, like the installer of the game UrbanTerror, called UrTUpdater.i386.

Since most of the time you will need root privileges to install software this way (not in all cases though), pay attention to where you get your installer from and if it is a trustworthy project or company. It's up to you not to run or install blindly any script which catches your attention.

To install these programs you will usually need to follow the steps below:

1. Open the terminal and navigate to the folder where your installer/binary file is
If your file is inside the Downloads directory in your home folder, do:
cd ~/Downloads
2. Make the file executable
This step is necessary, the program needs to have execute permissions in order to be ran:
chmod 755 program_name
Example:
chmod 755 Savage2-2.1.0.8-linux-installer.run
3. Run the program
The installer may need root privileges or not:
sudo ./Savage2-2.1.0.8-linux-installer.run
Notice the ./ preceding the program's name.

Let me explain a bit about permissions. Every program has permissions for user, group and others. These permissions can look something like this:
USER GROUP OTHERS
rw-  r--   r--
This means permissions are read and write for the USER, read for the GROUP, and read for OTHERS. By issuing the chmod 755 command we give the execute permissions to that respective file:
USER GROUP OTHERS
rwx   r-x   r-x
111   101   101
 7     5     5
The same can be accomplished by issuing the chmod +x program_name command.
Installing Programs from Archives (.tar.gz, .tar.bzip2, .zip etc)
These are archived packages which may contain either the source code or the binary files and additional files (documentation, license details, data) of a certain program. I will talk about sources in Part 3 of this tutorial - for now, after you uncompress the archive and see files like Makefile or src, chances are it's a source package and you need to compile and install it.

To install such archives, open your file manager, extract the archive and then search for a file which may be the executable file. You may need to give permissions to execute.
Using alien to Install RPM Packages
This is likely to break your system, and as far as I know no longer needed. Pretty much everything is available now in native format, there is no need to use alien. Although not recommended, you can follow the instructions below to use it in case you want to install RPM packages.

Alien is a program that converts .rpm files (files used by the package manager of Red Hat and Fedora) to .deb files. First, install alien (sudo apt-get install alien) and then run alien rpm_package.rpm. A .deb file will be generated, which you can install normally as explained above.
By Craciun Dan on March 02, 2013 | Updated: October 20, 2013 | v0.2.4 r5
TuxArena Projects
Search
Online Readers