LINUX.ORG.RU

Юнит ломает LD_LIBRARY_PATH

 , ,


0

1

Я конечно на 100% не уверен что виноват юнит, но очень похоже что это именно так. Проблема в том что после установки и запуска plex-media-server у меня библиотеки начинают загружатся приоритетно не из /usr/lib, а из /usr/lib/plexmediaserver и система соответственно ломается вся. Отказываться от плекса тоже не вариант. Код юнита следующий:


[Unit]
Description=Plex Media Server for Linux
After=network.target

[Service]
Environment="PLEX_MEDIA_SERVER_APPLICATION_SUPPORT_DIR=/var/lib/plexmediaserver/Library/Application Support"
Environment=PLEX_MEDIA_SERVER_HOME=/usr/lib/plexmediaserver
Environment=PLEX_MEDIA_SERVER_MAX_PLUGIN_PROCS=6
Environment=PLEX_MEDIA_SERVER_TMPDIR=/tmp
Environment=LD_LIBRARY_PATH=/usr/lib/plexmediaserver
Environment=LC_ALL=en_US.UTF-8
Environment=LANG=ru_RU.UTF-8
ExecStartPre=/bin/sh -c '/usr/bin/test -d "${PLEX_MEDIA_SERVER_APPLICATION_SUPPORT_DIR}" || /bin/mkdir -p "${PLEX_MEDIA_SERVER_APPLICATION_SUPPORT_DIR}"'
ExecStart=/bin/sh -c '/usr/sbin/start_pms'
Type=simple
User=plex
Group=plex
Restart=on-failure
RestartSec=5
StartLimitInterval=60s
StartLimitBurst=3

[Install]
WantedBy=multi-user.target

Немного смущают строки Environment, но они же только для этого процесса, а систему ломать ведь не должны? Короче, нид хелп.

★★★★★

Последнее исправление: Loki13 (всего исправлений: 1)

Ответ на: комментарий от Loki13

Сейчас я переименовал /usr/lib/plexmediaserver в plexmediaserver с _

Всё заработало и в частности питон. Теперь не понимаю как обратно сломать.

Loki13 ★★★★★
() автор топика
Ответ на: комментарий от Loki13

Переустановил plex-media-server и обратно всё поломалось

Вот результат

alexv@home ~ $ pip
Traceback (most recent call last):
  File "/usr/bin/pip", line 6, in <module>
    from pkg_resources import load_entry_point
  File "/usr/lib64/python3.4/site-packages/pkg_resources/__init__.py", line 35, in <module>
    import plistlib
  File "/usr/lib64/python3.4/plistlib.py", line 65, in <module>
    from xml.parsers.expat import ParserCreate
  File "/usr/lib64/python3.4/xml/parsers/expat.py", line 4, in <module>
    from pyexpat import *
ImportError: /usr/lib64/python3.4/lib-dynload/pyexpat.cpython-34m.so: undefined symbol: XML_SetHashSalt
alexv@home ~ $ echo $LD_LIBRARY_PATH
/usr/lib/qt5/lib/:
alexv@home ~ $ 

На pip легко проверить что питон уже сломан

Loki13 ★★★★★
() автор топика
Ответ на: комментарий от d_a

Это похоже вот от этого

export LD_LIBRARY_PATH=$QTDIR/lib/:$LD_LIBRARY_PATH

Занятно. Видимо у меня до этого он был пустой, вот так и вышло.

Но что-то не помогло. Теперь : нет, но питон все равно не работает.

Loki13 ★★★★★
() автор топика
Последнее исправление: Loki13 (всего исправлений: 1)
Ответ на: комментарий от Loki13

export LD_LIBRARY_PATH=$QTDIR/lib/:$LD_LIBRARY_PATH

Это изначально говнокод, который раскроет лишнее двоеточие, даже без учёта семантики пустого ":" для динлинкера.

d_a ★★★★★
()
Ответ на: комментарий от d_a

Я уже этот говнокод убрал. При наличии каталога /usr/lib/plexmediaserver система не загружается(пробовал перезагружать). Только после того как переименовал его в rescue-mode смог загрузиться.

Я наверное тему не совсем корректно назвал. Юнит тут возможно и не причем, возможно это в ebuild'е что-то накосячено. Сейчас в него погляжу.

Вот такое в ебилде нашел

QA_MULTILIB_PATHS=(
	"usr/lib/${_APPNAME}/.*"
	"usr/lib/${_APPNAME}/Resources/Python/lib/python2.7/.*"
)

И вот такое подозрительное

# Finds out where the library directory is for this system
# and handles ldflags as to not break library dependencies
# during rebuilds.
_handle_multilib() {
	# Prevent revdep-rebuild, @preserved-rebuild breakage
	cat > "${T}"/66plex <<-EOF || die
		LDPATH="${EPREFIX}/usr/$(get_libdir)/plexmediaserver"
	EOF

	doenvd "${T}"/66plex
}


Loki13 ★★★★★
() автор топика
Последнее исправление: Loki13 (всего исправлений: 3)
Ответ на: комментарий от Loki13

Я первый пост, признаюсь, вовсе не читал, только придрался к месту где значение твоего LD_LIBRARY_PATH заканчивалось на :. С точки зрения отладки systemd-сервиса смотреть твой пользовательский environment, разумеется, абсолютно бесполезно.

d_a ★★★★★
()
Ответ на: комментарий от d_a

И в итоге нашел в /etc/env.d/66plex вот такое

LDPATH=«/usr/lib64/plexmediaserver»

Что-то похоже что из-за этого. Попробую прибить. Понапишут ебилдов понимаешь.

Прибил 66plex - не помогло.

Loki13 ★★★★★
() автор топика
Последнее исправление: Loki13 (всего исправлений: 1)
Ответ на: комментарий от Loki13

LDPATH в через env.d собирается вместе с другими переменными инкрементально - результат смотри в /etc/profile.env(для обычных переменных) и в /etc/ld.so.conf и /etc/ld.so.conf.d(для линкера). Так что ИМХО здесь всё правильно в ебилде, но глянуть на результат конфига линкера не помешает.

А после прибития файла 66plex надо было как минимум сделать env-update и ldconfig, чтобы результат был заметен

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 2)
Ответ на: комментарий от Pinkbyte

Нашел в /etc/ld.so.conf строчку /usr/lib64/plexmediaserver. Как узнать как она туда попала? Этот файл генерируется или достаточно прибить эту строку чтобы всё нормально стало?

Также нашел в /etc/ld.so.conf.d/plex.conf с /usr/lib/plexmediaserver/.

Теперь похоже понятно откуда ноги растут. Правда не понятно кто это всё накидал по всей системе. Так то прибью, но как бы после обновления плекса всё это обратно на всплыло.

Loki13 ★★★★★
() автор топика
Последнее исправление: Loki13 (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

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

Спасибо. Решено.

Loki13 ★★★★★
() автор топика
Ответ на: комментарий от Siado

Для плекса есть очень годное приложение для сосунгового смарт-тв, а с длна обычным придется мучаться с кривым фейсом телека.

Loki13 ★★★★★
() автор топика
Ответ на: комментарий от Loki13

Я не знаю что там такого в интерфейсе телека не так. Но насчет сосунга подтвердю что он сосунг. У самого сеть и самсунг и элжи первый какое-то говно по удобству, если стравнить с лыжей

Siado ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.