There is, if I'm not mistaken, a problem of correct deps
for a multi-perl fink installation.
Recall that some pm's (roughly, those installing a bundle)
must have "Type: Perl x.y.z" in their info file, and be built
with perlx.y.z, to be usable with perlx.y.z _ and those packages
get a name like foo-pmxyz.
If other, non-versioned, pm's have to Depend on those, one
needs an additional package foo-pm (Type: bundle), so the
dependency can get listed as just on foo-pm.

The problem is how to express correctly the dependency of
foo-pm on the different foo-pmxyz's: the effect should be that
foo-pm being installed is a certificate, for whatever perlx.y.z is
running, that the corresponding foo-pmxyz is there (and not just
some foo-pmx'y'z').

So here is a proposal:

We introduce for each xyz a package 'perlxyz_not' that conflicts
with perlxyz (where perlxyz is _ like eg perl580 _ a package that
basically just does "ln -fs `which perlx.y.z`%p/bin/perl" _ hence
conflicts with all other perlx'y'z') and with system-perlxyz: then we
can let all foo-pm depend on " perlxyz_not | foo-pmxyz " for all xyz.

This will require the user to install foo-pmxyz for all bundles
foo-pm and all perl versions x.y.z he has installed _ but there
are not that many bundles, and it seems a condition for a
reliable system.

Note that the 'perlxyz_not' packages are not logically necessary in
this proposal, they are just a shorthand to simplify the writing of the
Deps in the foo-pm packages : else each 'perlxyz_not' in those Deps
should be replaced by the alternative that some other perlx'y'z' is installed.


The system has some defects: eg, a user who would not install
perlxyz, just perlxyz-core, and try to use that _ either by using explicitly
"perlx.y.z" as command or by doing "ln -s `which perlx.y.z`/usr/local/bin/perl"
would not be protected.


Also, I'm afraid manual intervention will be required eg when a
user, who has nothing of say perl580 installed, and hence has perl580_not
installed, issues 'fink install perl580' : the logic is that
- since the user explicitly asks to install a package that conflicts with perl580_not,
the latter package will have to go.
- since there is a legal way to satisfy the user's request without removing any other
package, that's what should be done
[ The legal way: 1) build perl580
2) install perl580-core 3) build and install in build-order all foo-pm580
for which foo-pm is installed 4) remove perl580_not 5) install perl580 ]


But I don't think fink or dpkg's dependency engines are capable of this
(maybe apt-get ?), and some manual guidance  will be required here..

Comments ? Improvements or other suggestions ?


Jean-Francois Mertens




-------------------------------------------------------
This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01
_______________________________________________
Fink-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/fink-devel

Reply via email to