"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