autoconf에서 "mkdir -p" 대신 "install"을 사용하도록 하려면 어떻게 해야 합니까?

autoconf에서 "mkdir -p" 대신 "install"을 사용하도록 하려면 어떻게 해야 합니까?

GNU 아카이브에서 컴파일된 패키지를 실행하면 대상 디렉터리를 만드는 sudo make install데 사용됩니다 .mkdir -p

나는 대신에 루트의 umask가 0022일 때뿐만 아니라(나에게는 해당되지 않음) 대상 디렉토리가 모든 상황에서 모든 사람에게 적절한 권한을 갖도록 보장하기 위해 mkdir -p -m 0755or 를 사용하는 것을 선호합니다.install -d -m 0755

이 패키지는 autoconf/automake를 사용하며 이 동작은 이라는 M4 매크로에 의해 제어되는 것으로 보입니다 AC_PROG_MKDIR_P.

현재 sudo chmod 0755권한이 잘못되었음을 알고 있는 디렉터리에서 실행할 수 있습니다. 하지만 이는 분명히 올바른 선택이 아닙니다.

나는 "정확히 이것을" 달성하기 위해 전체 문서를 연구하는 것을 피할 것입니다.

어떤 팁이 있나요?

답변1

이 매크로는 AC_PROG_MKDIR_P기능 테스트 매크로입니다. 이는 사용 가능한 최상의 mkdir -p기능 명령을 테스트하기 위해 쉘 코드로 확장됩니다. 사용할 명령을 결정하기 위해 MKDIR_Pand ("캐시 변수")를 사용합니다 .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.cacheconfigure-C하지만, 아마도 원치 않는 옵션이 명령 값에 configure추가되었음을 발견했습니다 (옵션의 의미 는 및 마다 다릅니다 ).-pmkdirinstall

configure소스에서 스크립트를 재생성하는 데 만족하면 을 호출한 후 스크립트를 실행 하거나 다시 생성 configure.ac할 수 있습니다 .MKDIR_PAC_INITautoconfautoreconfconfigure

MKDIR_P가장 유연한 방법은 현재 쉘 세션에서 환경 변수 export MKDIR_P='install -d'(또는 필요한 모든 것) 를 설정하는 것입니다. 파일을 수정할 필요는 없지만 configure해당 셸 세션에서 실행하는 모든 스크립트에 영향을 미칩니다.

관련 정보