AutoDeb

Revision 9 as of 2005-11-15 02:20:40

Clear message

Autodeb is a CURRENTLY VERY EXPERIMENTAL script to completely automate compiling and installing software.

The basic concept is that the user downloads any autoconf .tar.gz or .tar.bz2 archive (i.e. most programs), and types

  • autodeb archive.tar.gz

(though, actually, you must currently unpack the archive manually, and then run autodeb directory).

The program will be configured, compiled and installed, and a binary .deb package will be created and installed on the system.

Autodeb tries to automatically find and install dependencies (both those needed for compiling, and those needed at runtime), and it lists runtime dependencies as such in the created .deb.

It uses (a modified version of) auto-apt to find development dependencies during 'configure', and checkinstall to create a .deb binary package.

Contrary to standard auto-apt, autodeb does not just install every file that 'configure' happens to peek at. Instead, it lets 'configure' run and fail, at which point it installs only the last package that 'configure' required, and repeats the process.

Slower, but avoids installing a lot of useless "false" dependencies (auto-apt always tries to install G77 on my system, just to mention one).

Autodeb can be downloaded at http://ljl.150m.com/autodeb.sh , but PLEASE BE AWARE THAT IT IS EXTREMELY EXPERIMENTAL SOFTWARE THAT USES ROOT PRIVILEDGES AND MIGHT DAMAGE YOUR SYSTEM.

The program I've tested (sort of) autodeb with is XTraceroute, which can be downloaded from http://www.dtek.chalmers.se/~d3august/xt/dl/xtraceroute-0.9.1.tar.gz

Concept

Given a directory containing sourcecode and an autoconf "configure" script, autodeb will

1) Run the 'configure' script under an LD_PRELOAD environment (auto-apt), which tracks all of configure's attempts to access files

2) When 'configure' fails, autodeb looks at the last file that 'configure' tried to access; it asks auto-apt to find the package that files belongs to, installs it, and go back to 1)

3) When 'configure' eventually succeeds, autodeb compiles the sources using 'make'

4) At this point, autodeb does a 'make install' under another LD_PRELOAD environment (checkinstall), which tracks all files that are installed to the root filesystem structure, and creates a .deb package of them

5) Now autodeb looks at every executable file contained in the .deb package, and calls 'ldd' on them to determine the shared libraries that they require to run

6) auto-apt is then asked to find which packages those libraries belong to, and autodeb lists these packages as dependencies for the checkinstall-generated .deb package (not currently implemented)

Known problems and bugs

  • The generated .deb package does not have any dependencies listed.
  • Add your problems here (or contact me directly at ljlbox@tiscali.it if you can't edit this page)...