Debian: Wie installiere ich zwei Versionen von libcurl auf einem System?

Debian: Wie installiere ich zwei Versionen von libcurl auf einem System?

Ich versuche, zwei Webanwendungen auf einen einzigen Server (Debian 10) zu migrieren. Beide erfordern unterschiedliche PHP-Versionen und beide benötigen cURL-Erweiterungen, um ordnungsgemäß zu funktionieren.

php5.6-curl verwendet libcurl v3

php8.1-curl verwendet libcurl v4

Zuerst habe ich php5.6-curl installiert, und als ich versuchte, php8.1-curl zu installieren, gab apt eine Benachrichtigung aus, dassThe following packages have unmet dependencies: php8.1-curl : Depends: libcurl4 (>= 7.56.1) but it is not going to be installed

Wenn ich -f auf apt verwende, wird php5.6-curl entfernt ...

Was ist der eleganteste Weg, diese beiden Libcurl-Bibliotheken auf einem einzigen System verfügbar zu machen?

Danke, Robert

edit: Soweit ich sehe, besteht das Problem darin, dass libcurl3 und libcurl4 dieselbe Datei /usr/lib/x86_64-linux-gnu/libcurl.so.4 verwenden und dies sich ändert, wenn das Paket neu installiert wird (libcurl3<->libcurl4). php[5.6,8.1]-fpm versucht, die Bibliothek zu laden, diejenige, die die falsche libcurl.so.4-Version erhält, schlägt fehl und PHP kann dieses Modul nicht verwenden.

Gibt es vielleicht eine elegante Methode, um 4eg php5-curl-Binärdateien zu zwingen, die Bibliothek aus einem benutzerdefinierten Pfad zu verwenden?

Antwort1

Legen Sie beide Apps in einen Container, der alles enthält, was sie brauchen.

Antwort2

Ich habe selbst einen Workaround gefunden. Wenn Sie ein ähnliches Problem lösen möchten, können Sie meinen, nicht unbedingt eleganten Weg gehen.

  1. Installieren Sie alle erforderlichen PHP5.6-Pakete.
  2. Kopieren Sie das Verzeichnis /usr/lib nach /usr/php56libs
  3. in meinem Fall systemd-Servicedatei bearbeiten: systemctl edit --full php5.6-fpm
  4. unterServiceAbschnitt „Umgebungsvariable hinzufügen“: Environment="LD_LIBRARY_PATH=/usr/php56libs"
  5. Jetzt können Sie alle php8.1-Pakete mit apt installieren (mit -fder Option „Force“). Dadurch werden alle in Konflikt stehenden Bibliotheken aus /usr/lib entfernt, aber das spielt keine Rolle, da der Dienst php5.6-fpm die aus /usr/php56libs verwendet.

Antwort3

Melden Sie sich per SSH bei Ihrem Server an. Stellen Sie sicher, dass Sie sich im Stammverzeichnis Ihres Benutzers befinden. Suchen Sie die Version, die Sie installieren möchten. Entpacken Sie die Datei. Navigieren Sie in dieses neue Verzeichnis. Öffnen Sie Ihr .bash_profile mit nano oder vim. Beispiel: Fügen Sie die erforderliche Datei zu .bash hinzu und aktualisieren Sie. Aktualisieren Sie Ihr .bash_profile, um Ihre neue Konfiguration zu aktivieren. Überprüfen Sie den Speicherort und die Version von curl

verwandte Informationen