[c] DESTDIR 및 PREFIX of make

특정 디렉토리에 소프트웨어를 설치하려고합니다. 여러 가지 방법을 찾았지만 그 차이점이 무엇인지 잘 모르겠습니다.

  1. ./configure --prefix=***
  2. make install DESTDIR=***
  3. make install prefix=***

이 세 가지 기능에 대해 혼란 스럽습니다. 그들은 같은 목표를 달성합니까?



답변

./configure --prefix=***

숫자 1 은 패키지가 설치 될 때 이동할 위치와 실행될 때 연관된 파일을 찾을 위치를 결정합니다. 단일 호스트에서 사용하기 위해 무언가를 컴파일하는 경우 사용해야합니다.


make install DESTDIR=***

2 번은 패키지가 실행될 곳이 아닌 임시 디렉토리에 설치하기위한 것입니다. 예를 들어 이것은 deb패키지를 빌드 할 때 사용됩니다 . 패키지를 만드는 사람은 실제로 모든 것을 자신의 시스템의 최종 위치에 설치하지 않습니다. 이미 다른 버전이 설치되어있어 방해하고 싶지 않거나 루트가 아닐 수도 있습니다. 그래서 그는

./configure --prefix=/usr

따라서 프로그램이 /usr실행될 때 설치 될 것으로 예상 됩니다.

make install DESTDIR=debian/tmp

실제로 디렉터리 구조를 만듭니다.


make install prefix=***

3 번은 다른 위치에 설치하지만 모든 디렉토리를 만들지는 않습니다 DESTDIR=/foo/bar/baz. 일반적으로 GNU stow via

./configure --prefix=/usr/local && make && sudo make install prefix=/usr/local/stow/foo

, 바이너리를 /usr/local/stow/foo/bin. 이에 비해

make install DESTDIR=/usr/local/stow/foo

바이너리를 /usr/local/stow/foo/usr/local/bin.


답변

이는 DESTDIR--prefix( 여기에서 ) 사용을 설명하는 데 도움이 될 수 있습니다 .

–prefix 및 DESTDIR을 사용한 다중 설치 :

구성시 각 빌드에 대해 다른-접두사 위치 / 옵션을 구분합니다. 예 :

untar petsc tar ball
./configure --prefix=/opt/petsc/petsc-3.9.0-mpich --with-mpi-dir=/opt/mpich
make
make install DESTDIR=/tmp/petsc-pkg
untar petsc tar ball
./configure --prefix=/opt/petsc/petsc-3.9.0-openmpi --with-mpi-dir=/opt/openmpi
make
make install DESTDIR=/tmp/petsc-pkg

답변

에서 openssl/INSTALL

표준 위치에 대해 라이브러리를 구성하고 싶지만 패키지를 쉽게 패키징 할 수 있도록 다른 곳에 패키지를 설치 한 패키지 빌더는 다음을 사용할 수 있습니다.

$ make INSTALL_PREFIX=/tmp/package-root install

(또는 구성 옵션으로 “–install_prefix = / tmp / package-root”지정). 지정된 접두사는 모든 설치 대상 파일 이름 앞에 추가됩니다.

이것은 비표준이지만 INSTALL_PREFIX는 다른 프로그램에서 사용됩니다.

이것은 1.1.x 이전의 OpenSSL 버전에서 작동합니다. OpenSSL 1.1.x 이상은 일반적인 DESTDIR.


답변