Announcing OM Updater

Hello, friends!

I wanted to let everyone know there’s a new package in Cooker/Rome that’s available for testing. It’s a graphical updater and installer. Install the package om-updater, and you get a very basic graphical installer and even better, a system tray-based updater you can configure to run on startup.

The usual caveats apply: this is unofficial, it needs testing, etc. But please, give it a try and let me know what you think.

For more information, see the project page, and if you have particular issues, please add them there.

Thanks!

4 Likes

This looks like a useful little addition, especially for ROME/Cooker users who prefer having something visible in the tray instead of remembering to check for updates manually. I’d definitely give it a try. The configurable startup option sounds particularly handy, and testing it over a few updates should give a good idea of how reliable it is in everyday use.

1 Like

Yeah; my goal was to give non-technical users (i.e., my mom) an easy way to keep their systems up to date. This is in keeping with the spirit of the old Mandriva Linux, so I thought it would be good to have in OpenMandriva.

Hey I tried this out and it is not working for me. The installer will open but locks up with this error when I click on the flatpack tab. The updater fail to launch at all.

If you want me to try anything to help fix this let me know

 PID: 12146 (python3)
           TID: 12146 (python3)
           UID: 1001 (uriah)
           GID: 1007 (uriah)
        Signal: 6 (ABRT) si_code: SI_USER
     Timestamp: Wed 2026-09-30 17:15:59 CDT (3min 20s ago)
  Command Line: python3 /usr/bin/om-installer
    Executable: /usr/bin/python3.14
 Control Group: /user.slice/user-1001.slice/user@1001.service/app.slice/app-om\x2dinstaller@0fca6310892d4739add5ac49e7c56277.service
          Unit: user@1001.service
     User Unit: app-om\x2dinstaller@0fca6310892d4739add5ac49e7c56277.service
         Slice: user-1001.slice
     Owner UID: 1001 (uriah)
       Boot ID: 2d765435427843e6a181509f015a7fcf
    Machine ID: 805cda8d9f024c25bf1b11e45f50d24c
      Hostname: openmandriva-x8664
       Storage: /var/lib/systemd/coredump/core.python3.1001.2d765435427843e6a181509f015a7fcf.12146.1790806559000000.zst (present)
  Size on Disk: 9.3M
       Message: Process 12146 (python3) of user 1001 dumped core.
                
                Stack trace of thread 12146:
                #0  0x00007f464a6a091e __syscall_cancel_arch (libc.so.6 + 0xa091e)
                #1  0x00007f464a71158e __poll (libc.so.6 + 0x11158e)
                #2  0x00007f464a8b93fa select_poll_poll (select.cpython-314-x86_64-linux-gnu.so + 0x63fa)
                #3  0x00007f464adeb6da _TAIL_CALL_CALL_METHOD_DESCRIPTOR_FAST (libpython3.14.so.1.0 + 0x3eb6da)
                #4  0x00007f464ac3fab9 _PyFunction_Vectorcall (libpython3.14.so.1.0 + 0x23fab9)
                #5  0x00007f464ac663e0 method_vectorcall (libpython3.14.so.1.0 + 0x2663e0)
                #6  0x00007f46444f3878 _ZNK8PyQtSlot4callEP7_objectS1_ (QtCore.abi3.so + 0x2f3878)
                #7  0x00007f46444f36f5 _ZNK8PyQtSlot6invokeEPPvP7_objectS0_b (QtCore.abi3.so + 0x2f36f5)
                #8  0x00007f46444f43a7 _ZN13PyQtSlotProxy7unislotEPPv (QtCore.abi3.so + 0x2f43a7)
                #9  0x00007f46444f4309 _ZN13PyQtSlotProxy11qt_metacallEN11QMetaObject4CallEiPPv (QtCore.abi3.so + 0x2f4309)
                #10 0x00007f4645b74eaf _Z10doActivateILb0EEvP7QObjectiPPv (libQt6Core.so.6 + 0x374eaf)
                #11 0x00007f4645b74e59 _Z10doActivateILb0EEvP7QObjectiPPv (libQt6Core.so.6 + 0x374e59)
                #12 0x00007f4645dd399b _ZN19QItemSelectionModel20emitSelectionChangedERK14QItemSelectionS2_ (libQt6Core.so.6 + 0x5d399b)
                #13 0x00007f4645dd29b7 _ZN19QItemSelectionModel6selectERK14QItemSelection6QFlagsINS_13SelectionFlagEE (libQt6Core.so.6 + 0x5d29b7)
                #14 0x00007f4647016906 _ZN9QListView12setSelectionERK5QRect6QFlagsIN19QItemSelectionModel13SelectionFlagEE (libQt6Widgets.so.6 + 0x616906)
                #15 0x00007f464756f7c2 _ZN14sipQListWidget12setSelectionERK5QRect6QFlagsIN19QItemSelectionModel13SelectionFlagEE (QtWidgets.abi3.so + 0x36f7c2)
                #16 0x00007f4646fcb969 _ZN17QAbstractItemView15mousePressEventEP11QMouseEvent (libQt6Widgets.so.6 + 0x5cb969)
                #17 0x00007f4647571360 _ZN14sipQListWidget15mousePressEventEP11QMouseEvent (QtWidgets.abi3.so + 0x371360)
                #18 0x00007f4646d0ca76 _ZN7QWidget5eventEP6QEvent (libQt6Widgets.so.6 + 0x30ca76)
                #19 0x00007f4646d74635 _ZN19QAbstractScrollArea13viewportEventEP6QEvent (libQt6Widgets.so.6 + 0x374635)
                #20 0x00007f4646fcf2b8 _ZN17QAbstractItemView13viewportEventEP6QEvent (libQt6Widgets.so.6 + 0x5cf2b8)
                #21 0x00007f46475727ab _ZN14sipQListWidget13viewportEventEP6QEvent (QtWidgets.abi3.so + 0x3727ab)
                #22 0x00007f4645b1aae4 _ZN23QCoreApplicationPrivate29sendThroughObjectEventFiltersEP7QObjectP6QEvent (libQt6Core.so.6 + 0x31aae4)
                #23 0x00007f4646cc56b7 _ZN19QApplicationPrivate13notify_helperEP7QObjectP6QEvent (libQt6Widgets.so.6 + 0x2c56b7)
                #24 0x00007f4646cc4da7 _ZN12QApplication6notifyEP7QObjectP6QEvent (libQt6Widgets.so.6 + 0x2c4da7)
                #25 0x00007f4647687436 _ZN15sipQApplication6notifyEP7QObjectP6QEvent (QtWidgets.abi3.so + 0x487436)
                #26 0x00007f4645b21aa7 _ZN16QCoreApplication20sendSpontaneousEventEP7QObjectP6QEvent (libQt6Core.so.6 + 0x321aa7)
                #27 0x00007f4646cc909c _ZN19QApplicationPrivate14sendMouseEventEP7QWidgetP11QMouseEventS1_S1_PS1_R8QPointerIS0_Ebb (libQt6Widgets.so.6 + 0x2c909c)
                #28 0x00007f4646d35ba1 _ZN13QWidgetWindow5eventEP6QEvent (libQt6Widgets.so.6 + 0x335ba1)
                #29 0x00007f4646cc56cb _ZN19QApplicationPrivate13notify_helperEP7QObjectP6QEvent (libQt6Widgets.so.6 + 0x2c56cb)
                #30 0x00007f4646cc4a82 _ZN12QApplication6notifyEP7QObjectP6QEvent (libQt6Widgets.so.6 + 0x2c4a82)
                #31 0x00007f4647687436 _ZN15sipQApplication6notifyEP7QObjectP6QEvent (QtWidgets.abi3.so + 0x487436)
                #32 0x00007f4645b21aa7 _ZN16QCoreApplication20sendSpontaneousEventEP7QObjectP6QEvent (libQt6Core.so.6 + 0x321aa7)
                #33 0x00007f46462fca63 _ZN22QGuiApplicationPrivate17processMouseEventEPN29QWindowSystemInterfacePrivate10MouseEventE (libQt6Gui.so.6 + 0x2fca63)
                #34 0x00007f46463675eb _ZN22QWindowSystemInterface22sendWindowSystemEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE (libQt6Gui.so.6 + 0x3675eb)
                #35 0x00007f464109c0ce _ZL17xcbSourceDispatchP8_GSourcePFiPvES1_ (libQt6XcbQpa.so.6 + 0x680ce)
                #36 0x00007f464534cc87 g_main_context_dispatch_unlocked (libglib-2.0.so.0 + 0xc4c87)
                #37 0x00007f464533b142 g_main_context_iterate_unlocked (libglib-2.0.so.0 + 0xb3142)
                #38 0x00007f464539f154 g_main_context_iteration (libglib-2.0.so.0 + 0x117154)
                #39 0x00007f4645e304c8 _ZN20QEventDispatcherGlib13processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE (libQt6Core.so.6 + 0x6304c8)
                #40 0x00007f4645b28076 _ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE (libQt6Core.so.6 + 0x328076)
                #41 0x00007f4645b20a82 _ZN16QCoreApplication4execEv (libQt6Core.so.6 + 0x320a82)
                #42 0x00007f46476884b6 _ZL22meth_QApplication_execP7_objectS0_ (QtWidgets.abi3.so + 0x4884b6)
                #43 0x00007f464ae304c6 cfunction_call (libpython3.14.so.1.0 + 0x4304c6)
                #44 0x00007f464ac620a6 PyObject_Vectorcall (libpython3.14.so.1.0 + 0x2620a6)
                #45 0x00007f464ac60185 _TAIL_CALL_CALL (libpython3.14.so.1.0 + 0x260185)
                #46 0x00007f464adb4df3 _PyEval_Vector (libpython3.14.so.1.0 + 0x3b4df3)
                #47 0x00007f464adb474a PyEval_EvalCode (libpython3.14.so.1.0 + 0x3b474a)
                #48 0x00007f464adbc70a run_mod (libpython3.14.so.1.0 + 0x3bc70a)
                #49 0x00007f464af488f7 _PyRun_File (libpython3.14.so.1.0 + 0x5488f7)
                #50 0x00007f464af4992c _PyRun_SimpleFile (libpython3.14.so.1.0 + 0x54992c)
                #51 0x00007f464af4965c _PyRun_AnyFile (libpython3.14.so.1.0 + 0x54965c)
                #52 0x00007f464aee8a34 pymain_run_file_obj (libpython3.14.so.1.0 + 0x4e8a34)
                #53 0x00007f464aee88e3 pymain_run_file (libpython3.14.so.1.0 + 0x4e88e3)
                #54 0x00007f464aee9eeb Py_RunMain (libpython3.14.so.1.0 + 0x4e9eeb)
                #55 0x00007f464ae52b61 pymain_main (libpython3.14.so.1.0 + 0x452b61)
                #56 0x00007f464ae529a8 Py_BytesMain (libpython3.14.so.1.0 + 0x4529a8)
                #57 0x00007f464a62b038 __libc_start_call_main (libc.so.6 + 0x2b038)
                #58 0x00007f464a62b157 __libc_start_main (libc.so.6 + 0x2b157)
                #59 0x0000561222107751 _start (python3.14 + 0x1751)
                
                Stack trace of thread 12147:
                #0  0x00007f464a6a091e __syscall_cancel_arch (libc.so.6 + 0xa091e)
                #1  0x00007f464a711d83 ppoll (libc.so.6 + 0x111d83)
                #2  0x00007f464533b0ee g_main_context_iterate_unlocked (libglib-2.0.so.0 + 0xb30ee)
                #3  0x00007f464539f154 g_main_context_iteration (libglib-2.0.so.0 + 0x117154)
                #4  0x00007f4645e304c8 _ZN20QEventDispatcherGlib13processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE (libQt6Core.so.6 + 0x6304c8)
                #5  0x00007f4645b28076 _ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE (libQt6Core.so.6 + 0x328076)
                #6  0x00007f4645c44ca3 _ZN7QThread4execEv (libQt6Core.so.6 + 0x444ca3)
                #7  0x00007f4646995d25 _ZN22QDBusConnectionManager3runEv (libQt6DBus.so.6 + 0x54d25)
                #8  0x00007f4645d05d8d _ZN14QThreadPrivate5startEPv (libQt6Core.so.6 + 0x505d8d)
                #9  0x00007f464a698046 start_thread (libc.so.6 + 0x98046)
                #10 0x00007f464a7209d8 __clone3 (libc.so.6 + 0x1209d8)
                
                Stack trace of thread 12148:
                #0  0x00007f464a6a091e __syscall_cancel_arch (libc.so.6 + 0xa091e)
                #1  0x00007f464a71158e __poll (libc.so.6 + 0x11158e)
                #2  0x00007f46457079e2 n/a (libxcb.so.1 + 0x159e2)
                #3  0x00007f464570a759 xcb_wait_for_event (libxcb.so.1 + 0x18759)
                #4  0x00007f464109cdf8 _ZN14QXcbEventQueue3runEv (libQt6XcbQpa.so.6 + 0x68df8)
                #5  0x00007f4645d05d8d _ZN14QThreadPrivate5startEPv (libQt6Core.so.6 + 0x505d8d)
                #6  0x00007f464a698046 start_thread (libc.so.6 + 0x98046)
                #7  0x00007f464a7209d8 __clone3 (libc.so.6 + 0x1209d8)
                ELF object binary architecture: AMD x86-64

