จะรันซอฟต์แวร์ใหม่โดยไม่อัพเดท GLIBC ได้อย่างไร


20

ฉันติดตั้ง Mathematica 9 บน Red Hat Enterprise Linux AS รีลีส 4 ระบบ หลังจากการติดตั้งฉันพยายามเริ่มต้น Mathematica แต่ข้อความต่อไปนี้ออกมา:

/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/Mathematica: /lib64/tls/libc.so.6: ไม่พบรุ่น (GLIBC_2.4) บ้าน / wcbao / M / วุลแฟรม / มาติกา / 9.0 / systemfiles / ห้องสมุด / ลินุกซ์ x86-64 / libML64i3.so)

/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/Mathematica: /lib64/tls/libc.so.6: ไม่พบรุ่น (GLIBC_2.4) บ้าน / wcbao / M / วุลแฟรม / มาติกา / 9.0 / systemfiles / ห้องสมุด / ลินุกซ์ x86-64 / libQtCore.so.4)

ฉันไม่ต้องการอัปเดตระบบ glibc เนื่องจากมีความเสี่ยงและผู้ดูแลระบบไม่อนุญาตให้ทำเช่นนั้น

มีคนแนะนำว่าเป็นไปได้เพียงแค่ติดตั้ง glibc เวอร์ชันใหม่ที่อื่นและรันโปรแกรมเป็น

LD_LIBRARY_PATH=/lib/new your_application

และสิ่งนี้จะไม่ส่งผลกระทบต่อระบบ

ดังนั้นฉันถามที่นี่ว่าวิธีนี้ใช้งานได้จริง และถ้ามันได้ผลฉันต้องการทราบวิธีการทำทีละขั้นตอน (ตอนนี้ฉันขาดประสบการณ์ใน Linux และต้องการใช้ Mathematica บน Linux โดยเร็วที่สุด)

แก้ไข :

ฉันสังเกตว่ามีซอฟต์แวร์ที่เรียกว่า "Ermine" ดูเหมือนว่าจะสามารถปรับใช้ซอฟต์แวร์เป็นแพ็คเกจแบบสแตนด์อโลนซึ่งไม่ต้องพึ่งพาสภาพแวดล้อมภายนอก น่าเสียดายที่มันเป็นแชร์แวร์ ดังนั้นฉันคิดว่าเนื่องจาก "Ermine" สามารถทำได้ต้องมีวิธีการใช้ซอฟต์แวร์ใหม่ในระบบเก่า


2
มันจะทำงาน มีโอกาสมากที่จะตั้งค่า (คุณต้องติดตั้งไลบรารีทั้งหมดที่ Mathematica ขึ้นอยู่กับ) คำแนะนำของฉันคือการติดตั้งแพ็คเกจ rpm จากรีลีสที่ใหม่กว่าในไดเรกทอรีย่อยของบ้านคุณ ฉันจะให้คนที่คุ้นเคยกับ RH เขียนคำอธิบายอธิบายวิธีการทำ
Gilles 'หยุดความชั่วร้าย'

@Gilles สวัสดี Gilles ขอบคุณมาก !!! ฉันรอคอยที่จะ
user15964

มันเป็นความเสี่ยงที่จะติดตั้งที่อื่น glibc
BenjiWiebe

@BenjiWiebe - ความเสี่ยงแบบไหนที่คุณอ้างถึง?
FooF

1
ข้ามการโพสต์จาก superuser: superuser.com/questions/543249/…ทำซ้ำความคิดเห็นของฉันจากที่นั่น: "RHEL4 มีอายุแปดปีและสิ้นสุดรอบการสนับสนุนตามปกติไม่มีเครื่องอื่นที่คุณสามารถติดตั้งได้ เช่นเครื่องเดสก์ทอปของคุณ "
Burhan Ali

คำตอบ:


10

คุณสามารถรวบรวม GLIBC เวอร์ชันใหม่และเก็บไว้ในไดเรกทอรีแยกต่างหาก สิ่งแรกที่คุณจะต้องทำคือการดาวน์โหลดรุ่น glibc ที่คุณต้องการจากhttp://ftp.gnu.org/gnu/glibc/

เรียกใช้configureสคริปต์และการตั้งค่าเพื่อสิ่งที่ต้องการ--prefix=/home/you/mylibs

หลังจากคุณจัดการติดตั้งลงในไดเรกทอรีนั้นแล้วคุณจะต้องตั้งค่าของคุณLD_LIBRARY_PATHเป็นที่ตั้งของ glibc ใหม่

