특정 디렉토리에 소프트웨어를 설치하려고합니다. 여러 가지 방법을 찾았지만 그 차이점이 무엇인지 잘 모르겠습니다.
./configure --prefix=***
make install DESTDIR=***
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
.