Solved version FBSD_1.7 required by /usr/local/lib/libpython3.9.so.1.0

Hi, I just created a 13.1-RELEASE jail, installed vim (pkg install vim) and when I try to execute it I get this:
Code:
root@pruebas:/ # vim
ld-elf.so.1: /lib/libc.so.7: version FBSD_1.7 required by /usr/local/lib/libpython3.9.so.1.0 not found
Any hint?
 
FreeBSD 13.1 is EoL, packages are made for 13.2 now.
[Not enough coffee]
 
Duh. Haven't had enough coffee I guess. This change probably came with p1 or p2.

Errors like /lib/libc.so.7: version FBSD_X.Y required by {...} always come from not having an up to date system (patch, minor or major version differences).
 
New symbol versioning should never happen in patch levels, it's actually a breaking ABI change, at least in one direction.

My guess would be that the jail somehow wasn't properly updated to 13.1-RELEASE yet ;)

Enjoy your ☕! :cool:
 
SirDice I actually remember that one, and back then, I really tried to reproduce it and couldn't, so I still think this symbol version wasn't introduced by a patch level*) but instead something went wrong with freebsd-update in a weird way... although it's impossible to "prove" this afterwards ;)

Let's just say this: If ever a patchlevel introduces new symbol versions, that's clearly a bug. It would cause packages built on the newer patchlevel not to work on older patchlevels, and this would be noticed for sure. Not everyone keeps their systems up to date all the time (although everyone really should, hehe).

*) edit, I think it was introduced by a minor release. This is still a bit "fishy" wrt "stable ABI", but it won't hurt too much as it's only incompatible in one direction and official builders won't build on the new minor until the old one is EoL.
 
The `freebsd-update` seems weird. After I upgrade the host OS only, running `freebsd-update upgrade` for jail OS (or in jail OS), it tells me the system version has been upgraded.
And I had to assign the `--currently-running` argument enforce.

BTW: only running `freebsd-update fetch` for jail OS would make `freebsd-version` to show the newly version in jail. But the 'kernel' actually not UPGRADED.
(UPD: 'kernel' is wrong, it should be the glibc runtime 'libc.so')

see also: https://docs.freebsd.org/en/books/handbook/jails/#jails-updating
 
BTW: only running `freebsd-update fetch` for jail OS would make `freebsd-version` to show the newly version in jail. But the 'kernel' actually not UPGRADED.
A jail doesn't have a kernel, it runs on the host's kernel. Any command that fetches the kernel version (uname(1), freebsd-version(1)) would show the host's kernel version.

Also note that some security or errata patches don't involve the kernel, thus it's not updated (the version string is baked in at compile time).

