Rhythmbox 无法启动

Rhythmbox 无法启动

我最近卸载了节奏盒在我的 Ubuntu 14.04 笔记本电脑上,通过Ubuntu 软件中心sudo apt-get purge rhythmbox并且由于它仍然出现在声音图标下,所以我运行了命令终端。如果您想知道为什么,Rhythmbox 经常无法启动,所以我愚蠢地认为简单的重新安装就能让生活变得更好!

接下来我安装节奏盒再次通过Ubuntu 软件中心现在,当我单击图标运行它时,什么都没有发生,当我rhythmbox在终端中输入命令时,收到以下错误。

$ rhythmbox
rhythmbox: error while loading shared libraries: libtotem-plparser.so.17: cannot open shared object file: No such file or directory

如何重新安装共享库 libtotem-plparser.so.17 或访问/重新创建必要的共享对象文件?

我努力了:

修复缺少 Rhythmbox 的共享库改变librhythmbox-core7librhythmbox-core8

sudo apt-get --reinstall install gir1.2-rb-3.0 librhythmbox-core8 rhythmbox rhythmbox-data rhythmbox-mozilla rhythmbox-plugin-cdrecorder rhythmbox-plugin-zeitgeist rhythmbox-plugins

我也尝试过修复升级到 Ubuntu 14.04 后 Rhythmbox 无法启动

但在两种情况下仍然会收到相同的错误消息:

$ rhythmbox
rhythmbox: error while loading shared libraries: libtotem-plparser.so.17: cannot open shared object file: No such file or directory

更新 1

建议来自乔宾

$ ls -l /usr/lib/libtotem-plparser.so.18:
lrwxrwxrwx 1 root root 27 Apr  1 14:32 /usr/lib/libtotem-plparser.so.18 -> libtotem-plparser.so.18.1.0

更新 2

我已尝试下载并重新安装 rhythmbox 3:

simon@simon-TS44HR:~/Downloads/rhythmbox-3.0.2$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether UID '1000' is supported by ustar format... yes
checking whether GID '1000' is supported by ustar format... yes
checking how to create a ustar tar archive... gnutar
checking whether to enable maintainer-specific portions of Makefiles... yes
checking whether make supports nested variables... (cached) yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for gobject-introspection... yes
checking whether NLS is requested... yes
checking for style of include used by make... GNU
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking dependency style of gcc... gcc3
checking for intltool >= 0.35.0... 0.50.2 found
checking for intltool-update... /usr/bin/intltool-update
checking for intltool-merge... /usr/bin/intltool-merge
checking for intltool-extract... /usr/bin/intltool-extract
checking for xgettext... /usr/bin/xgettext
checking for msgmerge... /usr/bin/msgmerge
checking for msgfmt... /usr/bin/msgfmt
checking for gmsgfmt... /usr/bin/msgfmt
checking for perl... /usr/bin/perl
checking for perl >= 5.8.1... 5.18.2
checking for XML::Parser... ok
checking for library containing strerror... none required
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking dependency style of gcc... (cached) gcc3
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking how to print strings... printf
checking for a sed that does not truncate output... /bin/sed
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for mt... mt
checking if mt is a manifest tool... no
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
configure: creating ./config.lt
config.lt: creating libtool
checking whether byte ordering is bigendian... no
checking size of long... 8
checking for pkg-config... (cached) /usr/bin/pkg-config
checking pkg-config is at least version 0.16... yes
checking for GNU extension fwrite_unlocked... yes
checking for pkg-config... (cached) /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for RB_CLIENT... yes
checking for RHYTHMBOX... yes
checking for TOTEM_PLPARSER... yes
checking for GUDEV... yes
checking for HAL... no
checking for IPOD... yes
checking for MTP... yes
checking for LIBSECRET... yes
checking for GSTREAMER... yes
checking for NOTIFY... yes
Your libnotify version is 0,7,6.
checking for uncompress in -lz... yes
checking for X... libraries , headers 
checking for gethostbyname... yes
checking for connect... yes
checking for remove... yes
checking for shmat... yes
checking for IceConnectionNumber in -lICE... yes
checking for XFree86 headers... yes
checking for LIBBRASERO_MEDIA... yes
checking for glib-genmarshal... /usr/bin/glib-genmarshal
checking for gdk-pixbuf-csource... /usr/bin/gdk-pixbuf-csource
checking whether strftime supports %E and %O modifiers... yes
checking for msgfmt... (cached) /usr/bin/msgfmt
checking for gmsgfmt... (cached) /usr/bin/msgfmt
checking for xgettext... (cached) /usr/bin/xgettext
checking for msgmerge... (cached) /usr/bin/msgmerge
checking for ld used by GCC... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking for shared library run path origin... done
checking for CFPreferencesCopyAppValue... no
checking for CFLocaleCopyCurrent... no
checking for GNU gettext in libc... yes
checking whether to use NLS... yes
checking where the gettext function comes from... libc
checking lirc/lirc_client.h usability... yes
checking lirc/lirc_client.h presence... yes
checking for lirc/lirc_client.h... yes
checking for lirc_init in -llirc_client... yes
checking for WEBKIT... yes
checking for more warnings... no
checking whether gcc understands -fno-strict-aliasing... yes
checking for gtk-doc... yes
checking for gtkdoc-check... gtkdoc-check.test
checking for gtkdoc-check... /usr/bin/gtkdoc-check
checking for gtkdoc-rebase... /usr/bin/gtkdoc-rebase
checking for gtkdoc-mkpdf... /usr/bin/gtkdoc-mkpdf
checking whether to build gtk-doc documentation... no
checking for GTKDOC_DEPS... yes
checking for itstool... itstool
checking for xmllint... xmllint
checking for a Python interpreter with version >= 3.2.3... python3
checking for python3... /usr/bin/python3
checking for python3 version... 3.4
checking for python3 platform... linux
checking for python3 script directory... ${prefix}/lib/python3.4/site-packages
checking for python3 extension module directory... ${exec_prefix}/lib/python3.4/site-packages
checking for PYTHON... yes
checking whether Vala plugin support is requested... autodetect
checking whether FM radio support is requested... checking linux/videodev2.h usability... yes
checking linux/videodev2.h presence... yes
checking for linux/videodev2.h... yes
checking for CHECK... no
checking for DMAPSHARING... yes
checking for CLUTTER... yes
checking for GRILO... no
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating rhythmbox.pc
config.status: creating Makefile
config.status: creating lib/Makefile
config.status: creating lib/libmediaplayerid/Makefile
config.status: creating metadata/Makefile
config.status: creating rhythmdb/Makefile
config.status: creating widgets/Makefile
config.status: creating podcast/Makefile
config.status: creating shell/Makefile
config.status: creating data/Makefile
config.status: creating data/rhythmbox.desktop.in
config.status: creating data/rhythmbox-device.desktop.in
config.status: creating data/ui/Makefile
config.status: creating data/icons/Makefile
config.status: creating data/icons/hicolor/Makefile
config.status: creating data/icons/hicolor/16x16/Makefile
config.status: creating data/icons/hicolor/16x16/apps/Makefile
config.status: creating data/icons/hicolor/16x16/status/Makefile
config.status: creating data/icons/hicolor/22x22/Makefile
config.status: creating data/icons/hicolor/22x22/apps/Makefile
config.status: creating data/icons/hicolor/24x24/Makefile
config.status: creating data/icons/hicolor/24x24/apps/Makefile
config.status: creating data/icons/hicolor/32x32/Makefile
config.status: creating data/icons/hicolor/32x32/apps/Makefile
config.status: creating data/icons/hicolor/48x48/Makefile
config.status: creating data/icons/hicolor/48x48/apps/Makefile
config.status: creating data/icons/hicolor/48x48/status/Makefile
config.status: creating data/icons/hicolor/256x256/Makefile
config.status: creating data/icons/hicolor/256x256/apps/Makefile
config.status: creating data/icons/hicolor/scalable/Makefile
config.status: creating data/icons/hicolor/scalable/apps/Makefile
config.status: creating data/icons/src/Makefile
config.status: creating sources/Makefile
config.status: creating sources/sync/Makefile
config.status: creating plugins/Makefile
config.status: creating plugins/audiocd/Makefile
config.status: creating plugins/audioscrobbler/Makefile
config.status: creating plugins/brasero-disc-recorder/Makefile
config.status: creating plugins/daap/Makefile
config.status: creating plugins/fmradio/Makefile
config.status: creating plugins/im-status/Makefile
config.status: creating plugins/ipod/Makefile
config.status: creating plugins/mtpdevice/Makefile
config.status: creating plugins/iradio/Makefile
config.status: creating plugins/lirc/Makefile
config.status: creating plugins/lyrics/Makefile
config.status: creating plugins/pythonconsole/Makefile
config.status: creating plugins/artsearch/Makefile
config.status: creating plugins/magnatune/Makefile
config.status: creating plugins/generic-player/Makefile
config.status: creating plugins/rb/Makefile
config.status: creating plugins/rb/rbconfig.py
config.status: creating plugins/power-manager/Makefile
config.status: creating plugins/mmkeys/Makefile
config.status: creating plugins/context/Makefile
config.status: creating plugins/sendto/Makefile
config.status: creating plugins/replaygain/Makefile
config.status: creating plugins/mpris/Makefile
config.status: creating plugins/dbus-media-server/Makefile
config.status: creating plugins/rbzeitgeist/Makefile
config.status: creating plugins/notification/Makefile
config.status: creating plugins/visualizer/Makefile
config.status: creating plugins/grilo/Makefile
config.status: creating sample-plugins/Makefile
config.status: creating sample-plugins/sample/Makefile
config.status: creating sample-plugins/sample-python/Makefile
config.status: creating sample-plugins/sample-vala/Makefile
config.status: creating bindings/Makefile
config.status: creating bindings/vala/Makefile
config.status: creating bindings/gi/Makefile
config.status: creating help/Makefile
config.status: creating po/Makefile.in
config.status: creating tests/Makefile
config.status: creating doc/Makefile
config.status: creating doc/reference/Makefile
config.status: creating backends/Makefile
config.status: creating backends/gstreamer/Makefile
config.status: creating remote/Makefile
config.status: creating remote/dbus/Makefile
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
config.status: executing po-directories commands
config.status: creating po/POTFILES
config.status: creating po/Makefile
config.status: executing po/stamp-it commands
configure: Rhythmbox was configured with the following options:
configure: ** Tree database is enabled
configure: ** Multimedia keys support is enabled
configure: ** iPod integration enabled
configure: ** MTP integration enabled
configure: ** CD burning support enabled
configure: ** DAAP (music sharing) support is enabled
configure: ** libnotify support is enabled
configure: ** WebKit support is enabled
configure: ** GUdev support enabled
configure: ** Python plugin support enabled
configure:    Vala plugin support disabled
configure: ** Libsecret keyring support enabled
configure: ** FM radio support enabled
configure: ** iTunes detection browser plugin (for podcasts) enabled
configure: ** Visualizer plugin enabled
configure: End options

当我制作文件时它运行良好直到:

  File "/usr/lib/gobject-introspection/giscanner/cachestore.py", line 148, in _clean
    self._remove_filename(os.path.join(self._directory, filename))
  File "/usr/lib/gobject-introspection/giscanner/cachestore.py", line 130, in _remove_filename
    os.unlink(filename)
OSError: [Errno 13] Permission denied: '/home/simon/.cache/g-ir-scanner/c3fdfb2eef221c4c5ec8d16026d3ec132ad90e39'
make[3]: *** [MPID-3.0.gir] Error 1
make[3]: Leaving directory `/home/simon/Downloads/rhythmbox-3.0.2/bindings/gi'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/simon/Downloads/rhythmbox-3.0.2/bindings'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/simon/Downloads/rhythmbox-3.0.2'
make: *** [all] Error 2

然后从终端运行 Rhythmbox 会出现以下结果:

simon@simon-TS44HR:~/Downloads/rhythmbox-3.0.2$ rhythmbox
rhythmbox: error while loading shared libraries: libtotem-plparser.so.17: cannot open shared object file: No such file or directory'

更新 3 来自多比

$ apt-cache policy rhythmbox
rhythmbox:
  Installed: 3.0.2-0ubuntu2
  Candidate: 3.0.2-0ubuntu2
  Version table:
 *** 3.0.2-0ubuntu2 0
        500 http://gb.archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages
        100 /var/lib/dpkg/status
     3.0.2-0ubuntu1 0
        500 http://gb.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages

更新 4斯尼特舍尔

sudo dpkg -i libtotem-plparser17_3.4.5-1_amd64.deb在终端运行后

$ rhythmbox

(rhythmbox:4104): GLib-GIO-CRITICAL **: g_settings_new_with_path: assertion 'path_is_valid (path)' failed

(rhythmbox:4104): GLib-GIO-CRITICAL **: g_settings_new_with_path: assertion 'path_is_valid (path)' failed

(rhythmbox:4104): GLib-GObject-WARNING **: invalid (NULL) pointer instance

(rhythmbox:4104): GLib-GObject-CRITICAL **: g_signal_connect_object: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed

(rhythmbox:4104): GLib-GIO-CRITICAL **: g_settings_get_value: assertion 'G_IS_SETTINGS (settings)' failed

(rhythmbox:4104): GLib-CRITICAL **: g_variant_get_type: assertion 'value != NULL' failed

(rhythmbox:4104): GLib-CRITICAL **: g_variant_type_is_subtype_of: assertion 'g_variant_type_check (type)' failed

(rhythmbox:4104): GLib-CRITICAL **: g_variant_get_boolean: assertion 'g_variant_is_of_type (value, G_VARIANT_TYPE_BOOLEAN)' failed

(rhythmbox:4104): GLib-CRITICAL **: g_variant_unref: assertion 'value != NULL' failed

(rhythmbox:4104): GLib-GObject-WARNING **: invalid (NULL) pointer instance

(rhythmbox:4104): GLib-GObject-CRITICAL **: g_signal_connect_object: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed

(rhythmbox:4104): GLib-GIO-CRITICAL **: g_settings_get_value: assertion 'G_IS_SETTINGS (settings)' failed

(rhythmbox:4104): GLib-CRITICAL **: g_variant_get_type: assertion 'value != NULL' failed

(rhythmbox:4104): GLib-CRITICAL **: g_variant_type_is_subtype_of: assertion 'g_variant_type_check (type)' failed

(rhythmbox:4104): GLib-CRITICAL **: g_variant_get_boolean: assertion 'g_variant_is_of_type (value, G_VARIANT_TYPE_BOOLEAN)' failed

(rhythmbox:4104): GLib-CRITICAL **: g_variant_unref: assertion 'value != NULL' failed

(rhythmbox:4104): Rhythmbox-WARNING **: Could not open device /dev/radio0

答案1

  • 嗯,libtotem-plparser17在 Trusty repo 中不可用:

    http://packages.ubuntu.com/search?keywords=libtotem-plparser17&searchon=names

    在我的 Ubuntu 14.04 中,我同时拥有libtotem-plparser17libtotem-plparser18,很可能是因为我从 Saucy 升级了。

  • 因此建议libtotem-plparser17从以下网址下载并安装 Saucy 包:

    http://packages.ubuntu.com/saucy/libtotem-plparser17

    64位软件包:

    wget http://gb.archive.ubuntu.com/ubuntu/pool/main/t/totem-pl-parser/libtotem-plparser17_3.4.5-1_amd64.deb
    sudo dpkg -i libtotem-plparser17_3.4.5-1_amd64.deb
    

    32位软件包:

    wget http://gb.archive.ubuntu.com/ubuntu/pool/main/t/totem-pl-parser/libtotem-plparser17_3.4.5-1_i386.deb
    sudo dpkg -i libtotem-plparser17_3.4.5-1_i386.deb
    

    我不确定它的任何依赖性。

  • 即使它有效,那也只是一种解决方法。可能你有多个 Rhythmbox 可执行文件的副本。

    1. 检查which rhythmbox(@fossfreedom 已经询问过)或尝试运行/usr/bin/rhythmbox
    2. 检查sudo updatedb; locate -r /bin/rhythmbox$(这应该涵盖常规安装configure,可在 bin/ 文件夹中执行)
  • 如果您获得多份副本,清理手动安装的 Rhythmbox

    1. 检查所有列表文件/文件夹是否与 rhythmbox 相关(这rm -rf是危险的命令)

      find /usr/local/ -iname *rhythmbox* -exec rm -rf {} \;
      
    2. 如果可以的话,请添加sudo

      sudo find /usr/local/ -iname *rhythmbox* -exec rm -rf {} \;
      
  • 如果只有一个副本. 另一个假设是,您可以通过某种方式获得构建的 rhythmbox 本身,libtotem-plparser.so.17或者获得其中一个加载的插件(任何自定义插件?)

    1. 仅确认ldd /usr/bin/rhythmbox列表libtotem-plparser.so.18(否libtotem-plparser.so.17

    2. 那么它可能是一个已加载的插件。用于strace调试:

      strace -e trace=open -o trace.log rhythmbox
      

      检查插件加载的路径:

      grep -i plugin trace.log | sort
      grep -i "\.so" trace.log | sort
      

      手动清除:

       sudo rm -rf /usr/lib/rhythmbox/plugins/ /usr/share/rhythmbox/plugins/ [...]
      
  • 清除包然后重新安装

         sudo apt-get --purge remove -s 'rhythmbox*'
         sudo apt-get install rhythmbox
    

答案2

您在前缀中安装了旧版本的 rhythmbox /usr/local。您应该从那里将其删除。以下命令应该会有所帮助:

rm /usr/local/bin/rhythmbox*
rm /usr/local/lib/librhythmbox*
rm -rf /usr/local/lib/rhythmbox
rm -rf /usr/local/share/rhythmbox
rm /usr/local/share/applications/rhythmbox*
rm /usr/share/glib-2.0/schemas/org.gnome.rhythmbox.gschema.xml

然后从档案中清除并重新安装版本:

sudo apt-get autoremove --purge librhythbmox-core8 libtotem-plparser17
sudo apt-get 安装 rhythmbox

这应该会让您回到档案中的内容以及一个正常工作的节奏盒。

答案3

根据经验猜测,您可能需要libtotem-plparser18打开终端并输入以下内容来安装该软件包:

sudo apt-get install libtotem-plparser18

你怎么知道?

我可以打开 rhythmbox 而不会出现该错误消息,这意味着我确实有该包。因此,打开终端并输入:

locate libtotem | grep plparser

返回结果如下:

/usr/lib/libtotem-plparser-mini.so.18
/usr/lib/libtotem-plparser-mini.so.18.1.0
/usr/lib/libtotem-plparser.so.18
/usr/lib/libtotem-plparser.so.18.1.0
/usr/share/doc/libtotem-plparser18
/usr/share/doc/libtotem-plparser18/AUTHORS
/usr/share/doc/libtotem-plparser18/NEWS.gz
/usr/share/doc/libtotem-plparser18/README
/usr/share/doc/libtotem-plparser18/changelog.Debian.gz
/usr/share/doc/libtotem-plparser18/copyright
/var/lib/dpkg/info/libtotem-plparser18.list
/var/lib/dpkg/info/libtotem-plparser18.md5sums
/var/lib/dpkg/info/libtotem-plparser18.postinst
/var/lib/dpkg/info/libtotem-plparser18.postrm
/var/lib/dpkg/info/libtotem-plparser18.shlibs
/var/lib/dpkg/info/libtotem-plparser18.symbols

其中/usr/lib/libtotem-plparser.so.18“看起来”是最佳候选。现在要获取此共享对象,您需要安装它,因此请键入:

apt-cache search libtotem-plparser

返回:

libtotem-plparser-dbg - Totem Playlist Parser library - debugging symbols
libtotem-plparser-dev - Totem Playlist Parser library - development files
libtotem-plparser18 - Totem Playlist Parser library - runtime files

其中再次libtotem-plparser18“看起来像”所需的包。

答案4

由于您已检查并且相关的.so 文件存在于系统中,因此意味着存在链接器问题。

查看此处给出的解决方案:

缺少系统中存在的共享库

当然locate libjvmfwk,你可以使用locate libtotem-plparser

仅供参考,我在 14.04 64 位上得到了以下结果:

/usr/lib/libtotem-plparser-mini.so.17 /usr/lib/libtotem-plparser-mini.so.17.0.4 /usr/lib/libtotem-plparser-mini.so.18 /usr/lib/libtotem-plparser-mini.so.18.1.0 /usr/lib/libtotem-plparser.so.17 /usr/lib/libtotem-plparser.so.17.0.4 /usr/lib/libtotem-plparser.so.18 /usr/lib/libtotem-plparser.so.18.1.0 希望这可以帮助。

相关内容