openvinotoolkit / openvinotoolkit/model_server

Baremetal ovms_ubuntu24 binary fails on newer distros — libxml2.so.2 (+ ICU 74) is a runtime dep but not bundled

Open
#4,362 3 comments 0 reactions 1 assignee View on GitHub

@dkalinowski is already working on this.

Since Jul 10, 2026.

Dominant language
C++
Stars
931
Forks
277
Avg merge
2d 13h
Merged PRs (30d)
68

Description

Summary

The baremetal Linux release tarball (ovms_ubuntu24_<ver>_python_{off,on}.tar.gz) bundles ~82 shared libraries under ovms/lib/, but not libxml2 — even though the ovms binary links it directly (ldd ovms → libxml2.so.2 => not found). On Ubuntu 22.04/24.04 this is masked because the host provides libxml2.so.2 via the distro libxml2 package. On any newer distro that ships libxml2 under a different soname (and a newer ICU), the binary won't start.

Version

  • OVMS 2026.2.1 (PROJECT_VERSION: 2026.2.1.1122f03bf, BASE_IMAGE: ubuntu:24.04)
  • Both python_off and python_on tarballs affected (same missing dependency)

Environment where it fails

  • Ubuntu 26.04 LTS, glibc 2.43
  • Ships libxml2.so.16 (no libxml2.so.2); the libxml2 apt package has no candidate
  • Ships ICU 78 (libicuuc.so.78); no ICU 74

Generally: reproducible on any distro where the system libxml2 soname ≠ .so.2, or where ICU ≠ 74.

Symptom

$ LD_LIBRARY_PATH=/opt/ovms/lib /opt/ovms/bin/ovms --version
/opt/ovms/bin/ovms: error while loading shared libraries: libxml2.so.2: cannot open shared object file: No such file or directory

Root cause / dependency chain

  1. ovms binary → needs libxml2.so.2 (not in ovms/lib/, not on the host).
  2. Supplying libxml2.so.2 (2.9.14) then reveals → needs libicuuc.so.74 (host has ICU 78).

So the full unmet chain is libxml2.so.2 → libicuuc.so.74 → libicudata.so.74.

Steps to reproduce

# On Ubuntu 26.04 (or any distro without libxml2.so.2 / ICU 74):
curl -sL -O https://github.com/openvinotoolkit/model_server/releases/download/v2026.2.1/ovms_ubuntu24_2026.2.1_python_off.tar.gz
sudo tar -xzf ovms_ubuntu24_2026.2.1_python_off.tar.gz -C /opt
LD_LIBRARY_PATH=/opt/ovms/lib ldd /opt/ovms/bin/ovms | grep 'not found'
# -> libxml2.so.2 => not found

Workaround

Dropping compatible libs into OVMS's own lib/ (isolated; does not touch the system) resolves it:

# libxml2 2.9.14 + ICU 74 (any ubuntu24-era source works)
cp libxml2.so.2.9.14   /opt/ovms/lib/libxml2.so.2
cp libicuuc.so.74.2    /opt/ovms/lib/libicuuc.so.74
cp libicudata.so.74.2  /opt/ovms/lib/libicudata.so.74
cp libicui18n.so.74.2  /opt/ovms/lib/libicui18n.so.74
# ldd now clean; ovms starts and serves models on the Intel Arc GPU.

Suggested fix (any one)

  1. Bundle libxml2 (and its ICU deps) in ovms/lib/ like the other ~82 libraries — the tarball is already designed to be self-contained via its bundled libs.
  2. Statically link libxml2 into the binary.
  3. At minimum, document the exact external runtime dependencies (libxml2.so.2 + ICU 74) and the supported distro range for the baremetal package — the ubuntu24 filename implies broader compatibility than the artifact actually has.

Notes

GPU serving itself works fine on Ubuntu 26.04 once the libs are supplied (Intel Arc Pro B60; the bundled libopenvino_intel_gpu_plugin.so + libOpenCL.so plus the distro intel-opencl-icd). This is purely a packaging/portability gap in the baremetal artifact, not a runtime GPU issue.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.