Skip to content

Commit 84d3cae

Browse files
committed
Minor tweaks to the VILLASnode installation guide
1 parent 20b591f commit 84d3cae

File tree

1 file changed

+77
-40
lines changed

1 file changed

+77
-40
lines changed

docs/node/installation.md

Lines changed: 77 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ sidebar_position: 3
66

77
VILLASnode can be installed in multiple ways:
88

9-
- [Precompiled standalone binaries](#standalone)
9+
- [Pre-compiled standalone binaries](#standalone)
10+
- [Pre-compiled RPM package](#rpm)
1011
- [Docker image](https://git.rwth-aachen.de/acs/public/villas/node/container_registry)
1112
- [Kubernetes (Helm chart)](../installation.md)
1213
- [Nix Flake](#nix)
@@ -18,45 +19,68 @@ Please make sure that your system fulfills the [requirements](requirements.md) b
1819

1920
## From sources {#source}
2021

21-
VILLASnode can be compiled from source using [CMake](http://cmake.org).
22+
VILLASnode can be compiled from source using [CMake](http://cmake.org):
23+
24+
#### TL;DR Version
25+
26+
```shell
27+
mkdir -p ~/build/villas
28+
cd ~/build/villas
29+
30+
git clone https://github.com/VILLASframework/node.git
31+
32+
mkdir -p node/{prefix,build}
33+
cd node
34+
35+
export PREFIX=/opt/villas
36+
export CMAKE_PREFIX_PATH=${PREFIX}
37+
export CMAKE_INSTALL_PREFIX=${PREFIX}
38+
mkdir -p ${PREFIX}
39+
40+
DEPS_NONINTERACTIVE=1 \
41+
bash packaging/deps.sh
42+
43+
cmake -B build -S .
44+
cmake --build build --parallel 4 --target install
45+
```
2246

2347
### Prerequisites
2448

2549
VILLASnode currently has the following list of dependencies:
2650

27-
| Package | Version | Purpose | Optional | License |
28-
| --- | --- | --- | --- | --- |
29-
| [CMake](http://cmake.org/) | >= 3.9 | for generating the build-system | required | BSD 3 |
30-
| [fmtlib](https://github.com/fmtlib/fmt) | >= 6.1.2 | for string formatting | required | MIT |
31-
| [libcurl](https://curl.haxx.se/libcurl/) | >= 7.29.0 | for HTTP REST requests by the [NGSI node-type](nodes/ngsi.md) node-type | required | similar to MIT |
32-
| [libjansson](http://www.digip.org/jansson/) | >= 2.7 | JSON parser for [Websocket node-type](nodes/websocket.md) and [NGSI node-type](nodes/ngsi.md) node-types | required | MIT |
33-
| [libuuid](https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git) | >= 2.29 | - | required | BSD |
34-
| [libwebsockets](http://libwebsockets.org) | >= 3.1.0 | for the [Websocket node-type](nodes/websocket.md) | required | MIT |
35-
| [openssl](https://www.openssl.org) | >= 1.0.0 | for cryptographic hashing functions | required | Apache 2 for >=3.0 |
36-
| [spdlog](https://github.com/gabime/spdlog) | >= 1.8.2 | for logging | required | MIT |
37-
| [comedilib](http://comedi.org) | >= 0.11.0 | for the [Comedi node-type](nodes/comedi.md) | optional | LGPL-2.1 |
38-
| [Criterion](https://github.com/Snaipe/Criterion) | >= 2.3.1 | for running the unit tests | optional | MIT |
39-
| [Etherlab](http://etherlab.org) | >= 1.5.2 | for the [Ethercat node-type](nodes/ethercat.md) | optional | __GPL 3__ |
40-
| [Graphviz](https://graphviz.org/) | >= 2.30 | for the visualisation of configuration files | optional | EPL |
41-
| [libconfig](http://www.hyperrealm.com/libconfig/) | >= 1.4.9 | for parsing the configuration file | optional | LGPL-2.1 |
42-
| [libdatachannel](https://libdatachannel.org/) | >= 0.18.4 | for the WebRTC node-type | optional | MPL-2.0 |
43-
| [libibverbs](https://github.com/linux-rdma/rdma-core) | >= 16.2 | for the [Infiniband node-type](nodes/infiniband.md) | optional | BSD |
44-
| [libiec61850](http://libiec61850.com/libiec61850/) | >= 1.3.1 | for the [IEC61850-8-1](nodes/iec61850-8-1.md) and [IEC61850-9-2](nodes/iec61850-9-2.md) node-types | optional | __GPL 3__ |
45-
| [libmodbus](https://libmodbus.org/) | >= 3.1.0 | for the [Modbus](nodes/modbus.md) node-type | optional | LGPL-2.1 |
46-
| [libnanomsg](http://nanomsg.org/) | >= 1.0.0 | for the [Nanomsg node-type](nodes/nanomsg.md) | optional | MIT |
47-
| [libnice](https://libnice.freedesktop.org/) | >= 0.1.16 | for libdatachannel / WebRTC | optional | MPL-1.1 & LGPL-2.1 |
48-
| [libnl3](http://www.infradead.org/~tgr/libnl/) | >= 3.2.27 | for the network communication & emulation support of the [Socket node-type](nodes/socket.md) node-type | optional | LGPL-2.1 |
49-
| [librdmacm](https://github.com/linux-rdma/rdma-core) | >= 16.2 | for the [Infiniband node-type](nodes/infiniband.md) | optional | BSD |
50-
| [libre](http://www.creytiv.com/re.html) | >= 2.9.0 | for the [RTP node-type](nodes/rtp.md) | optional | BSD 3 |
51-
| [libuldaq](https://github.com/mccdaq/uldaq) | >= 1.0.0 | for the [ULDAQ node-type](nodes/uldaq.md) | optional | MIT |
52-
| [libxil](https://github.com/VILLASframework/libxil) | >= 1.0.0 | for the [VILLASfpga node-type](nodes/fpga.md) | optional | MIT |
53-
| [libzmq](http://zeromq.org) | >= 2.2.0 | for the [ZeroMQ node-type](nodes/zeromq.md) | optional | MPL-2.0 |
54-
| [Lua](http://www.lua.org/) | >= 5.1 | for the [Lua hook](hooks/lua.md) | optional | MIT |
55-
| [mosquitto](https://mosquitto.org) | >= 1.4.15 | for the [MQTT node-type](nodes/mqtt.md) | optional | EPL 2 |
56-
| [protobuf-c](https://github.com/protobuf-c/protobuf-c/) | >= 1.1.0 | for the [Protobuf format-type](formats/protobuf.md) | optional | similar to BSD |
57-
| [protobuf](https://github.com/google/protobuf) | >= 2.6.0 | for the [Protobuf format-type](formats/protobuf.md) | optional | similar to BSD |
58-
| [rabbitmq-c](https://github.com/alanxz/rabbitmq-c) | >= 0.8.0 | for the [AMQP node-type](nodes/amqp.md) | optional | MIT |
59-
| [rdkafka](https://github.com/edenhill/librdkafka) | >= 1.5.0 | for the [Kafka node-type](nodes/kafka.md) | optional | BSD |
51+
| Package | Version | Purpose | Optional | License |
52+
| --------------------------------------------------------------- | --------- | -------------------------------------------------------------------------------------------------------- | -------- | ------------------ |
53+
| [CMake](http://cmake.org/) | >= 3.9 | for generating the build-system | required | BSD 3 |
54+
| [fmtlib](https://github.com/fmtlib/fmt) | >= 6.1.2 | for string formatting | required | MIT |
55+
| [libcurl](https://curl.haxx.se/libcurl/) | >= 7.29.0 | for HTTP REST requests by the [NGSI node-type](nodes/ngsi.md) node-type | required | similar to MIT |
56+
| [libjansson](http://www.digip.org/jansson/) | >= 2.7 | JSON parser for [Websocket node-type](nodes/websocket.md) and [NGSI node-type](nodes/ngsi.md) node-types | required | MIT |
57+
| [libuuid](https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git) | >= 2.29 | - | required | BSD |
58+
| [libwebsockets](http://libwebsockets.org) | >= 3.1.0 | for the [Websocket node-type](nodes/websocket.md) | required | MIT |
59+
| [openssl](https://www.openssl.org) | >= 1.0.0 | for cryptographic hashing functions | required | Apache 2 for >=3.0 |
60+
| [spdlog](https://github.com/gabime/spdlog) | >= 1.8.2 | for logging | required | MIT |
61+
| [comedilib](http://comedi.org) | >= 0.11.0 | for the [Comedi node-type](nodes/comedi.md) | optional | LGPL-2.1 |
62+
| [Criterion](https://github.com/Snaipe/Criterion) | >= 2.3.1 | for running the unit tests | optional | MIT |
63+
| [Etherlab](http://etherlab.org) | >= 1.5.2 | for the [Ethercat node-type](nodes/ethercat.md) | optional | __GPL 3__ |
64+
| [Graphviz](https://graphviz.org/) | >= 2.30 | for the visualisation of configuration files | optional | EPL |
65+
| [libconfig](http://www.hyperrealm.com/libconfig/) | >= 1.4.9 | for parsing the configuration file | optional | LGPL-2.1 |
66+
| [libdatachannel](https://libdatachannel.org/) | >= 0.18.4 | for the WebRTC node-type | optional | MPL-2.0 |
67+
| [libibverbs](https://github.com/linux-rdma/rdma-core) | >= 16.2 | for the [Infiniband node-type](nodes/infiniband.md) | optional | BSD |
68+
| [libiec61850](http://libiec61850.com/libiec61850/) | >= 1.3.1 | for the [IEC61850-8-1](nodes/iec61850-8-1.md) and [IEC61850-9-2](nodes/iec61850-9-2.md) node-types | optional | __GPL 3__ |
69+
| [libmodbus](https://libmodbus.org/) | >= 3.1.0 | for the [Modbus](nodes/modbus.md) node-type | optional | LGPL-2.1 |
70+
| [libnanomsg](http://nanomsg.org/) | >= 1.0.0 | for the [Nanomsg node-type](nodes/nanomsg.md) | optional | MIT |
71+
| [libnice](https://libnice.freedesktop.org/) | >= 0.1.16 | for libdatachannel / WebRTC | optional | MPL-1.1 & LGPL-2.1 |
72+
| [libnl3](http://www.infradead.org/~tgr/libnl/) | >= 3.2.27 | for the network communication & emulation support of the [Socket node-type](nodes/socket.md) node-type | optional | LGPL-2.1 |
73+
| [librdmacm](https://github.com/linux-rdma/rdma-core) | >= 16.2 | for the [Infiniband node-type](nodes/infiniband.md) | optional | BSD |
74+
| [libre](http://www.creytiv.com/re.html) | >= 2.9.0 | for the [RTP node-type](nodes/rtp.md) | optional | BSD 3 |
75+
| [libuldaq](https://github.com/mccdaq/uldaq) | >= 1.0.0 | for the [ULDAQ node-type](nodes/uldaq.md) | optional | MIT |
76+
| [libxil](https://github.com/VILLASframework/libxil) | >= 1.0.0 | for the [VILLASfpga node-type](nodes/fpga.md) | optional | MIT |
77+
| [libzmq](http://zeromq.org) | >= 2.2.0 | for the [ZeroMQ node-type](nodes/zeromq.md) | optional | MPL-2.0 |
78+
| [Lua](http://www.lua.org/) | >= 5.1 | for the [Lua hook](hooks/lua.md) | optional | MIT |
79+
| [mosquitto](https://mosquitto.org) | >= 1.4.15 | for the [MQTT node-type](nodes/mqtt.md) | optional | EPL 2 |
80+
| [protobuf-c](https://github.com/protobuf-c/protobuf-c/) | >= 1.1.0 | for the [Protobuf format-type](formats/protobuf.md) | optional | similar to BSD |
81+
| [protobuf](https://github.com/google/protobuf) | >= 2.6.0 | for the [Protobuf format-type](formats/protobuf.md) | optional | similar to BSD |
82+
| [rabbitmq-c](https://github.com/alanxz/rabbitmq-c) | >= 0.8.0 | for the [AMQP node-type](nodes/amqp.md) | optional | MIT |
83+
| [rdkafka](https://github.com/edenhill/librdkafka) | >= 1.5.0 | for the [Kafka node-type](nodes/kafka.md) | optional | BSD |
6084

6185
There are three ways to install these dependencies:
6286

@@ -192,12 +216,10 @@ DEPS_INCLUDE='uldaq jansson' bash packaging/deps.sh
192216
DEPS_SKIP='libre rdkafka' bash packaging/deps.sh
193217
```
194218

195-
## Compile and install
219+
### Compile VILLASnode
196220

197221
`VILLASnode` uses CMake for the build and install process.
198222

199-
### Simple build
200-
201223
Simply build VILLASnode with all features available for the dependencies installed on your system.
202224

203225
```shell
@@ -211,7 +233,7 @@ cmake --build ./build
211233
./build/src/villas-node -h
212234
```
213235

214-
### Installation
236+
### Install VILLASnode
215237

216238
You can also install the binaries and tools into to your search path after building them.
217239

@@ -288,7 +310,7 @@ This can be achieved by using the `WITHOUT_GPL` CMake option:
288310
cmake -S . -B build -DWITHOUT_GPL=ON
289311
```
290312

291-
## Single-binary / Standalone Executable {#standalone}
313+
## Pre-compiled standalone binary {#standalone}
292314

293315
We provide single-binary / standalone executable builds of VILLASnode bundle all depdendencies in a [self-extracting ARX archive](https://en.wikipedia.org/wiki/Self-extracting_archive).
294316
These standalone binaries allow running VILLASnode irrespectively of the underlying Linux distribution or availability of library dependencies.
@@ -311,6 +333,21 @@ The standalone VILLASnode binary is currently only compatible Linux systems runn
311333
- ARM v8 Aarch64
312334
::::
313335

336+
## Pre-compiled RPM package {#rpm}
337+
338+
VILLASnode can be installed from an pre-compiled package on systems with which use the RPM package manager, such as:
339+
340+
- Fedora and derivatives
341+
- Redhat Enterprise Linux
342+
- CentOS stream
343+
- Rocky Linux
344+
345+
```shell
346+
rpm \
347+
--install \
348+
--excludepath=/usr/lib/.build-id/ \
349+
'https://git.rwth-aachen.de/api/v4/projects/79039/jobs/artifacts/master/raw/artifacts/villas-x86_64-linux.rpm?job=pkg:nix:rpm:%20[x86_64-linux]'
350+
314351
## Docker images {#docker}
315352

316353
There exists a set of Docker images for running and developing VILLASnode.

0 commit comments

Comments
 (0)