패키지 관리자는 시스템 아키텍처와 호환되는 라이브러리를 어떻게 설치합니까?

패키지 관리자는 시스템 아키텍처와 호환되는 라이브러리를 어떻게 설치합니까?

예를 들어 내가 글을 쓸 때

sudo apt-get install libjpeg-dev

libjpeg.so내 시스템에 라이브러리가 설치 됩니다 .

이제 온라인 패키지 저장소에는 .so다양한 시스템 아키텍처에 대한 다양한 파일이 포함되어 있으며 패키지 관리자는 올바른 파일만 다운로드합니까? 아니면 패키지 관리자가 시스템에서 라이브러리를 컴파일하고 컴파일된 .so파일을 설치합니까? 아니면 제가 고려하지 않은 다른 시나리오가 있나요?

답변1

대부분의 경우 패키지 저장소에는 다양한 아키텍처에 대한 다양한 패키지가 포함되어 있으며 패키지 관리자는 적절한 패키지를 다운로드합니다. 일부 패키지는 모든 아키텍처에서 동일하며 패키지 관리자는 로컬 시스템의 아키텍처에 관계없이 동일한 패키지를 다운로드합니다.

따라서 패키지가 다운로드됩니다 amd64.apt install libjpeg-devall건축을 위해, 그 자체는 패키지에 따라 다릅니다.amd64건축을 위해.

dpkg/ 기반 시스템 에서 apt기본 아키텍처는 패키지 아키텍처입니다 dpkg. 이러한 시스템이 다른 아키텍처를 사용하도록 구성한 다음 해당 패키지를 설치하려는 경우 기본이 아닌 적절한 아키텍처(멀티 아키텍처를 준수하는 경우)를 지정해야 합니다.

sudo apt install libjpeg62-turbo:armhf

Gentoo와 같은 바이너리 기반 배포판이 아닌 소스 기반 배포판은 소스 코드를 다운로드하고 시스템용 라이브러리를 구축합니다.

답변2

최신 배포판에는 기본적으로 올바른 아키텍처로 구성된 dpkg가 함께 제공됩니다.

amd64용 배포판이 설치되어 있는 경우 아직 amd64 아키텍처에 사용할 수 없는 일부 소프트웨어의 바이너리 배포판을 사용해야 하는 경우 아키텍처 i386을 추가하여 32비트 실행 환경을 설치할 수도 있습니다.

이제 온라인 패키지 저장소에는 .so다양한 시스템 아키텍처에 대한 다양한 파일이 포함되어 있으며 패키지 관리자는 올바른 파일만 다운로드합니까? 아니면 패키지 관리자가 시스템에서 라이브러리를 컴파일하고 컴파일된 .so파일을 설치합니까? 아니면 제가 고려하지 않은 다른 시나리오가 있나요?

분포에 따라 다릅니다. 많은 인기 배포판(예: APT 또는 YUM을 사용하는 배포판)은 공유 개체를 빌드하는 대신 다운로드합니다. 그러나 다시 말하지만 분포에 따라 다릅니다.

답변3

RPM 기반 배포판에는 다양한 아키텍처용 패키지(예: 인텔 32비트 및 64비트 x86용 )가 포함되어 있으며 바이너리(문서, 스크립트 등)가 포함되지 않은 패키지 x86_64도 있습니다 . noarch기본적으로 컴퓨터 아키텍처와 일치하는 패키지만 설치되며(noarch 패키지도 지원됨) 다른 아키텍처(예: 크로스 컴파일)를 명시적으로 요청할 수 있습니다. 나중에 설치된 패키지는 정상적으로 업그레이드됩니다.

관련 정보