Skip to content

I'm currently trying to compile xllm on Ubuntu 22.04, but it fails with an error during the libsystemd build step. Is there a complete compilation guide available for Ubuntu-based systems? #280

@fengjuan-canyun

Description

@fengjuan-canyun

Xllm 安装部署
基础镜像为:
swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:8.2.rc1-910b-ubuntu22.04-py3.11

在此基础镜像上安装了torch 2.1.0 torch npu等包,具体的包如下:

absl-py==2.3.1
aiohappyeyeballs==2.6.1
aiohttp==3.13.1
aiosignal==1.4.0
annotated-types==0.7.0
anyio==4.11.0
attrs==25.3.0
auto_tune @ file:///root/selfgz89316226/compiler/lib64/auto_tune-0.1.0-py3-none-any.whl#sha256=5374c539972c460012f38b618f00576e36163f03090c8dc58da9d40608065770
certifi==2025.7.14
cffi==1.17.1
cfgv==3.4.0
charset-normalizer==3.4.2
click==8.3.0
Cython==3.1.2
dataflow @ file:///root/selfgz89316226/compiler/lib64/dataflow-0.0.1-py3-none-any.whl#sha256=0f5d69abccf46385e2ac04c9bf5a6ebcf8d06f9fce6d55fd756420c029e4970e
decorator==5.2.1
distlib==0.4.0
distro==1.9.0
fastapi==0.117.1
filelock==3.19.1
frozenlist==1.8.0
fsspec==2025.9.0
h11==0.16.0
hccl @ file:///root/selfgz249748187/hccl/lib64/hccl-0.1.0-py3-none-any.whl#sha256=3a3037a8f2fb0949d6fefd479c26e32bda09fd84f3c2b321291d67726cee754d
hccl_parser @ file:///usr/local/Ascend/ascend-toolkit/8.2.RC1/toolkit/tools/hccl_parser-0.1-py3-none-any.whl#sha256=37541281a74de6ae3f8a15c77e1df8cf899bcbeb391a9a47ecfb582caf695fd8
hf-xet==1.1.10
httpcore==1.0.9
httptools==0.6.4
httpx==0.28.1
huggingface-hub==0.36.0
identify==2.6.15
idna==3.10
iniconfig==2.3.0
Jinja2==3.1.6
jiter==0.11.1
jsonschema==4.25.1
jsonschema-specifications==2025.9.1
llm_datadist @ file:///root/selfgz89316226/compiler/lib64/llm_datadist-0.0.1-py3-none-any.whl#sha256=87888a41b86749195527b9f468b770540f6e338547c989af902246b5b3c79eff
MarkupSafe==3.0.2
mpmath==1.3.0
msgpack==1.1.1
msobjdump @ file:///usr/local/Ascend/ascend-toolkit/8.2.RC1/toolkit/tools/msobjdump-0.1.0-py3-none-any.whl#sha256=9ecf6bf7680333f7bf138c2fb10a512ed183ceb63b63764e775895b31f72fad3
multidict==6.7.0
netifaces==0.11.0
networkx==3.5
nodeenv==1.9.1
numpy==1.24.0
nvidia-ml-py==13.580.82
op_compile_tool @ file:///root/selfgz89316226/compiler/lib64/op_compile_tool-0.1.0-py3-none-any.whl#sha256=5cb767ab2883d45a9b9e819d763ce35d3dd47a7ce1b9e3738144ba94324313a5
op_gen @ file:///usr/local/Ascend/ascend-toolkit/8.2.RC1/toolkit/tools/op_gen-0.1-py3-none-any.whl#sha256=db2b76ec8aa60b562f51e6e33d125a6ca2338d76d03c19a809c63d587cd5c7f6
op_test_frame @ file:///usr/local/Ascend/ascend-toolkit/8.2.RC1/toolkit/tools/op_test_frame-0.1-py3-none-any.whl#sha256=62fdd9628c60936e8b75cbe387781c24a4591b2675b5564ef8f6ff739cc04450
opc_tool @ file:///root/selfgz89316226/compiler/lib64/opc_tool-0.1.0-py3-none-any.whl#sha256=b5fd9db04670c046f0eba7c97953e72ddac87ebe1c27c10351b0b79d93be7de3
openai==2.6.0
orjson==3.11.3
packaging==25.0
pandas==2.3.2
pathlib2==2.3.7.post1
platformdirs==4.5.0
pluggy==1.6.0
pre_commit==4.3.0
propcache==0.4.1
protobuf==6.32.1
psutil==7.0.0
pycparser==2.22
pydantic==2.11.9
pydantic_core==2.33.2
Pygments==2.19.2
pynvml==13.0.1
pytest==8.4.2
python-dateutil==2.9.0.post0
pytz==2025.2
PyYAML==6.0.2
ray==2.49.2
referencing==0.36.2
requests==2.32.4
rpds-py==0.27.1
safetensors==0.6.2
schedule_search @ file:///root/selfgz89316226/compiler/lib64/schedule_search-0.1.0-py3-none-any.whl#sha256=20dd0cb9d8942ec562335e9fce095f999bf0eb3d4a4b3af9eb716e7c92bb3dc9
scipy==1.15.3
shortuuid==1.0.13
show_kernel_debug_data @ file:///usr/local/Ascend/ascend-toolkit/8.2.RC1/toolkit/tools/show_kernel_debug_data-0.1.0-py3-none-any.whl#sha256=33333537bad1e8e80280febb19bbe99d964f092c9e72ab96d0e4e2b41e9559b9
six==1.17.0
sniffio==1.3.1
starlette==0.48.0
sympy==1.14.0
te @ file:///root/selfgz89316226/compiler/lib64/te-0.4.0-py3-none-any.whl#sha256=7144725159b14419ee8861dd2c510bdb4473117beeab67d8a98cd876202eca47
torch==2.1.0
torch-npu @ file:///workspace/tmp/torch_npu-2.1.0.post14-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=e09feb014464c95b681423f80e8b57b7e60645e81d97a8d4d0cce26788bc8fc6
tqdm==4.67.1
typing-inspection==0.4.1
typing_extensions==4.15.0
tzdata==2025.2
urllib3==2.5.0
uvicorn==0.37.0
uvloop==0.21.0
virtualenv==20.35.3
yarl==1.22.0

