Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédente | |||
| utilisateurs:claudiux:migration_maverick_vers_precise [Le 10/09/2012, 02:00] – [Enregistrer les clés GPG de tous les dépôts] claudiux | utilisateurs:claudiux:migration_maverick_vers_precise [Le 09/09/2014, 17:06] (Version actuelle) – [Transfert de l'image iso sur clé USB] claudiux | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | ====== Migration de Maverick vers Precise ====== | ||
| + | Je relate ici mon aventure de migration de Maverick (Ubuntu 10.10) vers Precise (12.04.1). En espérant que cela pourra aider quelqu' | ||
| + | |||
| + | ===== Téléchargement ===== | ||
| + | |||
| + | Sur [[http:// | ||
| + | |||
| + | ===== Transfert de l' | ||
| + | |||
| + | J' | ||
| + | |||
| + | Une fois la clé USB branchée, ne pas la démonter. Il faut savoir comment elle est identifiée dans /dev. | ||
| + | La commande : | ||
| + | sudo fdisk -l | ||
| + | indique : | ||
| + | < | ||
| + | Disque /dev/sdd : 2062 Mo, 2062548992 octets | ||
| + | 19 têtes, 24 secteurs/ | ||
| + | Unités = secteurs de 1 * 512 = 512 octets | ||
| + | Taille de secteur (logique / physique) : | ||
| + | taille d'E/S (minimale / optimale) : | ||
| + | Identifiant de disque : 0x02aa025f | ||
| + | |||
| + | Périphérique Amorce | ||
| + | / | ||
| + | |||
| + | Donc ici la clé USB est le périphérique **/ | ||
| + | |||
| + | Se placer dans le dossier qui contient l' | ||
| + | cd ~/ | ||
| + | ls -t | head -1 | ||
| + | Réponse : | ||
| + | ubuntu-12.04.1-alternate-i386.iso | ||
| + | C'est bien ça ! | ||
| + | |||
| + | Pour vérifier que l' | ||
| + | md5sum ubuntu-12.04.1-alternate-i386.iso | ||
| + | et on obtient : | ||
| + | b4512076d85a1056f8a35f91702d81f9 | ||
| + | Un moteur de recherche confirme que cette clé md5 est la bonne. | ||
| + | |||
| + | Lancer alors la commande qui va transformer ma clé USB en clé bootable d' | ||
| + | sudo dd if=ubuntu-12.04.1-alternate-i386.iso of=/dev/sdd bs=4M && sync | ||
| + | |||
| + | Ne pas interrompre cette commande, ni fermer le terminal dans lequel elle s' | ||
| + | |||
| + | <note tip> | ||
| + | |||
| + | Vérifier que la clé USB n'est pas montée (elle ne l'est normalement pas) et la retirer de son port. | ||
| + | |||
| + | ===== Préparation de la mise à niveau ===== | ||
| + | |||
| + | ==== Sauvegarde des données personnelles ==== | ||
| + | Cela est indispensable, | ||
| + | |||
| + | Pour vérifier si /home est monté sur une partition : | ||
| + | df -h | ||
| + | si une ligne contient /home, c'est OK : | ||
| + | [...] | ||
| + | / | ||
| + | [...] | ||
| + | | ||
| + | |||
| + | ==== Mise à jour de la liste des paquets ==== | ||
| + | Vérifier que synaptic et le gestionnaire de mise à jour sont bien fermés, puis : | ||
| + | sudo apt-get update | ||
| + | |||
| + | (Une erreur survient : le dépôt dl.google.com n' | ||
| + | |||
| + | ==== Mise à jour des paquets et nettoyage ==== | ||
| + | sudo apt-get dist-upgrade | ||
| + | sudo apt-get autoremove | ||
| + | ==== Faire la liste des paquets à réinstaller ==== | ||
| + | |||
| + | Voici un script python qui fait la liste des paquets à installer. | ||
| + | |||
| + | < | ||
| + | # -*- coding: utf-8 -*- | ||
| + | |||
| + | import subprocess | ||
| + | import os, os.path | ||
| + | import re | ||
| + | |||
| + | ### Liste des paquets installés automatiquement (i.e non installés manuellement) ### | ||
| + | # Sous Maverick (Ubuntu 10.10) apt-mark ne connait pas l' | ||
| + | proc = subprocess.Popen([" | ||
| + | autoInstalls, | ||
| + | |||
| + | autoInstallsList = [] | ||
| + | for autoInstall in str.split(autoInstalls,' | ||
| + | autoInstallsList.append(autoInstall) | ||
| + | |||
| + | ## debug: | ||
| + | #print " | ||
| + | |||
| + | ### Liste de tous les paquets installés ### | ||
| + | # S'il n' | ||
| + | # (Pas élégant, mais ça fonctionne et c'est rapide !) | ||
| + | if not os.path.exists(os.path.abspath('' | ||
| + | allpackagescript=open(os.path.abspath('' | ||
| + | allpackagescript.write(" | ||
| + | allpackagescript.close() | ||
| + | # On utilise ce script : | ||
| + | proc=subprocess.Popen(["/ | ||
| + | allInstalls, | ||
| + | |||
| + | allInstallsList = [] | ||
| + | for allInstall in str.split(allInstalls,' | ||
| + | if not (allInstall.startswith(' | ||
| + | allInstallsList.append(allInstall) | ||
| + | |||
| + | ## debug: | ||
| + | #print " | ||
| + | |||
| + | ### Liste de tous les paquets installés manuellement ### | ||
| + | # C'est la différence entre la liste des paquets installés et celle des paquets auto. | ||
| + | manualInstallList = filter(lambda x:x not in autoInstallsList, | ||
| + | |||
| + | # Suppression des paquets réinstallés automatiquement | ||
| + | |||
| + | dependsList=[] | ||
| + | |||
| + | depends=re.compile(" | ||
| + | section=re.compile(" | ||
| + | |||
| + | for pkg in manualInstallList: | ||
| + | proc=subprocess.Popen([" | ||
| + | res,err = proc.communicate() | ||
| + | """ | ||
| + | #1ere idée : Suppression des paquets dont dependent les meta-paquets (tels ubuntu-minimal et ubuntu-desktop) : | ||
| + | sct=section.search(res) | ||
| + | if sct.group(1).startswith(" | ||
| + | #print "META : %s" %pkg | ||
| + | deps=depends.search(res) | ||
| + | deps=deps.group(1).replace("," | ||
| + | pkgsList=str.split(deps, | ||
| + | dependsList=dependsList + filter(lambda x:x not in dependsList, | ||
| + | """ | ||
| + | # 2nde idée : Finalement, supprimer tous les paquets qui seront réinstallés automatiquement du fait des dépendances : | ||
| + | deps=depends.search(res) | ||
| + | if deps is not None: | ||
| + | deps=deps.group(1).replace("," | ||
| + | pkgsList=str.split(deps, | ||
| + | dependsList=dependsList + filter(lambda x:x not in dependsList, | ||
| + | |||
| + | # On supprime ces paquets de la liste des paquets installés manuellement : | ||
| + | manualInstallList=filter(lambda x:x not in dependsList, | ||
| + | |||
| + | # debug: | ||
| + | #print " | ||
| + | |||
| + | for install in manualInstallList: | ||
| + | print install | ||
| + | </ | ||
| + | |||
| + | Créer un dossier migration, et s'y rendre : | ||
| + | mkdir ~/migration | ||
| + | cd ~/migration | ||
| + | |||
| + | Enregistrer le script '' | ||
| + | gedit ~/ | ||
| + | Fermer gedit puis rendre le script exécutable : | ||
| + | chmod +x ~/ | ||
| + | |||
| + | L' | ||
| + | ./ | ||
| + | |||
| + | ==== Enregistrer les clés GPG de tous les dépôts ==== | ||
| + | sudo apt-key exportall > maverick_all_repos.asc | ||
| + | |||
| + | |||
| + | | ||
