Dpkg Update Proposal
Okay, I posted to -devel a few weeks back with a proposal for an update to dpkg.
This message is being Cc'd to -devel, and sent to -dpkg.
Basically, attached is my proposal (it's long, I'm trimming it down in another
rxvt, but, I wanted to get something out for the firing sqaud). Please read it,
and reply with questions, complaints, comments, suggestions, etc. Please don't
scorch me. If I want to be flamed, I'll post "RedHat sucks, Slackware is cool
and btw: KDE rocks" to Slashdot.
Any flames can be sent to /dev/null. Please just constructive stuff here.
I'd like someone with superior authority on dpkg, (Ian Jackson?) to also take
extra look at this.
In a nutshell, my proposal outlines the weirdness of package names
(libgtk1.1.13, svgalibg1, imlib, etc -- to name a few), and how to fix them, and
the possible problems it would cause.
Please, feel free to add to this.
Also, note that there is no code done as of _yet_, I want to take everything
into consideration first, but I have done a bit of research on dpkg to make sure
that this will work, and have considerable experience developing package
management systems (a lot of the SLP-0.90 code is derieved from my own), and I
have written up to and more than 80% of three different package managers, all
of which I discontinued after switching to _the_ real distribution.
Package Naming Scheme
The current naming scheme of many packages is a mess, to say the leasy. This,
of course applies almost exclusively applies to libraries, but there are some
other packages that could use some help (Electric Eyes, and Easy Editor come to
The problem is inconsistency. Some package names, speaking about libraries
here, are prefixed with the word 'lib', as in libgtk, and some are not, as in
Imlib. Now, I realize that this should be the case sometimes, as in libjpeg,
libtiff, etc (those are the proper names for those packages), and, libImlib
would sound funny. Some packages contain a little g, such as zlib1g, to show
that the package is compiled for Glibc2. However, not _all_ glibc2 packages
have this little g (imlib and fnlib come to mind). Since libc5 exists for the
most part only in the hearts of the Slackware users, this 'g' thing can be
Another problem with this is that many packages comtain a number on the end,
so that different versions of the library can be installed (I assume), but that,
also is not consistent. For instance, freetype has two packages, freetype1 and
freetype2, where do the 1 and 2 come from? What significance do they have?
With a simple patch to dpkg (more details below), this could be fixed.
The other inconsistency problem, is that even though many packages have a
number, and the letter 'g', that is still not consistent. What order do they go
in? SVGALib has svgalibg1, and zlib uses zlib1g. Even more confusing is the
way gtk is named. libgtk1.1.12 is the latest, at time of writing. It was
always libgtk1, then libgtk1.1, then because the GTK developers break every
previous release with every new one, it had to start getting full version
numbers, as does the kernel package (kernel-image-2.0.36).
CVS is becoming an increasingly important part of the daily life for many free
software projects (Gnome, Mozilla and Berlin come to mind), yet there is no
defined way to name a CVS package. Perhaps we can take the easy way out, and
not package programs from CVS, but what would us Enlightenment users do without
CVS versions? Enlightenment has not had a new version since 0.14 which was way
back this past summer, and it is severely feature-deprived (no iconization, for
instance). The current Enlightenment maintainer, Brian Almeida, has come up
with a wonderful solution for this. He calles all stable versions of
Enlightenment simply enlightenment, and CVS versions enlightenment-cvs. He has
fixed it further, by making enlightenment-cvs conflict with enlightenment.
Perhaps there are more examples.
Personally, I think Brian's solution to the CVS problem is the perfect fix,
but perhaps there is room in the Debian package format for a CVS version
Fixing All of this...
Of course, to save being scorched, I have to include some solutions to the
problems outlined above. And, again to save being further scorched, I have to
provide _good_ solutions to these problems.
My solution, after long thought and working out, is to simply modify the
Debian Package Management system to allow multiple versions of packages to be
installed. (Keep reading, before anyone jumps to conclusions) This simple fix
would not severly break the current package management system, and would require
only that people upgrade to the new version of dpkg (which would be simple, if
we just include the patched up version in potato... everyone that upgrades to
potato gets the new dpkg). The numbers, and letters on the end of packages
could be eliminated, and a package naming standard should be imposed.
I envision a time and a place, where, when I read in a README something to the
effect of "This package requires GTK", I could just type "apt-get intall gtk",
instead of remembering that the name for the current gtk is "libgtk1.1.12". I
could also teach myself, that if I want the cvs version of GTK, it's package
name is gtk-cvs.
Of course, if I read "This package requires GTK version 1.1.6, no less, no
more" (unlikely, but it _could_ happen), I could just "apt-get install gtk
(1.1.6)". Perhaps even simple equations could be used. If the readme said
"This package requires GTK between 1.1.6 and 1.1.11", I could "apt-get install
gtk ( > 1.1.6 & < 1.1.11)".
Another feature that I would like to see implemented, is something that would
check all dependencies for dead libraries "ie, libraries that aren't used",
perhaps this would be done by a program seperate to dpkg.
Of course, I am willing to code this myself, or help code, I just want to pass
the idea around for evaluation. No code is done at the current time, but I have
done a bit of research to make sure that my ideas will work for the most part.
Again, I will touch on the compatibility issues. When the version of dpkg is
patched up to work like this, it will cause some headache, but not a whole lot.
Package maintainers would have to be warned to switch to the new naming scheme
(many wouldn't even have to switch), and users that refuse to upgrade dpkg, but
want the two latest versions of a program simultaneously, would be warned to
Also, if we introduced this new package manager update in the latest version
of Debian (perhaps the version _after_ potato), we would avoid all conflicts, by
telling maintainers of packages in the new version to use the latest naming
Perhaps someone of high authority on dpkg could help me out with this. I am
convinced that this will work, and will need considerably un-convincing to send
me back to the drawing board.