FreeBSD Porter's Handbook
Prev | Chapter 7 Advanced `pkg-plist` Practices | Next

# 7.3 Configuration Files

If your port installs configuration files to ``PREFIX`/etc` (or elsewhere) do not simply list them in the `pkg-plist`. That will cause pkg_delete(1) to remove the files carefully edited by the user, and a re-installation will wipe them out.

Instead, install sample file(s) with a ``filename`.sample` suffix. Then copy the sample file to the real configuration file name, if it does not already exist. On deinstall delete the configuration file, but only if it is identical to the `.sample` file. You need to handle this both in the port `Makefile`, and in the `pkg-plist` (for installation from the package).

Example of the `Makefile` part:

    post-install:
    	@if [ ! -f ${PREFIX}/etc/orbit.conf ]; then \
    		${CP} -p ${PREFIX}/etc/orbit.conf.sample ${PREFIX}/etc/orbit.conf ; \
    	fi

Example of the `pkg-plist` part:

    @unexec if cmp -s %D/etc/orbit.conf.sample %D/etc/orbit.conf; then rm -f %D/etc/orbit.conf; fi
    etc/orbit.conf.sample
    @exec if [ ! -f %D/etc/orbit.conf ] ; then cp -p %D/%F %B/orbit.conf; fi

For information on the above variables see pkg_create(1)

If there is a very good reason not to install a working configuration file by default, use a message pointing out that the user has to copy and edit the file before the software can be made to work.

Prev | Home | Next
Empty Directories | Up | Dynamic Versus Static Package List

For questions about the FreeBSD ports system, e-mail <ports@FreeBSD.org>.
For questions about this documentation, e-mail <doc@FreeBSD.org>.