Установка двух glibc вместе с Debian / Ubuntu

15

Можно ли установить и использовать две разные версии glibc на одной машине? Где одна версия используется только для запуска устаревшего программного обеспечения, которое использует старые двоичные файлы glibc?

Можно ли сделать это с помощью менеджера пакетов (что-то вроде «установить этот пакет и его зависимости, чтобы /opt/old-glibc) вместо того, чтобы управлять им

Элазар Лейбович
источник
4
Должно быть, но ... о, так много боли.
чепанг
Возможно, но вам нужно будет предоставить более подробную информацию. Какая ОС (версия Debian / Ubuntu) точно и более важно, что такое устаревшее программное обеспечение и какую версию libc оно использует? Я думаю ldd, сказал бы вам кое-что. Если возможно, вам может понадобиться перекомпилировать устаревшую библиотеку libc и / или установить / перекомпилировать вспомогательные пакеты. В зависимости от того, сколько лет вашему приложению, это может быть сложно. Я вижу, что текущий Debian libc6зависит от libc-bin (= 2.13-0exp5)и libgcc1, следовательно libc6, не имеет много зависимостей, но вы все равно можете столкнуться с проблемами.
Фахим Митха

Ответы:

8

Да, это возможно. Вы должны быть очень осторожны с путями загрузки библиотек, и вам может понадобиться перекомпилировать некоторые другие библиотеки.

В качестве пути наименьшего трения я рекомендую установить более старую версию Debian или Ubuntu в chroot . То есть создайте каталог, скажем /old/etch, и установите более старый дистрибутив в древовидном дереве; чтобы запустить эту проблемную программу, вызовите, chrootчтобы ограничить ее просмотр файловой системы /old/etch.

Debian (или Ubuntu) поставляется с пакетом, помогающим установить другую систему в chroot: schroot (наследник dchroot). Во-первых, используйте debootstrap для установки более старого дистрибутива (устанавливайте только базовую систему и то, что нужно вашей программе, а не серверы). Затем установите schroot запустить программу удобно (с /dev, /proc, /homeи другие «спутник» файловые системы доступны).

Итак, план такой: debootstrap, затем dchroot. В Как запустить 32-битные программы на 64-битной Debian / Ubuntu? Я даю учебное пособие по аналогичной настройке - используете ли вы разные версии дистрибутива, или разные архитектуры, или разные дистрибутивы, подобные Debian, это только вопрос выбора соответствующего источника пакета, остальное одинаково.

Жиль "ТАК - перестань быть злым"
источник
Если у кого-то уже установлена ​​более новая версия, может ли он начать с нее, а затем, поверх более новой, установить более старую версию /old/etch?
n611x007
@naxa Да, на самом деле это описанная здесь ситуация, но она работает аналогичным образом, если вы идете в обратном направлении (более новые привязаны к более старым). На самом деле я написал учебник по debootstrap / schroot через несколько дней после написания этого ответа, я добавил ссылку.
Жиль "ТАК - перестань быть злым"