0
0
Fork 0
mirror of https://github.com/netdata/netdata.git synced 2025-04-28 22:52:30 +00:00
netdata_netdata/packaging/makeself/README.md
2025-04-17 13:43:12 +03:00

135 lines
No EOL
3.9 KiB
Markdown

# Netdata Static Binary Build
Netdata provides pre-built static binaries for Linux systems where native packages aren't available. The [installer](/packaging/installer/methods/kickstart.md) automatically uses these static builds when needed.
**Key Features**:
- Self-contained installation (no system dependencies required, no interference with system libraries)
- Installed under `/opt/netdata`
## Supported Architectures
| Architecture | Identifier | Notes |
|--------------|------------|----------------------------------|
| x86_64 | `x86_64` | 64-bit Intel/AMD processors |
| ARMv7 | `armv7l` | Raspberry Pi 2/3, many SBCs |
| AArch64 | `aarch64` | ARM 64-bit (Pi 4, newer devices) |
| POWER8+ | `ppc64le` | IBM POWER architecture |
---
## Build Process
### Requirements
| Requirement | Purpose |
|------------------|-------------------------------------------|
| Docker or Podman | Container environment for isolated builds |
| ~10GB disk space | For build artifacts and containers |
### Preparation
Before building, ensure your repository is clean from previous builds.
→ [Perform a cleanup](/packaging/installer/methods/manual.md#perform-a-cleanup-in-your-netdata-repo)
### Building the Static Binary
Run the build script with your target [architecture identifier](#supported-architectures):
```bash
# For x86_64 (default)
./packaging/makeself/build-static.sh x86_64
# For ARM 64-bit (AArch64)
./packaging/makeself/build-static.sh aarch64
# For ARMv7
./packaging/makeself/build-static.sh armv7l
# For POWER8+
./packaging/makeself/build-static.sh ppc64le
```
The script will automatically:
- Launch an Alpine Linux container
- Install necessary build dependencies
- Compile required third-party tools (bash, curl, etc.)
- Build Netdata with optimized settings
- Package everything into a self-extracting installer
When building for an architecture different from your host:
- The build process uses QEMU for emulation
- Build times will be significantly longer
- More disk space may be required
- Some features may have architecture-specific limitations
### Build Output
The process generates several installer files in the artifacts/ directory:
```
artifacts/
├── netdata-latest.gz.run # Latest version
├── netdata-v[VERSION]-[BUILD].gz.run # Specific version
├── netdata-[ARCH]-latest.gz.run # Architecture-specific latest
└── netdata-[ARCH]-v[VERSION]-[BUILD].gz.run # Architecture-specific version
```
Example output:
```
$ ls -l artifacts/
drwxrwxr-x - user group cache
.rwxrwxr-x 94M user group netdata-latest.gz.run
.rwxrwxr-x 94M user group netdata-v2.3.0-193-nightly.gz.run
.rwxrwxr-x 94M user group netdata-x86_64-latest.gz.run
.rwxrwxr-x 94M user group netdata-x86_64-v2.3.0-193-nightly.gz.run
```
## Advanced Build Options
### Debug Builds
For troubleshooting, you can create a debug-enabled build:
```bash
./packaging/makeself/build-static.sh x86_64 debug
```
Debug build characteristics:
- Larger file size
- Runtime performance impact
- Additional diagnostic information
- Disabled optimizations
- Enhanced tracing capabilities
## Troubleshooting
### Running with Valgrind
To diagnose memory issues or crashes:
```bash
PATH="/opt/netdata/bin:${PATH}" valgrind --undef-value-errors=no /opt/netdata/bin/srv/netdata -D
```
**Important notes**:
- Performance will be significantly reduced (~10x slower)
- Stop Valgrind with Ctrl+C
- The `--undef-value-errors=no` flag suppresses hundreds of false positives from the bundled libraries
### Crash Reporting
If Netdata crashes during development or testing:
1. Capture the complete Valgrind output
2. [Open a GitHub Issue](https://github.com/netdata/netdata/issues/new/choose)
3. Include:
- Build details (architecture, version)
- Complete stack trace
- Steps to reproduce the issue