Shared /usr/ports directories

Erik Trulsson ertr1013 at student.uu.se
Thu May 19 13:07:56 PDT 2005


On Thu, May 19, 2005 at 06:13:09PM +0100, Richard Danter wrote:
> Erik Trulsson wrote:
> >On Thu, May 19, 2005 at 05:39:54PM +0100, Richard Danter wrote:
> >
> >>Hi all,
> >>
> >>I have several machines running FBSD now. At the moment I have a 
> >>complete ports tree on each machine. I was wondering if it was possible 
> >>to have it all on just one machine and NFS mount it?
> >
> >
> >That is certainly possible.
> >
> >
> >>I have already been doing this for the /usr/ports/distfiles directory, 
> >>but had not shared everything else as I was not sure if settings from a 
> >>build on one machine may cause problems when building on another machine.
> >>
> >>Each machine has it's own /etc/make.conf with settings such as the 
> >>processor type, so it is important that one build can't effect another.
> >
> >
> >I would suggest you set WRKDIRPREFIX in /etc/make.conf so that the
> >files built by the ports system do not get placed under /usr/ports but
> >somewhere else.
> 
> Is it just the object (.o) files that this effects, or all generated 
> files? Where do the configurations get saved (for those ports with a 
> config menu)?

Almost all generated files - all that would end up under /usr/ports anyway.

Where configurations get saved can vary slightly.  Ports using the
OPTIONS system get their configurations saved under /var/db/ports/. 
Some ports have their own home-rolled config menu (mostly because the
port was created before OPTIONS made its debut) and they usually have
their configuration saved in the work directory (among all the .o
files.)


> 
> >For example I have 'WRKDIRPREFIX=/var/workdir' in my /etc/make.conf.
> >That way all the files that are created when you build a port ends up
> >under /var/workdir rather than under /usr/ports.  If WRKDIRPREFIX is
> >set to a directory on a local filesystem there will be no way for a
> >build on one system to affect one on another. You should even be able
> >to export /usr/ports as read-only.
> 
> If it was read-only, where would the source files that usually go into 
> /usr/ports/distfiles go? I'd like to only have to download these once too.

You can do like I do and let /usr/ports/distfiles be a symlink to another
directory, which is then exported via NFS separately from /usr/ports.
Another options is to download all the distfiles in advance to the
server. (Just cd to the port you wish to build and issue a 'make
checksum-recursive' and all the distfiles needed to build that port
(and any port it depends on) will be downloaded and the checksums
checked. This assumes you are only using default build options -
otherwise there might be additional patches that need to be
downloaded.)


> 
> 
> >(Changing WKRDIRPREFIX also makes it a lot easier and faster to clean
> >up after building ports. Instead of having to issue a 'make clean' for
> >each port built, you can just do a 'rm -fr /var/workdir/*' and all the
> >workdirs will be removed quickly.)
> 
> I usually do a 'make install clean' anyway, but it would be good to be 
> able to verify everything is actually cleaned.

If you want to really make sure things are cleaned you will have to do
an 'make rmconfig' as well to make sure any configuration options
stored under /var/db/ports are removed as well (unless of course you want to
keep those configuration settings around till next time you build the
port.)

> 
> The other advantage of all this of course is that I would only need to 
> do CVSup once and every machine would be up to date.




-- 
<Insert your favourite quote here.>
Erik Trulsson
ertr1013 at student.uu.se


More information about the freebsd-questions mailing list