기본 디렉토리가 아닌 설치합니까?


148

'make install'을 실행하여 필요한 모든 것을 갖추고 있지만 시스템의 / usr / bin 등과 반대로 자신의 폴더에 물건을 설치하고 싶습니다. 가능합니까? / usr / bin 등의 도구를 참조하더라도?


3
프로젝트를 이미 빌드했고 접두사없이 ./configure를 실행하고 사용자 정의 경로에 설치하려는 경우 stackoverflow.com/a/17679654/313113
bitek

답변:


213

패키지에 따라 다릅니다. Makefile이 GNU autotools ( ./configure)에 의해 생성되면 일반적으로 다음과 같이 대상 위치를 설정할 수 있습니다.

./configure --prefix=/somewhere/else/than/usr/local

Makefile이 autotools에 의해 생성되지 않고 소프트웨어와 함께 배포되는 경우 편집기에서 열어서 변경하십시오. 설치 대상 디렉토리가 변수에 정의되어있을 수 있습니다.


9
make && make install구성 절을 따라?
nass

1
내가 가진 문제 --prefixstrings나중에 결과 바이너리 를 실행 하면 경로가 내부에 저장되어 있다는 것을 알 수 있습니다. 왜 이런 일이 발생했는지 모르겠지만 다른 사용자에게 제공하는 바이너리의 컴퓨터 경로를 원하지 않습니다.
Erik Aigner

Erik, 소스에서 빌드하는 경우 어쨌든 실행 경로에 대한 참조가있는 것처럼 보입니다.
Konstantin Rybakov

44

어떤 버전의 automake를 알지 못하므로 DESTDIR 환경 변수를 사용할 수 있습니다 .
Makefile을 참조하십시오.

예를 들면 다음과 같습니다.

 export DESTDIR="$HOME/Software/LocalInstall" && make -j4 install

9
--prefix 명령 줄 인수없이 configure를 실행하고 이미 프로젝트를 빌드했지만 기본 위치에 프로젝트를 설치하지 않고 대신 사용자 지정 설치 경로를 지정하면 작동합니다. 이렇게하면 기본 usr / local / bin / 경로가 DESTDIR에 추가되고 프로젝트는 $ HOME / Software / LocalInstall / usr / local / bin /에 설치됩니다.
bitek

이것은 훌륭한 솔루션입니다. 왜 이것이 정답이 아닌지 모르겠습니다! 다른 모든 답변은 재구성을 요청하므로 다시 작성해야합니다. 컴파일 된 파일을 다른 위치에 설치하려고한다고해서 2 ~ 3 시간 후에 전체 MITK 수퍼 빌드를 컴파일 한 다음 다시 실행해야한다고 상상해보십시오. 이 상황을 피하기위한 훌륭한 해결책입니다.
Duck Dodgers

23
make DESTDIR=./new/customized/path install

이 빠른 명령은 Ubuntu 16에서 opencv 릴리스 3.2.0 설치에 효과적이었습니다. DESTDIR 경로는 절대 경로 일 수도 있고 상대 경로 일 수도 있습니다.

이러한 리디렉션은 DESTDIR 위치가 사용자에게 올바른 액세스 권한을 가지고있는 한 사용자에게 관리자 권한이없는 경우에도 유용 할 수 있습니다. 예 : / home //


1
또한 makefile 내에 기본값이있는 경우 PREFIX를 대체해야합니다.
Mark Ch

17

컴파일하려는 모듈이 지원하는 내용에 따라 달라질 수 있습니다. autotools를 사용하여 makefile이 생성되면 다음을 사용하십시오.

--prefix=<myinstalldir>

./configure를 실행할 때

일부 패키지를 사용하면 다음을 실행할 때 재정의 할 수도 있습니다.

make prefix=<myinstalldir>

그러나 ./configure를 사용하지 않는 경우 확인하는 유일한 방법은 makefile을 열고 확인하는 것입니다. 맨 처음 몇 변수 중 하나 여야합니다.


3
또한 make prefix=...하드 코딩 된 경로가 잘못된 이진 파일이 생성 될 수 있습니다.이 경로는 일반적으로 이후에 수정할 수 없기 때문에./configure --prefix=...
Tobias Kienzler


0

위의 솔루션을 시도했습니다. 아무도 효과가 없었습니다.

결국 Makefile 파일을 열고 아래처럼 프리픽스 경로를 원하는 설치 경로로 수동 변경했습니다.

PREFIX ?= "installation path"

--prefix를 시도했을 때 "make"는 그러한 명령 입력이 없다고 불평했습니다. 그러나 일부 패키지는 --prefix를 허용하지만 물론 더 깨끗한 솔루션입니다.


1
--prefix옵션이다 ./configure하는 당신이 전에 전화 make.
거스

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.