Rhino Linux is a rolling release Ubuntu-based distribution
rhinolinux.org
rhinolinux.org
If you use Ubuntu (for example) it ships with some python version (say 3.8), and then it will almost never update again unless you manually install a newer python version or update Ubuntu itself to the next release (which might not exist). With something like Tumbleweed (or Rhino in this case), updates come out every few days, and every time you do an update you'll find python is now on 3.10, then 3.11, etc.
It's really nice when every compiler/language is on the latest version by default.
For tools you want to be on the latest version of, why not use a package manager like homebrew that isn't tied to your distro?
I've never understood the Linux culture of tightly coupling OS and package management (and so I use brew even on Linux), but I seem to be in the minority.
It makes sense to me for a distribution to find commonly wanted software, package it up, and make it available.
There's tailoring to consider! Some go further and introduce patches. Not every distribution is as good at both contributing and being accepted upstream.
Now, if you want something newer, then you're obviously welcome to acquire that as you see fit.
The distribution will help with that, too -- providing build utils, headers, etc. Enabling third party repositories, ie: PPA/COPR
There are also runtimes to avoid building; Flatpak/Snap, Docker/Podman, etc. Though, these also lose some of the 'distribution spirit'
I don't want Python to update from 3.10 to 3.11 silently, but I also don't want to be held back if they decide that they don't want to support Python 4 yet. I also want to be able to pin to particular versions if I want, or at least update in a structured way.
I dislike the way that distros purge older packages, so building containers requires me to build my own package repo cache to allow me to have repeatable builds.
It might make sense for the distro, but this is where the difference between the base operating systems requirements and mine differ.
The ABIs are quite tightly coupled though. There's e.g. a dependency to glibc, so either you make a compromise and use the oldest common glibc or ship packages for various glibc versions. So unless everything is built from source, this approach has its limits.
edit: of course it's possible to use static linking but even then there's a residue of calls that are dynamically linked at runtime. (That's why there's flatpak, snap, ... which bundle dependencies redundantly)
Every time one of these threads comes around it's like the same thing on repeat: "I could either learn how to use a container or dist-upgrade my entire operating system to solve this."
As in all cases where one technology supplants another its not enough to be superior in one dimension it's a hard sell unless its not only better but substantially better for all concerns without substantial cost or downside or foisted on users from on high by someone that can't fire by switching brands.
For instance app images have been a thing for a while but nobody formalized it with a store with standards, security, testing for actual not theoretical compatibility etc so its a tool you can pick up rather than an actual ecosystem a user can rely on.
Nix/guix are cool as heck but they are also complicated and difficult to understand. They can also have issues not present in the source software
VMs are of course unwieldy
App vms are restricted to Qubes
Snap relies on a proprietary backend and starts slow among many and varied flaws.
Flatpak still starts slower than native, doesn't have most software, isn't suitable for libraries or software that will be consumed by non flatpaks, doesn't have most software.
Homebrew is mostly used by expats from Apple land because its virtues are moreso leveraging existing know how and work flows.
Docker/Podman are more like developer tooling than user tools.
Bedrock Linux is for crazy people who wish arch and ubuntu were one distro
Of these flatpak seems most likely to become the standard although I wish it would plunk an executable somewhere instead of the ridiculousness of flatpak run foo
It already has the exported .desktop files, right? I wonder why they didn't just (ab)use that mechanism and add it to the default path on install
It doesn't exist because it doesn't aesthetically fit.
You can create it for yourself of course.
Then you'd need to ensure that filenames from different flatpaks don't conflict.
It allows one side of your artificial divide to specify dependencies on the other. I can conceive of a packaging system that is designed with your split in mind and can cross that gap, but today no such system exists.
IMHO, Python devs learned the wrong lesson from the 2 --> 3 transition. Should have been, "minimize big breaks." Instead they learned, "make lots of small breaks spread out evenly and avoid X.0 releases." The result is that planning around deprecation (always be breaking) is untenable for enterprise-style development.
I've seen breaking changes in my dependencies from 3.7 -> 3.8 -> 3.9 -> 3.10, both at work and at home.
I've also had constant issues with both GCC and CUDA being too new.
The reverse is true too of course - I use a rolling release specifically because of a new CUDA version that no stable distro has (or will have for many months)
I know opensuse is vaunted for its stability, but I have yet to find a setup that I liked better than sway-flavored Manjaro, given my proclivity for tinkering. Debian +kde also seem reasonably solid, even if kde still has odd occasional bugs or inconsistencies (last I tried, I had to reboot twice after installing to get the battery icon to work in the tray).
[1] https://github.com/EndeavourOS-Community-Editions/sway
[2] https://github.com/enigmacurry/sway-home
[3] https://discovery.endeavouros.com/hardware/envy-control/2023...
TLDR: There are a million circumstances where you don't want things to auto-update (even if auto-update means: "I run `apt/yum/foo upgrade" every morning". It's a story as old as time, if you're not only a user, upgrades are (and should be) often a deliberate choice, more important the more you go from patch level towards major version.
(waiting for the people to chime in that this broken anyway and you should never work without Docker, etc.pp - I know, I know. It's just a real example why I run Arch on my personal machine but am more than happy with Ubuntu LTS on my work machine. I change minor/major version when I want.)
Anyway, this is not to poo-poo a new rolling release distro; the more the merrier. I think people are waking up to the fact that rolling, with fewer moving parts per update, is the best way to get stability. Debugging effort grows like O(2^n) where n is the number of packages updated.
The unique selling point is its immutability as described here:
https://documentation.vanillaos.org/docs/almost/
> Immutability is meant to be used as a safety measure to prevent accidental changes to the system, so it should be kept enabled most of the time.
I don't know what an accidental change is, but if I want to change something I'm going to change it and likely tear through immutability anyway. I can go back to Windows if I want to be limited in what I can change :p
LinuxMint has had the best balance of stability, out-of-the-box experience and user friendliness (I hate snaps). I only wish they supported a KDE version, as I used to love using a KDE desktop back in the day (btw, remember how broken was KDE4 when it just came out? KDE3 had A LOT of stuff and KDE4 was just... so barebones).
plus ... ubuntu is debian. can't rly imagine why you'd want to base a new distro that is debian-based on something other than debian.
arch is a cool distro that I definitely respect, but I don't think it is appropriate to use for a workstation that you need unless you are on a filesystem that will do snapshots before package updates such that you can easily rollback. ie btrfs/zypper.
If you want a little more stability but still rolling release, do Debian Testing. Packages are only really delayed by 2-10 days (except during release windows where they do branching). The only criteria for something getting into Testing is that it passes all tests while in Sid for multiple or all supported platforms.
But overall, Sid is fairly rock solid. If anything I think Rhino Linux should have taken Debian Sid or Testing as a source, adding all the niceties/desktop/sane defaults of Ubuntu that they like. and released that.
But it would be also nice to have a standard mutable variant too.
I tried using testing first but did experience more breakage there for some reason. I wonder if that was just bad timing, but like I said, "unstable" has been rock solid for me so I've never looked back.
I've had experience with it and Arch in my rolling days (I am now a debian stable user, and use flatpaks and pet containers when I need newer software and feel much more at peace with my systems now), and Arch would, in my experience, never be the source of breakage. Things do break at times on a rolling release distro, but in the case of Arch, that would be because something upstream changed in their software, not because of the packaging of the distro itself.
Debian testing is not the answer either. When there are bugs that make it to testing, they can linger for an incredibly long time. At least, on sid, or Arch, it's more likely to happen, but also will get fixed quickly.
IMHO, the current landscape has solved the whole reason that made rolling desirable. With flatpaks and pet containers, there's nothing you could possibly miss, while you run a stable, unchanging system underneath. If you need support for hardware so bleeding edge that there isn't a backported kernel yet, I'd still find it less effort to package my own ( https://www.debian.org/doc/manuals/debian-kernel-handbook/ch... describes how to do this succintly. It's not as much work as it sounds ) from upstream until backport repositories support my hardware, than have a fully rolling distro on my computer.
Maybe this distro is based on Debian testing, but has some of the Ubuntu defaults?
It uses XFCE, and Pacstall for package management, which to me makes it utterly unlike Ubuntu.
Apt is another part of it, but honestly Debian seems to 'feel' better. Perhaps due to the packaging?
Anyway, I'll probably try this out. Say I wanted to take Canonical out, does anyone here have anything to say for Debian Unstable?
It's pretty subtle. Ubuntu packages, maybe not all DEBs, like to prompt for input on how to proceed with new configs.
For servers at scale with varying packages, levels, and requirements - this gets painful. Some config hackery can help, but creates a bit of a circular problem.
RPM systems (by default) will trust the administrator. They don't prompt, and provide the new config file as a reference - without messing with what's already been deployed.
Apt also likes to get hamstrung on previous transactions. If they broke for the reason I just mentioned [or any other], installing new/completely unrelated things is blocked.
I can pretty much trust my RPM systems to do what they want/have been told... but not the DEB.
Granted, my experience with DEB has mostly been limited to Ubuntu - so it could be that/Canonical.
It is not a Canonical specificity, but it is overridable behavior.
For the dpkg prompting on configuration file changes:
https://raphaelhertzog.com/2010/09/21/debian-conffile-config...
> You can also make those options permanent by creating /etc/apt/apt.conf.d/local:
> Dpkg::Options { > "--force-confdef"; > "--force-confold"; > }
Along with invoking apt with -y (assume yes) will get you close to the behavior you seek. Or as a permanent setting:
APT::Get::Assume-Yes "true";
That requires:
- making / read-only (so there's
nothing to save from / on upgrade)
- having all configuration state move
out of /
- having all upgrade actions relating
to config files and so on be applied
to a clone of the dataset that has
that content
This way backing out an upgrade is trivial, and you can be very confident in the ability to back out.This approach happens to be a very good idea for other things as well. Such as if you wanted to seal TPM keys to PCR values that bind all of /, well, you'd need a secure hash of all of / for that, and a Merkle hash tree filesystem (but not quite ZFS) can give you that.
Say my enterprise application is built upon the API (in an abstract sense, if you will) of package xyz, version 1.0. And then xyz, version 2.0 comes out.
I would have to rebuild my enterprise application to be compatible with API 2 and I don't have the resources nor the incentive for that because I don't need API 2. Then a vulnerability gets reported in both xyz version 1.0 and 2.0 but xyz's maintainers only patch 2.0 (as 2.0.1).
In that case I am very happy that non-rolling (enterprisey) distro's like Ubuntu, CentOS, Redhat etc backport that security patch so I can keep running xyz version 1 (or rather 1.0.0-1 or something like that). Where most rolling distro's would just 'force' you to upgrade to 2.0.1.
Hope my explanation makes sense.
People go on and on about backported security patches and stability, but I’ve had to handle so many buggy patches or issues that never got a backported fix that I now think this is basically a fantasy. The distro maintainers just don’t have the time (or experience with all the software they ship!) to backport patches for every single issue. I’d really rather get a fix by the actual software maintainer than a year-old mystery meat version that still has a bunch of known non security bugs fixed in upstream that the distro maintainers don’t care about.
Even worse, being able to stay on essentially outdated software puts a lot of organizations into a tough spot when their LTS version finally becomes unsupported. Practice makes perfect, and I think lots of small, regular updates result in a lot less pain than a mega-update every few years (really: I’ve had to manage one of these more than once, and it’s a total nightmare figuring out which of 1000 changes in the new LTS version caused a performance regression or something).
Well yes, the testing is of course part of the 'as fast as possible' part. But I could've made that more clear indeed.
> many buggy patches or issues that never got a backported
I have yet to see those in CentOS. But I guess we won't be seeing a lot of CentOS at all in the foreseeable future :p
> many buggy patches or issues that never got a backported
I feel like thats mostly on them. There is a huge temporal overlap between LTS versions and you should have plenty of time to test. I think I'd rather dedicate one month every year to fully test and then roll out a new LTS version than be interupted by unexpected updates at random intervals.
That being said: What a boring job it must be to backport security patches all day.
But, just like point release distros, people are going to want to try new things, and for some things they want to try, it’ll be easier to start a new project rather than somehow convincing the whole Arch community to try their thing. Arch is pretty conservative and sticks fairly close to upstream.
So, we’ll keep seeing new rolling release distros, and some of them will have good ideas, so they’ll stick around. Which is great, diversity is a sign of a strong ecosystem.
Manjaro may have some hope: it's received a lot of criticism for the odd way the maintainers have set up some aspects of the distro, especially from Arch users. I've seen HN threads full of comments saying things like "why on earth would anyone use Manjaro when you can use Arch?". Those commenters miss the selling point of Manjaro: it's a rolling release for Ubuntu's target audience, and that target audience want one important thing Arch does not offer:
- an officially supported, opinionated installer of a fully configured Desktop environment
Unless something major changed, you're dropped to a terminal as soon as you boot the install image, and have to either have advanced knowledge on what to do from there, or have the wiki side-by-side on another device. And unless you're taking incredible notes at the same time, good luck replicating the set-up if you need to reinstall.
Ubuntu, openSUSE, Fedora, and most other mainstream distros at least boot you into a GUI to install.
I once had my computer crash during a kernel update and this left the system unbootable. All you have to do is use the arch iso and arch-chroot into your system to rerun/undo the kernel update or whatever other update broke your system. The thing is, even a "reinstall" is merely about deleting packages and then rerunning pacman and reinstalling your bootloader. Your /home and /etc stay untouched. You can take the list of installed packages and then install those. I mostly needed that when moving from an old laptop to a new one.
I'd rather nuke from orbit and rebuild than duct-tape holes :p If my system became unbootable for some reason, I'd fix it and ideally find out what happened, backup stuff, and reinstall. Best-case, everything is fine (although I'd change distros if it ever broke because of a clearly untested updated). Worst-case, the system becomes unbootable again because of the same issue and I can report it upstream with more confidence.
Regardless, I solve all my OpenSUSE problems using the Arch wiki since they're both rolling-release, modern software stacks, systemd, etc distros, so I'm always grateful that Arch exists.
I use Fedora primarily because of SELinux, and apparently Arch doesn't even use a MAC by-default and expects manual-setup.
openSUSE Tumbleweed is a better rolling-release implementation imo and has even been more up-to-date than Arch when it came to some major GNOME, KDE and kernel updates.
You run Arch if you want that critical mass of bleeding edge community support/maintenance. Fedora for a pre release RHEL. Clear Linux for absolute x86 performance. Immutable distros like Kionite or SteamOS for focused tasks and stability. Gentoo for embedded stuff or weird patches. Mint for an old (but stable) base.
And you run Ubuntu because it is default linux. Its what you have to deal with on your cloud instance or work server or whatever. It is possibly the only thing some specific software you want is packaged/tested on.
So Rhino linux is... Ubuntu, but rolling? If it actually works with Ubuntu targeted packages, thats pretty cool, as it would take tons pain out of Ubuntu.
Fedora is probably the most secure server OS you can get; can't beat SELinux, and nobody else implements it besides Fedora and RHEL.
I personally see no point to Mint since Ubuntu exists, and Mint has had their own share of specific issues one being that Wine didn't work for some months. The rep I got from them in the past was that they mixed their own, Debian, and Ubuntu packages in their default repos that occasionally caused dependency issues. Maybe it's not that bad, but Ubuntu is still around and a lot more supported.
Ubuntu is the distro. It's popular, it looks good (not the boring grey/white Adwaita theme), and can handle multimedia without having to involve any 3rd-party repos. I'd recommend it to beginners today, and I'd probably be using it as a desktop OS still but I like consistency and my home lab is Fedora :p
I have zero interest in Rhino Linux. I don't have issue with Ubuntu's update procedures and trust them to make sure package and distro updates go smoothly for the largest user-base, and I trust openSUSE TW more for rolling since they've been doing it longer. I also don't like the idea of running a fork of a distro that's a fork of another distro :p
And I too am skeptical of Mint. Again, immutable (and not so old) sounds better if you really dont want your system to break.
Personally I am partial to CachyOS. Its Arch, but Clear Linux, with an auto installer and as many optimizations/patches ported over to the stock Arch packages as possible (but not to the point of incompatibility like Manjaro).
Immutable + SELinux means Kalpa could be my "linux for friend/family" recommendation. I need to check it out.
It's a PITA (have to install all the packages I had on old version), but I have scripts that mostly do it all for me now.
If you've ever lived through a do-release-upgrade for mysql, you'll probably never do it again.
So it doesn’t always work.
I am strongly considering trying Arch instead.
New distro versions for me equals a clean state to make sure everything goes smoothly :p I have commands and notes that let me re-deploy within an hour on most distros, like these for Fedora: https://wiki.realmofespionage.xyz/distros:fedora_workstation...