Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 27 Jan 2015 16:38:53 -0500 (EST)
From:      Garrett Wollman <wollman@hergotha.csail.mit.edu>
To:        vmagerya@gmail.com
Cc:        freebsd-stable@freebsd.org
Subject:   Re: Recursively Deinstalling and Upgrading Packages/Ports without Breaking Dependencies?
Message-ID:  <201501272138.t0RLcrY7023513@hergotha.csail.mit.edu>
References:  <54C6CDB5.2040501@gmail.com> <54C76267.8040300@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
In article <54C76267.8040300@gmail.com>, vmagerya@gmail.com writes:

>I think ports-mgmt/portmaster has no problems with installing
>new dependencies; "portmaster -a" will upgrade all the installed
>ports. I'm not really familiar enough with portupgrade to say
>if the exact behavior of it's "-Rr" switch can be replicated
>with portmaster though.

If you have anything close to sufficient resources -- and disks are
big, so you probably do -- I cannot overemphasize the value in just
running poudriere to build your own package repo.  Figure out which
top-level pacakges you care about, save the list in a file, and just
run "poudriere options" and "poudriere bulk" against that file every
time you update.  It's good (well, a bit aggressive) at figuring out
what things need to be rebuilt, and it doesn't take that long if your
package set isn't too huge.  When it's done, you get a report that
identifies any failures, so you don't end up with a partial upgrade
that breaks something critical.  Then a standard "pkg upgrade" will
apply the updates to a running system.  This is vastly, vastly easier
and better than trying to do incremental upgrades from source.

(You still can do incremental upgrades this way, if you're careful
about how you update your ports tree.  I've done that occasionally to
roll security fixes into my production package set without pulling in
all of the other ports updates in the month since I last built
packages.)

The break-even point in terms of effort is somewhere around 1+epsilon
machines to update; it was a no-brainer for me with just three
personal machines (two workstations and a server) to update.  The only
drawback is that you need one package set per ABI, so if you have
multiple machines with different ABIs (say, 9.3/amd64 and 10.1/i386)
the arithmetic changes a little bit, and the package builder has to
have a new enough kernel to host jails for every ABI you want to build
for, which in practice means that you have to run the most recent
release on the build server.

-GAWollman




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201501272138.t0RLcrY7023513>