[Installit-dev] "package manager " becomes "InstallIt"

Benedikt Meurer benedikt.meurer at unix-ag.uni-siegen.de
Wed Aug 24 13:47:41 CEST 2005


Benedikt Meurer wrote:
> My attempt was to let the user choose a prefix under which everything is 
> installed (including the installer/uninstaller information itself). I 
> think this should be the way for the new InstallIt too. On first run, 
> ask the user to select a toplevel directory where all stuff gets 
> installed (you'll need some magic here to set sysconfdir to "/etc" in 
> case the user selects "/usr", and the like, but that's easy and you can 
> check the existing code to avoid trapping into the same wholes as I did :-).

The problem with this attempt was, that it doesn't integrate easily with 
every packaging system. So, on a second thought, I'd suggest to ask the 
user whether he wants to use a packaging system on first startup, e.g.

  (*) RPM
  ( ) DEB
  ( ) Solaris Package Management
  ( ) BSD Package Management
  ( ) Custom installation prefix: [____________]

You can easily autodetect the available package management system and 
preselect it:

  1. If pkgadd is available, select "Solaris Package Management"
  2. If pkg_add is available, select "BSD Package Management"
  3. If dpkg is available, select "DEB"
  4. If rpm is available, select "RPM"
  5. Select "Custom installation prefix" and default to "/usr/local" if 
writable, else fallback to "$HOME/local"

There are some systems missing from the above list, which may be added 
later (e.g. Darwin Ports, Gentoo Package Management, Lunar Package 
Management or Win32/Cygwin). In general the package/installation backend 
should be kept modular and easy to extend/exchange, with a well defined 
API implemented by the various backends.

So, if for example, the user selects "RPM", InstallIt will query the 
settings from the local RPM system (sysconfdir, prefix, etc.) and use 
that. If the user selects "DEB", InstallIt will use the hardcoded values 
from the Debian Policy (sysconfdir is "/etc", prefix is "/usr", etc.). 
For "Solaris Package Management", prefix will be "/usr/local" or 
"/opt/i2t", preferrably "/usr/local". For "BSD Package Managment" prefix 
will be set to whatever pkg basedir is selected (usually "/usr/local" 
for Free/OpenBSD/DragonFly, "/usr/pkg" for NetBSD) by parsing the 
make.conf/mk.conf.

Of course, binary packages can only be installed if the appropriate 
package management system is selected: E.g. I can only install .rpm's if 
I selected "RPM" earlier, likewise I can only install .tgz's/.tbz's if I 
selected "BSD", and so on.


Benedikt



More information about the Installit-dev mailing list