---
title: "Use debconf and templates"
weight: 70
---

Deb installation format has a support for user input during installation using [debconf](https://manpages.debian.org/testing/debconf-doc/debconf-devel.7.en.html).

To enable it inside `goreleaser` you need:

`templates` file, what to ask (all templates go into single file):

```none
Template: foo/like_debian
Type: boolean
Description: Do you like Debian?
 We'd like to know if you like the Debian GNU/Linux system.

Template: foo/why_debian_is_great
Type: note
Description: Poor misguided one. Why are you installing this package?
 Debian is great. As you continue using Debian, we hope you will
 discover the error in your ways.
```

Maintainer script file that will trigger questions, usually its `postinst` because all package files are already installed:

```sh
#!/bin/sh -e

# Source debconf library.
. /usr/share/debconf/confmodule

# Do you like debian?
db_input high foo/like_debian || true
db_go || true

# Check their answer.
# with db_get you load value into $RET env variable.
db_get foo/like_debian
if [ "$RET" = "false" ]; then
    # Poor misguided one...
    db_input high foo/why_debian_is_great || true
    db_go || true
fi
```

Include `templates` and `postinst` in `.goreleaser.yaml`:

```yaml
    overrides:
      deb:
        scripts:
          postinstall: ./deb/postinst
    deb:
      scripts:
        templates: ./deb/templates
```

Useful tutorial: [Debconf Programmer's Tutorial](http://www.fifi.org/doc/debconf-doc/tutorial.html)
