-
Notifications
You must be signed in to change notification settings - Fork 49
Package larynx-tts_0.5.0_amd64.deb
installs but fails to run older systems
#25
Comments
Hi @follower, thanks for the detailed feedback! I had issues getting updates for some of the older releases at one point, so I switched to buster. Ultimately, the problem comes down to the onnxruntime dependency. It looks like bullseye finally has a python3-onnx package, so I can depend on that going forward at least. For now, though, I need the compiled extension which is always bound to a particular version of Python. To make things harder, the official onnxruntime wheels don't support 32-bit ARM. So even if I could do a pip install during the Debian package installation, it won't work unless I maintain builds for all Python versions (3.6-3.9+). I had to build my version for Python 3.7 on an actual Pi, and it took a day or two! If you have any suggestions for getting around these problems, I'd love to hear them. These same issues with compiled Python extensions crop up in most of my projects, so any help would be much appreciated 🙂 |
Thanks for taking the time to read & reply. :) I'm back with an update after further research & testing, first up... TL;DR:On Ubuntu 18.04-LTS derived systems it seems that it is sufficient to first install Python 3.7[0] (e.g. via sudo apt install python3.7 And then (with the Larynx PYTHONPATH=/usr/lib/larynx-tts:/usr/lib/larynx-tts/usr/local/lib/python3.7/site-packages/ python3.7 -m larynx -v en "Hello." Downsides to this workaroundUnfortunately it's still not possible to run The Possible
|
[Other than for someone with an idle interest in this issue the following probably isn't particularly necessary to read/write but, what can I say, I'm a completionist. :D ] The underlying problemAs reported originally, the error message displayed is:
While there's a number of tools we could use to help investigate this further I tend toward $ readelf --all /usr/lib/larynx-tts/usr/local/bin/python3 | grep "2\.28"
0000002a95d8 00bd00000007 R_X86_64_JUMP_SLO 0000000000000000 fcntl64@GLIBC_2.28 + 0
189: 0000000000000000 0 FUNC GLOBAL DEFAULT UND fcntl64@GLIBC_2.28 (15)
7672: 0000000000000000 0 FUNC GLOBAL DEFAULT UND fcntl64@@GLIBC_2.28
0bc: 2 (GLIBC_2.2.5) f (GLIBC_2.28) 10 (GLIBC_2.6) 2 (GLIBC_2.2.5)
0x00d0: Name: GLIBC_2.28 Flags: none Version: 15 So, in this case it seems there's only one symbol affected: What even is a
|
For (further :D ) completeness here is the workaround referred to in the original issue comment:
What you're doing (AIUI) is executing the later version of the dynamic linker/loader (a.k.a. interpreter) directly (rather than the path stored inside the binary) and telling it (a) where to find the library files it expects to find and (b) what the name of the executable it should run is. I assume there's reasons why this won't work in all cases but it's worked for both of the ones I've run into recently. Related linksAs far as I can tell none of the easily found "answers" to the question of how to handle this style of error suggest just extracting the files from the
|
My recent Debian packages are built for Debian bullseye without including an internal Python interpreter. Do you think it's worth building packages for older systems, or is from source is easy enough? |
Somehow side-related but:
With a package ( |
Problem
The package
larynx-tts_0.5.0_amd64.deb
installs on Elementary OS 5.1 (which is based on Ubuntu 18.04 LTS which is based on Debian ~buster/sid*) but the suppliedpython3
binary/larynx
script fails to run due to an issue related tolibc
versioning.$ larynx --help python3: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by python3)
Workaround
I'd recently encountered this issue with another project so was able to work around the issue in the interim by extracting a package with a later version of
libc
and helping things find what they were looking for. waves hands hereCause
Anyway, as far as I'm aware, this issue occurs because the Larynx package is built on a machine with a more recent libc version than the one installed locally.
Which I think is confirmed by this line in the docker config:
larynx/Dockerfile.debian
Line 5 in 91ea42c
Options for resolving issue
In terms of "resolving" the issue:
I'll admit I didn't really expect the Larynx package to ship its own Python binary instead of depending on system packages but I assume that's to ensure compatibility with compiled extensions?
Appreciation
Despite this issue I was able to get up and running with Larynx after applying the workaround and overall am very happy with the initial resulting output.
Thanks for all the work you've put into the project, I'm really excited about the potential that high quality, free & open source offline text to speech technology brings with it!
Thanks!
The text was updated successfully, but these errors were encountered: