(R)?ex Deployment & Configuration Management




Work with (R)?ex at adjust! Check out their job posting for details, or contact our fellow core developer, FErki.


(R)?ex 1.4.1 released, fixing many bugs. See the release notes for more details.


(R)?ex 1.4.0 released, containing lots of goodies. See the release notes for more details.


(R)?ex 1.3.3 released, fixing a bunch of bugs. See the release notes for more details.


adjust GmbH is sponsoring the (R)?ex project with a new build server. Thank you for your support!


(R)?ex 1.3.2 released, fixing issues related to file manipulation when run on BSDs. See the release notes for more details.


(R)?ex 1.3.1 released, fixing Rex::Commands::DB related tests.


Read the second part of "Rex in practice" series about Test-driven infrastructure.


repositor.io 1.1.0 released. repositor.io is a repository management tool for apt, yum, yast and docker. This is a bugfix release with fixes for ubuntu and centos7 installation media mirroring.


(R)?ex 1.2.0 released. See the release notes for more details.


View the slides of the talk An introduction to Rex from Andy Beverley.




Need Help?

Rex is a pure open source project, you can find community support in the following places:

Professional support is also available.

» Home » Docs » API » 1.4 » Rex » Commands » PkgConf.pm


API Version:


Rex::Commands::PkgConf - Configure packages


With this module you can configure packages. Currently it only supports Debian (using debconf), but it is designed to be extendable.


 my %options = get_pkgconf('postfix');
 say $options{'postfix/relayhost'}->{value};

 # Only obtain one value
 my %options = get_pkgconf('postfix', 'postfix/relayhost');
 say $options{'postfix/relayhost'}->{value};

 # Set options
 set_pkgconf("postfix", [
    {question => 'chattr', type => 'boolean', value => 'false'},
    {question => 'relayhost', type => 'string', value => 'relay.example.com'},

 # Don't update if it's already set
 set_pkgconf("mysql-server-5.5", [
    {question => 'mysql-server/root_password', type => 'string', value => 'mysecret'},
    {question => 'mysql-server/root_password_again', type => 'string', value => 'mysecret'},
 ], no_update => 1);


get_pkgconf($package, [$question])

Use this to query existing package configurations.

Without a question specified, it will return all options for the specified package as a hash.

With a question specified, it will return only that option

Each question is returned with the question as the key, and the value as a hashref. The hashref contains the keys: question, value and already_set. already_set is true if the question has already been answered.

 # Only obtain one value
 my %options = get_pkgconf('postfix', 'postfix/relayhost');
 say $options{'postfix/relayhost'}->{question};
 say $options{'postfix/relayhost'}->{value};
 say $options{'postfix/relayhost'}->{already_set};

set_pkgconf($package, $values, [%options])

Use this to set package configurations.

At least the package name and values must be specified. Values must be an array ref, with each item containing a hashref with the attributes specified that are required by the package configuration program.

For example, for debconf, this must be the question, the type and answer. In this case, the types can be any accetable debconf type: string, boolean, select, multiselect, note, text, password.

Optionally the option "no_update" may be true, in which case the question will not be updated if it has already been set.

See the synopsis for examples.

Fork me on GitHub
Google Group / Twitter / GitHub / Mailinglist / irc.freenode.net #rex   -.รด.-   Disclaimer