Skip to content

docs: Updated Archlinux installation guide#9201

Open
enaples wants to merge 1 commit into
ElementsProject:masterfrom
enaples:test-installation-documentation-archlinux
Open

docs: Updated Archlinux installation guide#9201
enaples wants to merge 1 commit into
ElementsProject:masterfrom
enaples:test-installation-documentation-archlinux

Conversation

@enaples
Copy link
Copy Markdown
Collaborator

@enaples enaples commented Jun 8, 2026

Important

26.06 FREEZE April 30th: Non-bugfix PRs not ready by this date will wait for 26.09.

RC1 is scheduled on May 14th

The final release is scheduled for June 1st.

Checklist

Before submitting the PR, ensure the following tasks are completed. If an item is not applicable to your PR, please mark it as checked:

  • The changelog has been updated in the relevant commit(s) according to the guidelines.
  • Tests have been added or modified to reflect the changes.
  • Documentation has been reviewed and updated as needed.
  • Related issues have been listed and linked, including any that this PR closes.
  • Important All PRs must consider how to reverse any persistent changes for tools/lightning-downgrade

Changes

Changelog-None

  1. Replaced minimal pacman installation with the full package list
  2. Added rustup installation step
  3. Substituted poetry with uv for Python dependency management
  4. Switched to the right installation procedure using uv (uv sync --> ./configure --> make install)

In order to test the installation steps, the following bash script has been used:

#!/usr/bin/env bash
# Usage:
#   ./build_cln_arch.sh [CONTAINER_NAME] [ARCH_IMAGE] [GIT_TAG]
# Defaults:
#   CONTAINER_NAME = cln-arch-build
#   ARCH_IMAGE     = archlinux:latest
#   GIT_TAG        = v26.06.1

set -euo pipefail

CONTAINER_NAME="${1:-cln-arch-build}"
ARCH_IMAGE="${2:-archlinux:latest}"
GIT_TAG="${3:-v26.06.1}"

# Convenience function used for every docker exec from here on
fctr() { docker exec "${CONTAINER_NAME}" bash -c "$1"; }

echo "==> Starting container '${CONTAINER_NAME}' (${ARCH_IMAGE})"
docker run --platform linux/amd64 --name "${CONTAINER_NAME}" -d "${ARCH_IMAGE}" sleep infinity

echo "==> Bypassing pacman sandboxing for ARM64 emulation compatibility"
# Injects flags directly into the [options] section of pacman.conf
fctr "sed -i '/^\[options\]/a DisableSandboxSyscalls\nDisableSandboxFilesystem' /etc/pacman.conf"

echo "==> Installing system dependencies"
fctr "
  pacman -Syu --noconfirm && \
  pacman -S --noconfirm --needed \
    base-devel \
    clang \
    gettext \
    git \
    gmp \
    sqlite \
    python \
    python-pip \
    python-setuptools \
    net-tools \
    valgrind \
    wget \
    jq \
    zlib \
    libsodium \
    which \
    sed \
    protobuf \
    postgresql-libs \
    python-mako \
    openssl \
    lowdown
"

echo "==> Installing Rust (rustup)"
fctr "curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --profile minimal -y"

echo "==> Installing uv (Python package manager)"
fctr "curl -LsSf https://astral.sh/uv/install.sh | sh"

echo "==> Cloning Core Lightning (tag: ${GIT_TAG})"
fctr "
  git clone https://github.com/ElementsProject/lightning.git && \
  cd lightning && \
  git checkout ${GIT_TAG} && \
  git submodule update --init --recursive
"

echo "==> Building and installing Core Lightning"
fctr "
  source \$HOME/.cargo/env && \
  export PATH=\"\$HOME/.cargo/bin:\$HOME/.local/bin:/usr/local/bin:\$PATH\" && \
  cd lightning && \
  uv sync --all-extras --all-groups --frozen && \
  ./configure && \
  RUST_PROFILE=release uv run make -j\$(nproc) && \
  RUST_PROFILE=release make install
"

echo "==> Verifying installation"
fctr "export PATH=\"/usr/local/bin:\$PATH\" && lightningd --version"
fctr "export PATH=\"/usr/local/bin:\$PATH\" && lightning-cli --version"

echo "==> Cleaning up container '${CONTAINER_NAME}'"
docker stop "${CONTAINER_NAME}"
docker rm "${CONTAINER_NAME}"

echo "==> Done."

Changelog-None

1. Replaced minimal `pacman` installation with the full package list
2. Added `rustup` installation step
3. Substituted `poetry` with `uv` for Python dependency management
4. Switched to the right installation procedure using uv (`uv sync` --> `./configure` --> `make install`)
@enaples enaples added the QA Blockstream QA team have reproduced, or a test has been created! Look for the linked PR/Issue label Jun 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

QA Blockstream QA team have reproduced, or a test has been created! Look for the linked PR/Issue

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant