141 lines
6.5 KiB
Plaintext
141 lines
6.5 KiB
Plaintext
|
||
|
||
<p>I am currently running Debian Unstable (aka “Debian Sid”) on three
|
||
machines. I think it is an excellent choice for anyone looking to use
|
||
Debian while still deploying a rolling release Operating System. As my
|
||
priorities are changing, I want to transition to the stable branch.
|
||
With Debian Buster expected some time in mid-2019, here is my plan for
|
||
enacting such change.</p>
|
||
|
||
<h2>A bit of context first</h2>
|
||
|
||
<p>I was an Arch Linux user prior to migrating to Debian some ~16 months
|
||
ago. Debian’s unstable branch was the natural choice for making the
|
||
switch as seamless as possible. I did not want to disrupt my setup. It
|
||
was dependent on some of the features that were available in the newer
|
||
package versions provided by Arch.</p>
|
||
|
||
<p>So here I am about 1.5 years later. Fully satisfied with the decision I
|
||
made. Debian Sid has been excellent thus far.</p>
|
||
|
||
<p>That granted, I find the much-vaunted advantages of a rolling release
|
||
distribution to be context-dependent. It matters what software you rely
|
||
on and whether any new features are integral to your workflow.</p>
|
||
|
||
<p>Put simply, if you want to run a KDE Plasma or a GNOME desktop with all
|
||
the new niceties, then rolling release or something closer to the
|
||
bleeding edge is the way to go. If, however, you do not care about
|
||
newer technologies like Wayland, and are running a custom working
|
||
environment such as my BSPWM (see <a href="https://gitlab.com/protesilaos/dotfiles">my
|
||
dotfiles</a>), then the
|
||
maintenance overhead of a rolling distro outweighs the potential
|
||
benefits of having the latest version of everything.</p>
|
||
|
||
<p>Most tools I rely on are CLI programs. These do not change much. For
|
||
example, I use <code>neomutt</code> as my mail client. All the features I need are
|
||
already available. If <code>neomutt</code> were to retain its feature set forever,
|
||
I would still be happy with it. Same with <code>newsboat</code>, <code>taskwarrior</code>
|
||
(executable is <code>task</code>), <code>tmux</code>… And the list goes on.</p>
|
||
|
||
<h2>The plan for switching to Debian Buster</h2>
|
||
|
||
<p class="critical">This is <strong>highly experimental.</strong> I am <strong>not an expert in Debian</strong>
|
||
system administration. <strong>I do not recommend you try this.</strong> Especially
|
||
not on mission critical systems.</p>
|
||
|
||
<p>Debian Buster (aka Debian 10) is expected a bit less than a year from
|
||
now. This is the right moment to prepare for the transition from
|
||
Unstable to the next Stable. It gives my systems enough time to
|
||
gradually settle in the state of the current Debian Testing branch and
|
||
keep track of it while it enters the feature freeze.</p>
|
||
|
||
<p>The plan hinges on APT and involves some basic pinning preferences. I
|
||
want to run a <em>mixed distribution</em> that includes sources from both
|
||
<code>testing</code> and <code>unstable</code>.</p>
|
||
|
||
<p>These are my apt sources:</p>
|
||
|
||
<pre><code># Security updates (stable)
|
||
deb http://security.debian.org/debian-security stable/updates main contrib non-free
|
||
deb-src http://security.debian.org/debian-security stable/updates main contrib non-free
|
||
|
||
# Debian Testing
|
||
deb http://ftp.gr.debian.org/debian/ testing main contrib non-free
|
||
deb-src http://ftp.gr.debian.org/debian/ testing main contrib non-free
|
||
|
||
# Debian Unstable
|
||
deb http://ftp.gr.debian.org/debian/ unstable main contrib non-free
|
||
deb-src http://ftp.gr.debian.org/debian/ unstable main contrib non-free
|
||
</code></pre>
|
||
|
||
<p>And here are the corresponding preferences:</p>
|
||
|
||
<pre><code>Package: *
|
||
Pin: release a=testing
|
||
Pin-Priority: 500
|
||
|
||
Package: *
|
||
Pin: release a=unstable
|
||
Pin-Priority: 200
|
||
</code></pre>
|
||
|
||
<p>These instruct <code>apt</code> to keep track of packages from the <code>testing</code> branch
|
||
and only look at <code>unstable</code> when requested packages are not available
|
||
there. Given enough time, it will make my Debian Unstable systems
|
||
indistinguishable from Debian Testing.</p>
|
||
|
||
<p>The inclusion of the <code>debian-security</code> sources is for those cases where
|
||
a package has migrated directly from <code>unstable</code> to <code>stable</code>. Examples
|
||
that come to mind are the latest <code>firefox-esr</code> and <code>thunderbird</code>.</p>
|
||
|
||
<p>When the feature freeze starts, I will effectively be running Debian
|
||
Testing, which is the pre-release of the next stable distribution.</p>
|
||
|
||
<p>Then the idea is to follow the announcements about when Debian 10 will
|
||
become available. A few days prior to its official release, I will edit
|
||
my <code>apt</code> sources again to look like this:</p>
|
||
|
||
<pre><code>deb http://ftp.gr.debian.org/debian/ stable main non-free contrib
|
||
deb-src http://ftp.gr.debian.org/debian/ stable main non-free contrib
|
||
|
||
deb http://security.debian.org/debian-security stable/updates main contrib non-free
|
||
deb-src http://security.debian.org/debian-security stable/updates main contrib non-free
|
||
|
||
# stable-updates, previously known as 'volatile'
|
||
deb http://ftp.gr.debian.org/debian/ stable-updates main contrib non-free
|
||
deb-src http://ftp.gr.debian.org/debian/ stable-updates main contrib non-free
|
||
</code></pre>
|
||
|
||
<p>Notice that I added a few more entries, which I adapted from the default
|
||
options that are provided on a clean Debian 9 install. <em>These are
|
||
subject to change.</em></p>
|
||
|
||
<p>Once I have the new sources in place, I will remove the aforementioned
|
||
pinning rules. I only want to track <code>stable</code>.</p>
|
||
|
||
<h2>Learning by doing</h2>
|
||
|
||
<p>Debian does not officially support any graceful move from Unstable to
|
||
Stable. <em>This is highly experimental.</em> I have backups in place in case
|
||
something goes awry.</p>
|
||
|
||
<p>The truth is I have had no issues whatsoever with Debian Sid. But that
|
||
is partly due to my diligence with system administration. It takes time
|
||
and dedication; resources that could be managed more efficiently. Given
|
||
that my main tools do not need to be on the bleeding edge, such
|
||
commitment offers a marginal benefit at best.</p>
|
||
|
||
<p>The afore-described venture would presumably fail miserably if I were
|
||
running major software groups that update frequently, such as GNOME or
|
||
KDE. All I now have on my systems apart from the core packages is BSPWM
|
||
and related extras, my CLI tools, Firefox and Thunderbird, and Xfce as a
|
||
backup Desktop Environment (before I had GNOME and MATE).</p>
|
||
|
||
<p>I expect the transition to the next Debian Stable to be smooth because I
|
||
am not trying to rush things and downgrade packages in bulk. What is
|
||
basically happening is a self imposed package freeze in anticipation of
|
||
the official introduction of Debian 10. Some manual downgrades may
|
||
still be required, but these should be limited in scope or at least
|
||
easier to figure out.</p>
|
||
|
||
|