
Wie kann ich erreichen, dass meine PHP-Quellcodeinstallation die Bibliotheken in /usr/local/programname/lib
anstelle 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-dev
Ich 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/lib
statt installiere /usr/local/programname/lib
, funktioniert es ohne Festlegen von Umgebungsvariablen.
Aber meiner Meinung nach /usr/local/programname/lib
ist es klarer, deshalb möchte ich diesen Pfadtyp verwenden.
Wie kann ich erreichen, dass PHP die Bibliotheken darin verwendet, /usr/local/programname/lib
anstatt /usr/local/lib
? Damit meine ich, dass ich mehr Priorität einräumen möchte /usr/local/programname/lib
als anderen lib
Verzeichnissen.
programname
bezieht 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/programname
hineingeschrieben) 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/local
fü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.1i
und /usr/local/openssl-3.0.0
ist sauberer und spart mir mehr Zeit. Ich kann nicht einfach jedes Mal make install
und 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_PATH
set to hinzugefügt /usr/local/programname/lib
und 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.