|
| 1 | +PREREQUISITES |
| 2 | +------------- |
| 3 | + |
| 4 | +In order to build CFEngine you need the following tools and libraries installed: |
| 5 | + |
| 6 | +* C compiler supporting C90 + selected C99 constructs: |
| 7 | + - _Bool type |
| 8 | + - anonymous aggregates "(MyType) { .foo = 1, .bar = 2 }" |
| 9 | + - declarations in "for" loop |
| 10 | + - named initializers |
| 11 | + - uintmax_t and corresponding printf/scanf formats |
| 12 | + The following compilers are known to work: |
| 13 | + - gcc >= 3.0 |
| 14 | + - clang >= 2.6 |
| 15 | +* GNU make |
| 16 | + |
| 17 | +* PAM library |
| 18 | +* OpenSSL library |
| 19 | +* PCRE library |
| 20 | +* POSIX threads (pthreads) library, if not provided by the operating system |
| 21 | +* Latest available LMDB (Lightning Memory-mapped DataBase), Tokyo Cabinet or QDBM |
| 22 | + |
| 23 | +* MySQL client library (optional) |
| 24 | +* PostgreSQL client library (optional) |
| 25 | +* libacl library (optional) |
| 26 | + |
| 27 | +In order to build CFEngine cloned from git, you will need the |
| 28 | +following additional tools: |
| 29 | + |
| 30 | +* GNU Automake >= 1.10.1 |
| 31 | +* GNU Autoconf >= 2.60 |
| 32 | +* GNU Libtool >= 1.5.24 |
| 33 | +* Yacc (note: GNU Bison 2.4.2 has troubles invoking m4) |
| 34 | +* Lex |
| 35 | + |
| 36 | +Latest stable versions of the tools and libraries are generally advised. |
| 37 | + |
| 38 | +See INSTALL DEPENDENCIES below for example of deps for various systems. |
| 39 | + |
| 40 | +OPERATING SYSTEMS |
| 41 | +----------------- |
| 42 | + |
| 43 | +CFEngine is regularly built and tested on the following operating systems: |
| 44 | + |
| 45 | +* GNU/Linux (many distributions) |
| 46 | +* Solaris |
| 47 | +* Windows with MinGW |
| 48 | + |
| 49 | +HARDWARE PLATFORMS |
| 50 | +------------------ |
| 51 | + |
| 52 | +CFEngine is regularly built and tested on the following CPU architectures: |
| 53 | + |
| 54 | +* x86 |
| 55 | +* x86-64 |
| 56 | +* SPARC |
| 57 | + |
| 58 | +OTHER CONFIGURATIONS |
| 59 | +-------------------- |
| 60 | + |
| 61 | +In case you have successfully compiled CFEngine on a different OS and/or using |
| 62 | +different tools or versions of tools, please report it to help-cfengine@ mailing |
| 63 | +list[1]. Please consider running a testsuite (see below), and posting results to |
| 64 | +mailing list too. |
| 65 | + |
| 66 | +[1] https://groups.google.com/forum/#!forum/help-cfengine |
| 67 | + |
| 68 | +BUILD INSTRUCTIONS |
| 69 | +------------------ |
| 70 | + |
| 71 | +From tarball: |
| 72 | + |
| 73 | +$ ./configure [configure options] |
| 74 | +$ make [-jN] |
| 75 | + |
| 76 | +From git checkout: |
| 77 | + |
| 78 | +$ ./autogen.sh [configure options] |
| 79 | +$ make [-jN] |
| 80 | + |
| 81 | +See the available configure options: |
| 82 | + |
| 83 | +$ ./configure --help |
| 84 | +or |
| 85 | +$ ./autogen.sh --help |
| 86 | + |
| 87 | +INSTALLATION INSTRUCTIONS |
| 88 | +------------------------- |
| 89 | + |
| 90 | +CFEngine might be installed in two configurations: |
| 91 | + |
| 92 | + * (default) Native CFEngine file layout. Everything is installed in |
| 93 | + /var/cfengine, laid out as a "secondary FHS root". This layout is designed to |
| 94 | + keep CFEngine running even if most of the system is broken (e.g. /usr is not |
| 95 | + mounted due to NFS breakage). |
| 96 | + |
| 97 | +* FHS file layout, enabled by --enable-fhs. This layout follows FHS 2.3. |
| 98 | + |
| 99 | +After the build process has completed (see BUILD INSTRUCTIONS above), type: |
| 100 | + |
| 101 | +$ make install |
| 102 | + |
| 103 | +RUNNING TESTSUITE |
| 104 | +----------------- |
| 105 | + |
| 106 | +Please refer to the instructions in tests/README file. |
| 107 | + |
| 108 | +INSTALL DEPENDENCIES |
| 109 | +-------------------- |
| 110 | + |
| 111 | +Here we have examples of command lines for various systems to install dependencies |
| 112 | +needed to build. The version and date checked are noted in parenthesis. Please |
| 113 | +submit PRs with updates to this information. |
| 114 | + |
| 115 | +* RedHat/CentOS (rhel-8/rhel-9/centos-7 2022-11-15) |
| 116 | + |
| 117 | +Note that first you will need to install epel-release (https://fedoraproject.org/wiki/EPEL) for lmdb-devel to be available. |
| 118 | + |
| 119 | +$ sudo yum install -y gcc gdb make git libtool autoconf automake byacc flex openssl-devel pcre-devel lmdb-devel pam-devel flex-devel libyaml-devel |
| 120 | + |
| 121 | +For SELinux support you will need selinux-policy-devel package and specify `--with-selinux-policy` to `autogen.sh` or `configure` |
| 122 | + |
| 123 | +* Debian (Raspbian 10 2021-07-02) |
| 124 | + |
| 125 | +$ sudo apt-get install -y build-essential git libtool autoconf automake bison flex libssl-dev libpcre3-dev libbison-dev libacl1 libacl1-dev lmdb-utils liblmdb-dev libpam0g-dev libtool libyaml-dev |
| 126 | + |
| 127 | +* FreeBSD (12.1 2020-04-07) |
| 128 | + |
| 129 | +See docs/BSD.md |
| 130 | + |
| 131 | +* SUSE (Tumbleweed 2020-02-02) |
| 132 | + |
| 133 | +$ sudo zypper install gdb gcc make lmdb autoconf automake libtool git python3 pcre-devel libopenssl-devel pam-devel |
| 134 | + |
| 135 | +* AlpineOS (3.11.3 x86_64 2020-04-13) |
| 136 | + |
| 137 | +$ sudo apk add alpine-sdk lmdb-dev openssl-dev bison flex-dev acl-dev pcre-dev autoconf automake libtool git python3 gdb |
| 138 | +$ ./autogen.sh --without-pam |
| 139 | + |
| 140 | +* Termux (2020-04-24) |
| 141 | + |
| 142 | +pkg install -y build-essential git autoconf automake bison flex liblmdb openssl pcre libacl libyaml |
| 143 | +./autogen.sh --without-pam |
| 144 | + |
| 145 | +* OSX (2021-10-20) |
| 146 | + |
| 147 | +brew install [email protected] lmdb autoconf automake libtool bison flex pcre m4 gcc make |
| 148 | +./autogen.sh --enable-debug --with-openssl="$(brew --prefix [email protected])" |
0 commit comments