[Catalog-sig] Strawman: Debian

Moshe Zadka moshez@zadka.site.co.il
Thu, 09 Nov 2000 06:53:30 +0200


I sent this before, when only AMK and I were subscribed.
Here it is again:

I don't know how many people here use Linux, and of those, I don't
know how many people use Debian GNU/Linux. Debian, as a distribution
has a couple of tools to manage distribution of several thousands
packages with complex interdependancy. I suggest, as a strawman,
that we outright steal these tools, and use them for managing Python
modules.

Let me summarize the procedures used in Debian to perform things 
as installations, upgrades and removals of software.

The low-level is handled with dpkg -- Debian Packaging tool. It understands
the format of a .deb file (the format in which Debian packages are distributed).
It can check both the control information to see, e.g., that no higher version
of that package is already installed, and that all dependancies are installed
properly. Then it unpacks the distribution, and executes a configuration
script. (For example, in the Python .deb, the configuration script byte-compiles
all Python modules). 

As a way to facilitate installations, Debian also has a tool called apt
(A Packaging Tool) which knows which packages exist in the Debian distribution,
and what their connections are (conflicts, dependancies, recommendations, etc.)
To impress everyone, I'll show an actual apt-get session:

moshez@darjeeling:~/prog/my/pmh$ sudo apt-get install xterm
Password:
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
  libxaw7 xfree86-common xlibs
The following NEW packages will be installed:
  libxaw7 xfree86-common xlibs xterm
0 packages upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 2233kB of archives. After unpacking 6984kB will be used.
Do you want to continue? [Y/n] y
Get:1 http://http.us.debian.org woody/main libxaw7 4.0.1-1 [202kB]
....gets other packages (my connection is slow, so I won't wait for it 
    to finish)...
...installs them....
...configures them....

Voila! I have "xterm" installed.

The .debs are built from source packages with a little extra control
information. If I want to change some .deb, I merely have to

apt-get source <package>

This downloads the original package source, the Debian diff, opens the
tarball and apply the diff. After I change the source a bit, I can
issue simple Makefile commands and I have an alternative .deb. I'll usually
change the version, so it won't get overridden by apt-get.

Of course, this is only the beginning: apt-get is truly amazing. 
I think we can make this system (perhaps stealing only ideas, not code)
work just as well for Python.
-- 
Moshe Zadka <sig@zadka.site.co.il>
This is a signature anti-virus. 
Please stop the spread of signature viruses!