web-dev-qa-db-ja.com

libtoolエラーcd:../ ..:ディレクトリではありません

私が構築したパッケージをインストールしようとすると、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
...

libtool自体(最上位のソースディレクトリ)の正しいパスであるprogpath=../../libtoolが設定されていないため、これによりさらにエラーが発生します。 progdir=../..も正しく設定されているようです。では、なぜ../..はディレクトリではないのでしょうか。

手動で確認すると、明らかに問題ありません。

~/src/slurm/src/api$ ls -ld ../..
drwxr-xr-x 11 xxxxxx xxxxx 4096 May 14 14:52 ../..

それはシンボリックリンクやそのようなものではありません。

私の20年間の開発において、このようなものを見たことはありません。

8
Iguananaut

問題は、HPCシステム(管理者権限を持っている)のNFSマウントを使用していることでした。ただし、Sudo make installの実行中にエラーが発生しました。

NFSサーバーがroot_squashオプションを使用しているようです。これにより、NFSマウントがrootユーザーから読み取れなくなります。参照 https://linux.die.net/man/5/exports

解決策は、ビルドを非NFSファイルシステムに移動し、そこからインストールすることです。ご覧いただいた皆様、ありがとうございました。

13
Iguananaut