Làm thế nào để chạy phần mềm mới mà không cập nhật GLIBC?


20

Tôi đã cài đặt Mathicala 9 trên hệ thống phát hành 4 Red Hat Enterprise Linux AS cũ. Sau khi cài đặt, tôi đã cố gắng khởi động Mathematica, nhưng thông báo sau xuất hiện:

/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/MathIALa: /lib64/tls/libc.so.6: phiên bản `GLIBC_2.4 'không được tìm thấy home / wcbao / M / Wolfram / Mathicala / 9.0 / SystemFiles / L Thư viện / Linux-x86-64 / libML64i3.so)

/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/MathIALa: /lib64/tls/libc.so.6: phiên bản `GLIBC_2.4 'không được tìm thấy home / wcbao / M / Wolfram / Mathicala / 9.0 / SystemFiles / L Thư viện / Linux-x86-64 / libQtCore.so.4)

Tôi không muốn cập nhật glibc hệ thống, vì nó rủi ro và quản trị viên không cho phép tôi làm điều đó.

Có người đề nghị rằng có thể chỉ cần cài đặt phiên bản mới của glibc ở một nơi khác và chạy chương trình như

LD_LIBRARY_PATH=/lib/new your_application

và điều này sẽ không ảnh hưởng đến hệ thống.

Vì vậy, tôi đang hỏi ở đây nếu phương pháp này thực sự hoạt động. Và nếu nó hoạt động, tôi muốn biết cách thực hiện từng bước một (tôi thiếu kinh nghiệm về Linux ngay bây giờ và muốn sử dụng Mathicala trên Linux càng sớm càng tốt).

Chỉnh sửa :

Tôi nhận thấy rằng có một phần mềm gọi là "Ermine". Dường như nó có thể triển khai một phần mềm dưới dạng gói độc lập không phụ thuộc vào môi trường bên ngoài. Thật không may, nó là một phần mềm chia sẻ. Vì vậy, tôi nghĩ rằng vì "Ermine" có thể làm điều đó, nên phải có cách sử dụng phần mềm mới trên hệ thống cũ.


2
Nó sẽ làm việc. Có thể sẽ có khá nhiều công việc cần thiết lập (bạn sẽ cần cài đặt tất cả các thư viện mà Mathicala phụ thuộc vào). Lời khuyên của tôi sẽ là cài đặt các gói vòng / phút từ bản phát hành mới hơn trong thư mục con của nhà bạn. Tôi sẽ để ai đó quen thuộc hơn với RH viết câu trả lời giải thích cách thực hiện.
Gilles 'SO- ngừng trở nên xấu xa'

@Gilles Xin chào, Gilles, cảm ơn bạn rất nhiều !!! Tôi đang mong chờ nó.
dùng15964

rủi ro để cài đặt glibc ở nơi khác.
BenjiWiebe

@BenjiWiebe - loại rủi ro nào bạn đang đề cập chính xác?
FooF

1
Đăng chéo từ superuser: superuser.com/questions/543249/ Nhật Lặp lại nhận xét của tôi từ đó: "RHEL4 đã tám tuổi và đã hết vòng đời hỗ trợ thông thường. Bạn không thể cài đặt nó trên máy nữa ? vd. Máy tính để bàn của bạn. "
Burhan Ali

Câu trả lời:


10

Bạn chắc chắn có thể biên dịch một phiên bản GLIBC mới và lưu nó trong một thư mục riêng. Điều đầu tiên bạn sẽ phải làm là tải xuống phiên bản glibc mà bạn muốn từ http://ftp.gnu.org/gnu/glibc/ .

Chạy configurekịch bản và thiết lập --prefix=một cái gì đó như /home/you/mylibs.

Sau khi bạn quản lý để cài đặt nó vào thư mục đó, bạn sẽ phải đặt LD_LIBRARY_PATHvị trí của bạn vào vị trí của glibc mới.

Bạn sẽ cần phải tìm ra bất kỳ phụ thuộc nào bạn có thể cần phải biên dịch. Bạn có thể tạo tập lệnh shell đặt các biến LD_ * và chạy chương trình của bạn (dù sao bạn cũng phải thực hiện) và chạy nó nhiều lần - tải xuống / biên dịch lại các lib bị thiếu trên đường đi.

Bạn cũng có thể sử dụng lddđể xác định những thư viện chia sẻ mà chương trình cần, sau đó sử dụng lddtrên mỗi thư viện để tìm hiểu xem họ có yêu cầu glibc không.

Đây có thể là một quá trình rất tốn thời gian và không dành cho người thiếu kiên nhẫn hoặc yếu tim - vượt qua / biên dịch lại theo cách của bạn thông qua các phụ thuộc có thể cần thiết để làm cho ứng dụng của bạn đôi khi có thể khiến bạn muốn nhổ tóc.

Cập nhật 1:

Tôi đã tải xuống glibc-2.4 và cố gắng biên dịch nó trên CentOS 6. Để configurehoạt động chính xác, tôi đã phải thay đổi acldkiểm tra phiên bản bằng cách thay đổi:

2.1[3-9]*)

đến:

2.*)

tại các dòng 40454106trong configurechính tập tin Tôi đặt các biến môi trường * FLAGS của mình như vậy:

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

và sau đó thực hiện ./configure --prefix=/home/tim/masochist. Nó được cấu hình đúng ... và nó cũng bắt đầu xây dựng đúng cách ... nhưng sau đó tôi bắt đầu gặp lỗi - chủ yếu là trình biên dịch phàn nàn về những thứ được xác định lại.