คุณจะต้องเข้าใจการพึ่งพาใด ๆ ที่คุณอาจจำเป็นต้องรวบรวม คุณสามารถสร้างเชลล์สคริปต์ที่ตั้งค่าตัวแปร LD_ * และเรียกใช้โปรแกรมของคุณ (ซึ่งคุณต้องทำต่อไป) และเรียกใช้ซ้ำ ๆ - ดาวน์โหลด / คอมไพล์ libs ที่ขาดหายไปพร้อมกัน

คุณสามารถใช้lddเพื่อกำหนดว่าไลบรารีใดที่โปรแกรมต้องการใช้ร่วมกันจากนั้นใช้lddแต่ละไลบรารีเพื่อค้นหาว่าพวกเขาต้องการ glibc หรือไม่

นี้อาจจะเป็นมากกระบวนการเสียเวลาและไม่ได้สำหรับใจร้อนหรือลมของหัวใจ - traversing / recompiling ทางของคุณผ่านการอ้างอิงที่เป็นไปได้ที่จำเป็นในการทำให้การทำงานของแอพลิเคชันของคุณบางครั้งอาจทำให้คุณต้องการที่จะดึงออกผมของคุณ

อัปเดต 1:

ฉันดาวน์โหลด glibc-2.4 และพยายามคอมไพล์มันบน CentOS 6 เพื่อให้configureทำงานได้อย่างถูกต้องฉันต้องเปลี่ยนacและldตรวจสอบเวอร์ชั่นโดยเปลี่ยน:

2.1[3-9]*)

ไปที่:

2.*)

ที่บรรทัด4045และ4106ในconfigureไฟล์เอง ฉันตั้งค่าตัวแปรสภาพแวดล้อม * FLAGS ของฉันเช่น:

LDFLAGS="-Wl,--sort-common -Wl,-zcombreloc -Wl,-znow" 
CFLAGS="-pipe -fomit-frame-pointer -g1 -O3 -frename-registers -fweb -ftracer -fmodulo-sched -fvariable-expansion-in-unroller -fgcse-sm"
CXXFLAGS="${CFLAGS}" 
CFLAGS="${CFLAGS} -freorder-blocks-and-partition" 
export LDFLAGS CFLAGS CXXFLAGS

./configure --prefix=/home/tim/masochistและดำเนินการแล้ว มันกำหนดค่าอย่างเหมาะสม ... และมันก็เริ่มสร้างขึ้นอย่างถูกต้องเช่นกัน ... แต่จากนั้นฉันก็เริ่มมีข้อผิดพลาด - ผู้แปลส่วนใหญ่บ่นเกี่ยวกับสิ่งที่ถูกนิยามใหม่

ณ จุดที่ผมขึ้น ... เพราะมันได้กลายเป็นที่นานเกินไปเวลา ;)


+1 สำหรับข้อมูลแม้ว่าบรรทัดสุดท้ายมีความสำคัญ OP จำเป็นต้องตัดสินใจว่าจำนวนของความพยายามที่เกี่ยวข้องนั้นคุ้มค่าหรือไม่
Burhan Ali

ขอบคุณทุกคน! ตกลงฉันลาออก ฉันคิดว่าฉันควรที่จะยึดติดกับ Mathematica 8 เพื่อประนีประนอม ใช้งานได้กับ Red Hat 4
user15964

@livingstaccato สวัสดี แต่ทำอย่างไรคำพูดของ vonbrand: "การติดตั้งเวอร์ชั่นใหม่ในสถานที่แปลก ๆ มีความเสี่ยง ... ห้องสมุดในสถานที่แปลก ๆ สามารถหยิบขึ้นมาได้โดยการสุ่มสิ่งของ, .... " มีความเสี่ยงหรือไม่ คุณเคยลองวิธีที่อธิบายไว้ในคำตอบของคุณหรือไม่?
user15964

@ user15964 มันไม่มีความเสี่ยงเว้นแต่ว่าคุณไม่ได้ใส่ใจกับสิ่งที่คุณทำroot หรือคุณทำอะไรแปลก ๆ เช่นเปลี่ยน LD_PRELOAD ของคุณในสคริปต์ init เซสชันและล็อคตัวเอง
livingstaccato

@ user15964 ยัง - ใช่ - ฉันได้สร้างวิธี glibc ใหม่วิธีกลับในวันที่
livingstaccato

1

