Problems building from ports

Matthew Seaman m.seaman at
Sun Jan 3 11:15:03 UTC 2010

Mike Clarke wrote:

> After pondering a bit more over this problem I think I know where the 
> 6.4 stuff may have come from. After I built the base system I copied 
> various useful files from /root on the 6.4 system, 
> including /root/.cshrc which contained a line setting PACKAGESITE to 
> and it's quite possible that I ran portinstall -P for some ports before 
> I got round to changing this to point to packages-8.

Yep.  This would stick a fairly hefty spanner in the works.

> Considering the vast number of files in /usr/local/bin with links to 
> missing libraries I think my best approach now will be to deinstall ALL 
> my ports and reinstall them again from scratch after deleting 
> everything in /usr/ports/packages and checking that all directories 
> in /usr/local (except etc) have been emptied.

This also is a good move.  Don't forget to treat /compat/linux similarly
to /usr/local if you have any linux stuff installed -- there have been a
lot of changes to the linuxulator newly available in 8.0 which you really
want if you're going to run linux stuff under emulation.  If you strip out /compat/linux completely, then under 8.0 you'll get the latest linux-base-f10
by default when you re-install.

When reinstalling ported software, it's a good idea to adopt the following

    * Install whatever ports management software you prefer (portupgrade(1),
      portmaster(1)) pretty much straight away -- you'll need this to build 
    * Look at the list of installed packages on your 6.4 install, and pick
      out the packages that are your end-use applications.  These will mostly
      be leaf packages, but not always.
    * You only need to reinstall just those packages -- everything else should 
      be installed automatically as dependencies.  This will help you avoid
      installing and outdated build dependencies or otherwise orphaned packages
      which otherwise tend to accumulate on an actively updated system.
    * For the end-use packages you choose, run 'make config-recursive' before
      you start building anything to ensure you've selected all the required
      options.  Or use portmanager(1) which runs you through the config stage
      first of all.  You need to be a bit careful doing this, as toggling an
      option in a port can radically change its dependency list, and may bring
      new sets of options into play.  To resolve that, you'll need to re-run
      'make config-recursive' until it no longer prompts you to make any 
      OPTIONS settings.  [There's a PR to fix this behaviour in the works, but
      it hasn't been committed yet.]
    * Where there are ports that have compilation flags or knobs that aren't
      controlled through OPTIONS dialogues, then be sure to record any non-
      default settings in /etc/make.conf.  You can use a construct like this
      to only apply settings to specific ports:

.if ${.CURDIR:M*/mail/dkim-milter}
WITH_STATS=             yes

      Well known KNOBS should be set globally where you aren't using the
      default setting, eg:

WITH_BDB_VER=           47
WITH_MYSQL_VER=         51
WITH_GECKO=             libxul
WITH_APACHE2=           yes
APACHE_PORT=            www/apache22
WITH_MODPERL2=          yes

      Again, changing these settings can affect the dependency tree and 
      potentially bring new sets of OPTIONS into play, so test repeatedly
      with 'make config-recursive'
    * It's a good idea to run 'make fetch-recursive' or 'portinstall -RF ...'
      or 'portmaster -F ...' after sorting out configuration to download any 
      distfiles before trying to build everything, as this is another place 
      where a big build session can blow up while you aren't looking.  It's
      not mandatory though.
    * Once everything is configured nicely, it should be possible to just
      run a massive portupgrade(1) or portmaster(1) session unattended to
      build and install everything, without finding that 10 minutes after
      you went home the build stopped at an OPTIONS screen and sat there all 
      night... In fact, it is well worth temporarily defining BATCH in
      make.conf or the environment to just accept the defaults for anything
      not yet configured during a big build job like this. (But not otherwise. 
      BATCH isn't a good idea for an incremental upgrade IMHO.)

If you follow these guidelines when installing the system you should find
that not only does it make your initial install run smoothly, but it sets
you up well for managing updates to the installed system in the future.



Dr Matthew J Seaman MA, D.Phil.                   7 Priory Courtyard
                                                  Flat 3
PGP:     Ramsgate
                                                  Kent, CT11 9PW

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 259 bytes
Desc: OpenPGP digital signature
Url :

More information about the freebsd-questions mailing list