Score:3

ไม่สามารถติดตั้งไฟล์ .sh

ธง ph
AKA

ฉันกำลังพยายามใช้แพ็คเกจที่เรียกว่า mgl-tools และเมื่อฉันรัน ./install.sh มันไม่ทำงาน มันเคยทำงานเมื่อสองสามวันก่อน

ข้อผิดพลาด:

./install.sh 
การติดตั้ง MGLTools ไปยัง /home/aka/Desktop/Expt 10/mgltools_x86_64Linux2_1.5.7
การติดตั้ง Python Interpreter ไปที่ 
tar (ลูก): /home/aka/Desktop/Expt: ไม่สามารถเปิดได้: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว
tar (ลูก): ข้อผิดพลาดไม่สามารถกู้คืนได้: ออกทันที
tar: เด็กส่งคืนสถานะ 2
tar: ข้อผิดพลาดไม่สามารถกู้คืนได้: ออกทันที
เกิดข้อผิดพลาดในการติดตั้ง Python

เนื้อหาของไฟล์ .sh:

#!/bin/sh

# สคริปต์การติดตั้งเครื่องมือ MGL
หลาม = "
pyoptimize=0
TarDir=`pwd`
ส่งออก MGL_ROOT=""

# แยกอาร์กิวเมนต์บรรทัดคำสั่ง
opts=`gettopt "hlc:d:" "$@"`
ถ้า [ "$?" != 0 ]
แล้ว
   echo "การใช้งาน: source install.sh [-d InstDir] [-c optimization]"
   ทางออก
ไฟ
ชุด -- ตัวเลือก $
ในขณะที่ :
ทำ
    กรณี "$1" ใน 

    -c) กะ; pythonargs="$pythonargs -c"; pyoptimize="$1";;
    -d) กะ; ส่งออก MGL_ROOT="$1";;
    -l) pythonargs="$pythonargs -l";;
     
    -h) echo "พารามิเตอร์ทางเลือก:"
    echo "[-h] ข้อความช่วยเหลือ;"
    echo "[ -d InstDir] ระบุไดเร็กทอรีการติดตั้ง (ไดเร็กทอรีเริ่มต้น-ปัจจุบัน)"
    echo "[ -c optimization] คอมไพล์โค้ด 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
    ไฟ
    อื่น 
    echo กำลังสร้างไดเร็กทอรี "$MGL_ROOT"
    mkdir "$MGL_ROOT"
    ไฟ

อื่น
    ส่งออก MGL_ROOT="$(pwd)"
ไฟ

echo "กำลังติดตั้ง MGLTools ที่ $MGL_ROOT"

ซีดี "$MGL_ROOT"
echo "กำลังติดตั้ง Python Interpreter ที่ $MLG_ROOT"
tar xzvf $TarDir/Python*.tar.gz

ถ้า [ "$?" != 0 ]; แล้ว
    echo "เกิดข้อผิดพลาดในการติดตั้ง Python"
    ทางออก 1
ไฟ
ติดตั้ง echo Python แล้ว โปรดรอการติดตั้ง MGLTools ที่เหลือ 

ซีดี $TarDir

## แพลตฟอร์มที่เราใช้งาน

ส่งออก MGL_ARCHOSV=`$TarDir/Tools/archosv`

## เพิ่มเส้นทางไปยังไดเร็กทอรีที่มีตัวแปลภาษาไพ ธ อนอยู่ในเส้นทางของคุณ

ส่งออก PATH="$MGL_ROOT/bin:"$PATH

## ใช้ตัวแปล Python ที่ติดตั้งในเครื่อง

PYTHON="$MGL_ROOT/bin/python"
ส่งออก PYTHONHOME="$MGL_ROOT"
ถ้า [ "`uname -s`" = "ลินุกซ์" ] ; แล้ว
    ส่งออก 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 Tools/install.py $pythonargs
อื่น
    echo "เรียกใช้ $PYTHON Tools/install.py $pythonargs"
    $PYTHON Tools/install.py $pythonargs
ไฟ

ยกเลิกการตั้งค่า PYTHONHOME
N0rbert avatar
zw flag
Ubuntu รุ่นของคุณคืออะไร?
AKA avatar
ph flag
AKA
อูบุนตู 20.04.3 LTS
us flag
เนื้อหาของไฟล์ .sh คืออะไร? โปรดคัดลอกข้อความวางแทนการโพสต์ภาพหน้าจอ แก้ไขคำถามเพื่อเพิ่มข้อมูล อย่าโพสต์ไว้ในความคิดเห็น
Score:5
ธง cn

เชลล์สคริปต์ไม่ชอบช่องว่างในชื่อ โปรดลองเปลี่ยนชื่อไดเร็กทอรีของคุณ ยกเว้น 10 เป็นชื่อที่ไม่มีช่องว่าง ตัวอย่างเช่น, EXPT10 แล้วลองอีกครั้ง

แก้ไข: ตามที่ @cocomac ชี้ให้เห็นอย่างถูกต้อง สคริปต์ที่เขียนอย่างถูกต้องสามารถและควรคำนึงถึงช่องว่างในชื่อ หากคุณไม่ได้เปลี่ยนชื่อไฟล์เป็นวิธีแก้ปัญหาที่เหมาะสม การเขียนสคริปต์ใหม่และการยื่นปัญหากับผู้เผยแพร่เป็นอีกวิธีหนึ่ง

cocomac avatar
cn flag
@AKA ตามทฤษฎีแล้วเชลล์สคริปต์ที่ออกแบบมาอย่างดี [สามารถจัดการช่องว่างได้ดี](https://unix.stackexchange.com/q/131766/495409) อันนี้ไม่ได้ (พวกเขาลืมที่จะอ้างตัวแปรซึ่งพวกเขาน่าจะค้นพบว่าผู้เขียน [เรียกใช้ผ่าน ShellCheck] (https://www.shellcheck.net/) หากสคริปต์เขียนขึ้นอย่างถูกต้อง การอ้างอิง (ซึ่งไม่ใช่) มันควรจะจัดการกับช่องว่างได้ดี ฉันไม่เห็นด้วยกับ Chill555 สคริปต์ที่ออกแบบมาอย่างเหมาะสมควรจะสามารถจัดการช่องว่างได้ดี
chili555 avatar
cn flag
@cocomac ขอบคุณสำหรับข้อมูลเชิงลึกเพิ่มเติม ฉันได้เพิ่มและแก้ไข ฉันรู้สึกว่าวิธีแก้ปัญหาที่ใช้งานได้จริงที่สุดสำหรับผู้ใช้ AU ทั่วไปคือการเปลี่ยนชื่อ ไม่ใช่การแก้ไขโค้ด
cocomac avatar
cn flag
ยินดีต้อนรับ! ฉันเห็นด้วยอย่างแน่นอน การแก้ไขเชลล์สคริปต์ (ตัวติดตั้ง) นั้นซับซ้อนและไม่สามารถใช้งานได้จริงสำหรับผู้ใช้ทั่วไป ฉันแค่ต้องการชี้ให้เห็นว่าเชลล์สคริปต์โดยทั่วไปสามารถจัดการกับช่องว่างได้ เมื่อตั้งโปรแกรมอย่างถูกต้อง

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา