Upgrading openSUSE 10.3 –> 11.0 in a running system.
Upgrading openSUSE between releases while the system is running is not a currently supported method of upgrading. The supported method is to boot from an install medium and select the upgrade option. Nevertheless, it is possible to upgrade a running system. This is more difficult than normal with openSUSE 10.3 -> openSUSE 11.0 due to the change in RPM payload format from bz2 -> lzma which makes the RPM in 10.3 unable to install RPMs from 11.0.
Method
- Upgrade RPM to the version in 11.0
- Install the full package management stack from 11.0
- Upgrade all packages.
Stages
The specific steps required to upgrade using the above method may vary from system to system, these are just those that I needed.
- Disable all the repositories I was using on 10.3.
mv /etc/zypp/repos.d /etc/zypp/repos.d.old
- Delete the repository cache.
rm /var/cache/zypp/zypp.db
- Add the main openSUSE 11.0 repository.
zypper ar http://download.opensuse.org/distribution/11.0/repo/oss openSUSE110
- Install the new RPM from openSUSE 11.0.
On 64bit:
rpm -Uhv 'http://download.opensuse.org/distribution/11.0/repo/oss/suse/x86_64/rpm-4.4.2-199.1.x86_64.rpm'
Or if you are on 32 bit:
rpm -Uhv 'http://download.opensuse.org/distribution/11.0/repo/oss/suse/i586/rpm-4.4.2-199.1.i586.rpm'
- Install the 11.0 package management stack.
zypper in zypper
- Add the 11.0 version of the nonoss and packman repositories, as I have several packages installed from these.
zypper ar http://download.opensuse.org/distribution/11.0/repo/non-oss openSUSE110_NonFree zypper ar http://packman.iu-bremen.de/suse/11.0/ packman
- Upgrade all packages. At this point I had to confirm several package vendor changes and removal of a few obsolete packages.
zypper ref zypper dup
- Reboot
Problems
I had only two significant problems after upgrading. Both turned out to be down to my having edited configuration files, so they were not automatically overwritten with the updated configuration files.
- Networkmanager would immediately disconnect after connecting. This turned out to be down to a stale dhclient configuration file. I solved this with:
mv ./dhclient.conf.rpmnew ./dhclient.conf
- openSUSE updater could not find any backends. This turned out to be down to a stale zypp configuration file. I solved this with:
mv /etc/zypp/zypp.conf.rpmnew /etc/zypp/zypp.conf
Since lack of a new configuration files can cause breakage in unexpected places it would be nice to offer users the chance of replacing or merging their configuration file changes, rather than requiring users to know about these files and merge them manually.
42 comments by 1 or more people
[Skip to the latest comment]Andy Wafaa
Slightly different to my approach, and more straight forward :)
23 Jun 2008, 22:58
Felix Möller
You have a typo in:
“Add the main openSUSE 11.0 repository.
zypper ar http://download.opensuse.org/distribution/11.0/repo openSUSE110”
the oss is missing in the url.
Otherwise it worked fine, I just updated my rented strato server.
During updating hal I had a defunct hal which I had to kill.
24 Jun 2008, 09:22
Thanks, fixed.
24 Jun 2008, 13:50
Caladan
Pardon my ignorance, but if you dont have a 64bit install of 10.3 I asume
rpm -Uhv ‘http://download.opensuse.org/distribution/11.0/repo/oss/suse/x86_64/rpm-4.4.2-199.1.x86_64.rpm’
should be
rpm -Uhv ‘http://download.opensuse.org/distribution/11.0/repo/oss/suse/i586/rpm-4.4.2-199.1.i586.rpm’
as I dont see it in the i686 list
24 Jun 2008, 18:17
Yes thanks, updated.
24 Jun 2008, 18:44
Robin
nice guide.
just a question: can’t rpm be updated by just calling “zypper in rpm”?
24 Jun 2008, 20:18
I don’t think that will work, as zypper will try to install other packages first. I didn’t actually try it this time though, I have in the past.
24 Jun 2008, 20:36
skx
Great entry, let me update my openSUSE installed on ecrypted partitions. Everything worked for me, there’s just one minor problem: when I go to yast -> software -> software repositories then try do add new community repository the list of community repositories downloaded by yast is for openSUSE 10.3.
24 Jun 2008, 21:01
Try this
24 Jun 2008, 21:12
skx
Worked like a charm, thank you very much.
I have suse installed on encrypted partitions and had to recreate swap for some reason, but I’m not sure if it’s related to the update method.
25 Jun 2008, 14:56
Lars Müller
It might be more save to use the rpm including lzma support provided by http://download.opensuse.org/repositories/home:/coolo/openSUSE_10.3/ first.
Then I update very base packages (glibc, rpm, bash, coreutils, popt, libbz2, zlib, sed, swk, sysconfig) with the help of plain rpm on the command line. Rpm complains if a package or particular version of a package is missing. Since the days of SUSE Linux 10.1 the rpm dependencies are in such a well state to produce a clean result.
Next I ensure a rebuild of the rpm data base by calling rpm—rebuilddb
Then update the zypper stack or the meta package management tool (yum, smart) you prefer and got ahead to update the remaining system.
Drawback: Package renames are only handled by the zypper approach.
Even the YaST update module might be utilized to update after the YaST stack is on the level of the new openSUSE version. I’ve not tried this way. Therefore I’m not sure if it works and which YaST module – YaST – has to be called.
27 Jun 2008, 09:04
Amol Shandilya
how can i upgrade suse 10.3 to suse 11.0 manually.. like from any package or with any rpm…????
27 Jun 2008, 09:44
Felipe Alvarez
@Amol
What do you mean manually? This blog is about how to upgrade from 10.3 to 11 manually! Isn’t that what you want? If you want an easy way, you can also download the openSUSE 11 DVD, and select “upgrade” instead of “new installation”
29 Jun 2008, 06:11
16b1ts
Thank you for the guide, it was real straight forward and no errors.. I now have an 11.0 box from 10.03, i just hate wasting DVDs on distros since they are updated so quickly, but thank you, you save me time, and some disks…
30 Jun 2008, 05:42
ss
Thanks for the guide. It worked great. I had screwed up my package management earlier in 10.3 by switching from one repository to another and back. So I thought the live upgrade will fail because of version conflicts and will have to install 11.0 from scratch. But did not have any signification problem (had 3 dependency issues with kaffeine & VLC – but zypper offered options that worked).
30 Jun 2008, 22:28
Lucca
does it works if i have a 32bit opensuse10.3 and a 64bit machine, and if I want to upgrade to a 11.0 with a 64bit…??
I’m sorry if its understandable, i’m pretty bad at english xDDD
tks in advance
01 Jul 2008, 19:42
LasseKongo
Thanks, worked like a charm when I upgraded my Xen paravirtualized 10.3 guest to 11.0. No problems so far in the new installation.
01 Jul 2008, 21:34
alwayslurking
You probably want to add an update repo after that, or you’ll spend a day wondering why Firefox is so flaky, amongst other things;
Adding repository ‘openSUSE110_updates’ [done]
Repository ‘openSUSE110_updates’ successfully added
Enabled: Yes
Autorefresh: No
URI: http://download.opensuse.org/update/11.0/
zypper sm -r openSUSE110_updates
Autorefresh has been enabled for repository ‘openSUSE110_updates’.
-----------------------------1 | openSUSE110_NonFree | openSUSE110_NonFree | Yes | Yes
2 | packman | packman | Yes | Yes
3 | openSUSE110_updates | openSUSE110_updates | Yes | Yes
4 | openSUSE110 | openSUSE110 | Yes | Yes
03 Jul 2008, 15:25
Dan
Thank you very much! This upgrade method worked great!
Only question is I used to have approx 4.5 gig free on my root partition, and now only have around 1.5gig free.
I looked at the size of my log files, etc, but nothing looked out of the ordinary.
It appears that either all of the downloaded packages are still residing on the drive, or all of the 10.3 stuff has been renamed.
Any thoughts? I’d like to free up as much space as I can.
Thanks
12 Jul 2008, 21:02
not working
Followed steps but it does not work:
~ # zypper in zypper
zypper: relocation error: zypper: symbol _ZNSt3tr18__detail12__prime_listE, version GLIBCXX_3.4.10 not defined in file libstdc++.so.6 with link time reference
14 Jul 2008, 22:04
@Dan – cached packages are located in /var/cache/zypp/packages/ , you can toggle package caching by modifying the keeppackages variable in the files in /etc/zypp/repos.d/
22 Jul 2008, 19:59
Annoyed@openSuse
This is one of the reasons why openSuse is slipping into obscurity. This is a poor quality upgrade mechanism that is also risky. In fact, it is too risky to trust for remote upgrades.
Meanwhile other distros got their act together and allow an easy and reliable upgrade mechanism. Observe the necessary commands for each distro below:
Debian/Ubuntu# apt-get dist-upgrade; reboot
Red Hat/Fedora/CentOS# yum upgrade; yum update; reboot
zypper is a steaming pile but apt-get and yum are both NIH so the Novell and openSuse developers regard them as inferior. It’s all open source! Wouldn’t the logical thing be to copy the good bits and incorporate this basic and essential functionality that you are still missing after all these years?
30 Jul 2008, 15:10
@Annoyed normally you could just do “zypper dup; reboot”, this is only a special case because of a major change to RPM. Debian have a policy not to do such a major change in just one release. They would introduce the support for lzma in one release, and then switch the payloads the next release, which would not break upgrades. The problem is not with the tools but with policy.
And zypper in 11.0 is much faster than yum and even faster than apt.
30 Jul 2008, 15:16
Annoyed@openSuse
@Benjamin Weber – My beef is with openSuse not you so please, don’t take this as a personal attack. But your statement doesn’t hold true with the real world.
zypper dup does not work when trying to go from 10.2 to 10.3 and zypper dup does not work properly when going from 10.3 to 11.0
The year is 2008 why are we even discussing upgrade deficiencies when other distros had them solved years ago? By this time openSuse should have two or more upgrade options:
1. You should be able to pop the DVD into a running system and it should start the upgrade utility and ask you how you want to proceed with sane defaults for those that do not have a clue. But, it doesn’t.
2. Over the wire upgrades should be bulletproof and simple with a single command to do the job and a popup notification for graphical environments. These features are also glaringly absent. It takes bodges derived from blogs, much appreciated by the way, to do it but, it’s just not quite reliable and therefore unusable for remote upgrades of production systems.
30 Jul 2008, 23:07
Bruce
Didn’t worked for me
06 Aug 2008, 03:07
MarcusIronfist
I just ran the process as outlined above (with some minor “tweaks” caused by occassional network loss – resolved by simply rerunning the commands), and it WORKED!
My x86_64 10.3 is now a working 11.0 without the hassle of downloading and burning one of the DVD images.
Thank you Benjamin.
07 Aug 2008, 02:34
Satish
Thanks, it was impeccable
13 Aug 2008, 22:49
Joe P.
Thanks, Bruce. I wonder if a similar procedure could be worked to do the in-place upgrade from the DVD without booting it? It seems the main step would be to add the DVD as a repository instead of the on-line one, right? Anything else?
16 Aug 2008, 20:39
J.M. Stoorvogel
I am not really into package management, but I already downloaded the ISO file. But it complained about update problems/conflicts [150 piece] and nomatter what I did, they kept coming back. Zypper also complained but a lot less.
I believe it is also possible to add the ISO as an repository? It was possible with Yast, don’t know with Zypper… This would save redownloading… I have several more computers that need an upgrade ;-)
Could you provide those additional commands? I am sure that more people with a saturated system [installed almos anything ;-)] have the same problems…
But thanks again, you saved the day. I also don’t know why suse didn’t provide this way of upgrading…
16 Aug 2008, 22:45
J.M. Stoorvogel
argh never mind, lazy me…
Tired of keeping your DVD’s around? Want to create ISO images and add them as installation sources?
These commands have been tested on openSUSE 11.
First create a directory where you will store your ISO files.
mkdir /home/sources
Now create your ISO
mkisofs -iso-level 4 -J -R -o /home/sources/su1100.001.iso /media/SU1100.001/
Now we add the ISO as a software repository
zypper ar -c -t yast2 “iso:/?iso=/home/ricardo/sources/su1100.001.iso” “openSuSE 11”
Verify that the service has been successfully added
zypper repos
Now we can delete the DVD repository as an installation repository
zypper rr 1
Let’s quickly enable automatic refresh (optional)
zypper mr -r “openSuSE 11”
Now we can finally test the ISO repository and install a package like nmap
zypper in -y nmap
16 Aug 2008, 22:50
Caleb Cushing (xenoterracide)
I’ve tried this but it seems to screw up my Xorg settings. They are supposed to be 1600×1200@85hz the settings in pax all look right, but if I look at krandrtray I end up at 79hz and my monitor like doing the wave in one corner. the screen also ends up much smaller… it’s fine before I try the upgrade. I can’t find any way of fix X once I’ve done it.
I’m going to try a network install probably sunday. The regular install (of 11.0) doesn’t work and locks my system during the cd boot. I’ve tried all failsafe modes and vesa and text modes and without fail it locks up. I’ve run linux on this box for 4 years (mostly gentoo) so I’m sure it isn’t a hardware compatibility issue. And I’m 99% sure my install media is good since it’s worked previously.
23 Aug 2008, 04:20
Frank
Thank you very much! This upgrade method worked without any problems!
25 Aug 2008, 17:29
Guillaume
Benjamin,
Thanks for a great tutorial. Upgrade worked without a breeze, though I had the following problem afterwards: networkmanager would only work with wired connection and not anymore with wireless (though the combination “traditional method with ifup” + wicd worked fine). The only error message I saw on /var/log/messages was
ipw2200: Failed to send SYSTEM_CONFIG: Already sending a command.
I struggled for a few hours to solve this (and I did, finally), so I think the solution is worth mentioning. For some personal reasons, I had disabled ipv6 support in 10.3, and my understanding is that it is on by default on 11.0. However, there must have been some inconsistencies on the way which prevented networkmanger from working properly. The solution was exceedingly simple: yast2 network, check “enable ipv6”, reboot, and voila! (note: after reboot, I actually disabled it again, rebooted, and it still works).
17 Sep 2008, 15:37
Alex
hey good job bro! this is a great guide, worked flawless!
it would be nice to make a 1click install of this and added to the opensuse.org site
if you are not working on one, let me know so i can make one
good job
Alex
22 Sep 2008, 16:19
fandar
Hi, i just tryed this and i have some problem with rpm, the rpm version is now 4.4.2 but it stops every time when i am trying to install some package or update with zypper rpm freeze, shows nothing and didnt install the package, what can be wrong there? Thank You
08 Oct 2008, 17:20
Smart
Great! My fress install of openSUSE 11.0 couldn’t locate the repo, this solved it!
23 Oct 2008, 08:22
Hendrik Maryns
Would this work to upgrade from 10.0 to 11.0 also, or will I need to go through all intermediate distributions? Otherwise I’d simply do a backup and new installation, but then configuring hell begins, I’m afraid (this is for a webserver).
But thanks, it worked on another laptop impeccably!
06 Nov 2008, 10:13
Erik Jakobsen
Will this method work for 11 => 11.1 ?
24 Nov 2008, 03:11
maybe windows
didn’t work for me. In fact killed the system. Have to download 11.0 and burn to dvd to fix it.
09 Dec 2008, 03:36
Vany
You are the man!!!
Great work and good documentation!
It worked without any problem for me.
Thanks a lot for sharing.
18 Dec 2008, 13:12
skx
With some minor changes this will also work for updating from 11.0 to 11.1.
19 Dec 2008, 02:26
David
Hey skx,
how do you do that ? I run into the fu….. problem, that curl terminate with unspec. errors.
Regards
David
19 Dec 2008, 23:12
Add a comment
You are not allowed to comment on this entry as it has restricted commenting permissions.