การอัพเดต glibc เป็นเวอร์ชันที่การกระจายของคุณรองรับนั้นมีความเสี่ยงต่ำ มันถูกเขียนไปจับกันได้กับรุ่นวันที่ไกลกลับและ (ถอดข้อบกพร่อง) รุ่นใหม่ก็ควรจะลดลงในการเปลี่ยน การติดตั้งเวอร์ชันใหม่ในสถานที่แปลก ๆ มีความเสี่ยง IMHO


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

1
และคุณรู้สึกอิสระที่จะติดตั้งแพ็คเกจสุ่มหรือไม่? นโยบายการดูแลระบบเกินกำหนดมาถึงการแก้ไขที่ร้ายแรง ห้องสมุดในสถานที่แปลก ๆ สามารถหยิบขึ้นมาได้โดยการสุ่มสิ่งต่างๆและเริ่มการทำงานของแอปพลิเคชันของคุณเท่านั้น (และกระบวนการที่เป็นไปได้ที่เริ่มต้นโดยที่ไม่เกี่ยวข้องกับโปรแกรมมาตรฐาน) อาจกลายเป็นเรื่องท้าทาย ...
vonbrand

1
@vonbrand - เรื่องไร้สาระยกเว้นว่าเรากำลังพูดถึงเครื่องความปลอดภัยสูง (และไม่ใช่ตัวอย่างสำหรับนักพัฒนาที่ใช้ร่วมกันหรือเครื่องทดสอบ / คลัสเตอร์) ซึ่งในกรณีนี้คุณต้องมีความหวาดระแวงเกี่ยวกับซอฟต์แวร์ต่างประเทศที่ยังไม่ผ่านการตรวจสอบ ในแง่ของการแตกสุ่มมันค่อนข้างแตกต่างในการปรับปรุง libc (ส่งผลกระทบต่อระบบทั้งหมดอาจก่อให้เกิดการแตกของระบบ) กว่าเพียงแค่ติดตั้งโปรแกรมแอปพลิเคชันที่แยกจากแหล่งที่เชื่อถือได้ (ฉันไม่เห็นด้วยกับความคิดที่ว่า การใช้ทรัพยากรหมดไปเป็นความกังวลที่ถูกต้องที่ระบบดูแลระบบควรแก้ไข
FooF

@FooF ฉันได้เห็นหลายกรณีของ "การบริหารรู้ดีที่สุดให้ผู้ใช้ทำตามที่พวกเขาต้องการโดยไม่มีการสนับสนุน" ที่จะมีภาพลวงตาในพื้นที่นี้
vonbrand

1
@vonbrand - ฉันมักจะเห็นด้วยกับความคิดเห็นล่าสุดของคุณ แต่ฉันไม่เห็นด้วยอย่างยิ่งว่าการอัปเดต libc หรือการติดตั้งซอฟต์แวร์ที่รู้จักกันดี (ไม่ใช่ "แพคเกจแบบสุ่ม") ก็เทียบเคียงกันได้ เรารู้น้อยมากเกี่ยวกับธรรมชาติของสิ่งแวดล้อมและผู้ใช้ในการแสดงความคิดเห็นที่ชัดเจนใด ๆ ที่นี่ ในเครื่องพัฒนาซอฟต์แวร์ (มีผู้ใช้ที่มีความสามารถจำนวนมาก) มันอาจสมเหตุสมผลที่จะอนุญาตให้ผู้ใช้เรียกใช้ซอฟต์แวร์ของตนเอง บางครั้งเป็นสิ่งจำเป็นธรรมดา (OpenWRT และ OpenEmbedded ที่แพลตฟอร์มฝังตัวเป้าหมายจะสร้างจากแหล่งเครื่องมือบางอย่างที่จำเป็นในการสร้างภาพ f / w)
FooF

-3

ในกรณีนี้โดยเฉพาะฉันจะบอกว่าไม่รำคาญเว้นแต่คุณจะได้รับความช่วยเหลือ (และการอนุญาต) จากผู้ดูแลระบบที่ใช้ร่วมกันนี้

Mathematica ทำงานบน Windows, Mac และ Linux ดังนั้นเพียงแค่ติดตั้งบนเครื่องเดสก์ท็อปของคุณซึ่งคุณไม่ต้องกังวลกับผลกระทบอื่น ๆ มีความเป็นไปได้สูงว่าระบบปฏิบัติการจะล่าสุดกว่า RHEL4 และคุณจะไม่ต้องทำการติดตั้งใด ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.