Part 1: Installing New Software On An Ubuntu System
Installing Software on Ubuntu
Installing software on a Linux-based operating system is, in some ways, easy and in other ways a little more tricky than installing software on other popular operating systems. This is partly due to the amount of various options that exist when using a system that identifies itself with open source philosophies. For example, as a user of such a system you will probably also have access to the source code of many programs that you wish to install. This is the norm when using Linux-based operating systems and not very common when using proprietary operating systems. Subsequently you are provided with more than one choice regarding the installation of your new software.
There are four main options I'll discuss relating to installing new software on Ubuntu.
1.) Synaptic Package Manager
Synaptic is a package manager which has the function of taking care of installing Ubuntu/Linux software for you. Basically you search for the software using Synaptic and choose to install it, Synaptic then takes care of all the details of the installation process.
If you are connected to the Internet and don't need to be too concerned about increased data usage, this option can be very useful. Even if you don't have a high data cap this option can still work out to be the best, as software for Linux-based systems can be surprisingly small in size.
It is certainly the easiest way of installing new software on an Ubuntu system and subsequently my first recommended option for this task.
Synaptic can be accessed from System -> Administration ->Synaptic Package Manager
Do a search for the name of the software you would like to install, right click on the name of the software and choose "Mark for Installation".
Generally most large packages will require that other smaller packages also be installed to get the full functionality (or any at all) out of your new software.
Software that is required to make other software work is referred to as "dependencies" on Linux, This is a word you will probably hear quite often when installing new software on any Linux system. When you choose to install certain software through Synaptic, it will tell you exactly what dependencies are required to make your new software work. It will ask you if you would like to install the dependencies when installing your new software. It's generally best for new users to follow Synaptic's suggestions and click on the button that says "Mark" in the resulting dialog box.
In some rare cases the software you are trying to install might conflict with software that you currently have installed.
In that case Synaptic will suggest to you that you uninstall the conflicting software before proceeding. This is yet another great feature of Synaptic's package management system, as it will actually uninstall the conflicting software for you including any conflicting dependencies. However, it's worth noting that you should proceed with caution when choosing to uninstall certain packages as this act might render software that you require unusable.
Read through the list of conflicting packages Synaptic provides you with before proceeding, and if you cannot uninstall the conflicting software you might have to consider using an older or newer version of either one of the conflicting packages (but not both) in order to prevent the conflict.
When ever I want to install new software I'll always check if it is available through Synaptic first, before attempting to install the software through other means. There are, however, some cases when the software that you are trying to install is not available through Synaptic, this might be the case when you are trying to install software that is very new and not available in the Ubuntu software repositories yet (which Synaptic is set up to access automatically), but don't worry about having to wait for the software to become available in the repositories before you can install and use it because there are other options, if it is absolutely necessary for you to have that particular software installed on your current system.
Ubuntu will often have in excess of 30000 packages available for installation through Synaptic and this number grows significantly with each new release of Ubuntu, so there is generally a good chance that the software you are trying to install can be handled for you by Synaptic. If there is a more recent version of the software you are trying to install than is currently available through synaptic, this is generally because the newer version has not been fully tested on the current version of Ubuntu you are using, you will probably still be able to install the newer version but be aware that it might turn out to be buggy and as such is generally a better suggestion to use the version that is available through Synaptic.
1a.) Ubuntu Software Center
Ubuntu Software Center is a relatively new option to installing software in Ubuntu. It's main purpose is to simplify the software installation process on Ubuntu by incorporating options from other software installation packages and adding new functionality such as the ability to install non-free software, and pay for it in one simple interface.
Ubuntu Software Center can be accessed by clicking Applications -> Ubuntu Software Center from the Gnome Panel.
As it is a relatively new feature in Ubuntu not all versions of Ubuntu and it's derivatives come with Ubuntu Software Center installed. If you have a version of Ubuntu that is greater than 9.10 Karmic Koala, you should have the option to install Ubuntu Software Center using Synaptic if it is not already installed. Do not attempt to replace Synaptic with Ubuntu Software Center, the two packages can work side by side on the same Ubuntu installation quite effectively. Installing software using Ubuntu Software Center is really easy and can make the process of installing software in a Linux-based operating system fun and informative. You will generally need an internet connection to use the Ubuntu Software Center.
1b.) APT (Advanced Packaging Tool)
Another option for installing new software that does not require a GUI is using "Apt (Advanced Packaging Tool)" through Terminal. To the new Linux user there is no obvious benefit to using this method other than not having to use a GUI, unless you know how to supply "apt" with arguments to customize an installation and generally most new users to Ubuntu do not even know what "apt" is let alone how to supply it with custom commands. However I have listed the usage of "apt" as an alternate to Synaptic because once you become familiar with using a few simple commands it can be more beneficial (in terms of speed and ease of use) than using other installation options , including those that have GUI's.
Like I said earlier it's all about choice in Linux, and this option seems to be a very popular choice for many people using Ubuntu at various different levels of skill.
You can open the Terminal through Applications -> Accessories -> Terminal From the Gnome Panel.
Once you have Terminal open you can start to use apt. Apt comes with every Ubuntu installation (in fact apt comes with every Debian based distribution, this is particularly applicable to Ubuntu because Ubuntu is based on Debian). Apt is used mainly to install packages and bypass package managers that require a GUI such as Synaptic. Despite the fact that apt has no GUI it is actually easier to use than you might think. Apt is great because it handles all dependencies for you, just like synaptic and does not require you to be specific with naming conventions when referring to packages, for example if I wanted to install the package "libc6" I do not need to know that the actual name of the package as it is listed in Ubuntu's repositories is "libc6_1.9.6-2.deb" apt is smart enough to realize what I'm trying to install. This generic approach to naming can be very useful as often different distributions refer to the same package with different names, having your software take care of these discrepancies for you can be a massive time saver. To install a package through apt you will need to know the name portion of the package. For example say the name of the package I wanted to install is called "someSoft". To install this package all I simply type in terminal is,
sudo apt-get install someSoft
Note that the command is case sensitive and the first part of the command "sudo" (pronounced "soo-doo" rhymes with "who") is short for "Super User Do". A Super User on Linux-based operating systems has system wide access, and you will need to input your password when using a command starting with "sudo". You should not compromise the integrity of your system by giving other people your password on Linux, even if their intentions might not be malicious having super user privileges on a Linux-based operating system can be damaging on an unfamiliar system. It is therefore better to perform all sudo tasks yourself if you are the administrator of your own system.
Finally you will need to be connected to the Internet or have offline packages (listed in your software repositories) stored on DVD/CD before entering this command.
Apt will then proceed to tell you what it needs to do on your system, since it is a package manager it will try to obtain all necessary libraries and dependencies, and resolve any potential software conflicts. It will do this in the most logical way possible, and not simply install "software A" first because it is chronologically before "software B". For now the most relevant apt command is "sudo apt-get install packagename", however it is worth mentioning that apt also has the ability to upgrade packages (without having to reinstall them and handle the upgrade of required dependencies) and also update the list of packages available to you via the internet.
2.) Extracting Pre-Compiled Software
The second option for installing packages if Synaptic or apt is not available, is to not perform an installation but a simple archive extraction of an already pre-compiled version of the software you are trying to "install", in the sense that...
A compressed achieve containing the pre-compiled software has been provided on the software developer's website specifically for your version of Ubuntu. These achieves will contain the software you are trying to install in a pre-compiled format, meaning that you do not have to compile the application yourself from source code (which we will get to a bit later). These archives will usually have an extension like .tar.bz2 or .tbz2 (these archives are sometimes referred to as tarball archives) or sometimes they might even have the extension .zip which is less common on Linux.
You will need the standard Archive Manager that comes with Ubuntu in order to perform an extraction, obviously there is also a command line tool for extracting archives but we'll be examining the GUI method since this guide relates to what has been most effective for me as a new Ubuntu user, your experiences may differ.
|A Side Note on Desktop Environments and Archive Managers
The archive manager for Kubuntu is called "Ark". Kubuntu is basically the same as standard Ubuntu just with a different desktop environment using "KDE", this is as opposed to the standard Ubuntu which uses the desktop environment, "Gnome". Both of these desktop environments can be used on the same workstation and switching between them is easy as logging in. Furthermore when switching between them you don't even have to restart your computer.
A desktop environment provides a higher level of abstraction on top of a basic operating system, this means it will include themes that unify the design of various packages used in that operating system and even provide a set of packages that contribute to defining that operating system's behavior.
This should not be confused with Unity (in more current versions of Ubuntu) which is a shell for a desktop environment, particularly the Gnome desktop environment (but this is only applicable for Ubuntu 11.04). Versions of Ubuntu greater than 11.04 will more than likely not include Gnome. Unity provides a higher level of abstraction (to that of a standard desktop environment) to enrich the end users experience with the operating system, meaning it provides consistency between different applications for the end user mainly in terms of design. Nonetheless whether you are using Ubuntu (standard version), Kubuntu, Ubuntu Studio or other Ubuntu derivatives they all come with their own archive managers.
To start using the new software you will first need to download (or obtain by other means) the archive file containing the new software in it's already compiled format. Extract the contents of the archive to a logical location in your home/username/ directory. I suggest making a directory in your "home" folder under your login name called "software" and extracting all software that does not require an installation to that folder, this has worked most effectively for me.
Once your new software has successfully been extracted, you'll probably want to try it out. The methods of extracting software differ slightly from one archive manager to another, nonetheless they are pretty standard across any platform so I won't be discussing how to use their GUI's.
There will generally be instruction files on how to use the software (once it is extracted) in the form of an "INSTALLATION.TXT" file or a "README.TXT" file I would suggest reading these before proceeding, particularly as it might not be so obvious as to which file is the executable you need to double click in order to use the new software. Once you've identified which file the executable is you need to make sure that you have permission to execute the file. If you do not have permission to execute the file you can double-click the file as much as you like and not much is going to happen. To confirm that you have permission to execute the file, right click on it and choose "Properties" click the "Permissions" tab. You're login name should be listed as the owner, just below that is a selection box for Group then a cluster of checkboxes. The checkbox relating to Owner that reads "Execute" should be checked. Once that is confirmed click "Close" to dismiss the dialog box, and you should be able start your new software by double-clicking the executable.
The main setback with using this method to run new software is that it does not create a system wide installation so you cannot run the software from terminal without having to enter the location of the file preceding it's executable name. Most of the time this is not really an issue (or rather hasn't proven to be an issue for me). So why is this not the main method for running new software on Linux, largely because you are not installing the new software and therefore not using a package manager and therefore you need to handle the new software's dependencies yourself. What this means is that in the README/INSTALL file there might be a whole bunch of dependencies listed. Those dependencies will need to be installed (not simply extracted) on your system before you can use your new software. If you are having problems getting your new software to work after having followed these instructions then you might very well have dependency issues. You will need to find out what dependencies your new software requires and install those dependencies if you wish to get your new software working. The first place to look would be the website of the software developer of who's software you are trying to install. This is usually the best place to start and they usually list all dependencies on their websites. Please note that they will simply indicate what dependencies are required and not actually have the dependencies available for download from their websites. This is largely due to the fact that they will not be the developers of the dependencies themselves, simply of the software that requires those dependencies. The dependencies will subsequently need to be obtained from another location such as the dependencies' developers' websites or an Ubuntu software repository accessible preferably through a package manager such as Synaptic.
Another place to check is to do a search on http://ubuntuforums.org/ as you will find someone has more than likely run into the same issue you are having with the installation of your new software, and a solution might already have been documented. Using the forums is easy and I recommend setting up your own account which is quick to do and free. As simple as your questions might seem as a novice user, there is more than likely someone else out there that has the same question and could benefit from your posts.
Finally there's always Google, actually Linux support on Google is really good!
Once you have identified what dependencies are required you should try install them through Synaptic. Be aware that some dependencies might in themselves have their own dependencies, in that case those dependencies will need to be installed too.
3.) Binary Package Installation
The third option for installing software on Ubuntu , is to install from a .deb file. These files are sometimes available from the software developers website of who's software you are currently trying to install. A .deb file is a neatly packaged single file with the extension .deb. Installing software from a file of this type differs from archive files mentioned in option 2 as .deb files actually install the new software not simply unpack archived files to a user defined location. The benefits of installing with this option is that your new software is now installed system wide, meaning that you will be able to run the new software once installed by typing the system wide command for running the new software without having to point to the location where the new software is installed. This might seem a little trivial at first, but having software properly installed on an Ubuntu system means that it will also be easier to associate files with the newly installed software by simply double clicking on the associated file you will be able to launch the newly installed application and open the file that you have just double-clicked in the new software.
In order to install from a .deb you will need an application such as gdebi (which comes standard with both Ubuntu and Ubuntu-Studio). These files (*.deb) come from the Linux developer distribution called Debian which is what Ubuntu is based on, so a lot of what works on Debian will also work with Ubuntu. .deb files are often referred to as a type of binary package. It's worth noting that if you have the option to install a Debian version binary or an Ubuntu version binary you should choose the latter (although there will not always be a difference between these two file versions).
Installing from a .deb is easy simply download (or obtain the file by other means) and double click to open the file Ubuntu will automatically open your Debian package installer with an interface similar to this...
Ubuntu lists the package name and a Status field. The Status field in this case is actually quite important as it will indicate if dependencies are required that need to be installed before installing your new software. gdebi unlike Synaptic is not a package manager it is simply a Package Installer. Therefore if there are dependencies that are not satisfied on your system, gdebi will tell you what those dependencies are and you will have to download (or obtain by other means) and install the required dependencies before continuing. Be aware that the Status line tends only to reveal one dependency at a time, when several dependencies might be required, before installing the new software. Once the Status line reads "All dependencies are satisfied" you can click the button that reads "Install Package" and the package should install to the appropriate location and create the correct system wide file associations and links.
3a.) Converting a binary package to a Debian compatible version
Another type of commonly available binary package file exists for Linux other than .deb, these files have the extension .rpm and are oriented towards the Linux Red Hat distribution. Red Hat is not Debian based, so if your only option is to install from a .rpm file you will first need to convert the .rpm file to a .deb binary package and install the new software from the newly created .deb file.
So how does one go about creating a .deb file from a .rpm file? You will need another package in order to do this. The most commonly used package for this task is known as "alien". The latest versions of alien can be found here. But I recommend that you install alien through Synaptic. As alien is written in Perl it has it's own set of dependencies which Synaptic will be able to sort out for you. I have not come across a distribution of Ubuntu that does not have alien listed in it's software repositories, so you should have no problem installing alien through Synaptic. However if you are lacking an Internet connection and/or repositories available offline (in the form of DVD's or CD's) then you will have to do a manual installation as outlined in one of the other installation options (i.e. obtain the alien binary, source files, or archive and it's dependencies and install the relevant files before proceeding). Once you have alien installed you are ready to convert the .rpm file to .deb.
I'll list a brief outline on how to do this as there are numerous articles online that demonstrate this installation technique. The easiest way to perform this conversion is to
2)Change to the directory that the .rpm file is in either with the cd command (change directory) or open the location in Nautilus (the standard Ubuntu file manager) right-click on a blank area within the appropriate directory and choose "Open in Terminal" if you have this option available. Terminal will now open at the appropriate location.
3)Converting the file to a .deb does not have to be complicated, simply type the command "alien" followed by the exact name of the file you would like to convert, including the files extension for example if I have a file called "someSoft_1.6.rpm" that I'd like to convert to a .deb I'd simply make sure I'm at the correct location as outlined in the previous step then type...
This will create a file called "someSoft_1.6.deb" in the same directory. You are now ready to install the .deb binary using the previously outlined steps in option 3 Binary Package Installation.
4.) Installing from source
The final suggestion for installing new software on Ubuntu is to install from source. This option is actually not as daunting as it may initially seem for those that are unfamiliar with Linux.
Firstly what does it mean to install from source?
Installing new software from source is an option that one does not generally have on proprietary operating systems, this is generally because software that runs on proprietary operating systems tends to be (not unlike the operating system it is written for) that being "closed" source. This means that the source code used to develop the software is not publicly available or not available at all. This is particularly relevant to software developers, nonetheless if you have exhausted all other options and the only option left for you to install your new software is to install it from source then this option might prove to be useful to you. Firstly you do not have to be a software developer or even know how to write code in order to install software from source. What you will however need is the source code to start off with once again this is usually available from the software developers website or sourceforge.net. You will also need the dependencies required to install the new software. The best way to find out what dependencies are required is to look for a listing of required dependencies at the software developers website of who's software you are trying to install or do a search on ubuntuforums.org for help with software installation issues.
Once you have all required dependencies and source code, install the dependencies first (preferably through Synaptic). If you are not sure about what dependencies are needed this might not be particularly problematic, as when you compile the new software you will get an error message telling you that a dependency has not been satisfied just before the configuration stage of the compilation process exits. At this point you will at least know the name of the dependency and you can subsequently search for it.
Software can be written in many different languages, but C/C++ is a popular choice for a lot of different varieties of software packages, particularly those found on Linux and this is largly due to the portibility that the resultant C/C++ source code offers. Subsequently before compiling your new software you will need a software compiler that supports C/C++. I recommend installing
"make" (a dependancy solver),
"gcc" (which is the GNU C compiler) and
"g++" (the GNU C++ compiler), along with all their dependencies.
The "build-essential" package offers a general purpose solution for installing software from source. As installing this package should also install the packages listed above amongst other required software it is recommended that you first install "build-essential" in order to keep things simple. Nonetheless, the four noted packages will be a minimal set of requirements (in most cases) for installing software from source. For some software the developers might recommend "scons" as a replacement for "make". This software will be available from the Ubuntu repositories through Synaptic. Bear in mind that once you have all of this software installed and working you will not need to reinstall it (unless something were to corrupt your installation), so this part of the configuration process is something you need, only do once. Compiling software becomes easier to accomplish with time as a lot of dependencies that are required by one application might in fact also be required by other software you are trying to install at a later stage. In this case you will not need to reinstall those dependencies.
Once you have downloaded the source code there will generally be a file called "README.TXT" or "INSTALL.TXT" in the main directory. If there is such a file, I recommend reading it as it will usually contain critical information relating to the successful installation of your new software and also a good possibility that it will list required dependencies. One thing it might not mention is that when compiling certain software along with the required dependencies, you might also need their -dev (developers) packages. The -dev packages usually follow the naming convention "dependencyName-dev". So for example if I needed the dependency named "libxpm", and I'm compiling the software that requires this dependency from source, there's a possibility that I might also need the package named "libxpm-dev". If you are uncertain whether you will be requiring the -dev packages or not, I recommend waiting until it has been identified during the configure step of the make process (explained below) that this package will be required to proceed. Compilation will not be able to continue unless all required dependancies (including their dependancies and developer packages) are met so consider this suggestion to be a troubleshooting option in the event of certain compilation errors.
Sometimes dependencies are listed for a particular platform with a name that is specific to that platform, in that case be as generic as possible when searching for dependencies (where ever that may be eg Synaptic, the web etc), for example in a README file the dependency file "libjack100.0" might be listed however searching for this file in Synaptic might not turn up any results, and searching for it on the internet might turn up results only for other platforms (such as an rpm based distro). In this case the name you are searching for might be too specific (perhaps specific to another platform that is not Debian based). It is recommended that you try another logical variation of the name. In this case searching for the file "libjack" (with the numbers removed) in Synaptic will turn up several results of which the file "libjack0.100.0-0" is one of the results. As you can see the listed name in the README file "libjack100.0" is very similar to the Ubuntu listed name "libjack0.100.0-0" and it is therefore easy to ascertain that these files are equivalent to each other. Install the dependency as it is listed under it's Ubuntu name.
Synaptic Listed Name
README.TXT Listed name
Once you have downloaded the source code, installed all the dependencies and also installed a compilation tool for the specific language the new software you are trying to install is written in, you are ready to begin compiling the new software. If you have been able to satisfy the preceding steps then compilation should actually run along pretty smoothly and as it turns out is actually the easiest part of installing new software from source. The most common method of compiling new software follows...
If you obtained the source code in archive format, you will need to unpack the source code to a working directory. These archives are generally tarball files and will have an extension such as .tgz, .tar.gz, .bz or commonly in more recent times .tar.bz2.
For the sake of this example we will create a directory called "source" in the user's home directory (myName) and unpack the archive to this location.
Open up Terminal.
Applications -> Accessories -> Terminal
You can unpack the downloaded archieve using an archive manager listed above such as "Ark" or you could use a command similar to the following command (by changing the path and filename to suite your needs). This command assumes that you have downloaded the archive file to a directory called "Download" in the user's home directory.
tar jxvf ~/Download/packageName.tar.bz2 -C ~/source
When the archive has been unpacked you will find many new files in the source directory that will be needed during the compilation process.
In Terminal "cd" (change directory) to the location you unpacked your source code to. The original archive file you obtained earlier is no longer needed.
Please note that all commands are case-sensative.
Once you are in the appropriate directory you should look for the README.TXT or INSTALL.TXT file and read it before coninuing (as mentioned earlier). You are ready to proceed with the next command, in Terminal type, (exactly as it appears in the box below):
Note that when copying text from Terminal the shortcut is "ctrl-shift-c" and when pasting text into Terminal the shortcut is "ctrl-shift-v", the text in the box above can simply be pasted into Terminal using these keyboad shortcuts.
Once you hit enter, Terminal executes this script and you should see a long list of output text appear, scroll upwards and get replaced with more output text. This is your new software communicating with your computer and inquiring about it's current configuration.
If there are any problems, such as dependencies missing Terminal will print **Error** to the screen and exit back to the command prompt. Be aware there are no visual clues (other than Terminal printing "Error" and indicating the nature of the problem) and there are no audible clues indicating an error either. In fact if it is the first time you have compiled an application an error can go by relatively unnoticed, that is until you try continue with the compilation and cannot get any further. Having said that it is important to note the last few lines of Output text printed to the Terminal before it stopped executing the "./configure" script if you do not see the word "**Error**" printed to the screen then you have more than likely successfully completed the configuration stage of compilation. However, if you do get an error it is worth noting what the error states and if it mentions anything about dependencies (which seems to be more often the case than not), or missing files, libraries or the like you will need to install those dependencies and software before continuing.
You can also seek help at ubuntuforums.org if you are unable of how to proceed.
Once you have successfully completed the configure process you are ready to proceed to the next stage of the make process, in the same Terminal window type,
make takes some time to create the files necessary to install your new software. It will also print out information about what it is doing in the Terminal. Once you have successfully run "make" you are ready to move onto the next command. In the same Terminal window type,
If you run into any problems during the compilation process, after checking the error messages that have been printed to terminal and before reattempting to compile the new software you must run:
If all went according to plan your new software will now be installed on your system. Generally when new software is installed you will find the executable file in /usr/bin/packageName. You will not need to create a "shortcut" to this file as you should be able to simply run the new software by typing it's name in any Terminal window.
You can also create a shortcut to running your new software from your Desktop with an icon. Right click on an empty area on your Desktop and choose Create Launcher...
In this dialog box you can choose an icon for your new launcher, give it a name and description (comment field) and most importantly don't forget to type the command to launch your newly installed software using case sensitivity.
If for some reason or the other you wish to uninstall the software. Return to the source directory and type: