Linux: Mediathekview error nach update auf 14
-
Wochenlang habe ich die Tatsache ignoriert, dass Mediathekview 13.x bei jedem Start wieder v. 14.0 heruntergeladen hat (aber natürlich nicht installiert hat, denn das braucht unter Linux root-Rechte). Also dachte ich, ich probier das heute mal mit v. 14. Wie erwartet klappte das nicht:
/opt/MediathekView/MediathekView . Configuring for non-portable mode . Programmstart: 2023-10-08T19:38:14.281874189 . Version: 14.0.0 . === Java Information === . Vendor: Eclipse Adoptium . VMname: OpenJDK 64-Bit Server VM . Version: 20.0.1 . Runtime Version: 20.0.1+9 . Maximum Memory: 8022 MB Okt. 08, 2023 7:38:14 PM com.sun.javafx.application.PlatformImpl startup WARNUNG: Unsupported JavaFX configuration: classes were loaded from 'unnamed module @63eef88a' . Operating System: Linux . OS Version: 4.19.0-25-amd64 . OS Arch: amd64 . OS Dark Mode detection not supported . OS Available Processors: 4 . Verzeichnis Einstellungen: /home/.../.mediathek3 . Konfig wurde gelesen! Failed to load native library:sqlite-3.41.2.1-51d41167-9d55-499d-851d-720532f9e64d-libsqlitejdbc.so. osinfo: Linux/x86_64 java.lang.UnsatisfiedLinkError: /tmp/sqlite-3.41.2.1-51d41167-9d55-499d-851d-720532f9e64d-libsqlitejdbc.so: /tmp/sqlite-3.41.2.1-51d41167-9d55-499d-851d-720532f9e64d-libsqlitejdbc.so: Fehler beim Mappen des Shared Objects at java.base/jdk.internal.loader.NativeLibraries.load(Native Method) at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:331) at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:197) at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:139) at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2404) at java.base/java.lang.Runtime.load0(Runtime.java:817) at java.base/java.lang.System.load(System.java:2015) at org.sqlite.SQLiteJDBCLoader.loadNativeLibrary(SQLiteJDBCLoader.java:280) at org.sqlite.SQLiteJDBCLoader.extractAndLoadLibraryFile(SQLiteJDBCLoader.java:237) at org.sqlite.SQLiteJDBCLoader.loadSQLiteNativeLibrary(SQLiteJDBCLoader.java:350) at org.sqlite.SQLiteJDBCLoader.initialize(SQLiteJDBCLoader.java:68) at org.sqlite.core.NativeDB.load(NativeDB.java:67) at org.sqlite.SQLiteConnection.open(SQLiteConnection.java:279) at org.sqlite.SQLiteConnection.<init>(SQLiteConnection.java:66) at org.sqlite.jdbc3.JDBC3Connection.<init>(JDBC3Connection.java:28) at org.sqlite.jdbc4.JDBC4Connection.<init>(JDBC4Connection.java:19) at org.sqlite.JDBC.createConnection(JDBC.java:104) at org.sqlite.SQLiteDataSource.getConnection(SQLiteDataSource.java:464) at org.sqlite.SQLiteDataSource.getConnection(SQLiteDataSource.java:456) at mediathek.controller.history.SeenHistoryController.<init>(SeenHistoryController.kt:277) at mediathek.gui.tabs.tab_film.GuiFilme.<init>(GuiFilme.java:106) at mediathek.mainwindow.MediathekGui.createTabFilme(MediathekGui.java:673) at mediathek.mainwindow.MediathekGui.initTabs(MediathekGui.java:688) at mediathek.mainwindow.MediathekGui.<init>(MediathekGui.java:179) at mediathek.x11.MediathekGuiX11.<init>(MediathekGuiX11.java:19) at mediathek.Main.getPlatformWindow(Main.java:650) at mediathek.Main.startGuiMode(Main.java:626) at mediathek.Main.lambda$main$7(Main.java:469) at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714) at java.base/java.security.AccessController.doPrivileged(AccessController.java:400) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90) . ctor java.sql.SQLException: Error opening connection at org.sqlite.SQLiteConnection.open(SQLiteConnection.java:282) ~[MediathekView.jar:?] at org.sqlite.SQLiteConnection.<init>(SQLiteConnection.java:66) ~[MediathekView.jar:?] at org.sqlite.jdbc3.JDBC3Connection.<init>(JDBC3Connection.java:28) ~[MediathekView.jar:?] at org.sqlite.jdbc4.JDBC4Connection.<init>(JDBC4Connection.java:19) ~[MediathekView.jar:?] at org.sqlite.JDBC.createConnection(JDBC.java:104) ~[MediathekView.jar:?] at org.sqlite.SQLiteDataSource.getConnection(SQLiteDataSource.java:464) ~[MediathekView.jar:?] at org.sqlite.SQLiteDataSource.getConnection(SQLiteDataSource.java:456) ~[MediathekView.jar:?] at mediathek.controller.history.SeenHistoryController.<init>(SeenHistoryController.kt:277) ~[MediathekView.jar:?] at mediathek.gui.tabs.tab_film.GuiFilme.<init>(GuiFilme.java:106) ~[MediathekView.jar:?] at mediathek.mainwindow.MediathekGui.createTabFilme(MediathekGui.java:673) ~[MediathekView.jar:?] at mediathek.mainwindow.MediathekGui.initTabs(MediathekGui.java:688) ~[MediathekView.jar:?] at mediathek.mainwindow.MediathekGui.<init>(MediathekGui.java:179) ~[MediathekView.jar:?] at mediathek.x11.MediathekGuiX11.<init>(MediathekGuiX11.java:19) ~[MediathekView.jar:?] at mediathek.Main.getPlatformWindow(Main.java:650) ~[MediathekView.jar:?] at mediathek.Main.startGuiMode(Main.java:626) ~[MediathekView.jar:?] at mediathek.Main.lambda$main$7(Main.java:469) ~[MediathekView.jar:?] at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) ~[?:?] at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) ~[?:?] at java.awt.EventQueue$4.run(EventQueue.java:720) ~[?:?] at java.awt.EventQueue$4.run(EventQueue.java:714) ~[?:?] at java.security.AccessController.doPrivileged(AccessController.java:400) [?:?] at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) [?:?] at java.awt.EventQueue.dispatchEvent(EventQueue.java:742) [?:?] at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) [?:?] at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) [?:?] at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) [?:?] at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) [?:?] at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) [?:?] at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) [?:?] Caused by: java.lang.Exception: No native library found for os.name=Linux, os.arch=x86_64, paths=[/org/sqlite/native/Linux/x86_64:/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib] at org.sqlite.SQLiteJDBCLoader.loadSQLiteNativeLibrary(SQLiteJDBCLoader.java:375) ~[MediathekView.jar:?] at org.sqlite.SQLiteJDBCLoader.initialize(SQLiteJDBCLoader.java:68) ~[MediathekView.jar:?] at org.sqlite.core.NativeDB.load(NativeDB.java:67) ~[MediathekView.jar:?] at org.sqlite.SQLiteConnection.open(SQLiteConnection.java:279) ~[MediathekView.jar:?] ... 28 more
Verstehe ich das korrekt, das MV die sqlite library in version 3.41.2.1 mitbringt, aber versucht, diese aus /tmp heraus auszuführen? /tmp ist aus Sicherheitsgründen bei mir mit noexec gemounted. Dateien aus /tmp heraus auszuführen ist unter Linux ein no-go. Es gibt Gründe, warum Linux sicherer als Windows ist, und dies gehört dazu.
Debian stable hat sqlite in v. 3.40, das sollte eigentlich auch reichen. Von mir aus kann MV gern seine eigene library verwenden, die sollte dann aber im Programmverzeichnis liegen und nicht auf /tmp. Möglicherweise liegt das Problem aber auch woanders?
Logger output seems to indicate that there is some installation going on too.
[INFO] Logger started at 2023-10-08 19:38:11 [INFO] Executable name: /opt/MediathekView/.install4j/update [INFO] install4j version: 10.0.5 (build 10082) [INFO] Properties: -- listing properties -- java.specification.version=20 install4j.launcherId=321 sun.jnu.encoding=UTF-8 java.class.path=/opt/MediathekView/.install4j/i4jrunt... sun.awt.enableExtraMouseButtons=true java.vm.vendor=Eclipse Adoptium sun.arch.data.model=64 install4j.exeDir=/opt/MediathekView/.install4j/ java.vendor.url=https://adoptium.net/ user.timezone=Europe/Berlin install4j.shutdownFile=/tmp/i4jshd8922272254778376786.tmp java.vm.specification.version=20 os.name=Linux sun.java.launcher=SUN_STANDARD user.country=DE sun.boot.library.path=/opt/MediathekView/jre/lib sun.java.command=install4j.App1197617662Id321 321 -Din... jdk.debug=release sun.cpu.endian=little user.home=/home/ user.language=de jdk.http.auth.tunneling.disabledSchemes= java.specification.vendor=Oracle Corporation java.version.date=2023-04-18 java.home=/opt/MediathekView/jre file.separator=/ java.vm.compressedOopsMode=Zero based line.separator= java.vm.specification.vendor=Oracle Corporation java.specification.name=Java Platform API Specification jdk.lang.Process.allowAmbiguousCommands=false install4j.fromService=false exe4j.moduleName=/opt/MediathekView/.install4j/update sun.management.compiler=HotSpot 64-Bit Tiered Compilers java.security.manager=allow java.runtime.version=20.0.1+9 user.name= stdout.encoding=UTF-8 path.separator=: java.net.useSystemProxies=true os.version=4.19.0-25-amd64 install4j.fromLauncherId=59 java.runtime.name=OpenJDK Runtime Environment file.encoding=UTF-8 java.vm.name=OpenJDK 64-Bit Server VM java.vendor.version=Temurin-20.0.1+9 install4j.fromLauncher=/opt/MediathekView/MediathekView install4j.jvmDir=/opt/MediathekView/jre install4j.appDir=/opt/MediathekView/ java.vendor.url.bug=https://github.com/adoptium/adoptium-... java.io.tmpdir=/tmp java.version=20.0.1 user.dir=/opt/MediathekView os.arch=amd64 java.vm.specification.name=Java Virtual Machine Specification native.encoding=UTF-8 java.library.path=/opt/MediathekView/.install4j:/opt/Me... java.vm.info=mixed mode stderr.encoding=UTF-8 java.vendor=Eclipse Adoptium java.vm.version=20.0.1+9 sun.io.unicode.encoding=UnicodeLittle java.class.version=64.0 install4j.swt=false [INFO] com.install4j.runtime.beans.actions.update.CheckForUpdateAction [ID 365]: Execute action Property connectTimeout: 10000 Property connectionFailureScript: null Property readTimeout: 20000 Property requestHeaders: [] Property url: https://download.mediathekview.de/stabil/updates-linux.xml Property variable: updateDescriptor Property acceptAllCertificates: false Property askForProxy: true Property rollbackSupported: false Property showError: false Download: https://download.mediathekview.de/stabil/updates-linux.xml to /tmp/i4jupd11894979213358792953.xml; size: 1816 bytes Variable changed: updateDescriptor=com.install4j.runtime.installer.config.update.UpdateDescriptorImpl@1c32886a[class com.install4j.runtime.installer.config.update.UpdateDescriptorImpl] Execute action successful after 537 ms [INFO] com.install4j.runtime.beans.actions.control.SetVariableAction [ID 366]: Execute action Property script: com.install4j.script.I4jScript_Internal_48 Property variableName: updateDescriptorEntry Property failIfNull: true Property onlyIfUndefined: false Property responseFileVariable: false Property rollbackSupported: false [ERROR] com.install4j.runtime.beans.actions.control.SetVariableAction [ID 366]: Execute action not successful after 2 ms [INFO] Canceled at 2023-10-08 19:38:12
Und ja, ich benutze auf diesem Rechner immer noch oldoldstable, das wird sich irgendwann ändern, aber es ist nach meiner Einschätzung nicht Ursache des Problems. Ich kehre erstmal zu Version 13 zurück und akzeptiere, dass ich zig weitere nutzlose Downloads verursache.
-
@kaimon sagte: Ich kehre erstmal zu Version 13 zurück und akzeptiere, dass ich zig weitere nutzlose Downloads verursache.
Möglicherweise hilft dir dieser Workaround.
-
Das war lediglich Genörgel am Rande. Eigentlich interessiert mich, warum v. 14 nicht startet und was ich da tun kann.
-
@kaimon Wenn Du deinen Tipp auch für MV14 anwendest wird es auch wieder bei dir laufen.
Der Grund ist ganz einfach: Java existierte schon bevor Linux anfing, das /tmp mit noexec zu mounten (über Sinn und Unsinn streiten sich die Admins). Um Java Apps auf diesen Systemen zu betreiben muss der User
java.io.tmpdir
nunmal anpassen damit Java weiß wohin es seine Libraries entpacken kann. Hellsehen kann und will es nicht und/opt/MediathekView
ist i.d.R. read-only sodass dies auch nicht funktioniert.
Einige java libs von MV benötigen eigene native libs die sie mitliefern und diese müssen entpackt werden. Da hilft es auch nicht wenn diese ggf. schon vorhanden sind. Es gab mal einen User der versucht hat debian native packages von MV anzubieten - und daran langfristig scheiterte.Alternativ kannst Du MV auch in einer VM betreiben ohne
noexec
. Damit bleibt dein Sicherheitsempfinden gewahrt und MV kann dort drin auch glücklich sein. -
@DerReisende77
krass, ich hatte das Problem selbst schon gelöst. Gut, dass Dein Gedächtnis besser ist (oder Dein Such-fu). Danke.