“make install”과“sudo make install”의 차이점


15

가끔 사용하여 문제가 발생 make install나에게주는 permission denied어떤 폴더에 기록 할 때 오류가 발생했습니다. 그래서 본능적으로 사용 sudo make install합니다. 추가 문제가 발생합니까?

Debian Etch를 사용하고 있습니다.

답변:


16

시스템 디렉토리에 로컬 설치를하지 마십시오. 예를 들어 /usr, 시스템 디렉토리 는 패키지 관리 시스템이 사용하도록 예약되어 있습니다. 정의에 따르면, 그렇게하면 make install로컬에 설치 sudo make install한다는 의미 이고, 그렇게해야하는 경우 쓰는 곳 어디에서나 권한이 없음을 의미합니다.

따라서으로 권한 오류가 발생하는 make install경우 시스템 디렉토리에 설치하려고하는지 확인하고 /usr/local대신 설치 하거나 유사한 것을 시도하십시오 . /usr/local로컬 설치용으로 예약되어 있습니다. 에 쓸 수있는 권한을 부여해야 할 수도 /usr/local있지만 일반적으로 쉽게 수행 할 수 있습니다. 데비안에서는 staff그룹에 자신을 추가하면 됩니다. 더 좋은 방법은 바이너리 패키지를 찾거나 만들고 대신 설치하는 것입니다. 이렇게하면 설치된 패키지를 쉽게 추적하고 패키지 관리의 다른 이점을 얻을 수 있습니다.

/usr/localFHS에 따라 패키지 관리 시스템은에 설치되지 않습니다 . 개요 는 데비안 정책 매뉴얼-파일 시스템 계층의 섹션 9.1을 참조하십시오 .


3

명령에 대한 기본적인 설명은 다음과 같습니다.

  • sudo- 명령을 루트로 실행
  • 소스에서 빌드 할 스크립트를 작성하십시오.

sudo 명령은 명령을 실행하므로 루트로 전달하므로 make 명령에 슈퍼 사용자 권한이 있습니다. 이는 makefile이 악성이거나이를 호출 할 수있는 스크립트가 악성 인 경우 시스템을 손상시킬 수 있음을 의미합니다.

즉, 소프트웨어를 신뢰할 수 없으면 설치하지 마십시오. 소프트웨어를 신뢰한다면 루트로 실행해도 아무런 문제가 없습니다.

노트 :

sudo make installsu; make install대부분의 경우 와 동일 합니다.


3
당신은 "대부분의 경우"로 끝내는 것이 옳았습니다. 여기에 코너 케이스입니다.
ederag

3

위에서 답변 한 sudo make install것처럼, 사용자에게 읽기 전용 인 디렉토리에 파일을 설치할 수 있습니다.

내가 예상 할 수있는 문제는 나중에 프로그램을 제거하거나 업그레이드 할 수 있다는 것입니다. 여전히 소스 코드 디렉토리 트리가있는 경우 a make uninstall가 프로그램을 제거하지만 다른 많은 일반 사용자와 마찬가지로 소스 코드 디렉토리 트리를 삭제 한 경우 운이 좋지 않습니다. 패키지 관리 시스템을 사용하여 프로그램을 설치하지 않았으므로 프로그램을 제거하지 못할 수도 있습니다.

이러한 프로그램을 설치하는 가장 좋은 방법은 홈 디렉토리에 설치하는 것입니다. 에 옵션 --prefix=/home/<user>/<some>/<directory>을 전달하십시오 ./configure. 이렇게하면 쓰기 권한 make installsudo make install있기 때문에 대신 사용할 수 /home/<user>/<some>/<directory>있습니다. 또한 제거는 간단합니다.rm -rf /home/<user>/<some>/<directory>

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