docs
docs copied to clipboard
Explain compatiblity libraries
Documentation currently says
Applications compiled on one major version of FreeBSD are expected to run on subsequent major versions of FreeBSD if compatiblity libraries are installed. Example: An application compiled on FreeBSD 3.2 is expected to run on FreeBSD 14 if compatiblity libraries are installed.
We should explain this using a practical example. https://www.cinelerra-gg.org/freebsd-package/ seems to require siome libraries in versions older than what currently ships with helloSystem.
What are the exact steps to make it run?
Related: https://github.com/helloSystem/launch/issues/1#issuecomment-798869996
Unfortunately, you can't without dragging archived packages out. You could use (shameless plug) ports-mgmt/portdowngrade to get them, but actually cinelerra should be in ports. I'll get in touch with them to find out their scripts.
Well. Actually I am just using Cinelerra as an example here for the many (not super-fat) .app bundles that may see the light of day.
I suspect that http://pkg.freebsd.org/FreeBSD:12:amd64/release_0/All/ might have the needed libraries but it gives me 403 Forbidden.
On IRC this explanation was given to me by Zirias:
the only way to get them is compile yourself from an older ports tree.
but... why? someone must already have compiled the older versions? and i suspect them to be in release_0 yep, and they're deleted from the repo as soon as a new version is there ports are "rolling release". you have latest and one quarterly snapshot. that's it. what happens with the older quarterly snapshots? /dev/null they stay in subversion of course. you can always build yourself.
So, what is release_0 then?
I suspect that http://pkg.freebsd.org/FreeBSD:12:amd64/release_0/All/ might have the needed libraries but it gives me 403 Forbidden.
Is there a safe way to use the pkg command to find this out, without any risk to my existing system?
mkdir -p /usr/local/etc/pkg/repos
Then write to /usr/local/etc/pkg/repos/release_0.conf:
release_0: {
url: "pkg+http://pkg.FreeBSD.org/${ABI}/release_0",
mirror_type: "srv",
signature_type: "fingerprints",
fingerprints: "/usr/share/keys/pkg",
enabled: yes
}
Then pkg -vv should show:
Repositories:
FreeBSD: {
url : "pkg+http://pkg.FreeBSD.org/FreeBSD:12:amd64/quarterly",
enabled : yes,
priority : 0,
mirror_type : "SRV",
signature_type : "FINGERPRINTS",
fingerprints : "/usr/share/keys/pkg"
}
release_0: {
url : "pkg+http://pkg.FreeBSD.org/FreeBSD:12:amd64/release_0",
enabled : yes,
priority : 0,
mirror_type : "SRV",
signature_type : "FINGERPRINTS",
fingerprints : "/usr/share/keys/pkg"
}
Then do sudo pkg update.
Then do
% pkg search openexr
gstreamer1-plugins-openexr-1.16.2_5 GStreamer OpenExr codec plugin
openexr-2.5.5 High dynamic-range (HDR) image file format
gstreamer1-plugins-openexr-1.12.3_2 GStreamer OpenExr codec plugin
openexr-2.3.0 High dynamic-range (HDR) image file format
py27-openexr-1.2.0_8 Python module for ILM's OpenEXR image format and library
Then download the tgz with
sudo pkg fetch --repository release_0 -o . openexr
Then we have /var/cache/pkg/openexr-2.3.0.txz.
Which indeed contains
libIlmImf-2_3.so.24 libIlmImf.so libIlmImfUtil.a
libIlmImf-2_3.so.24.0.0 libIlmImfUtil-2_3.so.24 libIlmImfUtil.so
libIlmImf.a libIlmImfUtil-2_3.so.24.0.0
With a lot_ of manual work, this is the result:

So it can be done but it is way too cumbersome at the moment.
We need an automated way to "download the required compatibility libraries".