How to build ncurses-6.2-10.20210508.el9.src.rpm to i686?

I need 32bit libncurses.so.5
Tried building with rpmbuild --target=i686 --rebuild ./ncurses-6.2-10.20210508.el9.src.rpm in a virtual machine.
Is this even possible?

Any idea on how to obtain that library in a manner that is somewhat compatible with this system?

Is there a reason why you need libncurses.so.5? You won’t be able to obtain it that way building the source package. You’ll only get libncurses.so.6 if you manage to build it.

[root@xmpp01 host]# dnf whatprovides /usr/lib/libncurses.so.6
Last metadata expiration check: 1:50:14 ago on Sun 11 Feb 2024 11:19:47 AM MST.
ncurses-libs-6.2-10.20210508.el9.i686 : Ncurses libraries
Repo        : baseos
Matched from:
Filename    : /usr/lib/libncurses.so.6

An old program needs it. Looks like ln -sf /usr/lib/libncurses.so.6 /usr/lib/libncurses.so.5 solved, I hope the two versions are compatible.

They are explicitly incompatbile as is indicated by the changed soname. The version you are looking for is in package ncurses-compat-libs. For 8 it’s included in the base repos, for 9 you have to get it from epel.

the problem is with alma9

dnf whatprovides libncurses.so.5
Last metadata expiration check: 0:00:09 ago on Wed 14 Feb 2024 02:07:30 PM EET.
Error: No matches found. If searching for a file, try specifying the full path or using a wildcard prefix ("*/") at the beginning.

I have added the devel repo too dnf install almalinux-release-devel

You should not be mixing repositories between different distributions. If you need the devel repository, we provide our own which can be enabled easily via dnf config-manager or modifying /etc/yum.repos.d where appropriate.

With that said, you should be using mock to do any rpm builds.

dnf install epel-release -y
dnf install mock -y
usermod -aG mock user
mock -r rocky+epel-9-x86_64 --enablerepo=devel /path/to/source/package

Sorry wrong forum, but same issue with rocky too.

Tried mock, I couldn’t get it to build a i686 package. I will try again with the commands you provided, thank you.

Ah, that’s something I forgot: epel doesn’t have 32-bit packages.

But what’s missing here is something that gets build but then doesn’t get shipped.

For Rocky 9 see here:

https://koji.rockylinux.org/koji/buildinfo?buildID=36131

Direct link to the package you want:

https://kojidev.rockylinux.org/kojifiles/packages/ncurses/6.2/10.20210508.el9/i686/ncurses-compat-libs-6.2-10.20210508.el9.i686.rpm

1 Like

Thank you, I will try it tomorrow. Spent quite some time trying to research this. Do you know why don’t they include the 32bit packages? Sadly there is still a lot of legacy software out there.

I wouldn’t know. RH management decides this. The easy part: The don’t have the 64-bit compat package, they surely don’t have the 32-bit compat package.

At a guess, probably because they don’t want to be supporting old legacy stuff anymore for the very few people who use it. Times changes, things move on, most things are 64 bit now. They want their teams to concentrate on things like now and the future, rather than some old legacy app that someone might use when the majority are not using it.

The legacy app should probably remain on the system that it works on currently rather than attempting to run it on a much newer operating system where it will lack the supported packages it requires. Or the even better solution, update the legacy app and bring it into the future. Possibly not easy for a number of reasons - like having to request the company that developed it to update it, and they no longer support it or just don’t want to because the app is old and been superceded.