انجمنهای فارسی اوبونتو
کمک و پشتیبانی => نرمافزارهای فنی-مهندسی => نویسنده: محمودی فرد در 09 بهمن 1400، 05:01 بظ
-
سلام. هنگام نصب abaqus cae در ابونتو مطابق راهنما باید بررسی توزیع لینوکس را با دستور زبر دور زد.
To bypass the Linux distro checks, invoke StartGUI.sh with following exports:
export DSYAuthOS_`lsb_release -si`=1
export DSY_Force_OS=linux_a64
export NOLICENSECHECK=true
اما دستورات بالا عمل نمیکنند و با پیغام زیر خارج میشود
sh StartGUI.sh
StartGUI.sh: 4: typeset: not found
CurrentMediaDir initial=""
StartGUI.sh: 6: typeset: not found
StartGUI.sh: 8: [[: not found
StartGUI.sh: 10: [[: not found
CurrentMediaDir="/media/****/DS.SIMULIA.2022.LNX64/1/"
StartGUI.sh: 19: typeset: not found
Current operating system: "Linux"
StartGUI.sh: 8: /media/****/DS.SIMULIA.2022.LNX64/1//inst/common/get_DSY_OS.sh: [[: not found
StartGUI.sh: 16: /media/****/DS.SIMULIA.2022.LNX64/1//inst/common/get_DSY_OS.sh: [[: not found
/usr/bin/lsb_release
StartGUI.sh: 4: /media/****/DS.SIMULIA.2022.LNX64/1//inst/common/init/Linux.sh: [[: not found
DSY_OS_Release="Ubuntu"
StartGUI.sh: 13: /media/****/DS.SIMULIA.2022.LNX64/1//inst/common/init/Linux.sh: [[: not found
Unknown linux release "Ubuntu"
exit 8
-
شل شما به صورت پیشفرض چی هست؟ خروجی این دستور رو بذارید:
ls -l /usr/bin | grep 'sh ->' -w
معمولا دستور «]» و «[» وجود داره اما «[[» و «]]» نه. چک کنید ببینید این دستورات در bin/ وجود دارند یا نه.
برای اجرای فایل هم این دستور رو امتحان کنید و از یک دستور خاص استفاده نکنید:
./StartGUI.sh
-
سلام. با دستور گفته شده اجازه اجرای برنامه را نمیدهد.
$ ls -l /usr/bin | grep 'sh ->' -w
lrwxrwxrwx 1 root root 4 سپتامبر 29 2020 sh -> dash
lrwxrwxrwx 1 root root 7 نوْوامبر 24 22:32 static-sh -> busybox
/media/****/DS.SIMULIA.2022.LNX64/1# ./StartGUI.sh
bash: ./StartGUI.sh: Permission denied
-
سلام. هنگام نصب abaqus cae در ابونتو مطابق راهنما باید بررسی توزیع لینوکس را با دستور زبر دور زد.
To bypass the Linux distro checks, invoke StartGUI.sh with following exports:
export DSYAuthOS_`lsb_release -si`=1
export DSY_Force_OS=linux_a64
export NOLICENSECHECK=true
اما دستورات بالا عمل نمیکنند و با پیغام زیر خارج میشود
sh StartGUI.sh
StartGUI.sh: 4: typeset: not found
CurrentMediaDir initial=""
StartGUI.sh: 6: typeset: not found
StartGUI.sh: 8: [[: not found
StartGUI.sh: 10: [[: not found
CurrentMediaDir="/media/****/DS.SIMULIA.2022.LNX64/1/"
StartGUI.sh: 19: typeset: not found
Current operating system: "Linux"
StartGUI.sh: 8: /media/****/DS.SIMULIA.2022.LNX64/1//inst/common/get_DSY_OS.sh: [[: not found
StartGUI.sh: 16: /media/****/DS.SIMULIA.2022.LNX64/1//inst/common/get_DSY_OS.sh: [[: not found
/usr/bin/lsb_release
StartGUI.sh: 4: /media/****/DS.SIMULIA.2022.LNX64/1//inst/common/init/Linux.sh: [[: not found
DSY_OS_Release="Ubuntu"
StartGUI.sh: 13: /media/****/DS.SIMULIA.2022.LNX64/1//inst/common/init/Linux.sh: [[: not found
Unknown linux release "Ubuntu"
exit 8
به نظر میاد اون یه اسکریپت bash باشه، شما خواستید اون رو با sh اجرا کنید. bash قابلیتهای بیشتری از sh داره، به خاطر همین نمیتونید بعضی از اسکریتهای bash رو درست با sh اجرا کنید. اگه توی اسکریپت از قابلیتهای مخصوص bash استفاده شده باشه (مثل آرایهها یا همین ]] که بالا دیدید)، اون وقت اجرای اون اسکریپت با sh، به مشکل میخوره.
میتونید اون رو با bash اجرا کنید و ببینید کار میده یا نه. اینجوری
bash StartGUI.sh
توی حالت بالا، فرض کردیم که ما توی دایرکتوری هستیم که اسکریپت داخلش قرار داره.
راه بهتر اینه که ببینید اون فایل باید با چی اجرا بشه. معمولا خط اول اسکریپتها، با چیزی شبیه !# شروع میشه و جلوی اون بدون فاصله، مسیر به چیزی که قرار اسکریپت رو اجرا کنه قرار میگیره. مثلا اگه یه چیزی قرار باشه با perl اجرا بشه، خط اول اون این شکلی میتونه باشه
#!/usr/bin/perl
برای اینکه مطمئن بشید اون فایل باید با چی اجرا بشه، اولش رو ببینید. دستور head میتونه برای اینکار استفاده بشه.
head StartGUI.sh
باز هم فرض میکنیم داخل دایرکتوری هستیم که اسکریپت اونجا قرار داره.
سلام. با دستور گفته شده اجازه اجرای برنامه را نمیدهد.
/media/****/DS.SIMULIA.2022.LNX64/1# ./StartGUI.sh
bash: ./StartGUI.sh: Permission denied
احتمالا اسکریپت دسترسی اجرایی نداره، به اون دسترسی اجرایی بدید و دوباره امتحان کنید.
chmod +x StartGUI.sh
توی حالت بالا، باز هم فرض کردیم داخل جایی هستیم که اسکریپت قرار داره.
-
سلام. قبلا با دستور bash امتحان کرده بودم این پاسخ را میدهد.
bash StartGUI.sh
CurrentMediaDir initial="."
CurrentMediaDir="/media/****/DS.SIMULIA.2022.LNX64/1"
Current operating system: "Linux"
Error: This media has been unzipped or copied in such a way that the permissions
of some files have been lost. Please unzip or copy the media again.
برنامه در یک فایل ایزو قرار دارد حتی وقتی که به جای mount کردن ان را استخراج (extract here) میکنم پاسخ مشابهی میدهد.
head StartGUI.sh
#!/bin/sh
# Get full path
typeset CurrentMediaDir=$(dirname "${0}")
echo "CurrentMediaDir initial=\""$CurrentMediaDir"\""
typeset FIRSTCHAR=$(echo ${CurrentMediaDir} | cut -c1-1)
if [[ ${FIRSTCHAR} = "/" ]]; then
CurrentMediaDir=${CurrentMediaDir} # Do nothing
elif [[ ${CurrentMediaDir} = "." ]]; then
chmod +x StartGUI.sh
chmod: changing permissions of 'StartGUI.sh': Read-only file system
./StartGUI.sh
bash: ./StartGUI.sh: Permission denied
این هم محتویات فایل بش مورد نظر
#!/bin/sh
# Get full path
typeset CurrentMediaDir=$(dirname "${0}")
echo "CurrentMediaDir initial=\""$CurrentMediaDir"\""
typeset FIRSTCHAR=$(echo ${CurrentMediaDir} | cut -c1-1)
if [[ ${FIRSTCHAR} = "/" ]]; then
CurrentMediaDir=${CurrentMediaDir} # Do nothing
elif [[ ${CurrentMediaDir} = "." ]]; then
CurrentMediaDir=$(pwd)
else
CurrentMediaDir=$(pwd)/$CurrentMediaDir
fi
echo "CurrentMediaDir=\""$CurrentMediaDir"\""
export DSY_Installer_EXE=DSYInsAppliGUI
# Prevent args corruption on AIX and Solaris
typeset localArgs=${1+"$@"}
# get DSY_OS and check prereqs
. "$CurrentMediaDir/inst/common/get_DSY_OS.sh"
export CurrentMediaDir
"${DSY_exe}" ${localArgs}