Kitz Forum

Computer Software => Linux => Topic started by: roseway on December 09, 2007, 02:19:22 PM

Title: Linux tutorial 3 - Software management
Post by: roseway on December 09, 2007, 02:19:22 PM
This is the third in the series of tutorials. Here we will be looking at software installation and removal.

How is Linux software organised?

Because Linux comes in so many different flavours, there is no universal system for managing software. In the early days of Linux the only way to obtain software was to download the programmer's source code and compile it on your own machine. You can still do this (and it's easier than you might expect) but with the mainstream desktop distributions it's no longer necessary.

All the main distributions maintain their own online repositories of software which is already compiled and configured to suit the particular distribution. The software comes in 'packages' containing all the files which make up the software in question, together with information which is used to copy the files to the correct places in the file system, and usually they will add an entry to the main menu as well. The repositories will usually contain thousands of packages, covering just about every type of program and library that most people will ever need.
Linux package formats (http://en.wikipedia.org/wiki/Linux_package_formats)

Package management systems

A common problem with software in such a varied environment as Linux is dealing with 'dependencies'. Software packages usually depend on other software packages to provide supporting libraries (similar to Windows DLLs) and sometimes they're fussy about particular versions of the libraries. If you have different packages depending on different versions of a particular library you could easily get into a web of interdependency problems.

Package managers have been developed to deal with this problem. They use the dependency information which is embedded in each software package to ensure that all the installed software is mutually compatible. If you ask the package manager to install a package which requires (say) a later version of another package than the one which is already installed, that other package will be upgraded at the same time, and any other dependent adjustments will be made to ensure continuing compatibility. Of course, how well this works depends on the skill of the people managing the repositories, but generally it works very well.

The most commonly used GUI package manager is Synaptic (we won't be considering command-line tools here). This is used in many distributions, and once you've got the hang of it it's very easy to use. it looks like this:

(http://farm3.static.flickr.com/2089/2097127633_5b0241290f.jpg) (http://farm3.static.flickr.com/2089/2097127633_34f3a9187b_o.png)

The buttons at the bottom left give you different views of the available packages, and you can search for software which you want to install, uninstall packages which you no longer want, upgrade packages to later versions, and so on.

All the desktop distributions include a package manager with these kinds of features, and so long as the software you want is available in the distribution's repositories, installing and upgrading it is very easy to do.

Where do I find software which isn't in the repositories?

In the first instance it's probably worth asking a question on the distribution's support forum. Most of these are pretty friendly places so long as you stick to the rules, and you will often get a pointer to a suitable source of the program, or suggestions about alternatives.

If that doesn't yield a result you can do an internet search. If the distribution you've chosen uses the RPM (http://en.wikipedia.org/wiki/RPM_Package_Manager) package system you may find RPM.PBONE.NET (http://rpm.pbone.net/) a useful place to look. But make sure that any software you download from this source is marked as being for your particular distribution. Packages built for other distributions might work, but they also might mess your system up.

You need to be aware that software packages from third party sources can be a bit hit and miss. Although they may be in the correct format for your system, there's no guarantee that they won't have unresolvable dependency issues. So it's always best to look for a solution in the distribution's own repositories. Even if the particular program you're looking for isn't available, there's a strong probablility that there will be something else which is equivalent.

If you can't find a suitable package of the program you want already built for your distribution, then building it yourself is the final option. It's not as difficult as it sounds, but it's a subject for a later tutorial.