Wie bringe ich meine PHP-Quellinstallation dazu, die Bibliotheken innerhalb von /usr/local/programname/lib statt /usr/local/lib zu verwenden?

Wie bringe ich meine PHP-Quellinstallation dazu, die Bibliotheken innerhalb von /usr/local/programname/lib statt /usr/local/lib zu verwenden?

Wie kann ich erreichen, dass meine PHP-Quellcodeinstallation die Bibliotheken in /usr/local/programname/libanstelle von verwendet /usr/local/lib?

Ich habe versucht, LD_LIBRARY_PATH für jeden der Programmnamen wie folgt festzulegen LD_LIBRARY_PATH="/usr/local/programname1/lib:/usr/local/programname2/lib:/usr/local/programname3/lib".

Und ich habe mich abgemeldet. Sogar ausgeführt source /etc/environment(ich habe die Variable LD_LIBRARY_PATH in /etc/environment eingefügt), sogar das System neu gestartet.

Wenn ich es jedoch ausführe ./configure --with-openssl --with-curl, wird mir weiterhin angezeigt, dass libssl nicht existiert.

libssl-devIch möchte das von apt bereitgestellte Paket nicht verwenden libcurl-dev, da ich zum Testen die neusten Versionen benötige.

Und ich habe Folgendes festgestellt: Wenn ich das Lib-Verzeichnis des Programms in /usr/local/libstatt installiere /usr/local/programname/lib, funktioniert es ohne Festlegen von Umgebungsvariablen.

Aber meiner Meinung nach /usr/local/programname/libist es klarer, deshalb möchte ich diesen Pfadtyp verwenden.

Wie kann ich erreichen, dass PHP die Bibliotheken darin verwendet, /usr/local/programname/libanstatt /usr/local/lib? Damit meine ich, dass ich mehr Priorität einräumen möchte /usr/local/programname/libals anderen libVerzeichnissen.

programnamebezieht sich auf den Namen jedes darin installierten Programms /usr/local.

Ich habe sogar versucht, zu verwenden /etc/ld.so.conf.d/programname.conf(ich habe /usr/local/programnamehineingeschrieben) und es ausgeführt ldconfig. Aber immer noch kein Glück.

Übrigens verwende ich Ubuntu 20.10

Bearbeiten:

"Kämpfe nicht gegen die Konventionen des Systems"- Ich kann nicht einfach so weitermachen. Ich muss versuchen, das zu tun, sonst bleibe ich stecken und bin abhängig von derirgendwie altPakete, die mir apt gibt (selbst wenn es mir die neusten gibt, kann ich z. B. nicht http/3 verwenden und es testen und mehr...). Und es wird kein Testen möglich sein. Ich mache das, um meine Programme zukunftssicher zu machen und sogar, um Spaß daran zu haben, damit zu experimentieren. Indem ich mit neuen Programmen teste. Die Installation in /usr/localfühlt sich nicht gut an, weil ich mit mehreren Versionen der Bibliotheken teste. Ich teste beispielsweise mit OpenSSL 1.1.1i und OpenSSL 3.0.0 und auch mit anderen Versionen. Die Installation in /usr/local bringt mir diesbezüglich also nichts, aber die Installation in /usr/local/openssl-1.1.1iund /usr/local/openssl-3.0.0ist sauberer und spart mir mehr Zeit. Ich kann nicht einfach jedes Mal make installund weiter ausführen make uninstall. Nicht nur OpenSSL, sondern auch cURL und andere Pakete.

Antwort1

Die Systemstandardkonvention wird an so vielen Stellen verwendet, dass Sie sich durch die Verwendung unterschiedlicher Verzeichnisse einen großen Aufwand verursachen.

Am einfachsten ist es, Docker-Container für Ihre Tests zu verwenden. Auf diese Weise können Sie Standardsystemstandorte innerhalb des Containers verwenden.

Antwort2

Ich habe es PKG_CONFIG_PATH="/usr/local/programname/lib/pkgconfig"mit LD_LIBRARY_PATHset to hinzugefügt /usr/local/programname/libund jetzt funktioniert es. Meine PHP-Konfiguration verwendet jetzt die Version, die ich in installiert habe /usr/local/programname.

Nach so viel Recherche bin ich zu folgendem Ergebnis gekommen. Aber solange ich es nicht weiter überprüft habe, kann ich nicht bestätigen, dass es für jeden funktioniert, der es auf diese Weise machen möchte.

verwandte Informationen