[Distutils] bdist_debian

Bastian Kleineidam calvin@cs.uni-sb.de
Sun Sep 3 16:42:00 2000


               Debian Packages with Distutils:

1) You are on a Debian system
   a) execute "dh_make --native" or see dh_make(1)
   b) adjust your debian/rules file:
      debian/rules:
      #...
      build:
              #...
              rm -rf debian/tmp # Distutils chokes on broken symlinks
              python setup.py build
              #...
      clean:
              #...
              python setup.py clean --all
              #...
      install: build
              #...
              python setup.py install --root=`pwd`/debian/tmp
              #...
              
2) But I am running a non-Debian system
   a) Read something about the .deb format in deb(5):
      The  file is an ar archive with a magic number of !<arch>.
      The first member is named  debian-binary  and  contains  a
      series  of  lines,  separated by newlines.
      The second required member is named control.tar.gz. It is  
      a  gzipped  tar archive containing the package control
      information.
      The third, last required member is named data.tar.gz .  It
      contains the filesystem archive as a gzipped tar  archive.

   b) Be sure that you follow all of the Debian standards and
      requirements so that the package fits smoothly in any Debian
      installation.
      Look at the documents in the debian-policy package.
      There are scripts to do this automatically: see debhelper(1).
      All this can be checked with the lintian Debian package.


Number 2) has two disadvantages:

1. All this code to produce Debian packages is existing, tested and
   working code. bdist_debain would only duplicate this effort.
   Espacially for 2b) there are numerous existing helper scripts in
   a Debian system.

2. Okay, lets assume implementing this whole number 2) thingy
   is not very hard (or you have enough spare time to do it),
   but then you remember deep in your mind the Debian FAQ 6.2:

   This internal format is subject to change (between major releases 
   of Debian GNU/Linux), therefore please always use dpkg-deb(8) for 
   manipulating .deb files.

   So you will run into problems sooner or later and you have to 
   update your software as the internal format changes. You can look 
   at the discussions about bdist_rpm and the RPM versions, thats 
   pretty much the same.


Bastian Kleineidam