
Как мне заставить мою установку 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_PATH
set to /usr/local/programname/lib
, и теперь это работает. Мой PHP conf теперь использует версию, которую я установил внутри /usr/local/programname
.
После стольких исследований вот что я придумал. Но пока я не проверю это, я не могу подтвердить, что это сработает для всех, кто захочет сделать это таким образом.