update PHP

Matthew D. Fuller fullermd at over-yonder.net
Sun Nov 29 02:53:51 UTC 2015


On Sat, Nov 28, 2015 at 07:21:10PM +0100 I heard the voice of
Miroslav Lachman, and lo! it spake thus:
> Carmel NY wrote on 11/27/2015 12:39:
> > Would I l then need to rebuild everything that depends on PHP or could I just
> > add the "-r" flag to portupgrade?
> 
> You can get list of all origins of ports depending on main php port by 
> this command
> 
> pkg query %o `pkg info -r php5 | tail -n +2`

I've had good luck with PHP upgrades by just changing the origins,
then rebuilding the php ports themselves.  PECL stuff will also need a
rebuild.

Of course, you could just do a little sed'ery, but I tossed together a
quickie .pl to do it with a little more seatbelts.  e.g., with a
little editing to pretend I'm going from 5.6 to 5.5:

% pkg query '%o' | grep php56 | /tmp/phpup.pl
pkg set -yo lang/php56:lang/php55
pkg set -yo archivers/php56-bz2:archivers/php55-bz2
pkg set -yo textproc/php56-ctype:textproc/php55-ctype
pkg set -yo ftp/php56-curl:ftp/php55-curl
[...]

I intentionally just made it print out the 'pkg set's so I could
eyeball them for sanity.  Then just a quick C&P of 'em into a root
terminal, and I'm off to the rebuilding races.  A little obvious
editing should let you do 5->56 with it.

(of course there's always the chance of extensions moving around, so
you may have to manually find and deal with one or two, but it makes
it a lot easier)


--------------8K------------------
#!/usr/bin/env perl
use strict;
use warnings;

# pkg query '%o' | grep php56 | $SELF

while(<STDIN>)
{
	chomp;
	my $old = $_;
	(my $new = $_) =~ s/56/55/;

	die "Couldn't find dir $new" unless -d "/usr/ports/$new";

	print "pkg set -yo $old:$new\n";
}
--------------8K------------------


-- 
Matthew Fuller     (MF4839)   |  fullermd at over-yonder.net
Systems/Network Administrator |  http://www.over-yonder.net/~fullermd/
           On the Internet, nobody can hear you scream.


More information about the freebsd-ports mailing list