I’ll have a look at the installer error. The updater should work fine; it doesn’t appear until after it’s checked to see if updates are available, so it can show the right icon.

1 Like

I dont know if it makes any difference but the first thing I clicked on was the updater. I had just done a system update a minute before so I wasnt thinking about an installer.

Do you get any errors if you launch the updater from the CLI? I’m not having any issues with it here, and it’s also running fine on my wife’s machine.

Just tried it and get the same errors.

I thought the errors you posted came from the installer, not the updater? They’re two separate programs. The updater launches and just sits in your tray. If you have no updates, it’s just a green circle. When you have updates, it turns red with an exclamation point.

I guess I didnt catch that, so yes the updater just did update brave for me. I mistook that bright red explamation point for an error and just closed it.. maybe I should have drank my coffee before posting this morning.

So I fundamentally misundertood how your program works. I thought it was two seperate gui’s that you brought up though the application menu. I did not realize that the updater has to reside open in the system tray for the installer to work.

So now I can still get the Installer to crash, when typing in the search box, switching between rpm and flatpak works fine. However if nothing is in the search box hitting the flatpak tab causes the program to hang. Otherewise everything seems to work good, I installed stella from our rpms through your installer and it worked well.

The updater works. At least for Flatpaks.

However,

Is there a reason why the updater asks for the admin password when updating Flatpaks? I have been installing and updating Flatpaks without the admin password when using the terminal or Flatdrake.

