make install
대부분의 경우 Makefile을 사용하여 호출됩니까/usr/bin/install
?/usr/bin/install
방금 컴파일된 파일을 복사하는 것 외에 어떤 필요한 작업을 수행해야 합니까/usr/bin/local
?매뉴얼 페이지에는
/usr/bin/install
파일 복사 및 속성 설정이 표시됩니다. 어떤 속성을 설정하는 것이 중요합니까?- 불필요한 권한 모드와 소유자/그룹만 설정합니까?
답변1
install
디렉토리에 파일을 복사하는 것 외에도 많은 기능을 제공합니다.
- 이
-s
옵션은 실행 파일에서 기호 테이블을 제거하여 공간을 절약합니다. - 이
-m
옵션은 권한 비트를 설정합니다. 개발자 디렉터리의 파일은 umask를 기반으로 생성되므로 다른 사람이 해당 파일을 실행하지 못할 수 있습니다.install -m 755 file1 /usr/local/bin
모든 사람이 파일을 실행할 수 있는지 확인하십시오. 이는 아마도 개발자가 공유 디렉터리의 파일에 대해 원하는 것일 것입니다. - 소유자와 그룹을 설정하는
-o
옵션이 있습니다 .-g
사용 시cp
대상 파일의 소유자 및 그룹은 명령을 실행하는 사용자의 uid 및 gid로 설정되고cp
, 사용 시cp -p
대상 파일의 소유자 및 그룹은 빌드 디렉터리의 파일과 동일하게 됩니다. 둘 중 어느 것도 상인이 원하는 개발이 아닐 것입니다. 프로그램을wall
그룹화해야 하고tty
,screen
프로그램을 그룹화해야 하는utmp
식입니다. - makefile 레시피에 넣어야 하는 명령 수가 줄어듭니다. , 및
install -s -m 755 -o root -g bin file1 file2 lib/* $(DESTDIR)
네 가지 명령보다 더 간결합니다.cp
strip
chmod
chown
이 마지막 요점은 아마도 install
이 명령이 발명된 이유와 많은 메이크파일이 이 명령을 사용하는 이유일 것입니다.
Install
하지만 항상 사용되는 것은 아닙니다. 나는 cp -r lib $(DESTDIR)/lib
복사할 항목의 전체 트리와 ./install.sh
개발자가 사용자 정의 스크립트 사용을 선호하는지 여부를 확인했습니다 . 많은 패키지는 install.sh
X11과 함께 제공되는 패키지에서 파생됩니다 . 이 패키지는 유사하지만 지정된 방식으로 개체 파일의 이름을 바꾸는(변환) 옵션을 install
지원합니다 .-t
답변2
makefile에 어떤 명령어를 사용하는지는 기본적으로 프로젝트 개발자에 따라 다르기 때문에 여기서는 명확한 답변을 드리기 어렵습니다. 일반적으로
install
2에서 언급한 설치 절차에 대해 makefile에서 이 명령을 사용하는 것이 좋은 습관 이라고 말하고 싶지만install
POSIX가 아니므로 항상 이식 가능한 접근 방식을 사용하는 것이 최선이 아닐 수도 있습니다.AFAIK 대부분의 도구는 예를 들어 makefile을 자동으로 생성하는 데 사용할
automake
수cmake
있으며install
.일반적
install
으로 말한 것처럼 하나의 명령으로 파일을 복사하고 권한/소유자/그룹을 설정하는 데 사용됩니다. 일반적으로 사용되는 또 다른 기능은 더 이상 필요하지 않은 바이너리에서 불필요한 기호(예: 디버깅 기호)를 제거하는 것입니다. 또한 설치 전에 백업을 수행하고 SELinux 환경에서 작업하는 등 유용할 수 있는 몇 가지 추가 옵션도 제공합니다.
선택하는 권한은 파일 자체에 따라 다릅니다. 대부분의 설치된 파일은 누구나 읽을 수 있지만 루트로만 쓸 수 있습니다(모든 사람이 액세스할 수 있지만 조작할 수 없는 곳에 프로그램 파일을 저장하는 것이 아이디어입니다). 모든 경우에 해당되는 것은 아닙니다. 파일에 민감한 데이터가 포함되어 있으면 일반적으로 액세스가 그룹 또는 루트 사용자로 제한됩니다.