This is perfectly fine:
Code:
root@maelcum:~ # freebsd-version -uk
13.1-RELEASE-p3
13.1-RELEASE-p4
The last security update (https://www.freebsd.org/security/advisories/FreeBSD-SA-22:14.heimdal.asc) only involved the userland, there was no issue with the kernel.
 
I had this kind of error,keep me from booting a Desktop GUI for several months!!
See, Failed to load module "libinput" (loader failed, 0) above.
/usr/local/lib/libinput.so.10: Undefined symbol "versionsort@FBSD_1.7"

Yes the new /lib/libc.so.7 library file created from cd /usr/src; make buildworld has the necessary library linking symbol versionsort

All I did was update the packages to newest version:
pkg update
pkg upgrade


TL;DR Versionsort module error FSBD1.7 not found my many page blogpost, cause I did not KNOW what I was looking for and how to fix
cd /usr/src
make buildworld
make installworld

Well that is what errors are good for: to make you study and learn stuff
root@pruebas:/ # vim
ld-elf.so.1: /lib/libc.so.7: version FBSD_1.7 required by /usr/local/lib/libpython3.9.so.1.0 not found


readelf -s /lib/libc.so.7 | grep -i version
36: 00000000001d6d68 4 OBJECT GLOBAL DEFAULT 28 _iconv_version@FBSD_1.3 (5)
453: 00000000000af930 24 FUNC GLOBAL DEFAULT 13 versionsort@@FBSD_1.7 (9)

readelf -S /lib/libc.so.7| grep -i version
[ 3] .gnu.version SUNW_versym 0000000000012f68 00012f68
[ 4] .gnu.version_d SUNW_verdef 0000000000014878 00014878
readelf -e /lib/libc.so.7| grep -i version
Version: 1 (current)
ABI Version: 0
Version: 0x1
01 .note.tag .dynsym .gnu.version .gnu.version_d .gnu.hash .hash .dynstr .rela.dyn .rela.plt .rodata .eh_frame_hdr .eh_frame
[ 3] .gnu.version SUNW_versym 0000000000012f68 00012f68
[ 4] .gnu.version_d SUNW_verdef 0000000000014878 00014878

Sir Dice or others: How would you locate, affirm, or deny existence of the missing "version" symbol in /lib/libc.so.7? I showed my example.
$ ls -l /usr/local/lib/libpython*
lrwxr-xr-x 1 root wheel 19 Mar 10 09:02 /usr/local/lib/libpython3.8.so -> libpython3.8.so.1.0
lrwxr-xr-x 1 root wheel 19 Mar 10 09:22 /usr/local/lib/libpython3.8.so.1 -> libpython3.8.so.1.0
-rw-r--r-- 1 root wheel 3230056 Mar 10 09:02 /usr/local/lib/libpython3.8.so.1.0
-rw-r--r-- 1 root wheel 65400 Mar 10 09:22 /usr/local/lib/libpython3.8.so.1.0-gdb.py
lrwxr-xr-x 1 root wheel 19 Mar 10 04:38 /usr/local/lib/libpython3.9.so -> libpython3.9.so.1.0
lrwxr-xr-x 1 root wheel 19 Mar 10 04:39 /usr/local/lib/libpython3.9.so.1 -> libpython3.9.so.1.0
-rw-r--r-- 1 root wheel 3458592 Mar 10 04:38 /usr/local/lib/libpython3.9.so.1.0
-rw-r--r-- 1 root wheel 65501 Mar 10 04:39 /usr/local/lib/libpython3.9.so.1.0-gdb.py
$ readelf -s /usr/local/lib/libpython3.9.so.1.0 | grep -i version
1339: 0000000000146c00 13 FUNC GLOBAL DEFAULT 13 _Py_gitversion
1347: 00000000002773a0 70 FUNC GLOBAL DEFAULT 13 Py_GetVersion
$ readelf -e /usr/local/lib/libpython3.9.so.1 | grep -i version
Version: 1 (current)
ABI Version: 0
Version: 0x1
01 .note.tag .dynsym .gnu.version .gnu.version_r .gnu.hash .hash .dynstr .rela.dyn .rela.plt .rodata .eh_frame_hdr .eh_frame
[ 3] .gnu.version SUNW_versym 000000000000c0a8 0000c0a8
[ 4] .gnu.version_r SUNW_verneed 000000000000d080 0000d080
 
I had this kind of error,keep me from booting a Desktop GUI for several months!!
See, Failed to load module "libinput" (loader failed, 0) above.
/usr/local/lib/libinput.so.10: Undefined symbol "versionsort@FBSD_1.7"

Yes the new /lib/libc.so.7 library file created from cd /usr/src; make buildworld has the necessary library linking symbol versionsort

All I did was update the packages to newest version:
pkg update
pkg upgrade


TL;DR Versionsort module error FSBD1.7 not found my many page blogpost, cause I did not KNOW what I was looking for and how to fix
cd /usr/src
make buildworld
make installworld

Well that is what errors are good for: to make you study and learn stuff



readelf -s /lib/libc.so.7 | grep -i version



Sir Dice or others: How would you locate, affirm, or deny existence of the missing "version" symbol in /lib/libc.so.7? I showed my example.
maybe xinput can replace the newer libinput in this case.
 
Back
Top