glibc의 바이너리 빌드를 설치하는 쉬운 방법이 있습니까?


13

몇 번이고 다음과 같은 질문이 있습니다.

다음은 일반적으로 추진하는 솔루션 유형입니다.

이것이 우리가 할 수있는 최선입니까? GLIBC의 바이너리 빌드가 없다면 단순히와 같은 디렉토리에 압축을 풀고 문제없이 /opt/myglibc설정 $LD_LIBRARY_PATH하거나 무엇이든 설정하고 원하는 응용 프로그램을 실행할 수 있습니까?

GLIBC 2.14가 필요한 것으로 보이는 최신 Chrome 빌드 (28+)와 같은 애플리케이션?

참고 : 이 글 제목 : Chrome 29 출시 – tecmint.com의 RHEL / CentOS 6 및 Fedora 19/15 에 설치라는 것이 궁극적으로 제가 생각한 것입니다.

참고 문헌

답변:


1

그것이 다른 라이브러리를위한 것이지만 glibc라면 ... glibc는 물건이 "하드 코딩 된"장소이기 때문에 빠른 방법이 없을 것이라고 생각합니다. glibc는 커널 버전에 적합하며 로더는 실제로 올바른 작업을 수행하는 인스턴스입니다 LD_LIBRARY_PATH.

아마도 올바른 방법은 다음과 같습니다.

LD_LIBRARY_PATH="/opt/myglibc/;..." /opt/myglibc/ld-linux.so.2 the_program`

그래도 작동하는지 확실하지 않습니다.

어쨌든 검색 경로가 때때로 연결되고 glibc가 항상 OS / 커널에 맞아야하므로 대체 glibc를 사용하려면 아직 프레임 워크를 구현해야한다고 생각합니다. 따라서 일반 바이너리, IMO는있을 수 없습니다. 데비안의 멀티 아키는 사소한 것이 아니라 여전히 할 수 있음을 보여줍니다. 대상 아키텍처 외에 라이브러리를 식별 할 수있는 다른 방법이 있어야한다면.

웹 사이트에서 방금 다른 관련 스레드를 제공했습니다.

거기에 허용되는 답변에는 glibc 문제를 해결하는 것으로 보이는 rtldi 라는 프로그램에 대한 링크가 포함되어 있습니다. 2004 년부터는 더 이상 링커에서 제대로 작동하지 않을 수도 있지만 조사해 볼 가치가 있습니다. 소스는 GPLv2입니다.

여호 바, 여호 바

내 친구가 공유 라이브러리의 실제 사용이 과대 평가되었다는 생각을 한 번 생각해 냈습니다. 그는 공유 라이브러리가 컴퓨터의 메모리를 중복으로 채우지 않는 것이 좋지만 개별 응용 프로그램 인스턴스를 고려하면 몇 MB에 불과하다는 점을 지적합니다.

자체 glibc 제공과 같은 작업에 의존하는 응용 프로그램은 거의 없습니다. 긴 분석 시간을 절약하면 작업을 완료한다는 의미에서 "직접 응용 프로그램"이라고합니다. 예를 들어 웹 브라우저, 메일 사용자 에이전트, 사무복 및 음악 플레이어를 통해 사용자는 원하는 것을 얻을 수 있으며 사용자 당 몇 개의 인스턴스 만 있습니다. 다른 한편으로, 시스템 서비스, 창 관리자, 심지어 전체 데스크탑 환경까지도 모두 매우 중요하지만, 지원이 가능하고 종종 충분히 드물거나 중요하지 않기 때문에 사람들은 자신의 glibc를 기꺼이 제공 할 것입니다.

"즉시 응용 프로그램"의 수는 사용자 당 절대적으로 적으며 요즘 "기본"OS 및 DE가 생성하는 것과 비교하여 상대적으로 적습니다. Chrome, Firefox와 같은 즉각적인 응용 프로그램이 정적으로 컴파일 된 경우 평균 시스템에 대한 추가 메모리 요구 사항은 몇 100MB입니다. 오늘날의 수많은 GB 시스템에서는 그다지 멀지 않은 논쟁은 즉각적인 애플리케이션을위한 정적 인 링크가 옵션이 될 수 있습니다.

엄청나게 빠른 스왑 인 / 아웃을 허용하는 스왑 공간 및 SSD의 개념도 있으며, 이는 증가하는 메모리 요구 사항을 처리하는 데 도움이됩니다.

여기에서 논의 된 glibc 문제는 정적 링크를 통해 실제로 해결되지는 않지만 웹 브라우저와 같은 응용 프로그램의 경우 X 프로토콜, 일부 사운드 데몬 및 일부 커널이 유일한 인터페이스로 포함되는 일종의 자체 포함 배포 형식을 고려할 수 있습니다. 장점은 라이브러리 버전 비 호환성이 줄어든다는 것입니다.


2
"우리는 여기에 몇 가지 약 100MB 얘기" , 어를 전혀. 대부분의 라이브러리 자체는 그다지 크지 않지만 (100MB 이상의 두 배 정도 시도 du -h /lib) 시도 할 수 있지만 정적으로 컴파일 된 경우 크기의 RAM이 필요합니다. 그리고 모든 응용 프로그램은 그것들과 함께 컴파일되었습니다. 예를 들어 동일한 라이브러리 스택을 사용하는 두 개의 앱이 있으므로 이제 두 배의 메모리가 필요합니다. 세 개의 앱? 세 배나. 캐싱의 이점을 크게 무효화 할 것입니다 ...
goldilocks

2
... 물론 glibc를 캐시 할 수 없었기 때문에 실행되는 모든 응용 프로그램의 사본을 캐시해야합니다 (== 우스운). 요컨대, 현대 운영 체제는 공유 객체와 같은 현대 기술이 아니라면 현대 하드웨어에서 완전히 단순하고 단순 하게 불가능 합니다. 조금 더 많은 메모리가 필요하지 않습니다. 10 ~ 100 배나 더 많은 메모리가 필요합니다.
goldilocks

내 데비안의 235MB /lib는 커널 모듈입니다. 예, /usr/lib4GB이지만 개별 프로그램에 필요한 양에 대한 결론을 정확하게 내릴 수 없습니다. 프로세서 캐시는 단지 몇 MB입니다. 최근 웹 브라우저와 같은 메모리 소비로 인해 정적으로 링크 된 바이너리가 캐싱에 미치는 영향도 크지 않으며 동시에 실행되는 프로그램의 양이 줄어들지 않습니다. 또한 상대적으로 작은 캐시 때문에. 내 견적은 당신보다 더 정확 해 보입니다. 예
Bananguin

정적 링크와 관련된 다른 큰 문제는 말할 것도없고 업데이트는 PITA입니다. glibc에 보안 문제가있는 경우 별다른 문제가 없습니다. glibc를 업그레이드하고 프로그램을 다시 시작하십시오. OTOH, 귀하의 프로그램은 정적으로 링크되었으므로 모든 프로그램 의 새 버전을 다운로드해야합니다 . 그리고 배포판은 전체 배포판을 다시 컴파일해야합니다.
derobert

1
@derobert : 공정한 것 같습니다. 분명히 내 주장은 과장된 것입니다. 여기서는 1.8GB가 521MB를 차지했습니다. 따라서 30 % 증가 할 것입니다. 물론 이는 여전히 장점없는 전략의 판매 지점이 아닙니다 (그러나 "30 % 더 많은 RAM 만 필요").
goldilocks
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.