When do binaries get removed?

Matthew Seaman m.seaman at infracaninophile.co.uk
Mon Mar 29 06:18:38 UTC 2010

Hash: SHA1

On 29/03/2010 04:16:29, Michael D. Norwick wrote:
> I have the current FreeBSD handbook but it does not seem to have the
> answer to the following question.
> When building and installing an application from ports, how does the
> original binary or script, in /usr/bin, /usr/lib, /etc..., from the
> distribution, get removed?  The make install foo command does not appear
> to symlink the original application location to the new one in
> /usr/local/whatever.  Does it even matter?   From reading various docs
> on-line tonight it seems it might.

Simple answer: they don't get removed at all.  It doesn't matter.

More complex answer: in general, ports are only allowed to make changes
under the ${LOCALBASE} directory, which is almost always /usr/local.
There are a small number of exceptions to this rule.  Outside
/usr/local belongs to the base system.  So what happens when you
install a port which duplicates some of the programs from the base?
There are a few possibilities:

    * Nothing.  Eg. dns/bind97 -- you get the newer bind software by
                specifying the path explicitly
    * Compile time effect.  Eg. security/openssl -- you set a variable
                in /etc/make.conf to make all your ported software link
                against the new version rather than the base version.
    * /etc/mailer.conf -- for MTAs only.  mail/sendmail from ports is
                treated as just another MTA and the same mechanism for
                switching to eg postfix or exim is used to allow
                switching to mail/sendmail

There are also some applications like perl where the world expects them
to be in /usr/bin against the ports conventions, and this is provided
by creating appropriate symbolic links.  Since perl hasn't been in the
base for many years this isn't strictly relevant to your question, but
it's the same sort of thing.

Now, although this takes up a bit of extra disk space (and it trips up
people who don't know how to modify their $PATH or set up shell
aliases) in general, having similar programs installed in two different
places doesn't actually hurt.  Disk space is cheap.

If you really must remove the old version, then there are a number of
variables that you can set in src.conf(5) to disable building certain
software packages.  You have to rebuild and reinstall your system after
changing those flags -- but beware: get it wrong and you can seriously
damage your uptime.  Some, but not all, of those settings will cause
the excluded files to be added to the obsolete files list, so you can
remove the unwanted bits at the 'make delete-old' stage.  Others you
have to deal with manually.

Some ports have options to overwrite bits of the base system.  Avoid
using those options.  Unless you have a very strictly controlled
patching and updating policy (because you are eg. a company like Yahoo
with a large number of servers to manage), chances are using 'overwrite
base' will end in tears, or at least, a horrible mess with the ports and
the base system fighting over the same disk locations.



- -- 
Dr Matthew J Seaman MA, D.Phil.                   7 Priory Courtyard
                                                  Flat 3
PGP: http://www.infracaninophile.co.uk/pgpkey     Ramsgate
                                                  Kent, CT11 9PW
Version: GnuPG/MacGPG2 v2.0.14 (Darwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/


More information about the freebsd-questions mailing list