First of all, I'm well aware that Linux compatibility is not intended to replace the actual system, that is known of being limited and we get it as it is. No problem with that. The purpose of my asking is that of learning at this point. I tried to install the Linux Discord client in /compat/linux, without success. Tried the DiscordCanary at first and, when the official release came out, tried it as well, again to no avail. Aside from Discord desktop client I've found a BSD version of pretty much everything I wanted, so there is no actual need for running a Linux app. Also, it could be that Discord client has a problem of its own. That's beyond the scope of interest I guess. I'm merely using it as an example for an actually broader, gerenal question.
Though not mentioned anywhere that the libs should come specifically from CentOS, it seems to me an implicit requirement for /compat/linux, right?
The handbook only mentions
I carefully replicated not once, but twice, each and every lib on my Linux system for a Discord client (let me know if naming the app is against any rule). Recreated every symlink, noted them down on paper then reconstructed at /compat/linux as shown by the handbook. Twice, I mean, as it was one for Arch, then again with Ubuntu. What I did not try was taking them from CentOS, since I couldn't install Discord there.
If what I said makes any sense, we'd need the app itself to come from CentOS as well. Running
Makes sense to me, since, despite being the same compiled application, they're depending on libraries installed in distinct environments. The same shared object could be. for example, inside /lib in distro A, inside a /lib64 folder in distro B, and somewhere pointed to by a /lib64 soft link, let's say someplace inside /lib, that in distro C. In other words, it would make little sense running
In the end, my question is: would getting the libs from CentOS rather than other distros be of any help since that's what /compat/linux is based on? Or it makes no difference at all and doesn't matter from where I get my libs as long as they're properly set so the loader finds what it wants to, in the path where it looks at?
OBS: Let's assume that every version number matches exactly the output of
I'm well aware of having lots, lots of threads about Linux compatibility. None I've read so far managed to answer my question. The closest I've found had a reply mentioning the problem of libs that could had been compiled against different libs or versions of a given library. That, however, was pretty much the whole point in that answer - which is valid, but lacked more context, or conditions. It was presented as an explaining to "how things could not end well", but as if could happen regardless of anything but chance. Or so I failed to grasp anything beyond this point. I'm asking here if there's some degree of "narrowing down", be it as broad as just coming from "CentOS" or tighter, like coming from "CentOS 7", "CentOS 7.Y", "CentOS 7.Y.Z", of if the only way of being sure is checking each and every library individually - what would be rather extreme and make me wonder how CentOS could work itself in such conditions, but as long as I lack the proper understanding, I won't overlook any possibility by sounding "absurd" or "far-fetched"
Thanks in advance.
Though not mentioned anywhere that the libs should come specifically from CentOS, it seems to me an implicit requirement for /compat/linux, right?
The handbook only mentions
ldd
. Suppose I follow the handbook procedure, but in Arch or Debian. Whatever shared objects thereby listed in the output for a given application would still depend on:- Its own version;
- The version of other libs listed;
- Whatever they were compiled against.
I carefully replicated not once, but twice, each and every lib on my Linux system for a Discord client (let me know if naming the app is against any rule). Recreated every symlink, noted them down on paper then reconstructed at /compat/linux as shown by the handbook. Twice, I mean, as it was one for Arch, then again with Ubuntu. What I did not try was taking them from CentOS, since I couldn't install Discord there.
If what I said makes any sense, we'd need the app itself to come from CentOS as well. Running
ldd
on the Discord app on Arch produces an output different if compared to the one produced by running ldd
on the same Discord app in Ubuntu. And that to the same version of the same app (Discord had only one version anyway when I did this).Makes sense to me, since, despite being the same compiled application, they're depending on libraries installed in distinct environments. The same shared object could be. for example, inside /lib in distro A, inside a /lib64 folder in distro B, and somewhere pointed to by a /lib64 soft link, let's say someplace inside /lib, that in distro C. In other words, it would make little sense running
ldd
in a binary from Debian if the output can be so loosely related to how things will be actually tried on /compat/linux "CentOS".In the end, my question is: would getting the libs from CentOS rather than other distros be of any help since that's what /compat/linux is based on? Or it makes no difference at all and doesn't matter from where I get my libs as long as they're properly set so the loader finds what it wants to, in the path where it looks at?
OBS: Let's assume that every version number matches exactly the output of
ldd
, so we can focus on the main question of whether its origin is of relevance and how much.I'm well aware of having lots, lots of threads about Linux compatibility. None I've read so far managed to answer my question. The closest I've found had a reply mentioning the problem of libs that could had been compiled against different libs or versions of a given library. That, however, was pretty much the whole point in that answer - which is valid, but lacked more context, or conditions. It was presented as an explaining to "how things could not end well", but as if could happen regardless of anything but chance. Or so I failed to grasp anything beyond this point. I'm asking here if there's some degree of "narrowing down", be it as broad as just coming from "CentOS" or tighter, like coming from "CentOS 7", "CentOS 7.Y", "CentOS 7.Y.Z", of if the only way of being sure is checking each and every library individually - what would be rather extreme and make me wonder how CentOS could work itself in such conditions, but as long as I lack the proper understanding, I won't overlook any possibility by sounding "absurd" or "far-fetched"
Thanks in advance.