graalvm/mandrel-packaging

why there is no rpm or deb ?

ozkanpakdil opened this issue · 2 comments

I know docker is great but out of curiosity, why don't we have deb or rpm packages ?

There are a couple of reasons (none of which are unsolvable, but we haven't had the need, let alone resources to implement it):

  • From where I'm coming from (Red Hat), RPMs are about single responsibility. A good RPM only contains a single package and lists the rest as dependencies (via requires). I'm much less familiar with Debian packages, but I believe at their core they are supposed to work similar in that regard.
  • Mandrel (or GraalVM) is tightly coupled to the OpenJDK version it was built from. Even the slightest update can break it. Now, given the point above this makes it really hard to provide mandrel as an RPM package via a yum/dnf repository and maintain a good upgrade path. Why? Considering that OpenJDK, say packaged as java-11-openjdk RPMs, and mandrel, say as RPM quarkus-mandrel, are packaged separately, it would require package quarkus-mandrel to require a specific version of java-11-openjdk at all times. If one or the other updates the sibling package would have to update too. The risk of a broken update in a transaction is high.
  • Mandrel mainly exists for the use with Quarkus. Quarkus has built-in support running native-image via a container image. That way, the Linux build can be used on Windows/Mac to produce a cloud deployable Linux native image. In a way the container image abstracts away whether or not Mandrel itself is packaged as RPM or installed from a tarball within it. Using containers is also a good tool to control the OpenJDK/Mandrel dependency for users without them realizing. For example, this image actually contains mandrel as RPM while the latest mandrel image contains the binary from the tarball. They work very similar.
  • RPMs/Debs are a Linux only vehicle. It would serve only one group of our users. What about our Windows releases? Shouldn't they have installers too? Probably, yes, in an ideal world. The question of resources is the limiting factor.
  • There is the option of bundling and just create a "dummy" RPM installer using binaries from https://github.com/graalvm/mandrel/releases/. This would be an option, but it's extra work to get it created and we cannot commit to that at this point. We'd be happy to accept patches if you'd be up for creating and maintaining them.

Hopefully that gives you some insight. Sorry, for not being able to give a more satisfactory answer, though.

It was very detailed, a nice answer, thank you very much.