openvinotoolkit / openvinotoolkit/model_server
Baremetal ovms_ubuntu24 binary fails on newer distros — libxml2.so.2 (+ ICU 74) is a runtime dep but not bundled
@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_offandpython_ontarballs affected (same missing dependency)
Environment where it fails
- Ubuntu 26.04 LTS, glibc 2.43
- Ships
libxml2.so.16(nolibxml2.so.2); thelibxml2apt 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
ovmsbinary → needslibxml2.so.2(not inovms/lib/, not on the host).- Supplying
libxml2.so.2(2.9.14) then reveals → needslibicuuc.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)
- Bundle
libxml2(and its ICU deps) inovms/lib/like the other ~82 libraries — the tarball is already designed to be self-contained via its bundled libs. - Statically link libxml2 into the binary.
- At minimum, document the exact external runtime dependencies (
libxml2.so.2+ ICU 74) and the supported distro range for the baremetal package — theubuntu24filename 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.