Updated perl - broke stuff

Michael C. Shultz reso3w83 at verizon.net
Mon Feb 14 02:19:42 GMT 2005


On Sunday 13 February 2005 02:02 pm, Paul Schmehl wrote:
> ----- Original Message -----
> From: "Ean Kingston" <ean at hedron.org>
> To: <freebsd-questions at freebsd.org>
> Cc: "Paul Schmehl" <pauls at utdallas.edu>
> Sent: Sunday, February 13, 2005 3:42 PM
> Subject: Re: Updated perl - broke stuff
>
> > I stopped using portupgrade because it only upgrades ports that are
> > out-of date. It then modifies the installed software database to
> > change any dependencies that relied on the old port to show them as
> > relying on the new
> > port.
> >
> > For most ports, this works. For Perl, particularly mod_perl, this
> > doesn't work. If you install a new perl you have to rebuild
> > everything that depends
> > on perl even if it hasn't been updated.
> >
> > So I stopped using portupgrade.
>
> Wouldn't it make more sense to fix mod_perl?  (Or portupgrade -
> whichever one is the culprit?)  All the ports that depended upon perl
> appear to have had their dependencies updated properly except for
> libwww and mod_perl. ISTM, fixing those two ports makes more sense.
>
> If you don't use portupgrade, then what *do* you do?  Wouldn't you
> have to deinstall and reinstall every port that depended upon perl? 
> Or will pkgdb -F do the trick?

Pkgdb -F is what screws up the installed ports registry. Here is an 
example of what happens:

1. port-A needs dependency port-B installed
2. port-B is installed
3. port-A is installed and marks its registry as being dependent on 
port-B

and here is where things go wrong using sysutils/portupgrade:

4. port-B gets upgraded to port-B.1 and portupgrade reports port-A
has a stale dependency.

  Then you run pkgdb -F and port-A's registry is changed to say it was 
built with port-B.1, portupgrade claims this "fixes" the registry when 
it really breaks it.

Remember, port-A was built with port-B, not port-B.1 and the correct way 
to "fix" the stale dependency is to upgrade port-A so it is built with 
the newer dependency.

sysutils/portmanager also updates ports, put it doesn't cheat. When
port-B became port-B.1 portmanager will rebuild port-A using port-B.1
as the dependency.  port-A's registry stays reliable, reflecting how the
port was really build instead of how we wished it were built.

-Mike

see http://portmanager.sunsite.dk/ for more info

>
> Paul Schmehl (pauls at utdallas.edu)
> Adjunct Information Security Officer
> The University of Texas at Dallas
> AVIEN Founding Member
> http://www.utdallas.edu/~pauls/
>
> _______________________________________________
> freebsd-questions at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-questions
> To unsubscribe, send any mail to
> "freebsd-questions-unsubscribe at freebsd.org"


More information about the freebsd-questions mailing list