[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