fluent-package-builder (formerly known as td-agent-builder, it was renamed at Aug, 2021) is a new build system for td-agent which aims to replace the traditional build system omnibus-td-agent since it has several problems due to Omnibus's limitations.
NOTE: Discussed why re-branding is required Rebranding td-agent-builder
td-agent
was renamed to fluent-package
fluent-package
was changed to install under /opt/fluent
/usr/sbin/td-agent
and /usr/sbin/td-agent-gem
was changed to
/usr/sbin/fluentd
and /usr/sbin/fluent-gem
/opt/fluent/share/fluentd.conf
fluentd-apt-source
was renamed to fluent-apt-source
deb package for maintaining apt-line and keyringembedded
directory by omnibus
/opt/td-agent/bin/fluent-cat
instead of /opt/td-agent/embedded/bin/fluent-cat
apt install
, then you can install td-agent via apt install td-agent
.See also this issue for omnibus problems.
After installed above software, you need to enable additional features from powershell (as admin).
dism.exe /online /enable-feature /featurename:Microsoft-Hyper-V /all /norestart
dism.exe /online /enable-feature /featurename:Containers /all /norestart
Then restart Windows.
% rake yum:build
By default, yum repositories for following platforms will be built under fluent-package/yum/repositories/ directory:
You can choose target platforms by YUM_TARGETS
environment variable like this:
% rake yum:build YUM_TARGETS="rockylinux-8,almalinux-9"
You can find other supported platforms under fluent-package/yum directory.
You can also build packages for AArch64 platforms like this:
% rake yum:build YUM_TARGETS="amazonlinux-2023-aarch64"
But if you use older GNU/Linux platforms (e.g. Ubuntu 18.04 or before) as your host OS, you need to copy qemu-aarch64-static into the base directory of the target:
% export TARGET_BASE="centos-8"
% sudo apt install qemu-user-static
% cd /path/to/fluent-package-builder
% cp /usr/bin/qemu-aarch64-static fluent-package/yum/${TARGET_BASE}
% rake yum:build YUM_TARGETS="${TARGET_BASE}-aarch64"
You can also build packages for ppc64le platform like this:
% rake yum:build YUM_TARGETS="centos-8-ppc64le"
But if you use older GNU/Linux platforms (e.g. Ubuntu 18.04 or before) as your host OS, you need to copy qemu-ppc64le-static into the base directory of the target:
% export TARGET_BASE="centos-8"
% sudo apt install qemu-user-static
% cd /path/to/fluent-package-builder
% cp /usr/bin/qemu-ppc64le-static fluent-package/yum/${TARGET_BASE}
% rake yum:build YUM_TARGETS="${TARGET_BASE}-ppc64le"
% rake apt:build
By default, apt repositories for following platforms will be built under fluent-package/apt/repositories/ directory:
You can choose target platforms by APT_TARGETS
environment variable like this:
% rake apt:build APT_TARGETS="debian-bookworm,ubuntu-jammy"
You can find other supported platforms under fluent-package/apt directory.
You can also built packages for AArch64 platforms like this:
% rake apt:build APT_TARGETS="ubuntu-jammy-arm64"
But if you use older GNU/Linux platforms (e.g. Ubuntu 18.04 or before) as your host OS, you need to copy qemu-aarch64-static into the base directory of the target:
% export TARGET_BASE="ubuntu-bionic"
% sudo apt install qemu-user-static
% cd /path/to/fluent-package-builder
% cp /usr/bin/qemu-aarch64-static fluent-package/apt/${TARGET_BASE}
% rake apt:build APT_TARGETS="${TARGET_BASE}-arm64"
% rake msi:build
A fluent-package-${version}-x64.msi package will be built under fluent-package/msi directory.
You can use with MSYS2 for C extension gem building.
MSI included Ruby can detect MSYS2 environment. So, you can install C extension included gem with MSYS2.
e.g.)
Prepare C extension gem building environment:
cmd> ridk install 2
...
cmd> ridk install 3
Install gem via ridk exec fluent-gem install
:
cmd> ridk exec fluent-gem install winevt_c
% sudo mkdir /opt/fluent
% sudo chown $(whoami) /opt/fluent
% rake dmg:selfbuild
A fluent-package-${version}.dmg package will be built under fluent-package/dmg directory.
GitHub Actions' built package is ready to run on macOS 10.15 (Catalina).
Be sure to permit to be authorized for for assistive access. In System Preferences > Security & Privacy > Privacy > Accessibility, you should permit Terminal.app there.
NOTE: Since authorization is at the application level on Terminal.app, it allows any script run from Terminal.app to perform GUI scripting.
cd fluent-package && rake lockfile:update
% cd fluent-package
% rake version:update
% git diff # Check the change log
% git commit -a
% rake apt:build
% rake yum:build
% rake msi:build
It assumes that Gemfile works with Bundler's multiplatform feature, so bundler must be 2.2.0 or later.