最终镜像名称为:
xllm-ubuntu-npu:20251023

创建容器的命令

#!/bin/bash

CONTAINER_NAME="xllm-ubuntu-npu"
IMAGE="xllm-ubuntu-npu:20251023"

docker run -itd \
--name ${CONTAINER_NAME} \
--ipc=host \
--network=host \
-u 0 \
--privileged \
--device=/dev/davinci0 \
--device=/dev/davinci1 \
--device=/dev/davinci2 \
--device=/dev/davinci3 \
--device=/dev/davinci_manager \
--device=/dev/devmm_svm \
--device=/dev/hisi_hdc \
-v /var/log/npu/profiling/:/var/log/npu/profiling \
-v /var/log/npu/dump/:/var/log/npu/dump \
-v /var/queue_schedule:/var/queue_schedule \
-v /data/Qwen3-32B:/weights/Qwen3-32B \
-v /runtime/:/runtime/ \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /usr/local/sbin/:/usr/local/sbin/ \
-v /var/log/npu/slog/:/var/log/npu/slog \
-v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \
-v /var/log/npu/conf/slog/slog.conf:/var/log/npu/conf/slog/slog.conf \
-v /usr/local/Ascend/add-ons/:/usr/local/Ascend/add-ons/ \
-v /home/:/home/ \
${IMAGE} \
/bin/bash

进入容器

sudo docker exec -it xllm-ubuntu-npu bash

步骤
1、系统源配置

cat > /etc/apt/sources.list <<EOF
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-security main restricted universe multiverse

# 预发布软件源
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-proposed main restricted universe multiverse
EOF

2、pypi源配置

pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
pip config set global.trusted-host mirrors.tuna.tsinghua.edu.cn

3、安装系统依赖

apt update -y 
apt install -y \
	bison \
	flex \
	linux-libc-dev \
	ccache \
	build-essential \
	cmake \
	ninja-build \
	pkg-config \
    autoconf \
    automake \
    libtool \
	libtool-bin \
    m4 \
    git \
curl \
zip \
    unzip \
    tar \
    gettext \
    autopoint \
	libxi-dev \
	libxtst-dev \
	libx11-dev \
	libxt-dev \
	libxext-dev

apt install -y perl perl-base --no-install-recommends ca-certificates tzdata netbase wget vim curl \
    python3-pip git  wget net-tools gcc g++ cmake libnuma-dev unzip zip

apt install -y build-essential cmake ninja-build
apt install -y libx11-dev libxft-dev libxext-dev

源码编译安装
1、下载xllm源码

mkdir -p /workspace && cd /workspace
git clone https://github.com/jd-opensource/xllm
git checkout release/v0.6.0
cd xllm 
git submodule init
git submodule update

2、vcpkg 安装

cd /workspace
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg && git checkout ffc42e97c866ce9692f5c441394832b86548422c

# 由于原仓无ffc42e97c866ce9692f5c441394832b86548422c信息,因此更换fork仓
cd /workspace
git clone https://github.com/vectorch-ai/vcpkg.git
cd vcpkg && git checkout ffc42e97c866ce9692f5c441394832b86548422c
export VCPKG_ROOT=/workspace/vcpkg

# 编译vcpkg
cd /workspace/vcpkg
./bootstrap-vcpkg.sh
export VCPKG_FORCE_SYSTEM_BINARIES=1

# 验证
./vcpkg version
./vcpkg install zlib --triplet=arm64-linux

3、安装python依赖

cd /workspace/xllm
# 由于默认的分支为main,该分支的cibuild不存在requirements-dev.txt 文件,因此需要切换分支
git checkout release/v0.6.0
pip install -r cibuild/requirements-dev.txt 
pip install --upgrade setuptools wheel
pip install pre-commit

