Có một phương pháp dễ dàng để cài đặt các bản dựng nhị phân của glibc không?


13

Hết lần này đến lần khác tôi thấy những câu hỏi như thế này:

Và đây là những loại giải pháp chúng tôi thường đẩy:

Đây thực sự là điều tốt nhất chúng ta có thể làm? Không có bản dựng nhị phân của GLIBC mà chúng ta có thể giải nén vào một thư mục như /opt/myglibc, và đặt $LD_LIBRARY_PATHhoặc bất cứ thứ gì và chạy bất kỳ ứng dụng nào chúng ta muốn, mà không gặp vấn đề gì?

Một ứng dụng, chẳng hạn như các bản dựng mới hơn của Chrome (28+) dường như yêu cầu GLIBC 2.14?

LƯU Ý: Chủ đề này có tiêu đề: Google Chrome 29 Đã phát hành - Cài đặt trên RHEL / CentOS 6 và Fedora 19/15 trên tecmint.com là điều cuối cùng khiến tôi suy nghĩ về điều này.

Người giới thiệu

Câu trả lời:


1

Nếu đó là cho bất kỳ thư viện nào khác, nhưng glibc ... tôi cho rằng không thể có cách nhanh chóng, bởi vì glibc là nơi mà công cụ được "mã hóa cứng". Glibc phù hợp với phiên bản kernel của bạn và trình tải của nó là ví dụ thực sự làm đúng (TM) với LD_LIBRARY_PATH.

Có lẽ cách chính xác là:

