| The curse of Free Software. You are root. You can do anything on your own machine. This means that you have the freedom to break it. The problem with traditional distributions today is that the packaging gives you something, but you are expected (particularly on a server) to take that packaging and then modify your system configuration to suit. Unfortunately, it's then impossible for the packaging to cover every case on upgrade, since packaging can't possibly know what you did. Suddenly upgrade path code has to magically cover every conceivable use case and more. This route is doomed to fail. Distributions are working on this problem, but it requires a huge paradigm shift that will leave behind traditionalists kicking and screaming. Take Ubuntu Snappy, for example, with its read-only filesystem and image-based updates. But this sort of thing is the only sensible way forward if you want upgrades to work without failure. Alternatively, as a user you can take a different course. Make your deployment "immutable", and manage any necessary state independently. In other words, define your deployment as a delta to be applied over the distribution default. If things go wrong, don't try to recover; instead blow it away and redeploy. Manage your delta in version control, and make it easy to test and deploy. This is what the configuration management crowd are doing, as well as the Docker crowd, and just about everyone else. Of course, this is a little crazy on a desktop system, which is why Ubuntu is doing Snappy. Or, stick to doing things the traditional way, but don't expect your experience to change. |