DMX 5.3.5 released

DMX 5.3.5 has been released at Dec 28, 2024 (and could be published only now). It brings a major bug fix regarding the Webclient’s topic label rendering on the canvas, a regression introduced in DMX 5.3.4. Furthermore there are quite some improvements and extended possibilities for plugin developers. For details see the Changelog.

Download DMX 5.3.5:
https://download.dmx.systems/dmx-5.3.5.zip

1 Like

Thanks Jörg @jri for the good news. Regarding the dmx-headless Debian package, I have a question: Will it also be updated to 5.3.5?

@jpn I am running DMX 5.3.4. on Debian GNU/Linux 12 (bookworm). 3 packages are still in the upgrade pipeline.

ca-certificates-java/stable,stable 20230710~deb12u1 all [upgradable from: 20190909+deb11u1]
libsemanage-common/stable,stable 3.4-1 all [upgradable from: 3.1-1]
passwd/stable,stable 1:4.13+dfsg1-1+b1 amd64 [upgradable from: 1:4.8.1-1]

and there seem to be a problem with the InRelease key. (apt-key is deprecated)

W: https://download.dmx.systems/repos/ubuntu/xenial/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

What should I consider when updating to the latest dmx-headless version 5.3.5? Should I wait for the new dmx-headless version or try one of the two packages dmx-latest-headless or dmx-latest?

I was able to update to DMX 5.3.5-SNAPSHOT 2024-12-24. @jri @jpn

My situation now is a pending

$ sudo apt-get full-upgrade

which will remove
dmx-latest-headless libsemanage1 openjdk-8-jre openjdk-8-jre-headless
to be able to install:
libsemanage2 libsepol2
and to upgrade:
ca-certificates-java libsemanage-common passwd

NB. Package openjdk-8-jre-headless is replaced by:
nvidia-openjdk-8-jre

But:

The following packages have unmet dependencies:
dmx-latest-headless : Depends: openjdk-8-jre-headless but it is not installable

NB. How to Install OpenJDK-8 on Debian 12? page

Since Java 8 is deprecated and not supported by many distributions anymore, I tend to release the next debian package with Java 11 support. It feels a bit useless to build a debian package that one cannot install on recent distros. I’ll have to check with @jri how to best proceed.

Regarding the gpg.key, debian is not complaining about the key itself, but how it is stored on your local machine - see apt-key(8) — apt — Debian testing — Debian Manpages . I will update the installation script with the next release of the debian package.

1 Like

@jpn basically you can build a DMX distribution that is supported by Java 11 and above by following these steps in the dmx-platform project:

  1. git checkout 568-java-11
  2. mvn clean install -P all,dist

The zip-distro is then found in modules/dmx-distribution/target/dmx-5.3.5.zip

This distro will work with Java 9 or later.
The actual build steps can be done with Java 8 or later.
For building you need Node.js 16, not 18 or later.

Note: this builds the generic DMX distro. Building a Debian package requires extra steps, you’re familiar with then :slight_smile:

1 Like

@RalfBarkow I built a DMX 5.3.5 package with Java 11 support which you can download from https://git.dmx.systems/dmx-platform/dmx-build-deb/-/jobs/56247/artifacts/download?file_type=archive
You should run apt install openjdk-11-jre before manually installing the package with dpkg -i dmx-headless_5.3.5~1deb+b22253_all.deb. Make sure to backup your old version - especially the existing database - before starting the installation.

1 Like

Thank you, @jpn and @jri, for the DMX 5.3.5 package with Java 11 support, which I will be happy to try out.

@jpn Cannot run apt install openjdk-11-jre

Default JRE (Java Runtime Environment) on my Debian GNU/Linux 12 (bookworm) system seems to be openjdk-17-jre. See apt-get install default-jre

The following additional packages will be installed:
default-jre-headless openjdk-17-jre openjdk-17-jre-headless

How to proceed?

Note: download from https://git.dmx.systems/dmx-platform/dmx-build-deb/-/jobs/56247/artifacts/download?file_type=archive is not available anymore.

@RalfBarkow Could you please download the new build within 24h and try this new version of a debian package with Java dependencies set to default-jre-headless: https://git.dmx.systems/dmx-platform/dmx-build-deb/-/jobs/56993/artifacts/download?file_type=archive