LD_LIBRARY_PATH="/opt/myglibc/;..." /opt/myglibc/ld-linux.so.2 the_program`

Không chắc chắn nếu điều này làm việc, mặc dù.

Ở mức độ nào, tôi nghĩ rằng việc sử dụng glibc thay thế đòi hỏi phải có khung triển khai, bởi vì đường dẫn tìm kiếm đôi khi có dây và glibc luôn phải phù hợp với hệ điều hành / kernel của bạn, vì vậy không thể có nhị phân chung, IMO. Multiarch của Debian cho thấy nó không tầm thường, nhưng vẫn có thể được thực hiện. Nếu người ta có một số phương tiện khác của các thư viện sành điệu bên cạnh kiến ​​trúc đích.

Trang web chỉ cho tôi chủ đề liên quan khác này:

Ở đó, câu trả lời được chấp nhận bao gồm một liên kết đến một chương trình gọi là rtldi , dường như để giải quyết vấn đề glibc. Đó là từ năm 2004 vì vậy nó có thể không hoạt động ngay từ liên kết nữa, nhưng có lẽ nó đáng để xem xét. Nguồn của nó là GPLv2.

Jehova, Jehova

Một người bạn của tôi đã từng nghĩ ra ý tưởng rằng việc sử dụng thực tế các thư viện chia sẻ được đánh giá cao. Và anh ta có một điểm: các thư viện dùng chung rất tốt để không lấp đầy bộ nhớ máy tính của bạn bằng các bản sao, nhưng xem xét trường hợp ứng dụng riêng lẻ thì đây chỉ là một vài MB.

Chỉ có một vài ứng dụng mà chúng tôi sẽ sử dụng các hành động như cung cấp cho họ glibc của riêng họ. Tiết kiệm cho chúng tôi một phân tích dài, hãy gọi chúng là "các ứng dụng ngay lập tức", được sử dụng bởi chính chúng, theo nghĩa là hoàn thành công việc. Ví dụ: trình duyệt web, tác nhân người dùng thư, bộ đồ công sở và trình phát nhạc cho phép người dùng nhận được những gì họ muốn và chỉ có một vài trường hợp cho mỗi người dùng. Đối với mặt khác, các dịch vụ hệ thống, quản lý cửa sổ, thậm chí toàn bộ môi trường máy tính để bàn đều rất quan trọng, nhưng chỉ hỗ trợ và thường không đủ phổ biến hoặc quan trọng, để mọi người sẵn sàng cung cấp cho họ glibc của riêng họ.

Số lượng "ứng dụng tức thời" khá ít, hoàn toàn trên mỗi người dùng và tương đối so với những hệ điều hành và DE "cơ bản" sinh ra trong những ngày này. Nếu các ứng dụng ngay lập tức, như Chrome, Firefox được biên dịch tĩnh, yêu cầu bộ nhớ bổ sung cho hệ thống trung bình sẽ là vài 100 MB. Một đối số không mang rất xa trên các hệ thống nhiều GB ngày nay vì vậy liên kết thống kê cho các ứng dụng ngay lập tức có thể là một lựa chọn.

Ngoài ra còn có các khái niệm về không gian hoán đổi và SSD cho phép hoán đổi / rút tiền nhanh chóng, điều này cũng giúp xử lý yêu cầu bộ nhớ tăng.

Vấn đề glibc được thảo luận ở đây không thực sự được giải quyết mặc dù liên kết tĩnh, nhưng đối với các ứng dụng như trình duyệt web, một loại định dạng phân phối độc lập có thể hiểu được, trong đó giao thức X, một số daemon âm thanh và một số đáp ứng kernel là giao diện duy nhất. Ưu điểm sẽ là không tương thích phiên bản thư viện ít hơn.


2
"Chúng tôi đang nói về một vài 100 MB ở đây" Uh, không. Mặc dù phần lớn các thư viện có thể không nhiều (nhưng có thể là một thứ tự cường độ hoặc hơn hai MB - hãy thử du -h /lib), hãy nhớ rằng nếu chúng được biên dịch tĩnh, thì sẽ cần một lượng RAM cho mỗi và mọi ứng dụng được biên dịch với chúng. Vì vậy, nếu, ví dụ. bạn có hai ứng dụng sử dụng cùng một thư viện, bây giờ bạn sẽ cần gấp đôi bộ nhớ. Ba ứng dụng? Ba lần như vậy. Chưa kể nó sẽ phủ nhận phần lớn lợi ích của bộ nhớ đệm ...
goldilocks

2
... vì, tất nhiên, bạn không thể chỉ lưu trữ glibc - bạn phải lưu các bản sao của mọi ứng dụng đang chạy (== nực cười). Nói tóm lại, các hệ điều hành hiện đại sẽ đơn giản và đơn giản là hoàn toàn không thể đối với phần cứng hiện đại nếu nó không dành cho các kỹ thuật hiện đại như các đối tượng dùng chung. Bạn sẽ không cần thêm một chút bộ nhớ - bạn cần gấp 10 hoặc 100 lần bộ nhớ.
goldilocks

Debian của tôi có 235 MB /lib, trong đó 202 MB là các mô-đun hạt nhân. Có, /usr/liblà 4GB, nhưng điều đó cho phép chắc chắn không có kết luận nào về việc chương trình cá nhân yêu cầu bao nhiêu. Bộ nhớ cache của bộ xử lý chỉ là một vài MB. Với mức tiêu thụ bộ nhớ của một cái gì đó giống như một trình duyệt web gần đây, tác động của các nhị phân được liên kết tĩnh đối với bộ nhớ đệm cũng không lớn và giảm dần với số lượng chương trình đang chạy đồng thời; cũng vì lý do lưu trữ tương đối nhỏ. Ước tính của tôi có vẻ chính xác hơn của bạn. À, vâng.
Bananguin

Chưa kể vấn đề lớn khác với các bản cập nhật tĩnh liên kết tĩnh là một PITA. Nếu có vấn đề bảo mật trong glibc, không có vấn đề gì lớn: nâng cấp glibc, khởi động lại chương trình của bạn. OTOH, là các chương trình của bạn được liên kết tĩnh, bạn phải tải xuống phiên bản mới của mọi chương trình. Và bản phân phối của bạn sẽ phải biên dịch lại (hoặc ít nhất là liên kết lại, nếu chúng giữ tất cả các tệp .o, không chắc do kích thước quá lớn) toàn bộ bản phân phối.
derobert

1
@derobert: Có vẻ công bằng. Rõ ràng tuyên bố của tôi là hyperbolic - ở đây với 1,8 GB cam kết đã tiêu tốn 521 MB. Vì vậy, đó sẽ là một mức tăng 30%. Tất nhiên, đó vẫn chưa phải là điểm bán hàng cho một chiến lược không có lợi thế (nhưng "chỉ cần thêm 30% RAM").
goldilocks
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.