Рейтинг:3

Не удалось установить файл .sh

флаг ph
AKA

Я пытаюсь использовать пакет под названием mgl-tools, и когда я запускаю ./install.sh, он не работает. Раньше работало несколько дней назад.

Ошибка:

./install.sh 
Установка MGLTools в /home/aka/Desktop/Expt 10/mgltools_x86_64Linux2_1.5.7
Установка интерпретатора Python на 
tar (дочерний): /home/aka/Desktop/Expt: невозможно открыть: нет такого файла или каталога
tar (дочерний): ошибка неустранима: выход сейчас
tar: дочерний элемент вернул статус 2
tar: ошибка неустранима: выход сейчас
Ошибка при установке Python

Содержимое файла .sh:

#!/бин/ш

# Скрипт установки MGL Tools
питонаргс=" "
пиоптимизировать=0
TarDir=`pwd`
экспорт MGL_ROOT=""

# Разобрать аргументы командной строки
opts=`getopt "hlc:d:" "$@"`
если [ "$?" != 0 ]
тогда
   echo "Использование: исходный файл install.sh [-d InstDir] [-c оптимизация]"
   выход
фи
установить -- $opts
пока :
делать
    случай "$1" в 

    -в) сдвиг; pythonargs="$pythonargs -c"; пиоптимизировать = "$ 1";;
    -г) сдвиг; экспорт MGL_ROOT="$1";;
    -l) pythonargs="$pythonargs -l";;
     
    -h) echo "Необязательные параметры:"
    echo "[-h] справочное сообщение;"
    echo "[ -d InstDir] указывает каталог установки (текущий каталог по умолчанию)"
    echo "[ -c оптимизация] скомпилировать код Python с оптимизацией или без нее:"
    echo "0 - нет оптимизации (создаются файлы .pyc)"
    echo " 1 - с оптимизацией (генерирует файлы .pyo);"
    выход ;;
    --) сломать;;
    эсак
    сдвиг
сделано

если [ "$MGL_ROOT" != "" ]; тогда
    # проверяем, есть ли у пользователя права на запись в каталог установки
    если [-e "$MGL_ROOT"]; тогда
    если [-d "$MGL_ROOT"]; тогда
        если [ ! -w "$MGL_ROOT"]; тогда 
        echo "Невозможно завершить установку - указанный каталог $MGL_ROOT не имеет права записи."
        выход 1

        фи
    еще 
        echo "$MGL_ROOT" не является каталогом
        выход 1
    фи
    еще 
    эхо Создание каталога "$MGL_ROOT"
    мкдир "$MGL_ROOT"
    фи

еще
    экспорт MGL_ROOT="$(пароль)"
фи

echo "Установка MGLTools в $MGL_ROOT"

компакт-диск "$ MGL_ROOT"
echo "Установка интерпретатора Python в $MLG_ROOT"
tar xzvf $TarDir/Python*.tar.gz

если [ "$?" != 0]; тогда
    echo "Ошибка установки Python"
    выход 1
фи
echo Python установлен, подождите, пока будут установлены остальные MGTools 

cd $TarDir

## платформа, на которой мы работаем

экспорт MGL_ARCHOSV=`$TarDir/Tools/archosv`

## добавьте путь к каталогу, содержащему интерпретатор Python, к вашему пути

экспорт PATH="$MGL_ROOT/bin:"$PATH

## использовать локально установленный интерпретатор Python

PYTHON="$MGL_ROOT/bin/python"
экспортировать PYTHONHOME="$MGL_ROOT"
если [ "`uname -s`" = "Linux" ] ; тогда
    экспортировать LD_LIBRARY_PATH="$MGL_ROOT/lib"
фи

## запустить скрипт python - install.py - для установки пакетов MGL и создания скриптов pmv , adt и vision

если [ "$pyoptimize" -eq 1 ]; тогда
    echo "Запуск $PYTHON -O Tools/install.py $pythonargs"
    $PYTHON -O Инструменты/install.py $pythonargs
еще
    echo "Запуск $PYTHON Tools/install.py $pythonargs"
    $PYTHON Инструменты/install.py $pythonargs
фи

отключить PYTHONHOME
N0rbert avatar
флаг zw
Какая у вас версия Ubuntu?
AKA avatar
флаг ph
AKA
Убунту 20.04.3 ЛТС
флаг us
Каково содержимое файла .sh? Пожалуйста, скопируйте и вставьте текст вместо того, чтобы публиковать скриншоты. Также отредактируйте вопрос, чтобы добавить информацию, не публикуйте ее в комментариях.
Рейтинг:5
флаг cn

Сценарии оболочки не любят пробелы в именах. Попробуйте переименовать каталог ДОПОЛНИТЕЛЬНО 10 к имени без пробелов; Например, EXPT10 а затем повторите попытку.

РЕДАКТИРОВАТЬ: Как правильно указывает @cocomac, правильно написанные сценарии могут и должны учитывать пробелы в именах. Если у вас нет, целесообразным решением будет переименование файла. Еще одно решение — переписать сценарий и сообщить о проблеме издателю.

cocomac avatar
флаг cn
@AKA Теоретически хорошо продуманный сценарий оболочки [может прекрасно обрабатывать пробелы] (https://unix.stackexchange.com/q/131766/495409). В этом нет (они забыли указать переменную в кавычках, которую они бы обнаружили, если бы автор(ы) [пропустили ее через ShellCheck](https://www.shellcheck.net/). Если бы сценарий был написан с правильным цитируя (чего не было), он должен нормально обрабатывать пробелы Я не согласен с chili555, правильно разработанный скрипт должен нормально обрабатывать пробелы.
chili555 avatar
флаг cn
@cocomac Спасибо за дополнительную информацию. Я добавил и отредактировал. Я чувствую, что наиболее практичным решением для типичного пользователя AU является переименование, а не изменение кода.
cocomac avatar
флаг cn
Добро пожаловать! Я, конечно, согласен, изменение сценариев оболочки (установщика) сложно и не очень практично для среднего пользователя, я просто хотел указать, что сценарии оболочки в более общем случае могут обрабатывать пробелы, если они правильно запрограммированы.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.