Debian Package Management

Some extracts from the mailing list: What puzzles me is the relationship between, say, dpkg, dselect, apt, apt-get, aptitude, synaptic, uncle tom cobbley etc.[toc hidden:1]

Some extracts from the mailing list:

What puzzles me is the relationship between, say, dpkg, dselect, apt, apt-get, aptitude, synaptic, uncle tom cobbley etc.

At the end of the day, everything is basically a layer on top of dpkg -  dpkg is the package management system, and the other fluff just makes  new packages available in different ways.

dselect and aptitude are very similar tools - menu-based console  programs to select things to install. dselect is the "old way", aptitude  is the "new way".

apt (which is the name for apt-get and apt-cache) is a command line tool  for updating and getting new packages and stuff.

aptitude is generally  the preferred tool, though, especially for things like system upgrades  where apt can leave your system in "a state", as it were.

synaptic is just a GUI version of aptitude, really, ditto all the other  GUI front ends.

Basically, the only tool you really need to know about is aptitude, and  maybe apt for strange systems which don't have it installed.

What /is/ a repository?

It's just a filestore with a certain directory layout and some useful  indexes. Nothing special.

How do I cope with packages that aren't in a repository, such as the kernel I built, which resulted in a .deb file?

A repository is just somewhere you can grab packages - a CD, a website,  whatever. If you already have the package, you don't need a repository  unless you need to find other packages to fulfil dependencies.

Your dpkg will hold its own list of packages - those that are installed  or were installed on your machine.

Do I need to uninstall before reinstalling my next attempt at building the kernel?

No, not necessarily. If it's the same package (ie., same version of the  kernel) it will just replace it (it basically uninstalls and reinstalls  for you). If it's a different package (a different version of the  kernel), you'll usually find that the two packages can be installed  alongside each other, so you can fall back to the older kernel if  needed.

Kernel packages tend to be special like this, in that they are named  after the kernel version precisely so you can have many different  versions installed. Usually, you can't install different versions of a  piece of software alongside each other.

I have just started with Debian too, and I have so far used apt-get exclusively. It's working really well, as long as you know what the package you want is called. http://packages.debian.org comes in very handy.

apt-cache is the companion tool to apt-get for examining the package database.  Specifically "apt-cache search foo" searches the database for foo  and "apt-cache show bar" displays information about package bar.

If we want to set up several systems, for example at a group meeting, presumably it would be a lot faster to have a local repository? Or is that idea a nonsense -- would it be more sensible to have some kind of caching proxy instead?

Caching proxy makes much more sense. There are a huge number of ways of  doing this, including apt-specific software like apt-catcher.

I've had a fair amount of success with apt-cacher, and can recommend it for  anyone updating multiple machines.  I've also used apt-proxy, but didn't like it.

There are tools for doing a mirror of a repository (eg. debmirror). Be warned  that a full debian mirror is BIG (several Gb per architecture).