Чи є простий метод встановлення бінарних збірок glibc?


13

Знову і знову я бачу такі питання:

І це типи рішень, які ми зазвичай наполягаємо:

Це справді найкраще, що ми можемо зробити? Чи не існують бінарні версії GLIBC, які ми можемо просто розпакувати в такий каталог, як /opt/myglibc, і встановити $LD_LIBRARY_PATHабо що завгодно і запустити все, що завгодно, без проблем?

Додатки, такі як новіші версії Chrome (28+), які, як видається, потребують GLIBC 2.14?

ПРИМІТКА. Ця тема під назвою: Google Chrome 29 випущена - установка на RHEL / CentOS 6 та Fedora 19/15 на tecmint.com - це те, що в кінцевому рахунку змусило мене замислитися над цим.

Список літератури

Відповіді:


1

Якби це була для будь-якої іншої бібліотеки, але glibc ... Я думаю, не може бути швидких шляхів, тому що glibc - це місце, де речі "важко закодовані". Glibc підходить до вашої версії ядра, а його завантажувач - це екземпляр, який насправді робить правильно (TM) LD_LIBRARY_PATH.

Можливо, правильний спосіб:

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

Не впевнений, чи працює це, однак.

У будь-якому випадку, я думаю, що використання альтернативного glibc вимагає ще застосовувати рамки, тому що шляхи пошуку інколи підключені, і glibc завжди повинен відповідати вашій ОС / ядру, тому не може бути загальних бінарних файлів, IMO. Мультиарх Debian показує, що це не банально, але все ж можна зробити. Якби у вас є інші засоби розпізнавання бібліотек, крім цільової архітектури.

Веб-сайт просто дав мені цю іншу пов’язану тему:

Там прийнята відповідь включає посилання на програму під назвою rtldi , яка, здається, вирішує проблему glibc. Це з 2004 року, тому він більше не може працювати з лінкера, але, можливо, варто його вивчити. Його джерелом є GPLv2.

Єхова, Єхова

Мій друг одного разу придумав, що фактичне використання спільних бібліотек завищено. І в нього є сенс: спільні бібліотеки добре не заповнювати пам’ять вашого комп'ютера дублікатами, але, враховуючи окремий екземпляр програми, це лише кілька Мб.

Є лише кілька додатків, де ми вдамося до таких дій, як надання їм власного glibc. Заощаджуючи нам тривалий аналіз, давайте назвемо їх «негайними програмами», які самі корисні, в сенсі отримання роботи. Наприклад, веб-браузери, агенти поштового користування, офісні костюми та музичні плеєри дозволяють користувачеві отримувати те, що вони хочуть, і є лише кілька примірників на користувача. Щоб зобразити іншу сторону, дуже важливі системні служби, менеджери вікон, навіть цілі робочі середовища, але вони просто підтримують і часто не є достатньо рідкісними або критичними, щоб люди готові дати їм власний glibc.

Кількість "негайних додатків" досить мала, абсолютно на кожного користувача, і порівняно з тим, що "породили" основні ОС та DE в ці дні. Якби негайні програми, такі як Chrome, Firefox, були складені статично, додаткова потреба в пам'яті для середньої системи становила б кілька 100 Мб. Аргумент, який не є дуже далеко в багатьох сучасних системах ГБ, тому статичне з'єднання для негайних додатків може бути варіантом.

Існують також концепції простору підкачки та SSD, які дозволяють помітно швидко заміняти / виходити, що також допомагає працювати з підвищеною потребою в пам'яті.

Проблема glibc, що обговорюється тут, насправді не вирішена, хоч і є статичним зв'язком, але для таких додатків, як веб-браузер, можливий своєрідний формат розповсюдження, де X протокол, деякий звуковий демон і деякі методи ядра є єдиним інтерфейсом. Перевагою буде менше сумісності версій бібліотеки.


2
"ми говоримо про декілька 100MB тут" Ні , ні. Хоча основна маса самих бібліотек може бути не такою великою (але, ймовірно, на порядок або на два більше 100 Мб - спробуйте du -h /lib), майте на увазі, що якби вони були складені статично, ця кількість оперативної пам’яті буде потрібно для кожної і кожен додаток, складений з ними. Так що якщо, напр. у вас є два додатки, що використовують один і той же стек бібліотеки, тепер вам знадобиться вдвічі більше пам’яті. Три програми? Утричі більше. Не кажучи вже про це, це значною мірою заперечує переваги кешування ...
goldilocks

2
... оскільки, звичайно, ви не можете просто кешувати glibc - вам доведеться кешувати копії всіх запущених програм (= смішно =). Коротше кажучи, сучасні операційні системи прості та прості були б абсолютно неможливими на сучасному обладнанні, якби не сучасні методи, такі як спільні об'єкти. Вам не знадобиться лише трохи більше пам’яті - вам знадобиться в 10 або 100 разів більше пам’яті.
goldilocks

У мого Debian є 235 Мб /lib, з них 202 МБ - модулі ядра. Так, /usr/libє 4 Гб, але це дозволяє чітко не робити висновку про те, скільки потрібно окремій програмі. Кеш-пам'ять процесорів становить лише кілька Мб. Якщо споживання пам'яті чимось на зразок недавнього веб-браузера, вплив статично пов'язаних двійкових файлів на кешування також не такий великий і зменшується за кількістю одночасно запущених програм; також з причини відносно невеликих кешів. Мої оцінки здаються точнішими за ваші. Так, так.
Bananguin

Не кажучи вже про іншу величезну проблему статичного зв’язку - оновлення - це PITA. Якщо в glibc є проблеми із безпекою, нічого страшного: оновіть glibc, перезавантажте програми. OTOH, якщо ваші програми були статично пов'язані, вам доведеться завантажити нову версію кожної програми. І вашому дистрибутиву довелося б перекомпілювати (або принаймні повторно зв’язати, якби вони зберігали всі .o файли, навряд чи через величезний розмір) весь дистрибутив.
дероберт

1
@derobert: Здається, справедливо. Очевидно, що мої претензії були гіперболічними - тут з 1,8 ГБ було здійснено, що виплюнуло 521 Мб. Тож це було б збільшення на 30%. Звичайно, це все ще не є точкою продажу для стратегії, яка не має переваг (але "вимагає лише 30% більше оперативної пам'яті").
goldilocks
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.