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


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