Как заставить мою установку PHP Source использовать библиотеки из /usr/local/programname/lib вместо /usr/local/lib?

Как заставить мою установку PHP Source использовать библиотеки из /usr/local/programname/lib вместо /usr/local/lib?

Как мне заставить мою установку PHP Source использовать библиотеки внутри /usr/local/programname/libвместо или /usr/local/lib?

Я пробовал устанавливать LD_LIBRARY_PATH для каждого имени программы, например LD_LIBRARY_PATH="/usr/local/programname1/lib:/usr/local/programname2/lib:/usr/local/programname3/lib".

И я вышел из системы. Даже запустил source /etc/environment(я поместил переменную LD_LIBRARY_PATH в /etc/environment), даже перезагрузил систему.

Но все равно, когда я запускаю ./configure --with-openssl --with-curl, он мне сообщает, что libssl не существует.

Я не хочу использовать libssl-devпакет libcurl-dev, предоставляемый apt, поскольку мне нужны новейшие версии для тестирования.

И я заметил, что: если я устанавливаю каталог lib программы вместо /usr/local/lib, /usr/local/programname/libона работает без установки каких-либо переменных среды.

Но, на мой взгляд, /usr/local/programname/libэто более понятно, поэтому я хочу использовать этот тип пути.

Как мне сделать так, чтобы PHP использовал библиотеки внутри /usr/local/programname/libвместо /usr/local/lib? Под этим я подразумеваю, что я хочу дать больший приоритет, /usr/local/programname/libчем другим libкаталогам.

programnameотносится к названию каждой из программ, установленных внутри /usr/local.

Я даже пытался использовать /etc/ld.so.conf.d/programname.conf(я писал /usr/local/programnameвнутри него), и запускал ldconfig. Но все равно безуспешно.

Кстати, я использую Ubuntu 20.10.

Редактировать:

"Не боритесь с условностями системы."- Я не могу просто так двигаться дальше. Я должен попытаться это сделать, или я просто застряну и буду зависеть отнемного старыйпакеты, которые apt дает мне (даже если он дает мне самые новые, я не могу, например: использовать http/3 и тестировать его и многое другое...). И никакое тестирование не будет возможно. Я делаю это, чтобы сделать свои программы перспективными в будущем, и даже чтобы повеселиться, экспериментируя с ними. Тестируя с новыми программами. Установка в /usr/localне кажется хорошей, потому что я тестирую с несколькими версиями библиотек. Например, я тестирую с OpenSSL 1.1.1i и OpenSSL 3.0.0, а также с другими версиями. Так что установка в /usr/local не принесет мне пользы в этом, но установка в /usr/local/openssl-1.1.1iи /usr/local/openssl-3.0.0будет более чистой и сэкономит мне больше времени. Я не могу просто продолжать запускать make installи make uninstallкаждый раз. Не только OpenSSL, даже cURL и другие пакеты.

решение1

Системное соглашение по умолчанию используется во многих местах, поэтому вы создаете для себя большие накладные расходы, используя разные каталоги.

Самый простой способ — использовать контейнеры Docker для тестирования. Таким образом, вы можете использовать системные расположения по умолчанию внутри контейнера.

решение2

Я добавил PKG_CONFIG_PATH="/usr/local/programname/lib/pkgconfig"с LD_LIBRARY_PATHset to /usr/local/programname/lib, и теперь это работает. Мой PHP conf теперь использует версию, которую я установил внутри /usr/local/programname.

После стольких исследований вот что я придумал. Но пока я не проверю это, я не могу подтвердить, что это сработает для всех, кто захочет сделать это таким образом.

Связанный контент