Tuesday, November 01, 2005

Dealing with FreeBSD Port Options

Sometime when you build a port in FreeBSD, you are confronted with a curses menu like the following. This example shows the menu that appears when you run 'make' as root in the /usr/ports/ftp/gftp directory. If you hit 'OK' and then interrupt the port building process, and run 'make' again, you will not see the menu:

orr:/usr/ports/ftp/gftp# make
...menu appears, hit 'OK'...
===> WARNING: Vulnerability database out of date, checking anyway
===> Found saved configuration for gftp-2.0.18
===> Extracting for gftp-2.0.18
=> Checksum mismatch for gftp-2.0.18.tar.gz.
===> Refetch for 1 more times files: gftp-2.0.18.tar.gz
^C
orr:/usr/ports/ftp/gftp# make
===> WARNING: Vulnerability database out of date, checking anyway
===> Found saved configuration for gftp-2.0.18
===> Extracting for gftp-2.0.18
=> Checksum mismatch for gftp-2.0.18.tar.gz.
===> Refetch for 1 more times files: gftp-2.0.18.tar.gz
===> WARNING: Vulnerability database out of date, checking anyway
===> Found saved configuration for gftp-2.0.18
^C

What is happening? Where is the menu?

It turns out the menu process creates a file called 'options' in the /var/db/ports/PORTNAME directory. For example:

orr:/var/db/ports/gftp$ ls -al
total 6
drwxr-xr-x 2 root wheel 512 Nov 1 15:00 .
drwxr-xr-x 3 root wheel 512 Nov 1 14:44 ..
-rw-r--r-- 1 root wheel 167 Nov 1 14:59 options
orr:/var/db/ports/gftp$ cat options
# This file is auto-generated by 'make config'.
# No user-servicable parts inside!
# Options for gftp-2.0.18
_OPTIONS_READ=gftp-2.0.18
WITH_X11=true
WITHOUT_GTK2=true

If you want to eliminate the menu on a subsequent run of 'make', just delete the options file.

4 comments:

Anonymous said...

you can also do 'make config' and it will re-run the config dialog.

Anonymous said...

Also worth mentioning are the showconfig and rmconfig targets.

Anonymous said...

Every port with options also has a default set. You can supress the interactive dialog (and hence build with the defaults) with BATCH=1 on the make command line.

I add "-M BATCH=1" to PORTUPGRADE_ARGS in /usr/local/etc/pkgtools.conf so that my automated builds aren't stopping to prompt me for options.

Anonymous said...

Thank You!!