1 Like
# dpkg -i dmx-headless_5.3.5~2deb+b22407_all.deb
Selecting previously unselected package dmx-headless.
dpkg: regarding dmx-headless_5.3.5~2deb+b22407_all.deb containing dmx-headless:
 dmx-headless conflicts with dmx-latest-headless
  dmx-latest-headless (version 5.3.5-SNAPSHOT~1deb+b21923) is present and installed.

dpkg: error processing archive dmx-headless_5.3.5~2deb+b22407_all.deb (--install):
 conflicting packages - not installing dmx-headless
Errors were encountered while processing:
 dmx-headless_5.3.5~2deb+b22407_all.deb

apt remove dmx-latest-headless

and

# dpkg -i dmx-headless_5.3.5~2deb+b22407_all.deb
(Reading database ... 60356 files and directories currently installed.)
Preparing to unpack dmx-headless_5.3.5~2deb+b22407_all.deb ...
Running /var/lib/dpkg/tmp.ci/preinst install 5.3.4~1deb+b20408 ...
Running /var/lib/dpkg/tmp.ci/preinst install 5.3.4~1deb+b20408 ...
Your existing database has been backed-up (copied) to /var/lib/dmx/dmx-db-5.3.5-SNAPSHOT-backup-2025-06-06-11:27:51.
Unpacking dmx-headless (5.3.5~2deb+b22407) ...
dpkg: dependency problems prevent configuration of dmx-headless:
 dmx-headless depends on default-jre-headless; however:
  Package default-jre-headless is not installed.

dpkg: error processing package dmx-headless (--install):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 dmx-headless

apt install default-jre-headless

and

# apt install default-jre-headless
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 default-jre-headless : Depends: openjdk-17-jre-headless but it is not going to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

and

apt --fix-broken install

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Correcting dependencies... Done
The following additional packages will be installed:
  default-jre-headless openjdk-17-jre-headless
Suggested packages:
  default-jre libnss-mdns fonts-dejavu-extra fonts-ipafont-gothic fonts-ipafont-mincho fonts-wqy-microhei
  | fonts-wqy-zenhei fonts-indic
The following NEW packages will be installed:
  default-jre-headless openjdk-17-jre-headless
0 upgraded, 2 newly installed, 0 to remove and 3 not upgraded.
1 not fully installed or removed.
Need to get 43.8 MB of archives.
After this operation, 193 MB of additional disk space will be used.
Do you want to continue? [Y/n]
Get:1 http://deb.debian.org/debian bookworm/main amd64 openjdk-17-jre-headless amd64 17.0.15+6-1~deb12u1 [43.8 MB]
Get:2 http://deb.debian.org/debian bookworm/main amd64 default-jre-headless amd64 2:1.17-74 [2,936 B]
Fetched 43.8 MB in 0s (111 MB/s)
Selecting previously unselected package openjdk-17-jre-headless:amd64.
(Reading database ... 60433 files and directories currently installed.)
Preparing to unpack .../openjdk-17-jre-headless_17.0.15+6-1~deb12u1_amd64.deb ...
Unpacking openjdk-17-jre-headless:amd64 (17.0.15+6-1~deb12u1) ...
Selecting previously unselected package default-jre-headless.
Preparing to unpack .../default-jre-headless_2%3a1.17-74_amd64.deb ...
Unpacking default-jre-headless (2:1.17-74) ...
Setting up openjdk-17-jre-headless:amd64 (17.0.15+6-1~deb12u1) ...
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/java to provide /usr/bin/java (java) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/jpackage to provide /usr/bin/jpackage (jpackage) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/keytool to provide /usr/bin/keytool (keytool) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/rmiregistry to provide /usr/bin/rmiregistry (rmiregistry) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/lib/jexec to provide /usr/bin/jexec (jexec) in auto mode
Setting up default-jre-headless (2:1.17-74) ...
Setting up dmx-headless (5.3.5~2deb+b22407) ...

