Installation von zwei glibc nebeneinander in debian / ubuntu

14

Ist es möglich, zwei verschiedene glibc-Versionen auf demselben Computer zu installieren und zu verwenden? Wobei eine Version nur zum Ausführen von Legacy-Software verwendet wird, die auf alten glibc-Binärdateien basiert?

Ist es möglich, dies mit Hilfe des Paketmanagers zu tun (etwas wie "Installiere dieses Paket und seine Abhängigkeiten" /opt/old-glibc), anstatt es direkt zu verwalten?

Elazar Leibovich
quelle
4
Muss sein, aber ... oh, so viel Schmerz.
Tshepang
Möglicherweise, aber Sie müssen mehr Details angeben. Welches Betriebssystem (Version von Debian / Ubuntu) genau und was ist die Legacy-Software und welche libc-Version verwendet sie? Ich denke, ich lddwürde dir etwas sagen. Nach Möglichkeit müssen Sie möglicherweise die alte libc-Bibliothek neu kompilieren und / oder Unterstützungspakete installieren / neu kompilieren. Je nachdem, wie alt Ihre App ist, kann dies schwierig werden. Ich sehe, dass aktuelles Debian libc6von libc-bin (= 2.13-0exp5)und abhängt libgcc1, also libc6nicht viele Abhängigkeiten hat, aber Sie könnten trotzdem auf Probleme stoßen.
Faheem Mitha

Antworten:

8

Ja es ist möglich. Sie müssen beim Laden der Bibliotheken sehr vorsichtig sein und möglicherweise einige andere Bibliotheken neu kompilieren.

Als Weg der geringsten Reibung empfehle ich, eine ältere Version von Debian oder Ubuntu in einer Chroot zu installieren . Das heißt, erstellen Sie ein Verzeichnis /old/etchund installieren Sie die ältere Distribution in dem Baum, der dort verwurzelt ist. Um dieses problematische Programm auszuführen, rufen Sie chrootauf, um die Ansicht des Dateisystems auf zu beschränken /old/etch.

Debian (oder Ubuntu) wird mit einem Paket geliefert, das bei der Installation eines anderen Systems in einer Chroot hilft : schroot (Nachfolger von dchroot). Verwenden Sie zuerst debootstrap , um die ältere Distribution zu installieren (installieren Sie nur das Basissystem und das, was Ihr Programm benötigt, keine Server). Dann schroot richten Sie das Programm bequem laufen (mit /dev, /proc, /homeund andere „Satelliten“ Dateisysteme zugänglich).

Der Plan lautet also: Debootstrap, dann Dchroot. In Wie führe ich 32-Bit-Programme auf einem 64-Bit-Debian / Ubuntu aus? Ich gebe ein Tutorial über ein ähnliches Setup - ob Sie verschiedene Versionen der Distribution oder verschiedene Architekturen oder verschiedene Debian-ähnliche Distributionen ausführen, es ist nur eine Frage der Auswahl der geeigneten Paketquelle, der Rest ist der gleiche.

Gilles 'SO - hör auf böse zu sein'
quelle
Wenn jemand die neuere Version bereits installiert hat, kann er dann von dort aus starten und die ältere über die neuere Version installieren /old/etch?
n611x007
@naxa Ja, das ist in der Tat die hier beschriebene Situation, aber es funktioniert auf die gleiche Weise, wenn Sie umgekehrt vorgehen (neuere chrooted in der älteren). Tatsächlich habe ich ein paar Tage nach dem Schreiben dieser Antwort ein Debootstrap / Schroot-Tutorial geschrieben. Ich habe den Link hinzugefügt.
Gilles 'SO - hör auf, böse zu sein'