데비안에는 make install을 위한 가상 환경이 있나요?

데비안에는 make install을 위한 가상 환경이 있나요?

Python virtualenv를 사용하는 사람은 우리 자신의 환경에서 스크립트를 실행하고 필요한 모든 라이브러리를 설치할 수 있으며 이것이 기본 Python 배포에 영향을 미치지 않는다는 것을 알고 있습니다.

Linux(Debian) 세계에도 유사한 make유틸리티가 있습니까?

  1. 시나리오 1: 소스 코드를 다운로드했고 어떤 종속성이 필요한지 알고 있습니다. 내 홈 디렉토리 어딘가에 라이브러리를 두고 make유틸리티에 라이브러리를 검색할 위치를 명시적으로 알려줍니다.
  2. 시나리오 2: 유틸리티에 대해 일종의 virtualenv를 실행하고 make거기에서 호출하므로 apt-get install lib-required-dev다운로드한 라이브러리가 이 가상 환경에 배치되고 내 OS를 오염시키지 않습니다. 그런 다음 나는 달렸다 make.

답변1

사례 1은 적어도 일부 프로그램의 경우 상대적으로 간단합니다. 대부분의 소스 코드 패키지에는 configure필수 라이브러리의 가용성을 확인하는 스크립트가 포함되어 있습니다. 이러한 스크립트에는 검색 경로를 지정하는 옵션이 있는 경우가 많습니다. 예를 들어 --lib-prefix. 이렇게 하면 Makefile을 직접 수정할 필요조차 없습니다. 이제 이것이 작동하는지 여부는 종속성이 얼마나 복잡한지에 따라 다르지만 시도해 볼 가치가 있습니다.

옵션 2의 경우 다음 프로그램이 있습니다 chroot.

   chroot - run command or interactive shell with special root directory

chroot특정 파일과 디렉터리가 존재해야 합니다. 세부 사항은 정확히 무엇이 필요한지에 따라 달라집니다(예: 그것이 필요합니까 /dev? 필요합니까 /proc?). chroot루트로서 다음과 같은 최소한의 환경을 얻을 수 있습니다 :

mkdir foo
cp -r /bin /lib /lib64 foo/
chroot foo

마지막 명령은 해당 디렉터리로 이동 foo하고 기본 셸을 실행합니다 . 제가 설명한 절차는 단순화된 것입니다 foo. 예를 들어, 모든 것이 필요하지는 않습니다. 수행하려는 작업에 따라 더 많은 디렉터리가 필요할 수 있습니다. 마지막으로 디렉터리를 환경에 연결하는 방법을 사용할 수도 있지만 실제 운영 체제와 완전히 독립되기를 원하는 경우에는 사용할 수 없습니다.//libmount bindchroot

이러한 놀이터를 만드는 쉬운 방법은 작은 파티션을 선택하고 해당 파티션에 최소한의 시스템을 설치하는 것입니다. 그런 다음 chroot(항상 루트로) 다음과 같이 간단히 수행할 수 있습니다 .

mount /dev/sda2 foo/
chroot foo/

당연히 sda2최소 시스템을 설치한 파티션으로 변경하십시오. 자세한 내용은 다음 링크를 참조하세요.

답변2

terdon의 대답이 맞습니다.

더 복잡하지만 더 영구적인 또 다른 방법은 실제로 가상 환경을 생성하는 것입니다(virtualbox가 제가 선택한 것입니다). 사용 중인 운영 체제의 기본/표준 버전을 사용하여 새 가상 머신을 생성하고 해당 머신의 상태를 저장한 후 설치를 시작합니다. 일반 시스템에서와 마찬가지로 종속성도 있습니다. 컴파일이 완료되면 가상 머신을 원래 상태로 다시 재설정할 수 있습니다.

원격 서버 환경에서 헤드리스 작업을 확실히 수행할 수 있지만 로컬 시스템(또는 전달된 X 세션이 있는 원격 시스템)에서 가상 시스템을 생성하는 것이 훨씬 쉽다는 점은 주목할 가치가 있습니다. 좋은 기본 가상 머신이 있으면 액세스 방법을 아는 경우 가상 머신을 내보낼 수 있습니다.

관련 정보