Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 12 Dec 2018 13:55:01 -0600
From:      Paul Schmehl <pschmehl_lists@tx.rr.com>
To:        Polytropon <freebsd@edvax.de>
Cc:        FreeBSD Questions <freebsd-questions@freebsd.org>
Subject:   Re: Forcing port reinstalls without rebuilding over and over again
Message-ID:  <296D11C4E1B5870932452073@Pauls-MacBook-Pro.local>
In-Reply-To: <20181212204151.659fb436.freebsd@edvax.de>
References:  <47758EF2A172AE3BCA2F6E66@Pauls-MacBook-Pro.local> <1793865D5AEE79C2FC27331F@Pauls-MacBook-Pro.local> <20181212204151.659fb436.freebsd@edvax.de>

next in thread | previous in thread | raw e-mail | index | archive | help
--On December 12, 2018 at 8:41:51 PM +0100 Polytropon <freebsd@edvax.de> 
wrote:

> On Wed, 12 Dec 2018 12:52:36 -0600, Paul Schmehl wrote:
>> --On December 12, 2018 at 2:07:35 AM -0600 Paul Schmehl
>> <pschmehl_lists@tx.rr.com> wrote:
>>
>> > Is there a way, using portmaster, to force the rebuild of all ports
>> > without rebuilding the same ports over and over and over again?
>> >
>> > I've noticed that using portmaster -f forces the rebuild of every
>> > dependency. I think I've now rebuild perl and python at least 20 or 30
>> > times. Once should be enough. I guess if you're going to rebuild
>> > everything, it would be ok to ignore dependencies for ports, since
>> > they're all going to be rebuilt anyway.
>> >
>> > What's the magic potion for that?
>>
>> After reading through the man page, I thought that portmaster -Rfd would
>> do  the trick, but it didn't.
>>
>> ISTM that, when you're building every port on a box, you shouldn't need
>> to  build all the dependencies for every port, because they're all going
>> to be  built anyway. Rebuilding perl (for example) repeatedly, makes no
>> sense at  all. It would be nice if there were a
>> --force-with-no-dependencies switch  so that every port could be built
>> once and once only.
>
> Maybe I'm thinking into the wrong direction, but how about
> the following thoughts?
>
> The task of building is different from the task of installing.
> If you run each build task separatedly, both depencency trees
> (build dependencies + runtime dependencies) need to be resolved
> from scratch.
>
> For normal usage, and taking your perl example, the following
> situation would be present:
>
> 1. port "foo" requires perl as a build dependency
>
> 2. port "perl" is installed and can then be used
>
> 3. port "foo" is built, using the just installed perl
>
> 4. port "bar" requires perl as a build dependency
>
> 5. port "bar" is build, using the already installed perl
>    (and perl is not built again)
>
> It should work the same with runtime dependencies. This thought
> experiment includes the assumtion that the correct _versions_ of
> perl are always the same. ;-)

It should, but it doesn't seem to.

I found this near the end of the man page. I believe I'll try this next 
time.

 Using portmaster to do a complete reinstallation of all ports:
           1. portmaster --list-origins > ~/installed-port-list
           2. Update the ports tree
           3. portmaster -ty --clean-distfiles
           4. portmaster -Faf
           5. pkg delete -afy
           6. rm -rf /usr/local/lib/compat/pkg
           7. Back up any files in /usr/local you wish to save,
              such as configuration files in /usr/local/etc
           8. Manually check /usr/local and /var/db/pkg
              to make sure that they are really empty
           9. Install ports-mgmt/pkg and then ports-mgmt/portmaster.
              Remove both from ~/installed-port-list.
           10. portmaster --no-confirm `cat ~/installed-port-list`

Paul Schmehl, Retired
As if it wasn't already obvious, my opinions
are my own and not those of my employer.
*******************************************
"It is as useless to argue with those who have
renounced the use of reason as to administer
medication to the dead." Thomas Jefferson
"There are some ideas so wrong that only a very
intelligent person could believe in them." George Orwell




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