install -d
디렉토리를 만들고 install -c
파일을 복사하는 데 사용되는 곳이 많이 있습니다 . 왜 사용하지 mkdir
와 cp
? 사용하면 이점이 install
있습니까?
install -d
디렉토리를 만들고 install -c
파일을 복사하는 데 사용되는 곳이 많이 있습니다 . 왜 사용하지 mkdir
와 cp
? 사용하면 이점이 install
있습니까?
답변:
그것은 당신이하는 일에 달려 있습니다.
이 install
명령은 일반적으로 시스템에 바이너리를 설치하기위한 패키지 및 소스 코드와 함께 제공되는 설치 스크립트에서 사용됩니다. 다른 파일이나 디렉토리를 설치하는 데에도 사용할 수 있습니다. 설치할 파일의 새 권한을 지정하기위한 -d
및 -c
옵션 외에도 동일한 결과를 얻기 위해 -m
a cp
및 a chmod
를 수행 할 필요가 없습니다 . 예를 들어 :
install -m644 "$srcdir/$pkgname-$pkgver-linux64" "$pkgdir/opt/$pkgname"
대상 그룹과 소유자를 각각 설정하는 옵션 -g
과 옵션도 있습니다 -o
. 이것은에 대한 별도의 호출을 피합니다 chown
. 일반적 install
으로을 사용 하면 파일 작성, 복사, 모드 설정 및 관련 항목을 여러 명령 대신 하나의 명령으로 수행하여 스크립트 를 단축하고 더 간결하게 만들 수 있습니다.
자세한 내용은을 참조하십시오 man install
. 사용법은 패키지 소스 코드 와 함께 제공된 설치 스크립트를 살펴보십시오 .
"install"은 일반적으로 다음 작업을 결합합니다.
따라서 Unix의 접근 방식에 따라 일부 건물 도구로 만든 파일을 작업 위치에 설치하는 단일의 완전한 조치를 위해 도구를 만들어야합니다.
내가 설명한대로 완전한 개념은 BSD 시스템 ( "xinstall"버전)에서 구현됩니다. 여기서는 "안전 복사"모드 (원자 이름 바꾸기 기능이있는 새 버전)를 여기에 중요하게 취급합니다. coreutils의 Linux 시스템은이 중요한 부분을 놓치고 방관자 프로세스에 의한 삭제와 다시 열기 사이에 경쟁이 발생하기 쉽습니다. 그러나 이것은 패키지 관리자가 다룰 수있었습니다.
외에도 여기에 사용에 대한 이전의 설명에서, 낮은 수준의 차이가 cp
그리고 install
적어도 리눅스에. 기존 파일을 복사하면 파일 cp
의 기존 inode를 덮어 쓰는 동시에 install
항상 동일한 파일 이름으로 새 inode를 만듭니다.
실행중인 바이너리의 새 버전을 설치할 때 차이가 있습니다. 를 사용 cp
하면 EBUSY 오류가 발생하지만 install
성공합니다. 실행중인 바이너리는 여전히 이전 버전을 사용하지만 프로그램을 다시 시작하면 새 버전이 사용됩니다.
해당 디렉토리가 이미 존재하는 경우 :
mkdir -p
소유권 및 파일 모드 비트를 설정하려고 시도합니다install -d
소유권 및 파일 모드 비트를 설정하지 않습니다이것은입니다 mkdir
과 install
에서 GNU의로 coreutils . 둘 다 동일한 make_dir_parents
기능을 사용 하지만 preserve_existing
매개 변수가 각각 false
또는 로 설정되어 true
있습니다.
install
하거나 사용하면$(INSTALL)
해당 단계가 일반적인 복사 단계가 아니라 설치 복사 단계로 표시됩니다. 유용 할 수 있습니다.