내가 만든 패키지를 설치하려고 할 때 libtool에서 매우 이상한 오류가 발생합니다. src/api
이는 소스 트리의 하위 디렉터리( )에서 실행할 때 발생합니다 .
make[5]: Leaving directory '/users/galac/embray/src/slurm/src/api'
/bin/mkdir -p '/usr/local/lib'
/bin/bash ../../libtool --mode=install /usr/bin/install -c libslurm.la '/usr/local/lib'
../../libtool: line 929: cd: ../..: Not a directory
의 관련 부분은 libtool
다음과 같습니다.
914 # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
915 # is ksh but when the shell is invoked as "sh" and the current value of
916 # the _XPG environment variable is not equal to 1 (one), the special
917 # positional parameter $0, within a function call, is the name of the
918 # function.
919 progpath=$0
920
921 # The name of this program.
922 progname=`$ECHO "$progpath" |$SED "$sed_basename"`
923
924 # Make sure we have an absolute progpath for reexecution:
925 case $progpath in
926 [\\/]*|[A-Za-z]:\\*) ;;
927 *[\\/]*)
928 progdir=`$ECHO "$progpath" |$SED "$sed_dirname"`
929 progdir=`cd "$progdir" && pwd`
930 progpath=$progdir/$progname
931 ;;
932 *)
933 _G_IFS=$IFS
934 IFS=${PATH_SEPARATOR-:}
935 for progdir in $PATH; do
936 IFS=$_G_IFS
937 test -x "$progdir/$progname" && break
938 done
939 IFS=$_G_IFS
940 test -n "$progdir" || progdir=`pwd`
941 progpath=$progdir/$progname
942 ;;
943 esac
set -x
이 섹션 주변의 스크립트에 삽입하면 다음 추적이 표시됩니다.
+ progpath=../../libtool
++ printf '%s\n' ../../libtool
++ /bin/sed 's|^.*/||'
+ progname=libtool
+ case $progpath in
++ printf '%s\n' ../../libtool
++ /bin/sed 's|/[^/]*$||'
+ progdir=../..
++ cd ../..
../../libtool: line 930: cd: ../..: Not a directory
+ progdir=
+ progpath=/libtool
...
이는 자체 (최상위 소스 디렉터리) 에 대한 progpath=../../libtool
올바른 경로를 설정하지 않기 때문에 추가 오류가 발생합니다 . libtool
또한 올바르게 설정된 것 같습니다 progdir=../..
. 그렇다면 왜 ../..
디렉토리가 아닌가?
분명히 수동으로 확인하면 괜찮아 보입니다.
~/src/slurm/src/api$ ls -ld ../..
drwxr-xr-x 11 xxxxxx xxxxx 4096 May 14 14:52 ../..
심볼릭 링크나 그와 유사한 것이 아닙니다.
저는 20년 동안 개발을 하면서 이런 것을 본 적이 없습니다.
답변1
문제는 HPC 시스템에 NFS를 마운트한다는 것입니다(관리 권한이 있습니다). 그런데 실행중 오류가 발생했습니다 sudo make install
.
NFS 서버가 이 root_squash
옵션을 사용하는 것으로 나타나 루트에서 NFS 마운트를 읽을 수 없게 됩니다.https://linux.die.net/man/5/exports
해결책은 단순히 내 빌드를 NFS가 아닌 파일 시스템으로 이동하고 거기에서 설치하는 것이었습니다. 시청해주신 모든 분들께 감사드립니다.