/ bin / sh: ./check-dependencies.pl: не найден – но check-dependencies.pl существует!

Я пытаюсь построить Моисея , но когда я запустил make я получаю следующий вывод:

 minakshi@minakshi-Vostro-3500:~/Desktop/working-dir/moses/scripts$ make release # Compile the parts make all make[1]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts' # Building memscore may fail eg if boost is not available. # We ignore this because traditional scoring will still work and memscore isn't used by default. cd training/memscore ; \ ./configure && make \ || ( echo "WARNING: Building memscore failed."; \ echo 'training/memscore/memscore' >> ../../release-exclude ) checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... no checking for mawk... mawk checking whether make sets $(MAKE)... yes checking for g++... g++ checking whether the C++ compiler works... yes checking for C++ compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking for style of include used by make... GNU checking dependency style of g++... gcc3 checking for gcc... gcc checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking for boostlib >= 1.31.0... yes checking for cos in -lm... yes checking for gzopen in -lz... yes checking for cblas_dgemm in -lgslcblas... no checking for gsl_blas_dgemm in -lgsl... no checking how to run the C++ preprocessor... g++ -E checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking n_gram.h usability... no checking n_gram.h presence... no checking for n_gram.h... no checking for size_t... yes checking for ptrdiff_t... yes configure: creating ./config.status config.status: creating Makefile config.status: creating config.h config.status: config.h is unchanged config.status: executing depfiles commands make[2]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/memscore' make all-am make[3]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/memscore' make[3]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/memscore' make[2]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/memscore' touch release-exclude # No files excluded by default pwd=`pwd`; \ for subdir in cmert-0.5 phrase-extract symal mbr lexical-reordering; do \ make -C training/$subdir || exit 1; \ echo "### Compiler $subdir"; \ cd $pwd; \ done make[2]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/cmert-0.5' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/cmert-0.5' ### Compiler cmert-0.5 make[2]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/phrase-extract' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/phrase-extract' ### Compiler phrase-extract make[2]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/symal' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/symal' ### Compiler symal make[2]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/mbr' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/mbr' ### Compiler mbr make[2]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/lexical-reordering' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/lexical-reordering' ### Compiler lexical-reordering ## All files that need compilation were compiled make[1]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts' /bin/sh: ./check-dependencies.pl: Permission denied make: *** [release] Error 126 minakshi@minakshi-Vostro-3500:~/Desktop/working-dir/moses/scripts$ make release # Compile the parts make all make[1]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts' # Building memscore may fail eg if boost is not available. # We ignore this because traditional scoring will still work and memscore isn't used by default. cd training/memscore ; \ ./configure && make \ || ( echo "WARNING: Building memscore failed."; \ echo 'training/memscore/memscore' >> ../../release-exclude ) checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... no checking for mawk... mawk checking whether make sets $(MAKE)... yes checking for g++... g++ checking whether the C++ compiler works... yes checking for C++ compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking for style of include used by make... GNU checking dependency style of g++... gcc3 checking for gcc... gcc checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking for boostlib >= 1.31.0... yes checking for cos in -lm... yes checking for gzopen in -lz... yes checking for cblas_dgemm in -lgslcblas... no checking for gsl_blas_dgemm in -lgsl... no checking how to run the C++ preprocessor... g++ -E checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking n_gram.h usability... no checking n_gram.h presence... no checking for n_gram.h... no checking for size_t... yes checking for ptrdiff_t... yes configure: creating ./config.status config.status: creating Makefile config.status: creating config.h config.status: config.h is unchanged config.status: executing depfiles commands make[2]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/memscore' make all-am make[3]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/memscore' make[3]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/memscore' make[2]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/memscore' touch release-exclude # No files excluded by default pwd=`pwd`; \ for subdir in cmert-0.5 phrase-extract symal mbr lexical-reordering; do \ make -C training/$subdir || exit 1; \ echo "### Compiler $subdir"; \ cd $pwd; \ done make[2]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/cmert-0.5' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/cmert-0.5' ### Compiler cmert-0.5 make[2]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/phrase-extract' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/phrase-extract' ### Compiler phrase-extract make[2]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/symal' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/symal' ### Compiler symal make[2]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/mbr' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/mbr' ### Compiler mbr make[2]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/lexical-reordering' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/lexical-reordering' ### Compiler lexical-reordering ## All files that need compilation were compiled make[1]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts' /bin/sh: ./check-dependencies.pl: not found make: *** [release] Error 127 

