Date: Tue, 2 Jul 2013 12:06:49 -0700 From: Kevin Oberman <rkoberman@gmail.com> To: Anton Yuzhaninov <citrin@citrin.ru> Cc: FreeBSD Ports ML <freebsd-ports@freebsd.org> Subject: Re: "portmaster -r perl" rebuild almost everything, including apache24, php53 etc. Message-ID: <CAN6yY1t4HTz-7MHHkaQyiicMb4zuRC2wrpRu2g9Tf7mH7A3UVw@mail.gmail.com> In-Reply-To: <kquu3m$bja$1@ger.gmane.org> References: <1306476328.20130621232328@serebryakov.spb.ru> <51C5611D.2000807@passap.ru> <kquu3m$bja$1@ger.gmane.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Jul 2, 2013 at 9:11 AM, Anton Yuzhaninov <citrin@citrin.ru> wrote: > On Sat, 22 Jun 2013 12:32:29, Boris Samorodov wrote: > BS> 21.06.2013 23:23, Lev Serebryakov =D0=BF=D0=B8=D1=88=D0=B5=D1=82: > >> 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. --=20 R. Kevin Oberman, Network Engineer E-mail: rkoberman@gmail.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAN6yY1t4HTz-7MHHkaQyiicMb4zuRC2wrpRu2g9Tf7mH7A3UVw>