Configuration file '/etc/dmx/config.properties'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** config.properties (Y/I/N/O/D/Z) [default=N] ?
Running /var/lib/dpkg/info/dmx-headless.postinst configure 5.3.4~1deb+b20408 ...
Running /var/lib/dpkg/info/dmx-headless.postinst configure 5.3.4~1deb+b20408 ...
enabling dmx.service
Created symlink /etc/systemd/system/multi-user.target.wants/dmx.service → /lib/systemd/system/dmx.service.

Note: I keep my current config.properties.

But, Service Unavailable

/bin/sh: 1: -Xms256M: not found

and

apt install dmx-latest-headless

brings me back to a running service.

# sudo systemctl status dmx
● dmx.service - DMX - The Context Machine
     Loaded: loaded (/lib/systemd/system/dmx.service; enabled; preset: enabled)
    Drop-In: /etc/systemd/system/dmx.service.d
             └─override.conf
     Active: active (running) since Fri 2025-06-06 11:59:43 CEST; 7min ago
       Docs: https://docs.dmx.systems
   Main PID: 5072 (sh)
      Tasks: 59 (limit: 4530)
     Memory: 367.3M
        CPU: 14.829s
     CGroup: /system.slice/dmx.service
             ├─5072 /bin/sh -c "/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java      -Xms1024M      -Xmx2048M      -Dfile.encoding=UTF-8      -Dfelix.system.properties=file:/etc/dmx/config.properties      -Dfelix.config.properties=file:/etc/dmx/config.properties      -Dpidfile.path=/var/run/dmx/dmx.pid      -Djava.awt.headless=true      -jar /usr/share/dmx/bin/felix.jar"
             └─5073 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -Xms1024M -Xmx2048M -Dfile.encoding=UTF-8 -Dfelix.system.properties=file:/etc/dmx/config.properties -Dfelix.config.properties=file:/etc/dmx/config.properties -Dpidfile.path=/var/run/dmx/dmx.pid -Djava.awt.headless=true -jar /usr/share/dmx/bin/felix.jar

Jun 06 11:59:43 dmx systemd[1]: Starting dmx.service - DMX - The Context Machine...
Jun 06 11:59:43 dmx systemd[1]: Started dmx.service - DMX - The Context Machine.

Note: override.conf where I override heap settings:

### Editing /etc/systemd/system/dmx.service.d/override.conf
### Anything between here and the comment below will become the new contents of the file

[Service]
Environment="JAVA_XMS=1024"
Environment="JAVA_XMX=2048"

### Lines below this comment will be discarded

### /lib/systemd/system/dmx.service
[…]

We should look at /lib/systemd/system/dmx.service, right?

[…]
# ExecStart=/bin/sh -c '${JAVA_EXEC} \
#     -Xms${JAVA_XMS}M \
#     -Xmx${JAVA_XMX}M \
#     -Dfile.encoding=UTF-8 \
#     -Dfelix.system.properties=file:/etc/dmx/config.properties \
#     -Dfelix.config.properties=file:/etc/dmx/config.properties \
#     -Dpidfile.path=/var/run/dmx/dmx.pid \
#     -Djava.awt.headless=true \
#     -jar /usr/share/dmx/bin/felix.jar'
#
[…]

We could use a fallback if JAVA_EXEC is not found.

Yes, I forgot to replace Java-11 with what ever is the “default” now. Could you please run the following command on your debian machine and post the result: /bin/sh -c 'echo "$( update-alternatives --list java | grep -E "java-[1|2]*-" | grep bin/java$ )"'. I just want to check the command runs on your machine.
BTW, switching between latest snapshot releases and stable releases requires to uninstall the snapshot before with apt remove (not purge). Remember to backup your db anyway! :wink:

On my Debian Bookworm machine, the original command gives no output.

I believe the issue is with the grep -E "java-[1|2]*-" pattern, which doesn’t match java-17- or other modern versions correctly.

I suggest using grep -E "java-[0-9]+-" instead to match all Java versions consistently.

/bin/sh -c 'echo "$( update-alternatives --list java | grep -E "java-[0-9]+-" | grep bin/java$ )"' 

/usr/lib/jvm/java-17-openjdk-amd64/bin/java
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java

Thank you! Based on your feedback I updated the package which should now hopefully correclty detect the latest java version. Please download the recent build within 24h from https://git.dmx.systems/dmx-platform/dmx-build-deb/-/jobs/57026/artifacts/download?file_type=archive

1 Like