-
-
Notifications
You must be signed in to change notification settings - Fork 182
cpython-3.7.7-linux64-20200409T0045 links against libnsl.so.1, which Fedora no longer has #51
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
There's a |
Hmmm. This may be a recent regression. I had documented way back when that I think you can install a legacy version of a package on Fedora to provide the missing library. But I could be conflating this with another core system library. |
Yes, there's a legacy package, but I figured you'd still want to know. :)
…On Sat, Aug 22, 2020, 19:40 Gregory Szorc ***@***.***> wrote:
Hmmm. This may be a recent regression. I had documented way back when that
libnsl.so.1 was only required by the nis extension, which is a shared
library extension module. But you are correct that the python3.8 binary
is depending on it.
I *think* you can install a legacy version of a package on Fedora to
provide the missing library. But I could be conflating this with another
core system library.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#51 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAAE6LLORHKOHCAU3UWY663SCBJN3ANCNFSM4OZA6R5Q>
.
|
I just tested the Python 3.8 builds on Centos 8 recently, and it fails there as well, missing libnsl.so.1. Apparently the libnsl.so.1 were installed as parts of the minimal base OS in Centos/RHEL 7, but this is now an optional package. Being on a public system where I cannot "just install" libnsl myself, this is a (huge) problem... |
So that's Fedora and Centos/RHEL dropping
The question becomes: how? Right now, we statically link all but the test extensions into My knee jerk is to prevent the I could also drop the Anyone have any opinions? |
I just looked at the nis module, and I can't imagine it's widely used.
I'd say remove it and if someone wants to package something that
actually _uses_ nis with pyoxidizer, they should pay the costs?
…On Thu, Mar 4, 2021 at 7:45 PM Gregory Szorc ***@***.***> wrote:
So that's Fedora and Centos/RHEL dropping libnsl. I guess we better deal with it.
libnsl isn't part of the LSB specification, so removal of it from the base system and as a required dependency of python-build-standalone distributions seems justified to me.
The question becomes: how? Right now, we statically link all but the test extensions into libpython to provide a fully-features distribution. That's a really nice feature! Unfortunately, that means the nis extension and its libnsl.so.1 dependency is also in libpython. We can't have that if the installed distribution is to be portable. (Although it does appear that libnsl isn't in the PYTHON.json metadata, so downstream reconsumers like PyOxidizer may avoid the dependency assuming they didn't link the nis extension.)
My knee jerk is to prevent the nis extension from being compiled into libpython, making it a shared library extension in the default install. Downstream reconsumers could still statically link via its object files if they wanted. But at least it wouldn't poison the pre-built Python. If we went this route, we may also want an additional annotation in PYTHON.json to indicate a library dependency is non-standard / non-LSB. That we downstream consumers can filter without having to maintain their own lists.
I could also drop the nis extension completely. We already do that on macOS distributions. But this may anger people. Who, I'm not sure: the nis extension and the APIs it is using are old and python-build-standalone is kind of a niche project. I'm willing to bet nobody would notice...
Anyone have any opinions?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
The reason why PyOxidizer doesn't run into this problem: it has a hard-coded drop list for the Also, another potential solution here is to build our own static libnsl and distribute that. But if my cursory research is correct, libnsl was split out of glibc. If it is using some of the coding conventions prevalent in glibc, a statically linked library might be a bad idea (tm). I'm just going to drop the |
See inline comment in discussion in #51 for more context. We also remove the shared library from the ELF allow list in the validation code and teach the validation to ensure the nis extension isn't present.
nis/libnsl should be gone now. You should be able to get builds from CI in a few hours or build locally, of course. I'll likely perform an official release in the next few days to track down a regression in macOS builds affecting PyOxidizer users. |
Don't let the erl_call binary (used by eturnalctl) link against libnsl.so.1, which is no longer shipped by default on RedHat-based distributions, and isn't actually needed: | the GNU C Library has never required programs that use 'gethostbyname' | to be linked with libnsl. [ https://lists.gnu.org/archive/html/info-gnu/2017-08/msg00000.html ] Other projects are running into the same issue and don't seem to have better solutions so far, cf.: AppImageCommunity/pkg2appimage#336 astral-sh/python-build-standalone#51 Fixes #19.
I'm not sure what to do about this offhand, but it looks like Fedora dropped libnsl.so.1 in Fedora 28 or so (32 is current). Filing this so we at least don't lose track. STR:
The text was updated successfully, but these errors were encountered: