Постфикс не может найти, что MySQL совместно использовал библиотеку

Каждый файл и каталог в большинстве файловых систем Unix имеют связанную числовую группу и идентификатор пользователя. Затем существует отображение (/etc/passwd для пользователей и/etc/group для групп) идентификаторов к именам. При передаче файла другой системе числовые идентификаторы остаются такими же. Не может быть имени с тем идентификатором в новой системе. Таким образом, если Вы делаете a ls -l, Вы будете видеть числа вместо имен пользователей.

У пользователя root всегда есть идентификатор пользователя 0, таким образом, это будет то же в каждой системе. Если Вы намереваетесь переместить файлы часто, необходимо удостовериться, что у пользователей, которые обычны между этими двумя системами, есть тот же идентификатор пользователя на каждом.

2
15.08.2011, 15:41
2 ответа

Самое легкое решение состояло бы в том, чтобы установить MySQL от своей Дуги пакет Linux, и затем библиотека будет в /usr/lib и все работало бы гладко.

Если Вы устанавливаете MySQL вне упаковочной системы, то /usr/local/lib ожидаемое местоположение для библиотек; поместите символьную ссылку там. Я рекомендую использовать, убирают или xstow для автоматического создания символьных ссылок при установке программ из источника; посмотрите Отслеживание программ.

Если Вы хотите, чтобы все программы искали библиотеки в /usr/local/mysql/lib, добавьте его к пути поиска библиотеки по умолчанию в /etc/ld.so.conf. Но я скорее рекомендую символьную ссылку в /usr/local/lib, если это - то, что Вы хотите.

Если Вы только хотите, чтобы Постфикс искал библиотеки в /usr/local/mysql/lib, отредактируйте сценарий, который запускает Постфикс — что-то как /etc/rc.d/postfix (Я не знаю точное местоположение на Arch). Прежде чем постфиксный демон запускается, добавьте строку

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH${LD_LIBRARY_PATH:+:}/usr/local/mysql/lib"
3
27.01.2020, 22:07
  • 1
    Installing MySQL с pacman имеет смысл. К сожалению, pacman повреждается. Размещение символьной ссылки в usr/local/lib (вместо /usr/lib как я сделал), будет хорошо. Я просто задавался вопросом, почему это было чем-то, что пользователь должен сделать; это - что-то, что могло быть автоматизировано довольно легко. Возможно, это - контроль? –  SirTasty 14.08.2011, 10:42

На Дуге Linux у меня недавно была подобная проблема с установкой библиотек от пользовательских сборок. В моем случае это установило библиотеки на/usr/local/lib. Запуск приложения, для которого была нужна эта библиотека, привел к подобной ошибке периода выполнения: не может определить местоположение библиотеки. (Разве жизнь не была бы легче в Системе BSD?:-D)

Надлежащее решение состоит в том, чтобы добавить новый каталог местной библиотеки в путь компоновщика во время выполнения. На Дуге Linux это, кажется:

/etc/ld.so.conf

Таким образом добавить Ваш новый путь к библиотеке,

sudo vi /etc/ld.so.conf

затем добавьте путь на новой строке:

/usr/local/mysql/lib/

В моем случае мой/etc/ld.conf.so файл теперь похож ниже, потому что я добавил/usr/local/lib:

#
# /etc/ld.so.conf
#

include /etc/ld.so.conf.d/*.conf
/usr/local/lib

# End of file

Проверьте, что это корректно мое использование:

sudo ldconfig -v

Должны быть перечислены Ваши пользовательские библиотеки, т.е. они "найдены" компоновщиком.

Получить больше информации об этом конфигурационном файле и компоновщике во время выполнения,

man ldconfig

Это кажется Дугой, Linux настраивается для использования пользовательского каталога с несколькими файлами конфигурации (/etc/ld.so.conf.d / *.conf) однако, это - слишком много SYSV для меня и является полным излишеством; просто добавьте новые пути к/etc/ld.so.conf.

0
27.01.2020, 22:07

Теги

Похожие вопросы