В сообщении об ошибке указано ./check-dependencies.pl «не найден», но я вижу файл, присутствующий в папке scripts . Так почему эта ошибка возникает?

One Solution collect form web for “/ bin / sh: ./check-dependencies.pl: не найден – но check-dependencies.pl существует!”

Наиболее вероятной причиной этой ошибки является то, что check-dependencies.pl не находится в каталоге, в котором makefile ищет его. Однако, если файл check-dependencies.pl существует в /home/minakshi/Desktop/working-dir/moses/scripts , то есть еще одна возможность: возможно, его загрузчик не существует.

  • Для сценария загрузчик является интерпретатором, упомянутым в строке shebang , то есть первой строкой, которая должна начинаться с #! а затем путь к интерпретатору.
  • Для двоичного файла загрузчик является динамическим компоновщиком (статически связанные исполняемые файлы не имеют загрузчика) – см. Сообщение «Не найдено» при запуске 32-разрядного двоичного кода в 64-разрядной системе .

Когда ядру сообщают, что он выполняет программу, он выполняет программу загрузчика и передает загружаемый исполняемый файл. Если загрузчик не найден, ядро ​​может только сообщать «не найдено», у него нет способа отличить «непосредственно запрошенный файл не найден» от «loader not found». Иногда исполняющая оболочка выполняет вторую проверку, чтобы отобразить более явное сообщение об ошибке, но иногда вы получаете странное сообщение, которое сообщает вам, что скрипт или динамически связанный исполняемый файл не найден или не выполняется, когда на самом деле файл существует и является исполняемым, но ошибка относится к его загрузчику.

С расширением .pl check-dependencies.pl предположительно является скриптом Perl. Вероятно, это начинается с строки типа #!/usr/local/bin/perl , которая не дает пути к интерпретатору perl в вашей системе. Отредактируйте скрипт и исправьте первую строку; вам, вероятно, придется заменить #!/usr/local/bin/perl на #!/usr/bin/perl или наоборот.

Perl обычно находится в /usr/bin на Linux, но в /usr/local/bin на многих других устройствах. Есть способ написать строку shebang, не зная путь к интерпретатору заранее: #!/usr/bin/env perl . Строка shebang требует абсолютного пути; здесь интерпретатор env который ищет perl в $PATH . Однако это работает только в том случае, если нет аргументов для перехода к интерпретатору: многие системы, включая Linux, принимают один аргумент в командной строке, поэтому, например, #!/usr/bin/perl -T работает, и #!/usr/bin/env perl работает, но #!/usr/bin/env perl -T терпит неудачу, потому что он пытается выполнить программу с именем perl -T .

  • Как выбрать имена файлов с последовательными числовыми суффиксами?
  • Сценарий Bash для автоматического резервного копирования tar выбранных файлов и каталогов
  • разделять файл, передавать каждую часть в качестве параметра скрипту, запускать каждый скрипт параллельно
  • Сценарий Bash для tar - Указание проблемы
  • Как я могу определить, есть ли я в текстовой области?
  • grep searchstring / etc / crontab странное поведение в скрипте BASH
  • awk для извлечения аргумента опции
  • Выполнять поиск по двум спискам
  • Функция bash для поиска каталога рекурсивно
  • Решение целочисленного выражения ожидается
  • Команда истории внутри сценария bash
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.