GNU 아카이브에서 컴파일된 패키지를 실행하면 대상 디렉터리를 만드는 sudo make install
데 사용됩니다 .mkdir -p
나는 대신에 루트의 umask가 0022일 때뿐만 아니라(나에게는 해당되지 않음) 대상 디렉토리가 모든 상황에서 모든 사람에게 적절한 권한을 갖도록 보장하기 위해 mkdir -p -m 0755
or 를 사용하는 것을 선호합니다.install -d -m 0755
이 패키지는 autoconf/automake를 사용하며 이 동작은 이라는 M4 매크로에 의해 제어되는 것으로 보입니다 AC_PROG_MKDIR_P
.
현재 sudo chmod 0755
권한이 잘못되었음을 알고 있는 디렉터리에서 실행할 수 있습니다. 하지만 이는 분명히 올바른 선택이 아닙니다.
나는 "정확히 이것을" 달성하기 위해 전체 문서를 연구하는 것을 피할 것입니다.
어떤 팁이 있나요?
답변1
이 매크로는 AC_PROG_MKDIR_P
기능 테스트 매크로입니다. 이는 사용 가능한 최상의 mkdir -p
기능 명령을 테스트하기 위해 쉘 코드로 확장됩니다. 사용할 명령을 결정하기 위해 MKDIR_P
and ("캐시 변수")를 사용합니다 .ac_cv_path_mkdir
MKDIR_P
디렉터리를 만드는 데 사용할 명령에 값을 설정할 수 있습니다 . 사용하는 명령은 개별 디렉터리뿐만 아니라 해당 디렉터리가 아직 존재하지 않는 경우 상위 디렉터리도 만들 수 있어야 합니다( mkdir -p
그렇게 하는 것처럼).
정상:
$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/local/bin/gmkdir -p
checking for gawk... gawk
...
정장 포함 MKDIR_P
:
$ ./configure MKDIR_P='install -d -m 0755'
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... install -d -m 0755
checking for gawk... gawk
...
~에 따르면문서ac_cv_path_mkdir
, 캐시 변수를 원하는 명령으로 설정하여 "영구적"으로 만들 수 있어야 합니다 . 변수는 스크립트에서 직접 설정하거나(ugly), configure
생성된 파일을 이 옵션으로 한 번 실행한 후 수정할 수 있습니다.config.cache
configure
-C
하지만, 아마도 원치 않는 옵션이 명령 값에 configure
추가되었음을 발견했습니다 (옵션의 의미 는 및 마다 다릅니다 ).-p
mkdir
install
configure
소스에서 스크립트를 재생성하는 데 만족하면 을 호출한 후 스크립트를 실행 하거나 다시 생성 configure.ac
할 수 있습니다 .MKDIR_P
AC_INIT
autoconf
autoreconf
configure
MKDIR_P
가장 유연한 방법은 현재 쉘 세션에서 환경 변수 export MKDIR_P='install -d'
(또는 필요한 모든 것) 를 설정하는 것입니다. 파일을 수정할 필요는 없지만 configure
해당 셸 세션에서 실행하는 모든 스크립트에 영향을 미칩니다.