New users to a Linux distribution typically fall into 2 categories:
Those that are put off by the subtle differences they see in how
the operating system presents itself, and those that embrace the
methodology of how they can now work. Or play. As in life, if we
can be OK with subtle differences, we are usually better off. We
are at our best when we are constantly evolving.
Using Linux for a short while will no doubt introduce you to new
and more efficient ways of doing things. Take, for instance,
managing your software. As a new Linux user you might not be at all
familiar with actually managing your system's software. In the past
you may have searched for and hoped for the best when you
downloaded some shareware that claimed to suit your needs. If
lucky, you were satisfied with your choice. If you were luckier
still, the software that you installed played nice with your
system. Many times this is a hit or miss proposition. Not so on
your Linux box.
Linux distributions typically come with a package manager. They
can be command-line or a more familiar GUI (Graphical User
Interface) program. In fact, many people and companies have seen
Linux package managers in action and have decided to try Linux
based on this one function. It's a terrific reason, no doubt, but
it's the same mentality that makes us a sucker for "WOW!". We're
all the same -- we see some whiz-bang thing and we gotta have it.
Well, hold your horses --.
You can't fault anyone for wanting solid and reliable package
management. After all, the Linux distribution that you are using
right now was built to work as a desktop operating system. The end
package is a terrific draw. It has terrific appeal. You see, Linux
is merely a kernel, a "brain", with a few utilities thrown in for
good measure. By itself, it doesn't do a lot of us any good.
However, when a team, company, or your old Uncle Ed decides to
build a Linux distribution based upon a particular kernel, the
finished product can be quite spectacular. Well, as far as
computers and operating systems go. It doesn't compare to that
sunset in Maui.
With a Linux desktop distribution you get the kernel, utilities,
and then you get all the software and components necessary to give
you a total desktop package. You will find office software, 3d
rendering utilities, drivers for your hardware, and any number of
obscure and/or cutting-edge software to help you work and play. All
tied together and all maintained and updated continually for your
As I have written -- it's a big draw. One of the most popular
and certainly most important of Linux distributions is Debian
GNU/Linux. Its developers created a package manager called Apt some
years ago and it is so reliable and simple that many other
distributions have decided to employ it as well. The concept is
brain-dead simple. House all distribution version related software
on central server in "repositories". They are available 24 hours a
day and accessible right from your desktop. On you computer's side,
you will have a file which contains the addresses of any number of
repositories available for your use. On a Debian box you will find
that file here: /etc/apt/sources.list When you use your
package manager it uses that file to access the server locations
contained in it and updates or add/removes software of your
choosing against whatever is available on the servers. In the case
of Debian that means you have better than 20,000 packages available
to you. Ya -- I know. Try to be cool. :)
How you utilize this function depends upon your style of
computing. Many of us are at home typing commands into a terminal,
or the "command-line". Still, many more of us want to use a GUI
front-end. The developers have heard us! Open Synaptic and you are
greeted with a well put together GUI program that lets us manage
our packages simply. Click a button to update the repository lists
-- click another to check for any updates. Click another one still
to update everything on your system that needs it in one quick
Within Synaptic you can change or add/remove repositories. This
is needed because distributions like Debian have very strict
guidelines for what software can be included in its distribution.
Debian will not include software that is not "free" within its
distribution. This can be problematic when your video card needs a
proprietary driver in order to be utilized fully -- like giving you
sweet 3d acceleration. Not to worry. Within your Synaptic program
you can choose the repositories to use. There are 3 main branches
of a Debian repository:
main -- Totally free software; use it, mod it, hawk it thus.
contrib -- Free to use software, but still restricted in some ways
non-free -- Software that is not free. Free to use, but no poking around.
Many desktop users will have all three repositories enabled as
some software they need or want is not available in main. When
non-free is used extra desktop functionality like Java and nVIDIA
is available to you. Adding the non-free or contrib repositories is
no cause for concern. Software from these sections will not mess
with the stability of your system, however, it's also not supported
should something go wrong. Adding proprietary stuff to your
distribution is on you. I'm only writing that because we live in a
cover-your-butt society. Debian developers have considered your
proprietary needs -- your installing of the nVIDIA binary that you
downloaded will not wreak havoc on your system.
You can see that with a program like Synaptic it's very simple
and even a pleasure to manage the software on your system. However,
it's important to be at lease comfortable with the command-line
functionality that Synaptic is a pretty front-end to. On Debian,
Synaptic will not be installed by default. You must install it
yourself, but it's a very simple thing.
As you now know, Synaptic is just a pretty face. The real action
is all Apt. It's the real function behind Synaptic. Using apt
happens on the command-line and it couldn't be more simple. Merely
knowing a few basic commands can keep your system rolling very
quickly. Let's explore Apt just a bit, after all, you'll be using
it to install Synaptic anyway.
Fire-up your terminal and become root. If you don't know this
now, you need to -- a regular user cannot affect a Linux system.
All the files located in directories other than /home/user are
protected and can only be modified by the root user -- the
"administrator" of the machine. This is a good thing. When you
become root at the terminal you will see the $ prompt change to a #
prompt. You may even see the prompt in a different color. Red,
perhaps. You should only ever become root in a terminal and never
run a desktop as root. Too much can go wrong.
Now that you're the root user in your terminal you can begin to
affect system changes. First thing first -- update apt, run this
# apt-get update
You'll see a list of web server addresses go by as apt accesses
each one and updates its internal package versions against what is
currently available on the repository servers. There may be none.
With Debian a release is a release and no software is ever updated
except for security changes. This means that you will stay with
cool-software-2.1.0-3 until the next release of Debian. This gives
you the chance to get proficient and fully utilize the software --
nothing will change as far as you're concerned, but you will all
ways have any necessary security updates. You will not have to wait
until Tuesday to employ a shaky patch.
After you've updated your repos and your system has the latest
information you can run the next command:
# apt-get upgrade
This command will actually do the upgrading. All security
updates will be downloaded and utilized and any ancillary packages
necessary to allow any security updates will be downloaded and
installed. As well, any software that would conflict with the
update will be removed from your system. All neat and tidy, all
almost effortless. Most important of all - you did this from within
your own desktop.
For all of the goodness and simplicity of Apt/Synaptic, there is
a better program still for your Debian system. I'll explain the
problem first. Dependencies. Dependencies, dependencies,
dependencies.....it's the scourge of longtime Linux users and we
have all suffered it. To me it's no big deal and I get to see what
programs other ones interact with or need in order to function
properly. To a Geek-to-the-bone like me, dependencies aren't such a
big deal. However, then can make you crazy.
Program A needs programs E, G and Z to function properly.
Program Z needs programs L, and F, and program G needs programs B
and Q. Oy! If you're downloading a .tar file that you need to
compile (we can discuss this later) and the website that you found
this must-have software on doesn't tell you all the requirements
the software needs to run -- you just might run into a big
This "dependency-hell" isn't so prevalent among the Debian based
distros because of how software for a Debian system is
offered/maintained (Apt). You mostly see this dependency nightmare
among the "rpm" based distros. It's better now with the evolution
of package managers like Yum, but in the past it bugged me, too.
And it can still bite you.
Apt handles all your dependencies if you install software from
the 3 branches of a Debian repository -- main, non-free, contrib.
In fact, with all that's available to you there, you may never need
to download a thing. However, you may want a newer version of a
program -- just because that's how you are. That's cool. You'll
have to download and compile it yourself. Dependencies,
You might be thinking right about now -- Pfft!, I don't deal
with this on a Windows system. You'd be incorrect. You absolutely
deal with this, but a little differently. First off, the software
that you download to install has not been designed to work with
your machine as it's built. The software is designed to work on the
platform, but not with all of the other software on your system.
Because of this, the .exe file that you download is a collection of
all the dependencies necessary to install and run that software on
your system. Sure, convenient. Simple and trouble-free it is not.
Some of the supporting aspects of the shareware you just downloaded
might be the same as what's already on your system -- but a
different version. Here is where this becomes bad-medicine. The
software that you are about to install will actually overwrite the
version that your system already has. In fact, the developers for
Windows have had to build in protections against this -- which to
me is applying a band-aid to a compound-fracture.
On your Linux box, your system files will not be overwritten.
Consider this. Programs on your Linux box employ a "config" file.
It's a file that contains all the settings and what-not that the
software needs to run properly. Everything is a file in Linux and
it's terrifically easy to maintain because of this. Should you
install a program that is employing a different configuration file
than the one currently employed, your system will let you know and
ask you how to proceed. You will be allowed to keep your current
configuration file, which is the default behavior, replace it with
the new one, or even allow no action until further review. That's a
feature I want.
Now we can appreciate a little the nature of software. You've no
doubt heard many times in your life that nothing exists in a
vacuum. True enough, and software is no exception. The nature of
software development is to reuse the objects, functions, tools that
work. Re-creating the wheel is inefficient. One object might be
used in 28 different software titles so that object becomes a
dependency. All platforms use this methodology.
Now that we can be comfortable with dependencies I will
introduce my favorite package manager. Your Debian system does come
with this one installed by default (like Apt, but not Synaptic) and
is ready to go as soon as you are. Many people say that only Gurus
use Aptitude, but I disagree. It's just as simple as Apt and just
as welcoming to new users. To me, though, it's cursed based
interface is confusing. People seem to like it, but I can't wrap my
brain around it. However, the command-line usage is a "no-brainer",
just like with Apt.
Let me explain why I like Aptitude better. Remember
dependencies? Many dependencies come in the form of "libraries".
Consider the ".dll" file on a Windows system. It's a reusable
system file that many programs might use. Libraries are exactly the
same. One particular library might need to be installed for a
particular class of software to function properly. You can find out
what programs need what libraries, but we'll save that until later.
Package management has a lot of meat to it and this introductory
article should be just that. We will dig deeper later.
With Aptitude managing your system you don't have to worry about
stray dependencies being left behind on your system. Unused. We
call it "lint". Apt will not remove lint when you remove the
package that you installed that needed this dependency
(UPDATE: this all changes with the apt version in Lenny).
However, Aptitude will. This is a big draw. Most users don't worry
about space or efficiency because their hard drives are so vast.
However, some of us do -- especially those of us running servers.
Nothing remains on a server that isn't being used. Most server
admins use Aptitude from the get go. But you don't have to be a
When you install a program with Aptitude it will note and
remember any and all dependencies that were installed with it.
When/if you ever remove said program Aptitude will remove the lint
along with it. If it sees a library will no longer be necessary, it
removes it. That is cool. However, to enjoy this kind of efficiency
you must know 2 things:
Aptitude will install "recommends" by default. This makes for
more software installed that you might not want. Recommends are
extra software and they are not absolutely necessary for the given
program to work properly -- however, they are supporting programs
that make sure that all of the program's functionality that you
want will be available to you. Also, you must have been using
Aptitude form the very beginning. For instance, if you have built
your system using Apt, then Aptitude will have no record of
dependencies, etc. and will not remove lint when you remove
software. However, as with anything Linux related -- there is a
way. Here's a big tip: You can make Aptitude recognize all
previously installed packages and give Aptitude control over all
your software and dependencies, but you'll need a while, like maybe
an hour, and you'll need a little savvy to know what to keep and
what to allow Aptitude to remove.
You can run the following command to give Aptitude control over
your system's packages/programs:
# for pkg in $(aptitude search ~i | grep -v "i A" | cut -d " " -f 4); do echo "-- markauto $pkg --"; aptitude markauto $pkg; done
Aptitude will go through all of the software you have installed,
learn about it, record dependencies, etc. and offer you a choice of
keeping or removing what it considers to be useless software.
Listen, though -- you can remove software you like this way and
have to reinstall it later. So be careful.
I hope this brief article has introduced you enough to a
terrific aspect of Linux and that you will want to learn more.
There is much more to learn about package management and some if it
will be a godsend for you. As with all new things -- take it slow,
consider the pains and penalties of mistakes, and keep that
open-minded attitude. There are great rewards.
-- machiner 11 Dec 07, published mar 08
Learn more in the forum thread.
Here's a more recent article about managing Debian software.