sudo ./get_folder.sh no such file or directory

Я следую инструкции по установке программ на ubuntu 20.04 LTS WSL. Однако ошибка возникает, когда просят написать строку "sudo ./get_folder.sh"

/usr/local/bin/test$ sudo ./get_folder.sh
grep: ./get_folder.sh: No such file or directory
./get_folder.sh: line 13: /usr/local/bin/linux_bin/get_folder.sh.runme: Success

Я нахожусь в директории "/usr/local/bin/test$", которая содержит скрипт get_folder.sh

Что должно произойти, согласно руководству, это то, что файлы из загруженной папки помещаются в /usr/local/bin/.

Почему я не могу запустить скрипт?

Дополнительная информация, которая может помочь:

export PATH=/usr/local/bin:$PATH
export KMP_STACKSIZE=8m
export DISPLAY=:0

На веб-странице скрипта есть такой текст:

"Как root, скрипт копирует программы в /usr/local/bin/linux_bin, и связывает их с /usr/local/bin. Как обычный пользователь, они загружаются в $HOME/bin/linux_bin и связываются с вашим $HOME/bin. В последнем случае убедитесь, что $HOME/bin находится в вашем $PATH."

0
задан 7 May 2021 в 13:01

1 ответ

Учитывая инструкции, которые вы процитировали в своем вопросе, я предполагаю, что вы пытаетесь установить XDS с этой страницы .

Примечание: Хотя я могу решить вашу проблему с установкой, мне кажется, что XDS требует полноценной графической среды, чего WSL не предоставляет в настоящее время . Подробнее об этом см. В конце этого ответа.

Насколько я могу судить, сценарий установки просто ошибочен. Он начинается с этого кода:

#!/bin/bash

if [ "$(whoami)" == "root" ]; then
  export DESTINATION=/usr/local/bin/linux_bin
else
  export DESTINATION=$HOME/bin/linux_bin
fi
mkdir -p $DESTINATION
cd $DESTINATION
# run a "runme" helper script so that the current get_folder.sh may be overwritten by the new one:
grep -v runme ./get_folder.sh > ./get_folder.sh.runme
chmod +x ./get_folder.sh.runme
exec ./get_folder.sh.runme && exit

wget -O- https://strucbio.biologie.uni-konstanz.de/pub/linux_bin/xds_extra_linux.tar | tar xjvf -

При запуске с sudo это:

  • Создает каталог / usr / local / bin / linux_bin
  • Изменяет этот каталог
  • Пытается создать и запустить свою копию (сценарий), чтобы оригинал можно было перезаписать новыми загруженными файлами в последней строке. Команда grep удаляет «самовоспроизводящуюся» часть сценария из вновь созданной копии.

Однако из-за компакт-диска скрипта просто нет . Он пытается запустить grep для /usr/local/bin/linux_bin/get_folder.sh , но сценарий все еще находится в исходном месте.

Результатом является пустой /usr/local/bin/linux_bin/get_folder.sh.runme , который выполняет "успешно" в строке 13, поскольку вы можете видеть из сообщения. Но, конечно, запуск пустого скрипта ничего не делает.

Вот и все - "копия сценария" завершается, даже не доходя до шага "загрузка и распаковка".

Вероятно, создатели сценария попали в некую ментальную «ловушку» - когда они тестируют его, они, вероятно, всегда запускают его в системе, в которой он уже установлен. Так что работает. Но он не будет с первого раза работать.

Решение довольно простое. Хотя вы упомянули, что используете это в подсистеме Windows для Linux, сбой на самом деле происходит и в Ubuntu с простой версией Jane. НО, в WSL хорошо то, что я могу запустить новый «одноразовый» экземпляр менее чем за минуту, чтобы протестировать что-то подобное, не перегружая свой ежедневный сеанс ненужным мне программным обеспечением. Итак, я действительно проверил это, и это сработало:

Из каталога с вашим get_folder.sh :

sudo mv get_folder.sh /usr/local/bin/linux_bin
cd /usr/local/bin/linux_bin
sudo ./get_folder.sh

Это работает, потому что ваши предыдущие неудачные попытки запуска сценария уже создали каталог, поэтому вам просто нужно переместить сценарий туда (где он ошибочно ожидает ), а затем запустить его снова.

Дополнительная информация о запуске графических приложений в WSL

Чтобы запускать графические приложения в WSL, вам нужно сделать одно из двух:

  • Зарегистрируйтесь в программе предварительной оценки Windows и запустите последнюю предварительную версию Windows. Это включает поддержку WSLg, новой функции, которая позволит вам запускать полноценный графический интерфейс Linux под WSL. Конечно, вы должны быть готовы бороться с любыми ошибками, возникающими при запуске «бета-версии» Windows.

  • Второй вариант - вручную настроить X-сервер и необходимые библиотеки.Это выходит далеко за рамки этого ответа, поэтому я просто попрошу вас использовать выбранную вами поисковую систему, чтобы найти , устанавливающий x на wsl .

Обратите внимание, что я не делал ни того, ни другого. Я очень с нетерпением жду следующего выпуска Windows в конце этого года, который будет включать WSLg в производственную версию, но у меня нет необходимости добавлять его поддержку до этого.

0
ответ дан 7 May 2021 в 17:39

Другие вопросы по тегам:

Похожие вопросы: