, ,

Where I live, there is only three choices for Internet: dial-up, cellular 3G, and satellite. There is no cable – no DSL – no BBoP – nothing that has any high-speed capabilities. Cellular (new in the area!) works but there is a 5Gb limit for the month – otherwise they will assume that you are performing tasks against your usage contract and reserve the right to cancel without notice (!).

There has been lots of talk about creating an Ubuntu Add-On CD, but nothing official and nothing lasting. There is an Add On CD Creation project as well as a (dated) Unofficial Ubuntu 5.10 Add On CD: neither of these projects seem to have continued. Over at Bounty Source, there is another project called the Ubuntu Plus AddOnCD; likewise, this has not kept pace. There used to be something at Ubuntu Guide but the link is no longer valid to that specific page, although the site seems active and current.

There’s also a DVD built by one or more Indonesian containing Ubuntu repositories; if I could read Indonesian, I could read the websiteand tell you more about it. There do appear to be multiple distributors across Indonesia.

There are two sources that seem to have kept pace, although neither supports Ubuntu Jaunty Jackalope or its descendents. One is an Italian who creates an add-on CD and posts it; it is the UbuntuPiù CD. Another is called the Ubuntu ADDONCD. Hopefully one or both of these sites will update with Jaunty Jackalope soon.

The main method of creating an Ubuntu add-on CD is to create an Ubuntu (Debian) repository then burn it onto CDROM. This is fine as far as it goes – however, the current Ubuntu repositories are 70+ gigabytes in size and mirroring the entire repository at this point is a big deal – especially when terabyte drives are not yet common.

The Debian APT Repository How To is an expansive document describing how to make your own repository. There is also an excellent article on creating an Ubuntu repository with apt-mirror.

Also, some projects assume that you have downloaded all of your added packages without ever having run “apt-get clean” – despite the fact that the apt-get man page recommends that you do so and says that any program that uses dselect will call apt-get clean as part of its normal processing. Using this download cache seems to be very short-sighted, but it is done by tools such as aptoncd which are otherwise very promising.

The apt-move How To, while otherwise quite useful, also makes this assumption. The assumption that “apt-get clean” will not be run is not a valid one!

Perhaps the only way to resolve the matter is to force a download of the desired packages – but currently there doesn’t seem to be any way to download a package and all dependencies not found in the Ubuntu install CDROM – in fact, there’s no way to download all dependencies at all. It should be possible to create a script to do it some how.

To download a specific package – but without its dependencies – is to do thus:

apt-get install --reinstall -dy package

This will put the package into the apt cache for use by other programs that seem to think the cache is never cleaned out.

To get a list of dependencies, you have to use apt-cache and massage the output to get a list:

apt-cache depends bzflag | sed -n '/^[^ ]/d; /]*>/d; s/^.*: //; s/^ *//; p;'

Once you have this list of dependencies you might be able to download the files with something like:

apt-get install --reinstall -dy $(cat resultsfile)

…if you’ve saved it to a file called resultsfile. One problem is that a dependency could be a virtual package – and since the program is working from a cache of repositories, it reports all packages that provide the virtual package, not those that are installed.

One more thing – if you are trying to build a repository and are building from the system’s APT cache – then you can only build a repository relating to the current environment. Thus, if running Ubuntu Hardy Heron, you can’t use the cache to create a repository for Ubuntu Jaunty Jackalope.

I can’t let this end without mentioning RPM. Debian’s biggest weakness is, in my opinion, dpkg: RPM when combined with APT-RPM is so much more powerful than the dpkg and APT environment. RPM is very clean and is even portable: administrators running RPM on Solaris and other machines is not entirely unusual: running dpkg on Solaris would be news-making. Too bad there isn’t a version of Ubuntu that uses RPM (is that a hint?).