Forcing port reinstalls without rebuilding over and over again
Paul Schmehl
pschmehl_lists at tx.rr.com
Wed Dec 12 19:55:09 UTC 2018
--On December 12, 2018 at 8:41:51 PM +0100 Polytropon <freebsd at 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 at 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
More information about the freebsd-questions
mailing list