Lúc đó tôi đã từ bỏ ... Bởi vì nó đã trở nên quá tốn thời gian . ;)


+1 cho thông tin, mặc dù dòng cuối cùng rất quan trọng. OP cần phải quyết định xem số lượng nỗ lực liên quan có xứng đáng hay không.
Burhan Ali

Cảm ơn tất cả! OK, tôi xin nghỉ việc. Tôi nghĩ rằng tôi nên gắn bó với Mathematica 8 như một sự thỏa hiệp. Nó hoạt động trên Red Hat 4.
user15964 7/2/13

@livingstaccato Xin chào, nhưng Làm thế nào để bình luận những lời của vonbrand: "Cài đặt phiên bản mới ở một nơi xa lạ là rủi ro hơn ... Thư viện tại địa điểm lạ có thể được chọn bởi những thứ ngẫu nhiên, ....". Có thực sự rủi ro hơn? Bạn đã bao giờ thử cách mô tả trong câu trả lời của bạn chưa?
dùng15964

@ user15964 Không có rủi ro trừ khi bạn không chú ý đến những gì bạn đang làm root hoặc bạn làm điều gì đó kỳ lạ như thay đổi LD_PRELOAD trong tập lệnh init phiên của bạn và tự khóa.
Livingstaccato

@ user15964 Ngoài ra - có - Tôi đã xây dựng lại glibc cách, cách, trở lại trong ngày.
Livingstaccato

1

Cập nhật glibc lên phiên bản được phân phối của bạn hỗ trợ có rủi ro thấp. Nó được viết để xử lý khả năng tương thích với các phiên bản đã lùi xa và (lỗi phát hiện) một phiên bản mới chỉ là một sự thay thế. Cài đặt một phiên bản mới ở một nơi xa lạ là rủi ro hơn, IMHO.


4
nhưng vấn đề là tôi không phải là quản trị viên, tôi không có thẩm quyền. Ngay cả khi tôi được phép, tôi vẫn sợ thay đổi hệ thống, vì đó không phải là máy tính của tôi, nó thực sự là một cụm, nhiều người làm việc trên nó. Nhân tiện, tại sao một phiên bản mới ở nơi khác lại có rủi ro? Tôi chỉ cần liên kết phần mềm tôi cần với lib mới, không phải toàn bộ hệ thống.
dùng15964

1
Và bạn cảm thấy tự do để cài đặt một số gói ngẫu nhiên? Các chính sách quản trị hệ thống đã quá hạn để sửa đổi nghiêm trọng . Thư viện ở nơi xa lạ có thể được chọn bởi những thứ ngẫu nhiên, và chỉ cần chạy ứng dụng của bạn (và các quy trình có thể được bắt đầu bởi nó, không liên quan đến các chương trình tiêu chuẩn) có thể trở thành một thách thức ...
vonbrand

1
@vonbrand - Vô nghĩa, trừ khi chúng ta đang nói về một số máy bảo mật cao (và không phải là một số nhà phát triển hoặc nhóm thử nghiệm được chia sẻ) trong trường hợp bạn cần phải có sự hoang tưởng lành mạnh về phần mềm không được kiểm tra của nước ngoài. Về các sự cố ngẫu nhiên, việc cập nhật libc (ảnh hưởng đến tất cả hệ thống, có thể gây ra sự cố hệ thống) là một vấn đề khác so với việc chỉ cài đặt một chương trình ứng dụng bị cô lập từ các nguồn đáng tin cậy (tôi không đồng ý với khái niệm Mathicala là gói ngẫu nhiên). Kiệt sức tài nguyên tất nhiên là một mối quan tâm hợp lệ mà sysadmin có thẩm quyền nên giải quyết.
FooF

@FooF, tôi đã thấy quá nhiều trường hợp "Quản trị hiểu rõ nhất, hãy để người dùng làm theo ý họ mà không cần hỗ trợ" để có ảo tưởng trong lĩnh vực này.
vonbrand

1
@vonbrand - Tôi có xu hướng đồng ý với nhận xét cuối cùng của bạn. Nhưng tôi hoàn toàn không đồng ý rằng việc cập nhật libc hoặc cài đặt phần mềm nổi tiếng (không phải "gói ngẫu nhiên") bằng cách nào đó có thể so sánh được (giả sử không có ý định xấu). Chúng tôi biết rất ít về bản chất của môi trường và người dùng của nó để nói lên bất kỳ ý kiến ​​dứt khoát nào ở đây. Trong máy phát triển phần mềm (với nhiều người sử dụng có thẩm quyền), nó có thể làm cho tinh thần để cho phép người dùng chạy phần mềm riêng của họ. Đôi khi, điều này là cần thiết (OpenWRT và OpenEmbedded rằng các nền tảng nhúng mục tiêu sẽ xây dựng từ các nguồn một số công cụ cần thiết để xây dựng hình ảnh f / w).
FooF

-3

Trong trường hợp cụ thể này, tôi sẽ nói đừng làm phiền, trừ khi bạn có sự trợ giúp (và sự cho phép) từ các quản trị viên của hệ thống chia sẻ này.

Mathematica chạy trên Windows, Mac và Linux, vì vậy chỉ cần cài đặt nó trên máy tính để bàn của bạn, nơi bạn không phải lo lắng về việc ảnh hưởng đến người khác. Cũng có khả năng HĐH sẽ gần đây hơn so với RHEL4 và do đó bạn sẽ không phải thực hiện bất kỳ thao tác nào để cài đặt nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.