Я следую шагам @ freeradius.org, чтобы включить python. После первого раунда изменений я запускаю сервер и получаю это среди болтовни запуска:
Failed loading libpython symbols into global symbol table: libpython2.7.so: cannot open shared object file: No such file or directory
Однако, проверив две машины (мою эталонную и тестовую), я обнаружил:
/usr/lib/python2.7/config-x86_64-linux-gnu/libpython2.7.so
Кто-нибудь имел и / или решил это? Оба сервера - Ubuntu 16.04.2 LTS.
Примечание: я поощряю ответы, которые лучше моего!
Взглянув на модуль исходного кода Freeradius C rlm_python.c, можно увидеть, что системный вызов dlopen () вызывается для открытия libpython2.7.so. Если его не удается найти, вызывается dlerror ().
Вызов dlopen () ищет файл в подкаталогах, присутствующих в переменной окружения LD_LIBRARY_PATH во время выполнения программы. Мой старый сисадмин враг! Предполагается, что LD_LIBRARY_PATH содержит список каталогов, разделенных двоеточиями, в которых dlopen () может рыться в надежде найти соответствующий файл библиотеки. Ни одна из машин Ubuntu, на которые я смотрел, включая рассматриваемую, не устанавливала эту переменную! Бомба замедленного действия, ожидающая срабатывания, когда приложение, которое хочет получить доступ к различным библиотекам, запускается, учитывая, что там являются стандартные места для таких файлов (в зависимости от дистрибутива).
Установка переменной перед запуском сервера решила проблему. Когда необходимо загрузить freeradius во время загрузки, вам нужно выбрать стратегию для этого. При запуске сервера в режиме отладки вы можете просто сделать это:
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/python2.7/config-x86_64-linux-gnu
# freeradius -X
... обязательно замените правильный каталог, если он не тот, который показан выше.