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

# 7.3 Configuration files

If your port requires some configuration files in ``PREFIX`/etc`, do not just install them and list them in `pkg-plist`. That will cause pkg_delete(1) to delete files carefully edited by the user and a new installation to wipe them out.

Instead, install sample files with a suffix (``filename`.sample` will work well). Copy the sample file as the real configuration file, if it does not exist. On deinstall, delete the configuration file, but only if it was not modified by the user. 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

Alternatively, print out 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 vs. 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>.