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

@enaples enaples commented Jun 8, 2026

Copy link
Copy Markdown
Collaborator

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."

@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
@cdecker

cdecker commented Jul 13, 2026

Copy link
Copy Markdown
Member

Looking good, I'll rebase to kick CI again 👍 Otherwise LGTM

@cdecker cdecker force-pushed the test-installation-documentation-archlinux branch from bc91e15 to aac5684 Compare July 13, 2026 14:13
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`)
@cdecker cdecker force-pushed the test-installation-documentation-archlinux branch from aac5684 to 6694a41 Compare July 13, 2026 16:52
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.

2 participants