———
|
Install LXD on RHEL without snapInstall golangDownload latest version of go (RHEL 9 go version is older than needed by lxd-6.1) from https://go.dev/dl/: cd /usr/local wget 'https://go.dev/dl/go1.23.2.linux-amd64.tar.gz' tar xf go1.23.2.linux-amd64.tar.gz add go path to PATH: export PATH="/usr/local/go/bin:${PATH}" Install lxddnf install -y lxc lxc-devel libuv-devel sqlite-devel systemd-devel libcap-devel libacl-devel Download latest release source code of LXD from https://github.com/canonical/lxd/releases cd /usr/local/src wget https://github.com/canonical/lxd/archive/refs/tags/lxd-6.1.tar.gz -O lxd-6.1.tar.gz tar xf lxd-6.1.tar.gz cd lxd-lxd-6.1/ make deps pay attention to make deps output at the end. it looks something like: # Please set the following in your environment (possibly ~/.bashrc) export CGO_CFLAGS="-I/root/go/deps/dqlite/include/" export CGO_LDFLAGS="-L/root/go/deps/dqlite/.libs/" export LD_LIBRARY_PATH="/root/go/deps/dqlite/.libs/" export CGO_LDFLAGS_ALLOW="(-Wl,-wrap,pthread_create)|(-Wl,-z,now)" run those exports - they are needed for the build process make -j $(nproc) add this to ~/.bashrc: # Add the LXD binaries to your PATH export PATH="/usr/local/go/bin:${PATH}:/root/go/bin" export LD_LIBRARY_PATH="$(go env GOPATH)/deps/dqlite/.libs/:${LD_LIBRARY_PATH}" test lxd: lxd version echo "root:6553600000:1000000000" | sudo tee -a /etc/subuid /etc/subgid useradd --system lxd getent group lxd >/dev/null || sudo groupadd --system lxd # create the group if needed getent group lxd | grep -qwF "$USER" || sudo usermod -aG lxd "$USER" create a file /etc/systemd/system/lxd.service [Unit] Description=LXD Container Hypervisor After=network-online.target Wants=network-online.target [Service] Environment="PATH=/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/go/bin" #Environment="LD_LIBRARY_PATH=/usr/local/lxd-4.0.10/vendor/raft/.libs/:/usr/local/lxd-4.0.10/vendor/dqlite/.libs/:${LD_LIBRARY_PATH}" Environment="LD_LIBRARY_PATH=/root/go/deps/dqlite/.libs:${LD_LIBRARY_PATH}" ExecStartPre=/bin/bash -c 'echo "PATH=$PATH" > /tmp/lxd_env.log' ExecStartPre=/bin/bash -c 'echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> /tmp/lxd_env.log' ExecStart=/usr/bin/sudo -E PATH=${PATH} LD_LIBRARY_PATH=${LD_LIBRARY_PATH} /root/go/bin/lxd --group wheel LimitNOFILE=1048576 LimitNPROC=1048576 # Enable this if you want the LXD daemon to restart automatically on crashes Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target enable and start the lxd service systemctl start lxd.service systemctl enable lxd.service |