0) Introduction
1) Basics
2) Installing with CLI
2a) Graphical Editors and the Sources List
2b) CLI Editors and the Sources List
2c) Authentication Keys
2d) Updating
2e) Installing Software
2f) Advanced Package Management
3) Installing with GUI
3a) GUI and Sources List
3b) Skip!
3c) Authentication Keys
3d) Updating
3e) Installing Software
4) Lexicon
4a) Lexicon of Terms
5) Extra sections
5a) Add/Remove GUI
5b) Differences Across Versions
5c) Extra Resources

0) Introduction

Just a prefacing note before getting to the actual introduction. There is a lexicon that contains all the words that might be unknown to a beginner, it is located in section 4 as indicated by the index. If any are missing I will add them later (feel free to PM me with any you think require defining and I will be sure to try and get them added). Using the index is simple, every section is titled exactly the same as it is in the index. Use your browser's search feature and you'll be able to jump to it, if thats what you want. This is a limitation of the forum version of this document, I will be producing a wiki version later that will be much more elegantly presented (this admittedly is a bit rough). It is also likely that any changes will probably just be made to the wiki, this version is being locked.

Now, I know almost all of you know how to install with Windows, usually you just double click a file (ending in an .exe, like setup.exe or install.exe) and there is the good old Windows installer to guide you through step by step. Easy right? Well things are different in Ubuntu, really Linux as a whole is different. This stems from the differences in their foundations and how they were built up over time. That doesn't mean it's harder, just different. In fact, I bet once you understand it all you will come to see how easy it all really is, and how it has its own merits over the method used by Windows.

Now that I got that out of the way, I have to issue a warning right off the bat. If your looking for a quick solution to a specific problem look elsewhere. My aim with this guide is to actually teach and explain to you how to install things, not point you to one time CLI commands/GUI guides (lexicon). I admit (I feel a bit bad now), I have done the latter in the past and I have come to realize rather quickly that it simply doesn't work. Understanding is the key to using your operating system effectively. Without that, your just repeating something someone else said without grasping what your doing. You don't want that do you? You want to be in control, to know whats going on and know that you can deal with things that can happen.

So lets get right to it, ok? My guide is split into multiple parts (indexed at the beginning). You can search across the guide at any time for a title and you will get right to that section. I advise reading it front to back, I start with basics and keep adding progressively. This guide requires NO pre-existing knowledge of Ubuntu/Linux, I have taken care to explain everything (a few minor omissions). With all that said, I will just close by saying all I ask is for your patience and I promise that by the end of reading this long document you should understand everything you need to. Now on with the learning.

1) Basics

Ok, so lets start with the basics, please bear with me it may seem complicated but once I get further on it will be clear. Windows installs all it's programs with executable files (aptly named .exe files). These of course use the Windows installer and through that display numerous screens that let you pick options and features and even where to install the bulk of the files. Once all options are selected, it handles all the processes for installing and tells you when it is done. Additionally, every program in Windows has its own update manager to check for updates on the companies/author's servers. The only really integrated update tool is the one for Windows Update which of course only updates Microsoft products. The OS at its core is very segregated and disjoint, each application only interacts with each other in so far as it needs to (usually only with Windows) and not anything more.

Linux is very different. It employs a central community driven software system with an open and sharing philosophy. The first and most important component of this system is named the Software Repositories. Each Linux distribution (lexicon) maintains its own software repositories, they are usually paid for by the companies backing and supporting the distribution. In the case of Ubuntu, Canonical would be the company that runs and maintains the majority of our main repositories.

So what exactly do we use the repositories for? Consider them to be a large network of servers. They store huge volumes of information, ready to serve to any Ubuntu user. The information on them is mostly broken down into packages (lexicon) which can be easily manipulated with a few select commands (or clicks in a GUI) to install any program you like. A package manager is used to issue all commands with regard to packages, in Ubuntu it is called Aptitude, more on that later.

You may be wondering, how does the computer know which servers to search for updates/programs? The answer is, it has a simple system that tells it which servers to look at, the system is called the sources list. The sources list is a text file stored on your computer, in it urls are stored which point to the servers your package manager Aptitude should look at when trying to find/install/update programs. It is also used constantly to check for updates, Aptitude checks the versions of your installed programs/packages (the one's on your computer) against the versions stored on the repositories. When a new version is uploaded, it alerts you and you can install them.

Now, there is one last important element, keys. Keys are used on many repositories, their main purpose is to ensure security and authentication (so that you know your downloading from a trusted repository). This is important, it ensures the integrity of the repositories isn't compromised by some third party trying to spoof the servers or worse. By default, the main repositories in your computer already have Ubuntu's main key, if however you add extra repositories (something I'll explain later, it is common to do) you will likely have to download new keys to access it.

Ok, to wrap this up I'm going to summarize and make an analogy that Windows users shall understand. Think of the entire system as Windows (or Microsoft) update (really only analog that's remotely similar). Microsoft hosts hundreds of thousands of updates in a network of servers that any Windows user can access, this of course is the same as the repositories. When you scan your computer, the package manager (i.e. Windows Update tool/application) scans your computer to check what is installed and compares that to versions it has in its own servers, as well as new programs your computer is eligible for (same as Aptitude). Then the updates you can install are displayed and you can select them, same principle as packages. There isn't really an analog though for sources list and the keys, Windows Update uses a dedicated site (or in Vista a built in application) to both authenticate you (keys) and know exactly where to find the programs (sources list).

So there you go, that was my brief overview of the ecological network it takes to install things in Ubuntu. Not so hard eh? Now for the good stuff, I will explain how it all works and how you actually install things.