I’ve made a number of changes to the kernel-xen repo today – and it will probably break a lot of things for everyone except new installs – however the pain is worth it… Here’s why:
1) All RPM packages are now signed with a 4096 bit key. Now I’ve got mirror sites popping up its probably a good thing to sign them to ensure your safety and that they haven’t been altered.
2) There are now 4 mirrors and counting for packages. This means you’ll get faster downloads and upgrades in the future.
3) I don’t have to roll out a new kernel-xen package for every update to the mirrors!
Well, versions of kernel-xen older than 188.8.131.52-4 contain the file we use to set the mirrors and contains all the repo config. At the beginning, this didn’t matter – however as changes to mirrors happen, the only way to update each and every system with new mirrors is to roll a new kernel RPM! This is a bad thing.
To combat this, I’ve created a new package called kernel-xen-release. This contains the new GPG signature for the packages and also the repo config file /etc/yum.repos.d/kernel-xen.repo. This means changes to the mirrors can be done with a simple 10Kb update instead of the entire kernel.
Now, why it breaks:
You never want to UPGRADE a kernel RPM. Doing this would remove the running kernel from under your running system and replace it with the newer one. Generally, removing the running kernel is NASTY. However, this now causes an issue that if you have kernel-xen-184.108.40.206-3 installed, it will conflict with the new kernel-xen-release package!
At this stage, I can’t figure out a workaround that will cause this to go smoothly for upgrades, so the only real fix I can think of right now is to remove all kernels at or below 220.127.116.11-3 and manually install 18.104.22.168-4 and kernel-xen-release. You’ll also notice that kernel-xen-release requires yum-plugin-fastestmirror. This will make sure you get your updates from the fastest mirror around.
So in a nutshell, sorry for breaking your upgrade path! If I had thought ahead on how things would pan out, I would have split up the repo config from the kernel from day #1, but I didn’t see it being as popular as it has been and requiring mirrors from around the world!
How to fix this?
Thankfully, its quite easy:
# wget http://www.crc.id.au/repo/x86_64/kernel-xen-22.214.171.124-4.x86_64.rpm
# rpm -ivh --nodeps kernel-xen-126.96.36.199-4.x86_64.rpm
Edit /etc/grub.conf and set the default to 188.8.131.52-4, then reboot your system. Keep in mind you’ll have to add the kernel line for xen.gz and modify the existing KERNEL and INITRD lines to MODULE.
After rebooting, erase the old kernels (anything older than 184.108.40.206-4) and install the new kernel-xen-release package:
# yum erase kernel-xen-220.127.116.11-3
# yum install http://www.crc.id.au/repo/x86_64/kernel-xen-release-6-2.x86_64.rpm