Fedora 23 and upgrade issues

 

fedora

Fedora 23 has been released yesterday, and as a big fan and a long time user I had to upgrade my laptop (from Fedora 22) immediately.  Or at least try.

Usually, the process is quite simple and doesn’t take much figuring out.  This time it was somewhat different though.  At first, the recommended upgrade command changed slightly from the nice and simple fedup to dnf system-upgrade.

The first attempt downloaded all packages, ended with a cryptic error along the lines of “No updates for kernel packages were found“.  Hmm, weird.  I thought maybe this was caused by me forgetting to run “dnf update” before the upgrade process.  So I did.  Some updates were installed, but there were no kernel packages among them.  I rebooted the laptop just in case.

The second attempt for some reason failed to find any of the previously downloaded packages, so I had to wait until the almost 2 GB get pulled down again.  Result – same error about missing kernel updates.  Hmm, again.

After poking around for a bit, I realized that I had previously configured yum to exclude some packages from updates (kernel, kmod-wl, kmod-VirtualBox, and VirtualBox).  These settings were picked up by dnf.  Editing both /etc/yum.conf and /etc/dnf/dnf.conf to disable the exclude fixed the issue.  “dnf update” now pulled some updates to the kernel.  Another reboot.

The third attempt once again lost all the downloaded packages and I had to wait some more.  This was annoying, especially at 1am now.  The process of downloading finished OK and this time there was no errors.  So “dnf system-upgrade reboot” should do the trick now, right?  Wrong!

Surprisingly, there was no boot menu for system upgrade upon reboot.  So I went with Fedora 22 boot option.  Which resulted in a brief screen saying “Preparing for upgrade“.  Which then disappeared and the system booted back into Fedora 22.  Now that was interesting.

It took me a while to find the issue.  The problem was that my Fedora 22 laptop wasn’t a clean install, but an upgrade from Fedora 21.  That shouldn’t be a problem, but it is, due to this bug.  My /etc/os-release file didn’t have the VARIANT and VARIANT_ID variables (thanks to this blog).  So after adding these lines:

VARIANT="Workstation Edition"
VARIANT_ID=workstation

I’ve rebooted once again, and started the fourth attempt.  Downloaded packages were gone once again, so I had to wait a bit more.  This time the faster office Internet connection helped to save some time.  Download finished OK. Another reboot.  Once again, there is no option to upgrade Fedora, so I’m going into Fedora 22 boot.  Finally, now there is the upgrade screen!  After some preparation time, the packages were installed, the machine rebooted, and now I’m Fedora 23 user.

Checking my /etc/os-release file I see that both variant variables are gone now.  This feels weird, but hopefully won’t cause issues in the future.  If it will, I’ll probably Google for three hours before finding this very blog post.

6 great monospaced fonts for code and terminal in Fedora

hack

Fedora Magazine covers “6 great monospaced fonts for code and terminal in Fedora“.  Their choices are:

  • Hack
  • Inconsolata
  • Source Code Pro
  • Fira Mono
  • Droid Sans Mono
  • DejaVu Sans Mono

It’s been a while since I considered a change to the monospaced fonts that I’m using.  The top three fonts in my list from a while back are Fixedsys Excelsior, Monaco, and Microsoft Consolas.  I used Fixedsys Excelsior almost exclusively in all my terminal windows.

Vagrant adventures on Fedora 21

I spent a large chunk of yesterday experimenting with Vagrant on my Fedora 21 laptop.  I’ve used it before of course, but a friend asked for help with something I was planning to play with for a long time, so it unexpectedly lead me into a journey.

Let’s start simple.  If you want the least possible amount of hassle with running Vagrant on Fedora, you should use it with Oracle VirtualBox provider (sometimes also called hypervisor).   It works great!  The only troubles with this approach is that VirtualBox relies on a kernel module (kmod-VirtualBox RPM), which has to match your current running kernel version to a digit.  This kernel module is NOT part of the official Fedora repositories, and, instead, can be found in the RPM Fusion yum repository (rpmfusion-free-updates).  This means that sometimes, when Fedora releases a kernel update, it might take a few days for the RPM Fusion repository to catch up with the kmod-VirtualBox updates.  And this, of course, might result in your Vagrant setup being broken.

The easiest way to protect against that is to disable automatic kernel, kernel module and VirtualBox updates.  To do so, add the following line to the [main] section of your /etc/yum.conf file, right after your VirtualBox/vagrant setup started to work:

exclude=kernel* kmod-* VirtualBox*

Now, if you forgot to do that a few times got pissed off with this situation (or don’t like Oracle for some reason), you might consider alternatives.  Which are a few.  Vagrant supports a variety of hypervisors.   One of the common alternatives is to use libvirt, which is shipped with Fedora distribution.

Installing libvirt is simple (thanks to this blog post).  Here’s pretty much all you have to do:

yum install libvirt libvirt-daemon libvirt-daemon-qemu virt-manager
service libvirtd restart

The problem that you might realize now is that libvirt is not the most popular provider for boxes in the Vagrant world.  Most people seem to prefer VirtualBox.  But if your choices are satisfied, I’m glad for you.  If they are not, however, there is a work around that you might go for – vagrant mutate plugin.  This plugin converts vagrant boxes from one hypervisor to another.

In order to install this plugin on Fedora 21 you’ll need a few development tools first (this StackOverflow thread definitely helped with the weird g++ error):

yum install ruby-devel gcc-c++ make

Once you have those, install the vagrant plugin with your regular user (the one who will run vagrant VMs):

vagrant plugin install vagrant-mutate

Now you can mutate Vagrant boxes.  Unfortunately, you might find that mutate plugin doesn’t like boxes with slash in their names (like chef/centos-6.5).  The suggested workaround is to either use box names without slashes, or to provide mutate plugin with the box URLs, rather than names.  The official boxes directory doesn’t give you URLs though, so you might be stack with random GitHub repositories or with an alternative directory, like Vagrantbox.es.

My adventures with this aren’t over yet.   Feel free to send suggestions my way.  From my side, here are a couple of other useful links on this subject:

One last bit of advise from me is that until you are absolutely sure that your Vagrant setup works perfectly, stick to 32-bit box images.  There’s nothing like ripping your hair out for three hours only to learn that your host hardware is 32-bit while you are trying to boot into a 64-bit operating system.