Upgrading Mandriva Linux with urpmi
From Mandriva Community Wiki
With a fast Internet connection
Use the Mandriva Linux Control Center to remove all your sources.
Go to http://easyurpmi.zarb.org and follow the instructions for the desired version, you need at least the main source but it is recommended that you include also contrib and non-free. If you want access to a lot of extra programs that are not officially 'approved' you can also add the plf-free and plf-nonfree sources. Note also the licenses for these are different!
Make sure the command that you obtain to be typed is all on one line - word wrap will destroy the command. This will download the package list (around 10MB)
Alternatively, to upgrade your distribution to Cooker (development release, not recommended for production use), you can try this:
urpmi.addmedia --distrib --mirrorlist ftp://ftp.surfnet.nl/pub/os/Linux/distr/Mandrivalinux/devel/cooker/i586
Replace the ftp URL so that it reflects a mirror close to you and the desired architecture (i586 or x86_64).
Now execute urpmi --auto-select
This will ask to update lots of packages and their dependencies. Accept... wait... wait a little more (it may ask to remove some packages, this is normal as some programs become obsolete or conflict with new versions)... wait for the installation...and enjoy.
With the CDs
Insert the first CD in your CD-ROM drive and reboot. After selecting your preferred language, chose "System Update" instead of "Installation" and follow the instructions.
Detailed Command Line Method for upgrading
These advises are taken from posts sent to the expert mailing-list (Original posters are: James Sparenberg, Tim Sawchuck, Tom Brinkman, Greg Meyer). Feel free to add comments or corrections.
For steps where people had different methods:
- Texstar and plf
- Remove all plf and Texstar packages
- Don't remove them
- Total of 4 pkgs had conflicts.
- rpm -Uvh --force on those and it was 100% successful.
- Also, there are plf cooker rpms and you'll want those since they upgrade the plf apps you already have. I've done it on 3 boxes so far without any real problems (a couple of .rpmnew files to move and a reboot, since I did the kernel last.)
- It is recommended not to put Cooker package on stable versions. (Dick Gevers)
- urpmi.removemedia -a (get rid of all current dbases)
- see http://www.easyurpmi.zarb.org for easy configuring
- examples of what to add: main, contrib, updates (maybe from cooker, maybe from the latest releas if it's ready)
- urpmi.update -a
- urpmi --wget --no-verify-rpm --auto-select -v
- Use wget only for downloading distant files. By default curl is used if available or wget instead.
- I prefer wget as it retries better than curl.
- Gets around bad signatures.
- Automatically select all packages that have to be upgraded according to already installed packages and packages listed in various media registered.
- verbose mode with various messages.
- Assumes yes on all questions.
- Usually done to avoid answering yes to bad signature questions.
- Unless you're positive the mirror you're using is absolutely in order and up to date, --force could be a disaster. (Tom Brinkman )
- Allow urpmi to ask user to continue installation using no dependencies checking or forced installation due to error. By default urpmi exit immediately in such case.
- Using the --allow-force switch works better, since the dependencies can get funny with textar and plf rpms that might have a newer numbering than the 9.2 versions installing
- Installs all required dependencies without asking.
- Possible problem: some of the dependancies are met by 2 or 3 rpms and you will want to chose the one that fits your box the best.
- urpmi kernel.
- Add back plf source and reinstall anything interesting from there (assuming you chose to remove it in the beginning)
- The way of upgrading takes about the same time than downloading the ISO and using the CD.
- It is not recommended to upgrade this way, if you don't know Mandriva Linux well ; since it is highly possible that some packages won't install, because of conflicts (with plf or texstar, mainly). If an rpm fails to install due to conflict it's retained in /var/cache/urpmi/rpms and an rpm -Uvh --force *.rpm seems to take care of the problem.
- You also need to know that things like konsole are separate and don't get installed here.
- It can be done over the net.
- The box remains usable during the upgrade process. Some people recommand to switch to rulevel 3 (telinit 3), especially if running KDE, but it is not required.
- At the end of the process, run rpm -Va | grep miss to see if any libraries are missing.
So it's not perfect but dang close.
Updating to 2006.0 from earlier version
There's an item in the Mandriva 2006.0 release notes that says that when updating to 2006.0 from a previous release, a 2.6.12 kernel must be used, because it provides features that are required for other tools to work. You may have better results with your update if you update the kernel first for this release, instead of the normal way of doing it (which would be last) as described above.
- There may be a slightly newer version of the kernel available for 2006.0 at the time you do your update; make sure you get the latest one that's available for 2006.0 and don't just slavishly grab the base 2.6.12 kernel package. :-)
- Make sure you reboot to the new kernel after you've installed it before proceeding with the rest of your system upgrade via URPMI.
YMMV as always. Another useful thing to do is to take a list of the packages before and after the update in order to check which packages urpmi failed to update or obsolete/unneeded libraries.
LucaOlivetti - 01 Nov 2003
This is what I did to perform an upgrade:
- removed all rpmnew files left from previous updates of packages (another user: this isn't always wise ;)
- took a list of all the rpms installed rpm -qa | sort > list.mdk91
- removed old sources and added a source for every repository I knew had packaged installed. In my case I added sources for main, contrib and plf.
- the urpmi urpmi step worked fairly well
- the urpmi --auto-select didn't go as well, a lot of problems with gpg signatures. I stopped it (CTRL+C), deleted the file /var/lib/rpm/PubKeys and imported manually the public keys rpm --import pubkey (and pubkey2 and pubkey3, they are in the Mandrake/base directory on any mirror)
- in my case I had problem upgrading libavifile0.7 and libaviplayavcodec (both plf packages) with urpmi --auto-select. I think it's a problem with urpmi batching, since an urpmi libavifile0.7 libaviplayavcodec worked flawlessly
- Next I urpmi'ed all the missing kde packages (since kde was split in 9.2 , the upgrade would let you with many missing goodies). In my case
- urpmi kdebase-konsole
- urpmi kdebase-kate
- urpmi kdepim-knotes
- urpmi kdepim-korganizer
- urpmi kdenetwork-knewsticker
(your needs may be different)
- Next I took a list of the currently installed packages rpm -qa | sort > list.mdk92
- To see which packages weren't updated by urpmi (e.g. stayed the same) comm -1 -2 list.mdk92 list.mdk92 > unchanged There are three possible causes for the failed upgrade
- the package really didn't change (i.e. it's the same) from 9.1 to 9.2. This isn't a fault at all
- the package no longer exist
- urpmi failed to see that a newer package exists
To discriminate the first case from the second and third I used this command:
( for i in `cat unchanged` ; do urpmq --sources $i ; done ) 2>&1 | grep 'cap paquet' > reallyunchanged
(note that 'cap paquet' is the localized version for 'no package', basically I'm looking for packages not existing in any of the new sources. Try first the command wihout the grep to see what's the string to look for in your language)
Now in reallyunchanged there are only packages that weren't upgraded because they no longer exist or urpmi failed to recognize a newer version. Most libsomething packages are probably obsoleted libraries and you can try to urpme them. If urpme doesn't complain about dependencies, the library isn't needed anymore and you can safely remove it (and obtain a spring cleaning effect). Otherwise you can try to urpmi <package-name> to see if this time urpmi catches up. I had to to this with 3 packages: gettext, kdeutils, screem. One other package that gave problems was automake: what I had installed in 9.1 was called automake1.6, while in 9.2 the name is automake1.7. Different package name, no automatic upgrade possible.
The last issue is that by rebooting (I didn't upgrade the kernel) I had a dead machine: it couldn't find the initrd so it couldn't mount the root directory (since it's xfs). Hopefully one of the older kernels I had could boot, ran lilo from it and the machine went back to life. I don't understand what happened here, really.
Then I looked for all the rpmnew files left around cd / ; find -name *rpmnew and took a look at the changes
Well, I'm impressed by how well the procedure worked. Sure, there were some hurdles and the modification in libraries versions wasn't earth shattering (I wonder if everything would work as well with a major glibc update) but still it's much better that what was available before. Oh, btw, I was using the machine (logged in in X) during the whole process. That's incredible. Kudos to Mandriva developers and contributors.