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>