임시 디렉토리에 설치하시겠습니까?

임시 디렉토리에 설치하시겠습니까?

나는 다음을 수행하고 싶습니다 :

라이브러리 등으로 컴파일/링크하기 위해 오픈 소스 프로젝트를 만듭니다. 그러나 실제로 이것을 로컬에서 실행하고 싶지는 않습니다. 다른 컴퓨터(물론 유사한 아키텍처를 가짐)의 올바른 디렉터리에 설치할 수 있도록 이를 rpm으로 패키징하고 싶습니다. /usr/local 아래에 설치하려는 것처럼 컴파일하고 링크하고 심볼릭 링크를 생성하기를 원하지만 실제로는 /usr/local/ 아래의 디렉터리로 이동하는 것이 아니라 다음과 같은 임시 디렉터리로 이동하기를 원합니다. 다른 패키지에 의해 배치된 파일을 삭제하지 않고 지워질 수 있습니다.

이를 가능하게 하는 설치 매개변수가 있습니까? 즉, 예를 들어 아래에 설치되는 것처럼 빌드되지만 /usr/local실제로는 "설치"를 아래에 배치합니다 .~/tmp/usr/local

단순히 make install을 실행하지 않고 make에서 중지하는 방법을 살펴보았는데, 이로 인해 소스 디렉터리의 실행 파일, 개체 코드 및 라이브러리가 혼합됩니다.

답변1

이 질문에 대한 대답은 이 방식으로 설치하려는 오픈 소스 프로젝트에 따라 다릅니다. 일반적인 대답은 일부 오픈 소스 프로젝트에는 이 목적을 위해 선택적 변수를 제공하는 Makefile이 있다는 것입니다. 이에 대한 한 가지 구체적인 예는 최상위 Makefile이 DESTDIR변수를 사용하는(그러나 할당하지는 않은 것으로 보이는) gdb입니다. gdb 빌드 디렉터리에서 이 명령을 실행하면,

make DESTDIR=/tmp install

/tmp파일을 복사하기 전에 각 대상 경로 앞에 추가됩니다 .

또 다른 더 어려운 접근 방식은 chroot 환경에서 전체 빌드, 설치 및 모든 작업을 수행하는 것입니다. 다음과 같은 것을 사용하여오버레이FS더 쉽게 만들 수 있지만 일반적으로 저항이 가장 적은 경로는 아닙니다.

이미 데비안 버전(우분투 포함)을 사용하고 있다면 더 쉬운 또 다른 가능성은 오픈 소스 프로젝트에 해당하는 데비안 소스 패키지를 가져오는 것입니다. 해당 소스 패키지) 지침에 따라 해당 소스에서 Debian 패키지를 빌드하세요. .rpma가 아닌 a가 정말로 필요한 경우 a를 a로 .deb변환할 수 있습니다 . 또는 아마도 를 빌드하는 과정에서 남겨진 디렉토리 구조에서 a를 구성할 수도 있습니다 ..deb.rpm.rpm.deb이 답변소스에서 데비안 패키지를 빌드하는 방법에 대한 정보 소스 중 하나입니다.

최신 openssl(의견에서 언급되었지만 아직 질문에서는 언급되지 않은)설치하다파일은 다음과 같이 말합니다.

 Package builders who want to configure the library for standard
 locations, but have the package installed somewhere else so that
 it can easily be packaged, can use

   $ make DESTDIR=/tmp/package-root install         # Unix
   $ mms/macro="DESTDIR=TMP:[PACKAGE-ROOT]" install ! OpenVMS

 The specified destination directory will be prepended to all
 installation target paths.

이는 버전에 따라 다릅니다 openssl. 1.0.2용설치하다이렇게 말합니다:

 Package builders who want to configure the library for standard
 locations, but have the package installed somewhere else so that
 it can easily be packaged, can use

   $ make INSTALL_PREFIX=/tmp/package-root install

 (or specify "--install_prefix=/tmp/package-root" as a configure
 option).  The specified prefix will be prepended to all
 installation target filenames.

세부 사항이 약간 다를 뿐 아이디어는 거의 동일합니다.

관련 정보