때로는 특정 폴더에 쓸 때 make install
오류를 일으키는 사용 문제가 있습니다. permission denied
그래서 본능적으로 sudo make install
.
저는 Debian Etch를 사용하고 있습니다.
답변1
시스템 디렉터리에 로컬 설치를 두지 마십시오. 예를 들어 시스템 디렉터리는 /usr
패키지 관리 시스템에서 사용하도록 예약되어 있습니다. 정의에 따르면, 이렇게 하면 make install
로컬 설치를 수행한다는 의미이고, 이렇게 해야 한다면 sudo make install
작성 중인 위치에 액세스할 수 없다는 의미입니다.
따라서 권한 오류가 발생하면 make install
시스템 디렉터리에 설치하려고 하는지 확인한 다음 /usr/local
유사한 디렉터리에 설치하려고 하는지 확인하세요. /usr/local
로컬 설치용으로 예약되어 있습니다. 자신에게 쓰기 권한을 부여해야 할 수도 있지만 /usr/local
일반적으로 쉽게 수행할 수 있습니다. 데비안에서는 그룹에 자신을 추가하면 됩니다 staff
. 더 나은 방법은 바이너리 패키지를 찾거나 생성하여 설치하는 것입니다. 이렇게 하면 설치된 패키지를 쉽게 추적하고 패키지 관리의 다른 이점을 얻을 수 있습니다.
/usr/local
FHS에 따르면 패키지 관리 시스템은 에 설치되지 않습니다. 바라보다데비안 정책 매뉴얼 섹션 9.1 - 파일 시스템 계층개요를 얻으려면.
답변2
위에서 이미 답변했듯이 sudo make install
사용자가 읽기 전용인 디렉터리에 파일을 설치할 수 있습니다.
내가 예상할 수 있는 문제는 나중에 프로그램을 제거하거나 업그레이드하고 싶을 수도 있다는 것입니다. 여전히 소스 트리가 있으면 make uninstall
프로그램이 프로그램을 제거하지만 다른 많은 일반 사용자처럼 소스 트리를 삭제했다면 운이 없는 것입니다. 패키지 관리 시스템을 사용하여 프로그램을 설치하지 않았으므로 이 방법으로도 프로그램을 제거할 수 없을 것입니다.
아마도 그러한 프로그램을 설치하는 가장 좋은 방법은 홈 디렉토리에 설치하는 것입니다. 옵션을 에 전달하면 . --prefix=/home/<user>/<some>/<directory>
대신 사용할 ./configure
수 있습니다 . 제거도 매우 간단합니다——make install
sudo make install
/home/<user>/<some>/<directory>
rm -rf /home/<user>/<some>/<directory>
답변3
문제의 명령에 대한 기본 개요는 다음과 같습니다.
- sudo - 루트로 명령 실행
- make - 스크립트를 실행하여 소스에서 빌드
sudo 명령은 루트로 전달한 명령을 실행하므로 make 명령에 슈퍼유저 권한이 있음을 의미합니다. 이는 makefile이 악의적이거나 호출할 수 있는 스크립트가 악의적인 경우 시스템에 해를 끼칠 수 있음을 의미합니다.
즉, 소프트웨어를 신뢰하지 않는다면 설치하지 마십시오. 소프트웨어를 신뢰한다면 루트로 실행해도 아무런 해가 없어야 합니다.
노트:
sudo make install
su; make install
대부분의 경우와 같습니다.