4、升级cmake版本

cd /tmp
wget https://github.com/Kitware/CMake/releases/download/v3.27.9/cmake-3.27.9-linux-aarch64.tar.gz

# 解压
tar -xzf cmake-3.27.9-linux-aarch64.tar.gz

# 备份旧版本
mv /usr/bin/cmake /usr/bin/cmake.bak

# 将新版本链接到 PATH
cp /tmp/cmake-3.27.9-linux-aarch64/bin/cmake /usr/local/bin/cmake
cp -s /tmp/cmake-3.27.9-linux-aarch64/bin/ctest /usr/local/bin/ctest

# 将整个内容复制到 /usr/local/
cd /tmp/cmake-3.27.9-linux-aarch64
cp -r bin/ /usr/local/
cp -r share/ /usr/local/


# 验证版本,需要推出当前登陆重新登陆一下
cmake --version

5、编译xllm

export VCPKG_ROOT=/workspace/vcpkg
export VCPKG_FORCE_SYSTEM_BINARIES=1
export VCPKG_CMAKE_CONFIGURE_OPTIONS="-DIS_X86_64_ARCH=OFF"	
export VCPKG_DOWNLOADS_MIRROR=https://mirrors.tuna.tsinghua.edu.cn/vcpkg/
cd /workspace/xllm/
python setup.py bdist_wheel --device='a2' --arch='arm'

错误:libsystemd编译失败
日志:

Installing 143/154 libsystemd:arm64-linux@254#2...
Building libsystemd:arm64-linux@254#2...
warning: -- Using community triplet arm64-linux. This triplet configuration is not guaranteed to succeed.
-- [COMMUNITY] Loading triplet configuration from: /workspace/vcpkg/triplets/community/arm64-linux.cmake
-- Installing port from location: /workspace/vcpkg/buildtrees/versioning_/versions/libsystemd/5213227454790bf5e953a66d807e04059742381e
-- Downloading https://github.com/systemd/systemd/archive/v254.tar.gz -> systemd-systemd-v254.tar.gz...
-- Extracting source /workspace/vcpkg/downloads/systemd-systemd-v254.tar.gz
-- Applying patch pkgconfig.patch
-- Using source at /workspace/vcpkg/buildtrees/libsystemd/src/v254-832da4078b.clean
-- Getting CMake variables for arm64-linux-dbg
-- Getting CMake variables for arm64-linux-rel
-- Configuring arm64-linux-dbg
-- Configuring arm64-linux-dbg done
-- Configuring arm64-linux-rel
-- Configuring arm64-linux-rel done
-- Building (arm64-linux-dbg)...
CMake Error at scripts/cmake/vcpkg_execute_build_process.cmake:134 (message):
    Command failed: /usr/bin/ninja -C /workspace/vcpkg/buildtrees/libsystemd/arm64-linux-dbg libsystemd.a devel
    Working Directory: /workspace/vcpkg/buildtrees/libsystemd/src/v254-832da4078b.clean
    See logs for more information:
      /workspace/vcpkg/buildtrees/libsystemd/build-arm64-linux-dbg-out.log

Call Stack (most recent call first):
  scripts/cmake/vcpkg_build_ninja.cmake:3 (vcpkg_execute_build_process)
  scripts/cmake/vcpkg_build_ninja.cmake:24 (z_vcpkg_build_ninja_build)
  buildtrees/versioning_/versions/libsystemd/5213227454790bf5e953a66d807e04059742381e/portfile.cmake:26 (vcpkg_build_ninja)
  scripts/ports.cmake:172 (include)

error: building libsystemd:arm64-linux failed with: BUILD_FAILED
Elapsed time to handle libsystemd:arm64-linux: 49 s
Please ensure you're using the latest port files with `git pull` and `vcpkg update`.
Then check for known issues at:
  https://github.com/microsoft/vcpkg/issues?q=is%3Aissue+is%3Aopen+in%3Atitle+libsystemd
You can submit a new issue at:
  https://github.com/microsoft/vcpkg/issues/new?title=[libsystemd]+Build+error+on+arm64-linux&body=Copy+issue+body+from+%2Fworkspace%2Fxllm%2Fbuild%2Fcmake.linux-aarch64-cpython-311%2Fvcpkg_installed%2Fvcpkg%2Fissue_body.md

-- Running vcpkg install - failed
CMake Error at /workspace/vcpkg/scripts/buildsystems/vcpkg.cmake:899 (message):
  vcpkg install failed.  See logs for more information:
  /workspace/xllm/build/cmake.linux-aarch64-cpython-311/vcpkg-manifest-install.log
Call Stack (most recent call first):
  /usr/local/share/cmake-3.27/Modules/CMakeDetermineSystem.cmake:148 (include)
  CMakeLists.txt:220 (project)


CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!
Build failed.
root@localhost:/workspace/xllm#

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions