목표: Centos 6.10 32비트에서 실행되는 최신 버전의 Firefox 받기
문제: [https://ftp.mozilla.org/pub/firefox/releases/][1]에서 49.0.2보다 높은 Firefox 버전을 다운로드하여 실행하려고 하면 일반적으로 glibc 버전에 대해 불평하면서 실패합니다.
예: firefox 50.1.0:
/usr/lib/libstdc++.so.6: version
GLIBCXX_3.4.15'를 찾을 수 없습니다(/usr/local/firefox/libxul.so에 필요) XPCOM을 로드할 수 없습니다. `
내가 시도한 것: gcc-6.5.0을 컴파일하고 에 설치하고 /opt/alt-libs-gcc-6.5.0
centos 6에서 gtk3 버전을 컴파일한 다음 설치하여 실행하면 /opt/gtk3
버전 50-70이 작동하도록 할 수 있습니다 LD_LIBRARY_PATH=/opt/alt-libs-gcc-6.5.0:/opt/gtk3/lib /usr/local/firefox/firefox
. 또한 다른 라이브러리(libcanberra, libcairo, 일부 gdk 라이브러리 등)를 찾거나 컴파일해야 했습니다.
버전 70.0.1 이후에는 위와 동일한 방법을 사용하여 열 수 있지만 매개변수가 추가되었습니다 -safe-mode
. 창이 열리고 웹사이트에 입력할 수 있지만 Enter를 누르자마자 URL이 사라지고 페이지가 로드되지 않습니다. 터미널에는 또한 많은 GLib-GObject-CRITICAL 경고 및 오류가 표시됩니다.
Rocky Linux 8 가상 머신 부팅을 시도하고 필요한 패키지를 설치한 다음 Firefox 109.0.1을 다운로드하여 실행했습니다. 그런 다음 전체 /lib 폴더를 가져와 /opt/rocky
Centos 6.10 가상 머신에 복사했습니다. 하지만 rocky ld-linux/linker를 사용하여 Firefox를 실행하려고 하면 /opt/rocky/ld-linux.so.2 --library-path /opt/rocky /usr/local/firefox/firefox -safe-mode
실패합니다.Exec failed with error: No such file or directory
Rocky 가상 머신에서 실행을 시도했지만 /opt/rocky/ld-linux.so.2 --library-path /opt/rocky /usr/local/firefox/firefox -safe-mode
동일한 오류가 발생했습니다. 그것이 내가 여기 있는 이유이다.Firefox가 동일한 가상 머신, 동일한 라이브러리, 동일한 ld-linux(새 폴더로 재배치됨)에서 실행되지 않는 이유는 무엇입니까?뭔가 빠진 것이 있거나 링커를 잘못 사용하려고 하는 것 같습니다. 그러나 사례를 찾을 때마다 내 사례가 완전히 타당해 보입니다.
LD_DEBUG=all /opt/rocky/ld-linux.so.2 --library-path /opt/rocky /usr/local/firefox/firefox -safe-mode
예상대로 오류 이전과 오류 이후에 많은 텍스트가 표시되지만 아무 것도 가리키는 것 같지 않습니다. 이전 문제나 경고 없이 오류가 발생했습니다.
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]
유용한 정보일 수도 있고 아니면 그냥 토끼굴일 수도 있습니다. 나는 patchelf를 사용하여 바이너리의 링커, 필수 라이브러리 및 r 경로를 변경하려고 시도했지만 아무것도 변경되지 않았습니다. 필요한 라이브러리에 대해 libxul.so를 확인한 결과 링커도 나열되어 있음을 발견했습니다. 비록 바이너리라고 생각하지는 않았지만요.
/lib/ld-linux.so.2 (0xb776c000)
patchelf를 사용하여 이를 변경하려고 하면 목록에서 이를 대체하지 않고 다른 링커도 목록에 추가할 뿐이며 분명히 libxul.so가 손상됩니다. 변경 후 Firefox가 즉시 실행되지 않기 때문입니다.
또한 Centos 6.10에서 Firefox 컴파일을 시도했지만(다른 여러 가지 검색 및 컴파일 포함) 최종 결과는 사이트의 공식 바이너리처럼 정확히 동일하고 작동하지 않습니다. 즉, 이러한 모든 문제를 해결하기 위해 컴파일 타임에 적용할 수 있는 몇 가지 설정이나 매개변수가 있을 수 있지만 그것이 무엇인지는 모르겠습니다.
추가 참고 사항: Centos 6.10용 epel 저장소는 Firefox 버전 78.5를 제공하므로 누군가 Centos 6.10에서 버전 70 이후에 작동하도록 만든 것 같습니다. 어쩌면 해당 패키지를 사용하여 어떻게 작동하는지 확인할 수 있는 방법이 있을까요?
질문: 이 작업을 수행하는 방법에 대한 아이디어가 있습니까? 라이브러리와 링커를 잘못 포팅하려고 했나요? 나만의 편집 작업을 만들기 위해 할 수 있는 일이 있나요?
정보:
uname -r
4.4.246-1.el6.elrepo.i686
답변1
CentOS 6은 2020년 11월 30일부로 중단되었으며 2017년에는 새로운 기능 제공이 중단되었습니다. 운영 체제에 이런 일이 발생하더라도 최신 소프트웨어를 실행하기 위해 시스템 저장소에 있는 라이브러리보다 최신 라이브러리를 컴파일하는 것은 가능하지만 궁극적으로는 호환성 문제가 발생하므로 이마저도 작동하지 않게 됩니다. 이것이 지금 당신이 보는 것입니다. 이 모든 지루한 작업을 수행하는 것보다 최신 운영 체제를 사용하는 것이 좋습니다.
CentOS가 필요한 경우 CentOS Stream 9는 여전히 새로운 기능을 받고 있으며 최신 버전의 Firefox가 시스템에서 실행됩니다. CentOS 7은 내년까지 지원되지만 2020년 11월부터 새로운 기능을 받지 못하게 되었고, CentOS 8은 2021년 12월 31일을 기점으로 지원 종료일이 되니 이런 기능을 사용할 이유가 없습니다.
반면 CentOS Stream은 테스트되지 않은 베타 소프트웨어가 많이 포함된 롤링 릴리스이기 때문에 Alma Linux 및 Rocky Linux는 CentOS 자체의 원래 창립자 중 한 사람의 프로젝트인 CentOS와 바이너리 호환됩니다. Firefox 102는 Alma와 Rocky의 시스템 저장소에서 사용할 수 있으며, Firefox의 후속 버전은 추가 소프트웨어를 컴파일할 필요 없이 두 시스템 모두에서 실행될 것임을 확인했습니다.
CentOS 6이 반드시 필요한 다른 소프트웨어가 있는 경우에도 podman
. 인터넷에 접속하기 위한 운영체제. 이로 인해 악성 코드에 완전히 취약해집니다.