0

Goal: Get a recent version of firefox running on Centos 6.10 32bit

Problem: When trying to download and run any version of firefox newer than 49.0.2 from [https://ftp.mozilla.org/pub/firefox/releases/][1] it fails, usually complaining about the glibc version.

Example: firefox 50.1.0: /usr/lib/libstdc++.so.6: version GLIBCXX_3.4.15' not found (required by /usr/local/firefox/libxul.so) Couldn't load XPCOM.`

Things I've tried: I can get versions 50-70 working by compiling gcc-6.5.0, installing it to /opt/alt-libs-gcc-6.5.0, getting a version of gtk3 compiled on centos 6 installing it to /opt/gtk3 then running LD_LIBRARY_PATH=/opt/alt-libs-gcc-6.5.0:/opt/gtk3/lib /usr/local/firefox/firefox. There's a few other libraries I had to find or compile as well (libcanberra, libcairo, some gdk libs, etc)

After version 70.0.1, I can get it to open using the same method above, but adding the -safe-mode parameter. It opens up the window, and I can type in a website, but as soon as I hit enter, the url disappears and it doesn't load the page. The terminal also shows a number of GLib-GObject-CRITICAL warnings and errors.

I tried spinning up a Rocky Linux 8 vm, installed the required packages, and downloaded and ran firefox 109.0.1. Then grabbed the entire /lib folder and copied it over to /opt/rocky on my Centos 6.10 vm. However, when I try to run firefox using the rocky ld-linux/linker /opt/rocky/ld-linux.so.2 --library-path /opt/rocky /usr/local/firefox/firefox -safe-mode it fails with Exec failed with error: No such file or directory

I tried running /opt/rocky/ld-linux.so.2 --library-path /opt/rocky /usr/local/firefox/firefox -safe-mode on the Rocky vm and I get the same error. And that's why I'm here. How come firefox won't run on the same vm, with the same libs, the same ld-linux just relocated to a new folder? It seems like I have to be missing something, or I'm trying to use the linker incorrectly. But anywhere I find examples, mine looks perfectly valid.

LD_DEBUG=all /opt/rocky/ld-linux.so.2 --library-path /opt/rocky /usr/local/firefox/firefox -safe-mode spits out a mountain of text (as expected) before the error, and some after it, but it doesn't seem to point to anything. The error is just there, with no issues or warnings preceding it.

      2329: symbol=__fprintf_chk;  lookup in file=/usr/local/firefox/firefox [0]
      2329: symbol=__fprintf_chk;  lookup in file=/opt/rocky/libpthread.so.0 [0]
      2329: symbol=__fprintf_chk;  lookup in file=/opt/rocky/libdl.so.2 [0]
      2329: symbol=__fprintf_chk;  lookup in file=/opt/rocky/libstdc++.so.6 [0]
      2329: symbol=__fprintf_chk;  lookup in file=/opt/rocky/libm.so.6 [0]
      2329: symbol=__fprintf_chk;  lookup in file=/opt/rocky/libgcc_s.so.1 [0]
      2329: symbol=__fprintf_chk;  lookup in file=/opt/rocky/libc.so.6 [0]
      2329: binding file /usr/local/firefox/firefox [0] to /opt/rocky/libc.so.6 [0]: normal symbol `__fprintf_chk' [GLIBC_2.3.4]
Exec failed with error: No such file or directory
      2329: 
      2329: calling fini: /usr/local/firefox/firefox [0]
      2329: 
      2329: 
      2329: calling fini: /opt/rocky/libpthread.so.0 [0]
      2329: 
      2329: 
      2329: calling fini: /opt/rocky/libdl.so.2 [0]
      2329: 
      2329: 
      2329: calling fini: /opt/rocky/libstdc++.so.6 [0]

Possibly useful info, or maybe just a rabbit hole: I tried changing the linker, needed libs and r-path for the binary using patchelf, and it made no difference. I checked the needed libs for libxul.so and discovered it lists the linker as well, even though I don't think it's a binary.

/lib/ld-linux.so.2 (0xb776c000)

If I attempted to change it using patchelf, it doesn't replace it in the list, it just adds my other linker into the list as well , and apparently breaks libxul.so because firefox fails to run immediately after the change.

I also tried compiling firefox on Centos 6.10, (which involved hunting down and compiling a bunch of other things) but the end result is exactly the same, and it doesn't run, just like the official binary from the site. That said, there might be some settings or parameters I can apply when compiling that might fix all this, I just have no idea what they might be.

Other notes: The epel repo for Centos 6.10 provided firefox version 78.5, so clearly someone got it working past version 70 on Centos 6.10. Maybe there's a way I could use that package to find out how they made it work?

Questions: Any ideas on how to make this work? Am I attempting to transplant the libs and linker incorrectly? Can I do something to make my own compile work?

Info:

uname -r
4.4.246-1.el6.elrepo.i686
0

1 Answer 1

0

CentOS 6 has been EOL since November 30th 2020 and stopped receiving new features in 2017. Even after this occurs with an OS, it is possible to compile newer libraries than what is available from the system repos so that newer software will run but eventually even that won't work because compatibility issues will occur. That is what you are seeing right now. Rather than going through all of this rigmarole, it is better to use a more recent OS.

If you need it to be CentOS, then there is CentOS Stream 9 which is still receiving new features more recent versions Firefox will run on that system. CentOS 7 is supported until next year but stopped receiving new features in Nov. 2020 and EOL for CentOS 8 was 12/31/2021 so there's no reason to use those.

On another note, as CentOS Stream a rolling release with a lot of untested and beta software, Alma Linux and Rocky Linux are binary compatible with CentOS and the latter is a project of one of the original founders of CentOS itself. Firefox 102 is available in the system repos of both Alma and Rocky and I've verified that later releases of Firefox runs on both without needing to compile extra software.

If you have other software that absolutely needs CentOS 6, then you can still run it inside of a CentOS 6 container via software such as podman. I recommend overall that you use a supported OS rather than one that is not only no longer receiving newer software but is also going to be accessing the internet without an security patches. That leaves it completely open to malware.

7
  • I'm well aware that it's way out of support, but I don't have any control over what is used. (and I've already recommended moving to something newer) A library and linker transplant should work though, so I'm curious why my attempt to do that on Rocky 8 doesn't work. (meaning, how come on rocky 8, if I copy the needed libs and linker to a new directory, it fails to run ff?)
    – capberter
    Commented May 4, 2023 at 13:44
  • I would have just asked about why copying the libs and running from a new location in rocky 8 didn't work, but I figured it would be helpful for everyone to know why I was trying to do it, rather than getting into an xy problem scenario.
    – capberter
    Commented May 4, 2023 at 13:52
  • @capberter I understand that you may not have any control which is why I mentioned that sooner or later, you'll run into an issue like this. When it comes to the needed libraries, sometimes copying them from elsewhere works but the best way is to compile them from the source code and prepend the directory to the LD_LIBRARY_PATH. I'm not familiar with your system but I've been able to run Firefox 109 on Rocky Linux 8 with the system libraries. Perhaps there is something in your environment that is conflicting. Commented May 4, 2023 at 13:58
  • I think you mis-understand what isn't working in Rocky, so let me clarify: On Rocky 8, I can install the repo package or download the binary from ff and both run just fine. (as expected) However, if I copy the needed libraries to a new location (/opt/rocky) still on the rocky 8 machine, just a new folder with libraries ff needs, and then try to run the ff binary with this command: '/opt/rocky/ld-linux.so.2 --library-path /opt/rocky /usr/local/firefox/firefox' It doesn't work and gives this error: 'Exec failed with error: No such file or directory'
    – capberter
    Commented May 4, 2023 at 14:09
  • @capberter If the version from the repo and the downloaded binaries already work, then why do you need that command? You can just run the binary from the directory itself. Commented May 4, 2023 at 14:49

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .