"portmaster -r perl" rebuild almost everything, including apache24, php53 etc.
Kevin Oberman
rkoberman at gmail.com
Tue Jul 2 19:06:50 UTC 2013
On Tue, Jul 2, 2013 at 9:11 AM, Anton Yuzhaninov <citrin at citrin.ru> wrote:
> On Sat, 22 Jun 2013 12:32:29, Boris Samorodov wrote:
> BS> 21.06.2013 23:23, Lev Serebryakov пишет:
> >> I have old 9-STABEL eserver, which was converted to pkg-ng some time
> >> ago. This server has perl5.12, apache24, php53, some php modules, etc.
> >> installed via ports.
> >>
> >> I've tried to upgrade perl5.12 with recommended "portmaster -r perl"
> >> and it rebuild almost everything, including apache, php, all php
> >> modules, all apache modules, midnigght commander (mc) and lot more.
> BS>
> BS> Well, for me it's not "all" at amount POV:
> BS> -----
> BS> % pkg info | wc -l
> BS> 726
> BS> % pkg info -r perl | wc -l
> BS> 234
>
> This is because dependencies stored in package database are recursive.
> Even with pkgng.
>
> With old /var/db/pkg was not easy to recursively calculete dependencies
> when need, and this recursive list was pre-calculeted and stored. I
> don't know why this is not fixed in pkgng.
>
> For example if you have ports:
> A -> B -> C -> D
> in package database stored, that A depends on B+C+D, but should only
> be stored that A depends on B.
>
> This recursive dependencies causes different problems - many extra ports
> to rebuild is only one of this problems.
>
> glib among others depends on perl, so with recursive dependencies all
> ports, that depends on glib will be rebuild by portmaster -r perl with
> no profit from this rebuild.
>
>
portmaster/upgrade -r perl5.xx is safe, but re-installs a huge number of
ports that simply don't need it. Instead, I do the following:
portmaster lang/perl5 p5- net-snmp ImageMagick dvdrip
This will catch almost every perl module. If you don't have net-snmp,
dvdrip, or ImageMagick installed on your system, leave them off the
command.
Once that is done, go to /usr/local/lib/perl5/site_perl. Then cd to the
directory for the OLD version that you just replaced. (e.g. "cd 5.14.2".)
Check for any remaining regular files (not directories) under this location
"find . -type f" should do the trick. Use pkg_info or pkg info to find out
which port installed the files, if any are found and re-install that port.
portmaster p5-XML-Parser (don't know why, but something odd seems to happen
with that file after a perl update, so you can re-install it AGAIN, just to
be sure.
Yes, it's more complicated and may have some cases where something is
missed, but it seems to work for me.
--
R. Kevin Oberman, Network Engineer
E-mail: rkoberman at gmail.com
More information about the freebsd-ports
mailing list