AutoDeb

Differences between revisions 10 and 11
Revision 10 as of 2005-11-16 02:44:00
Size: 3143
Editor: 62-101-126-215
Comment: Changelog
Revision 11 as of 2005-11-16 02:46:21
Size: 3266
Editor: 62-101-126-215
Comment: Problems
Deletions are marked like this. Additions are marked like this.
Line 44: Line 44:
 * 'configure' is very slow due to auto-apt crazily looking for packages (while only one search would be really needed)

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.
  • 'configure' is very slow due to auto-apt crazily looking for packages (while only one search would be really needed)
  • Add your problems here (or contact me directly at ljlbox@tiscali.it if you can't edit this page)...

Changelog

  • 16 November 2005 Now using aptitude for everything, which should make the script safer, as the black magic I was using previously to find out what packages to remove at program end is no longer needed.

AutoDeb (last edited 2010-01-26 10:09:52 by 93-32-50-153)