They are two separate programs. The updater is just to notify you when updates are available, and then to install those updates. The installer is a graphical installer meant to do the functions of dnfdrake, but with a simpler interface. Neither one requires the other, but they’re packaged together.

Yes; Flatpaks can be installed via sudo as well, which makes them available system-wide. If you install a Flatpak as just your user, that Flatpack is available only to your user. This is fine on a system that only one user uses, but if it’s a shared computer, you’ll want to install your Flatpaks via sudo, and thus update them also via sudo.

2 Likes

Can one not allow multiple user accounts to use a given Flatpak by messing with the permissions instead of installing them system-wide?

I have no idea. I just know that Flatpaks can be installed system-wide, and they can be installed for just the user. Since I can’t predict how each user will decide to do it, the update updates user Flatpaks, and then it asks for the password so it can update system Flatpaks.

1 Like

Fair enough. From a securuty point of view, much can be said for isolating apps as much as possible. From a convenience POV, much can be said for not doing so.

I’m the only user of my machine, so I don’t mind isolating my stuff, thoug I have had to grant further permissions to Flatpacks to make them usefull: Giving SPEK access to my folder full of music, for example.

Okay, I just built a new version that’s available in Cooker. If you’re running Cooker, you can just update. I don’t know if you’re on x86_64 or znver1, but if you’re running ROME, you can still install it this way:

sudo dnf upgrade --enablerepo=cooker-x86_64 om-updater

or

sudo dnf upgrade --enablerepo=cooker-znver1 om-updater

Depending on which architecture you have installed. It’ll get copied to ROME on the next UM, which the team is trying to make a monthly thing.

Since this program handles packages all round (installation, removal, and update), why not call it a more generic name?
For example OM-Software, OM-Store or OM-Applications.

I like this. I’ve always found DNFDrake/Flatdrake to be ugly and cumbersome so I’m hoping this can be a suitable replacement.

1 Like