Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 644694 - media-tv/plex-media-server-1.10.0 registers its .so files in ldconfig
Summary: media-tv/plex-media-server-1.10.0 registers its .so files in ldconfig
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Jonathan Vasquez (RETIRED)
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-01-15 21:02 UTC by wyvern5
Modified: 2018-01-31 05:08 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description wyvern5 2018-01-15 21:02:27 UTC
Desired behavior:
- Install Plex. Plex uses its own libraries, and nothing else does.

Actual behavior:
- Install Plex. Plex's libraries are made available for anyone to link against, leading to crashes when those libraries are actually used.

It seems really bad to have plex basically offer its own little mini-OS worth of libraries to the entire system. I definitely don't want plex's libexpat, for instance. I found this when it caused the python interpreter to crash because `imageio` was loading plex's copy of `libfreeimage.so`, which did not play well.

# ldconfig -p | grep plexmedia
        libz.so.1 (libc6,x86-64) => /usr/lib64/plexmediaserver/libz.so.1
        libxslt.so.1 (libc6,x86-64) => /usr/lib64/plexmediaserver/libxslt.so.1
        libxml2.so.2 (libc6,x86-64) => /usr/lib64/plexmediaserver/libxml2.so.2
        libva.so.2 (libc6,x86-64) => /usr/lib64/plexmediaserver/libva.so.2
        libva-drm.so.2 (libc6,x86-64) => /usr/lib64/plexmediaserver/libva-drm.so.2
        libusb-1.0.so.0 (libc6,x86-64) => /usr/lib64/plexmediaserver/libusb-1.0.so.0
        libucsi.so (libc6,x86-64) => /usr/lib64/plexmediaserver/libucsi.so
        libtag.so.1 (libc6,x86-64) => /usr/lib64/plexmediaserver/libtag.so.1
        libswscale.so.4 (libc6,x86-64) => /usr/lib64/plexmediaserver/libswscale.so.4
        libssl.so.1.0.0 (libc6,x86-64) => /usr/lib64/plexmediaserver/libssl.so.1.0.0
        libsqlite3.so.0 (libc6,x86-64) => /usr/lib64/plexmediaserver/libsqlite3.so.0
        libsoci_sqlite3.so.3.0.0 (libc6,x86-64) => /usr/lib64/plexmediaserver/libsoci_sqlite3.so.3.0.0
        libsoci_core.so.3.0.0 (libc6,x86-64) => /usr/lib64/plexmediaserver/libsoci_core.so.3.0.0
        libpython2.7.so.1.0 (libc6,x86-64) => /usr/lib64/plexmediaserver/libpython2.7.so.1.0
        libpion-5.0.so (libc6,x86-64) => /usr/lib64/plexmediaserver/libpion-5.0.so
        libopencv_imgproc.so.2.4 (libc6,x86-64) => /usr/lib64/plexmediaserver/libopencv_imgproc.so.2.4
        libopencv_core.so.2.4 (libc6,x86-64) => /usr/lib64/plexmediaserver/libopencv_core.so.2.4
        libnatpmp.so.1 (libc6,x86-64) => /usr/lib64/plexmediaserver/libnatpmp.so.1
        libminizip.so.1 (libc6,x86-64) => /usr/lib64/plexmediaserver/libminizip.so.1
        libminiupnpc.so.10 (libc6,x86-64) => /usr/lib64/plexmediaserver/libminiupnpc.so.10
        liblrc.so.0 (libc6,x86-64) => /usr/lib64/plexmediaserver/liblrc.so.0
        libjemalloc.so.1 (libc6,x86-64) => /usr/lib64/plexmediaserver/libjemalloc.so.1
        libiconv.so.2 (libc6,x86-64) => /usr/lib64/plexmediaserver/libiconv.so.2
        libhdhomerun.so (libc6,x86-64) => /usr/lib64/plexmediaserver/libhdhomerun.so
        libgnsdk_video.so.3.07.7 (libc6,x86-64) => /usr/lib64/plexmediaserver/libgnsdk_video.so.3.07.7
        libgnsdk_tocgen.so.3.07.7 (libc6,x86-64) => /usr/lib64/plexmediaserver/libgnsdk_tocgen.so.3.07.7
        libgnsdk_submit.so.3.07.7 (libc6,x86-64) => /usr/lib64/plexmediaserver/libgnsdk_submit.so.3.07.7
        libgnsdk_storage_sqlite.so.3.07.7 (libc6,x86-64) => /usr/lib64/plexmediaserver/libgnsdk_storage_sqlite.so.3.07.7
        libgnsdk_rhythm.so.3.07.7 (libc6,x86-64) => /usr/lib64/plexmediaserver/libgnsdk_rhythm.so.3.07.7
        libgnsdk_playlist.so.3.07.7 (libc6,x86-64) => /usr/lib64/plexmediaserver/libgnsdk_playlist.so.3.07.7
        libgnsdk_musicid_stream.so.3.07.7 (libc6,x86-64) => /usr/lib64/plexmediaserver/libgnsdk_musicid_stream.so.3.07.7
        libgnsdk_musicid_match.so.3.07.7 (libc6,x86-64) => /usr/lib64/plexmediaserver/libgnsdk_musicid_match.so.3.07.7
        libgnsdk_musicid_file.so.3.07.7 (libc6,x86-64) => /usr/lib64/plexmediaserver/libgnsdk_musicid_file.so.3.07.7
        libgnsdk_musicid.so.3.07.7 (libc6,x86-64) => /usr/lib64/plexmediaserver/libgnsdk_musicid.so.3.07.7
        libgnsdk_moodgrid.so.3.07.7 (libc6,x86-64) => /usr/lib64/plexmediaserver/libgnsdk_moodgrid.so.3.07.7
        libgnsdk_manager.so.3.07.7 (libc6,x86-64) => /usr/lib64/plexmediaserver/libgnsdk_manager.so.3.07.7
        libgnsdk_lookup_localstream.so.3.07.7 (libc6,x86-64) => /usr/lib64/plexmediaserver/libgnsdk_lookup_localstream.so.3.07.7
        libgnsdk_lookup_local.so.3.07.7 (libc6,x86-64) => /usr/lib64/plexmediaserver/libgnsdk_lookup_local.so.3.07.7
        libgnsdk_link.so.3.07.7 (libc6,x86-64) => /usr/lib64/plexmediaserver/libgnsdk_link.so.3.07.7
        libgnsdk_fp.so.3.07.7 (libc6,x86-64) => /usr/lib64/plexmediaserver/libgnsdk_fp.so.3.07.7
        libgnsdk_dsp.so.3.07.7 (libc6,x86-64) => /usr/lib64/plexmediaserver/libgnsdk_dsp.so.3.07.7
        libgnsdk_correlates.so.3.07.7 (libc6,x86-64) => /usr/lib64/plexmediaserver/libgnsdk_correlates.so.3.07.7
        libfreeimage.so (libc6,x86-64) => /usr/lib64/plexmediaserver/libfreeimage.so
        libexslt.so.0 (libc6,x86-64) => /usr/lib64/plexmediaserver/libexslt.so.0
        libexpat.so.1 (libc6,x86-64) => /usr/lib64/plexmediaserver/libexpat.so.1
        libesg.so (libc6,x86-64) => /usr/lib64/plexmediaserver/libesg.so
        libdvbsec.so (libc6,x86-64) => /usr/lib64/plexmediaserver/libdvbsec.so
        libdvben50221.so (libc6,x86-64) => /usr/lib64/plexmediaserver/libdvben50221.so
        libdvbcfg.so (libc6,x86-64) => /usr/lib64/plexmediaserver/libdvbcfg.so
        libdvbapi.so (libc6,x86-64) => /usr/lib64/plexmediaserver/libdvbapi.so
        libdrm_intel.so.1 (libc6,x86-64) => /usr/lib64/plexmediaserver/libdrm_intel.so.1
        libdrm.so.2 (libc6,x86-64) => /usr/lib64/plexmediaserver/libdrm.so.2
        libcurl.so.4 (libc6,x86-64) => /usr/lib64/plexmediaserver/libcurl.so.4
        libcrypto.so.1.0.0 (libc6,x86-64) => /usr/lib64/plexmediaserver/libcrypto.so.1.0.0
        libboost_timer.so.1.59.0 (libc6,x86-64) => /usr/lib64/plexmediaserver/libboost_timer.so.1.59.0
        libboost_thread.so.1.59.0 (libc6,x86-64) => /usr/lib64/plexmediaserver/libboost_thread.so.1.59.0
        libboost_system.so.1.59.0 (libc6,x86-64) => /usr/lib64/plexmediaserver/libboost_system.so.1.59.0
        libboost_regex.so.1.59.0 (libc6,x86-64) => /usr/lib64/plexmediaserver/libboost_regex.so.1.59.0
        libboost_random.so.1.59.0 (libc6,x86-64) => /usr/lib64/plexmediaserver/libboost_random.so.1.59.0
        libboost_program_options.so.1.59.0 (libc6,x86-64) => /usr/lib64/plexmediaserver/libboost_program_options.so.1.59.0
        libboost_locale.so.1.59.0 (libc6,x86-64) => /usr/lib64/plexmediaserver/libboost_locale.so.1.59.0
        libboost_iostreams.so.1.59.0 (libc6,x86-64) => /usr/lib64/plexmediaserver/libboost_iostreams.so.1.59.0
        libboost_filesystem.so.1.59.0 (libc6,x86-64) => /usr/lib64/plexmediaserver/libboost_filesystem.so.1.59.0
        libboost_date_time.so.1.59.0 (libc6,x86-64) => /usr/lib64/plexmediaserver/libboost_date_time.so.1.59.0
        libboost_chrono.so.1.59.0 (libc6,x86-64) => /usr/lib64/plexmediaserver/libboost_chrono.so.1.59.0
        libboost_atomic.so.1.59.0 (libc6,x86-64) => /usr/lib64/plexmediaserver/libboost_atomic.so.1.59.0
        libavutil.so.55 (libc6,x86-64) => /usr/lib64/plexmediaserver/libavutil.so.55
        libavformat.so.57 (libc6,x86-64) => /usr/lib64/plexmediaserver/libavformat.so.57
        libavcodec.so.57 (libc6,x86-64) => /usr/lib64/plexmediaserver/libavcodec.so.57
        libargtable2.so.0 (libc6,x86-64) => /usr/lib64/plexmediaserver/libargtable2.so.0
