On Tue, Mar 31, 2020 at 7:42 AM Jeffrey Walton noloader@gmail.com wrote:
On Mon, Mar 30, 2020 at 7:23 AM Niels Möller nisse@lysator.liu.se wrote:
I committed a change to update nettle version numbers, which implies a new symbol version for internal symbols.
That seems to break the gnutls ci build, https://gitlab.com/gnutls/nettle/-/jobs/487360242
The error is
1217 ./bootstrap: getting translations into po/.reference for gnutls... 1218 wget: /lib64/libhogweed.so.5: version `HOGWEED_INTERNAL_5_0' not found (required by /lib64/libgnutls.so.30) 1219 wget: /lib64/libnettle.so.7: version `NETTLE_INTERNAL_7_0' not found (required by /lib64/libgnutls.so.30)
I don't quite understand all details. This job buils and installs nettle, as
./configure --disable-documentation --prefix=/usr --libdir=/usr/lib64 && make -j4 && make install
replacing any previously instaled version with the same soname. So that's a somewhat broader test than I had expected. That explains why linking of wget is affected.
The more worring part is that the installed gnutls library seems to depend on internal nettle symbols (it would have been nice if the error message named the offending symbols). Is that intended?
It's not necessarily wrong, but any packaged version of gnutls built that way *must* be marked to depend on exactly the same versions of nettle with which it was built. And the ci rule would need to use a different prefix and some other way to tell the gnutls build to use the newly built nettle library instead of the system version.
On my own debian machine I have libgnutls.so.30, but apparently an older version. According to
objdump -T /usr/lib/x86_64-linux-gnu/libgnutls.so.30
the version I have refers only to symbols with version NETTLE_6 and HOGWEED_4, i.e., nettle version older than 3.5. And no mention of NETTLE_INTERNAL or HOGWEED_INTERNAL.
It is not limited to Nettle.
Last week, /usr/lib/x86_64-linux-gnu/libgnutls.so.30 could not find a symbol in libidn2.so I had installed into /usr/local or /opt/local. The problem cascaded to the point I could not open a Terminal to fix things.
My problem appeared again. I'm going to have to boot into recovery mode, delete /usr/local, and reboot to fix it.
System libraries have no business going into my directories. I don't mess with /bin, /usr/bin, /lib and /usr/lib. The system should stay out of our directories.
$ sudo apt-get update ... /usr/lib/apt/methods/http: relocation error: /usr/lib/x86_64-linux-gnu/libgnutls.so.30: symbol _idn2_punycode_decode version IDN2_0.0.0 not defined in file libidn2.so.0 with link time reference E: Method http has died unexpectedly! E: Sub-process http returned an error code (127) E: Method /usr/lib/apt/methods/http did not start correctly