Comment 1 Jonathan Vasquez (RETIRED) gentoo-dev 2018-01-19 02:07:18 UTC
Thanks for reporting this, I'll get to it when I get a chance. If you can submit patches, that would expedite this process.
Comment 2 wyvern5 2018-01-24 15:38:40 UTC
Simply commenting out the LDPATH line (the only line) in /etc/env.d/66plex and running env-update solved the issue for me. 

With or without that change, revdep-rebuild still thinks that plex-media-server needs to be rebuilt.
Comment 3 Dudu Edri 2018-01-28 19:14:54 UTC
Can confirm that commenting out LDPATH in /etc/env.d/66plex solves the registration of plex's libraries to the entire system.

There one more problem - revdep-rebuild tells that several libraries search for "libdb-4.8.so", and a rebuild doesn't help:
 * Broken files that require: libdb-4.8.so (64 bits)
        * /usr/lib64/plexmediaserver/Resources/Python/lib/python2.7/lib-dynload/_bsddb.so
        * /usr/lib64/plexmediaserver/Resources/Python/lib/python2.7/lib-dynload/dbm.so


ldd's output for one of the files:

ldd: warning: you do not have execution permission for `/usr/lib64/plexmediaserver/Resources/Python/lib/python2.7/lib-dynload/dbm.so'
        linux-vdso.so.1 (0x00007ffe80df0000)
        libdb-4.8.so => not found
        libpython2.7.so.1.0 => /usr/lib64/libpython2.7.so.1.0 (0x00007fec15a96000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fec15876000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fec154b4000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007fec152b0000)
        libutil.so.1 => /lib64/libutil.so.1 (0x00007fec150ad000)
        libm.so.6 => /lib64/libm.so.6 (0x00007fec14d63000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fec16074000)


Those file aren't being linked against the correct library (actually, they aren't being compiled locally, they are just extracted from a DEB package - so that's why a rebuild doesn't help).
Comment 4 Jonathan Vasquez (RETIRED) gentoo-dev 2018-01-28 23:12:52 UTC
Hey folks,

I've fixed and tested the issue with your fix. Seems good. I pushed it in

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=45282acdcd2bfdb74d8d74ebc712b4cddeadd2e9

That also stabilizes 1.10.1.

As for the other issue, you could open another bug report if you want, I am aware of that issue but it hasn't caused any issues with other applications and at this point I consider it cosmetic. It probably would be more complicated to try and split this from being packaged by upstream vs use rebuilding it. Due to this, I don't feel I want to spend time trying to do this, and I would also like to stay close to upstream. Hopefully as we move towards a more containerized future, these issues wouldn't pop up (Since with containers, upstream is free-to & encouraged to package all of their stuff in their own container).

- Jonathan