#1 Le 07/06/2010, à 19:56
- masterfoon
Mise à jour par un chroot
Bonsoir à tous,
j'essaye de personnalisé un live cd d'Ubuntu 10.04. Pour cela j'ai écrit un petit script qui rassemble simplement les commandes nécessaire ce qui me permet de faire mes tests plus rapidement.
#!/bin/bash
# Version 0.1
MDIR=/home/nicolas/
ISOIN=`zenity --file-selection --title="Sélectionnez l'image ISO" --filename=$MDIR`
case $? in
0)
echo "\"$ISOIN\" est sélectionné.";;
1)
echo "Aucune image selectionner"; exit 0;;
-1)
echo "Aucune image selectionner"; exit 0;;
esac
ISONAME=ubuntu-nicolas
# Creation des répertoires de travail
DIR=$MDIR/livecd
sudo mkdir $DIR
cd $DIR
sudo mkdir iso squashfs cdrom
CD=$DIR/cdrom
# Copie de l'image ISO
sudo mount -o loop $ISOIN $CD
sudo cp -av $CD/. iso
sudo umount $CD
# Suppression de programme windows
cd iso
sudo rm -r pics autorun.inf wubi.exe
cd ..
# Copie du squashfs
sudo mount -t squashfs -o loop iso/casper/filesystem.squashfs $CD
sudo cp -av $CD/. squashfs
sudo umount $CD
# Préparation du chroot
sudo mount -t proc /proc squashfs/proc
sudo mount --bind /sys squashfs/sys
sudo mount --bind /dev squashfs/dev
sudo mount --bind /dev/pts/ squashfs/dev/pts
sudo cp /etc/resolv.conf squashfs/etc/resolv.conf
sudo cp /etc/apt/sources.list squashfs/etc/apt/sources.list
sudo cp /etc/hosts squashfs/etc/
# chroot
sudo chroot squashfs
# Sortie du chroot
sudo umount $MDIR/livecd/squashfs/proc
sudo umount $MDIR/livecd/squashfs/sys
sudo umount $MDIR/livecd/squashfs/dev/pts
sudo umount $MDIR/livecd/squashfs/dev
echo "Pressez entrer pour finalisé ..."
read
## Reconstruction du Live CD ##
sudo apt-get install squashfs-tools
# Suppression de l'ancien squashfs
sudo rm iso/casper/filesystem.squashfs
# Prise en compte des nouveaux paquets
sudo chmod a+w iso/casper/filesystem.manifest
sudo chroot squashfs dpkg-query -W --showformat='${Package} ${Version}\n' > iso/casper/filesystem.manifest
sudo chmod go-w iso/casper/filesystem.manifest
sudo chmod a+w iso/casper/filesystem.manifest-desktop
sudo chroot squashfs dpkg-query -W --showformat='${Package} ${Version}\n' > iso/casper/filesystem.manifest-desktop
sudo chmod go-w iso/casper/filesystem.manifest-desktop
# Compression du systeme de fichier
cd squashfs
sudo mksquashfs . ../iso/casper/filesystem.squashfs -info
## Création de l'iso ##
# Remplassement des fichiers noyau
sudo cp squashfs/boot/vmlinuz-2.6* iso/casper/vmlinuz
sudo cp squashfs/boot/initrd.img-2.6* iso/casper/initrd.lz
# Génération d'un nouveau hash MD5
cd iso
sudo bash -c "find . -path ./isolinux -prune -o -type f -not -name md5sum.txt -print0 | xargs -0 md5sum | tee md5sum.txt"
cd ..
# Génération de l'image iso finale
sudo mkisofs -r -V "$ISONAME" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o $ISONAME.iso iso
sudo chown nicolas:nicolas $ISONAME.iso
sudo chmod 640 $ISONAME.iso
sudo cp $ISONAME.iso ~/.Bureau
# Nettoyage
sudo rm -rRfv ~/livecd
exit 0;
Ce script ouvre l'iso, créé les répertoires, fait les copie, monte les système (Proc, sys, ...) et enfin s'arrête sur le prompt du chroot puis reprend pour enfin terminé en créant une image ISO.
Ce script marche plutot bien mais le problème viens lorsque j'essaye de faire une mise a jour:
sudo aptitude update && aptitude safe-upgrade
la mise à jour ne peut se faire et me retourne:
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu
Initialisation de l'état des paquets... Fait
Résolution des dépendances...
Résolution des dépendances...
Les NOUVEAUX paquets suivants vont être installés :
linux-headers-2.6.32-22{a} linux-headers-2.6.32-22-generic{a} linux-image-2.6.32-22-generic{a}
Les paquets suivants seront ENLEVÉS :
linux-headers-2.6.32-21{u} linux-headers-2.6.32-21-generic{u}
Les paquets suivants seront mis à jour :
acpid apt apt-transport-https apt-utils capplets-data cups cups-bsd cups-client cups-common empathy empathy-common evince file-roller gedit gedit-common
ghostscript ghostscript-cups ghostscript-x gnome-control-center gnome-keyring gnome-screensaver gnome-settings-daemon grub-common grub-pc
gtk2-engines-pixbuf gvfs gvfs-backends gvfs-bin gvfs-fuse gwibber gwibber-service hal indicator-applet indicator-applet-session indicator-sound
jockey-common jockey-gtk language-pack-bn language-pack-bn-base language-pack-de language-pack-de-base language-pack-en language-pack-en-base
language-pack-es language-pack-es-base language-pack-fr language-pack-fr-base language-pack-gnome-bn language-pack-gnome-bn-base language-pack-gnome-de
language-pack-gnome-de-base language-pack-gnome-en language-pack-gnome-en-base language-pack-gnome-es language-pack-gnome-es-base language-pack-gnome-fr
language-pack-gnome-fr-base language-pack-gnome-pt language-pack-gnome-pt-base language-pack-gnome-xh language-pack-gnome-xh-base language-pack-pt
language-pack-pt-base language-pack-xh language-pack-xh-base libcups2 libcupscgi1 libcupsdriver1 libcupsimage2 libcupsmime1 libcupsppdc1 libevdocument2
libevview2 libgail-common libgail18 libgcr0 libgdata-common libgdata6 libgl1-mesa-dri libgl1-mesa-glx libglib2.0-0 libglib2.0-data libglibmm-2.4-1c2a
libglu1-mesa libgnome-window-settings1 libgp11-0 libgs8 libgtk2.0-0 libgtk2.0-bin libgtk2.0-common libgtkmm-2.4-1c2a libgtksourceview2.0-0
libgtksourceview2.0-common libgvfscommon0 libhal-storage1 libhal1 libkpathsea5 liblircclient0 libnautilus-extension1 libpam-gnome-keyring
libpangomm-1.4-1 librsvg2-2 librsvg2-common libsnmp-base libsnmp15 libsoup-gnome2.4-1 libsoup2.4-1 libtag1-vanilla libtag1c2a linux-generic
linux-headers-generic linux-image-generic mountall nautilus nautilus-data nautilus-sendto-empathy nvidia-current-modaliases obexd-client pm-utils
python-apt python-cupshelpers python-gtksourceview2 python-ubuntuone-client rhythmbox rhythmbox-plugin-cdrecorder rhythmbox-plugins simple-scan
software-center synaptic system-config-printer-common system-config-printer-gnome system-config-printer-udev tomboy totem totem-common totem-mozilla
totem-plugins transmission-common transmission-gtk ubuntuone-client ubuntuone-client-gnome unattended-upgrades update-manager update-manager-core
vinagre
145 paquets mis à jour, 3 nouvellement installés, 2 à enlever et 6 non mis à jour.
Il est nécessaire de télécharger 0o/165Mo d'archives. Après dépaquetage, 97,0Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
Écriture de l'information d'état étendu... Fait
Extraction des modèles depuis les paquets : 100%
Préconfiguration des paquets...
(Lecture de la base de données... 129798 fichiers et répertoires déjà installés.)
Préparation du remplacement de libc6 2.11.1-0ubuntu7 (en utilisant .../libc6_2.11.1-0ubuntu7_i386.deb) ...
Dépaquetage de la mise à jour de libc6 ...
dpkg: ../../src/archives.c :763 : tarobject: L'assertion « r == stab.st_size » a échoué.
E: Sub-process /usr/bin/dpkg exited unexpectedly
Échec de l'installation d'un paquet. Tentative de réparation :
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu
Initialisation de l'état des paquets... Fait
Écriture de l'information d'état étendu... Fait
Cela fait deux jour que je cherche une solution sans succès. Je m'en remet donc à vos lumières.
Merci.
Dernière modification par masterfoon (Le 07/06/2010, à 19:58)
Peut importe la distribution, on fait tous partis de la grande famille du manchot !
Hors ligne
#2 Le 07/06/2010, à 23:21
- wido
Re : Mise à jour par un chroot
Bonjour,
essaye d'effacer le paquet libc6 du dossier ou contient tous les paquets (.deb) et retélécharge le.
Hors ligne
#3 Le 08/06/2010, à 10:39
- masterfoon
Re : Mise à jour par un chroot
J'ai supprimé tout les paquets de la libc6 dans /var/cache/apt/archive/ mais j'ai toujours la même erreur. Peut être que j'ai compris de travers ce que tu voulais dire ?
Peut importe la distribution, on fait tous partis de la grande famille du manchot !
Hors ligne
#4 Le 08/06/2010, à 12:50
- wido
Re : Mise à jour par un chroot
il y a ce bug:
https://bugs.launchpad.net/ubuntu/+sour … bug/573696
essaye cette commande, après ça je ne vois pas trop, tente de passer par aptitude pour voir si tu as encore le même message d'erreur.
sudo apt-get -f install
Hors ligne
#5 Le 08/06/2010, à 13:33
- masterfoon
Re : Mise à jour par un chroot
J'utilise aptitude depuis le début. De plus j'ai déjà essayé cette commande, sans succès.
Merci de ton aide.
Peut importe la distribution, on fait tous partis de la grande famille du manchot !
Hors ligne
#6 Le 08/06/2010, à 13:37
- masterfoon
Re : Mise à jour par un chroot
Voila ce que
sudo apt-get -f install
retourne:
root@Nicolas:/# sudo apt-get -f install
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
0 mis à jour, 0 nouvellement installés, 0 à enlever et 167 non mis à jour.
2 partiellement installés ou enlevés.
Il est nécessaire de prendre 8 618ko dans les archives.
Après cette opération, 0o d'espace disque supplémentaires seront utilisés.
Réception de : 1 http://fr.archive.ubuntu.com/ubuntu/ lucid/main libc6 2.11.1-0ubuntu7 [3 779kB]
Réception de : 2 http://fr.archive.ubuntu.com/ubuntu/ lucid/main libc6-dev 2.11.1-0ubuntu7 [4 839kB]
8 618ko réceptionnés en 19s (434ko/s)
Préconfiguration des paquets...
(Lecture de la base de données... 129798 fichiers et répertoires déjà installés.)
Préparation du remplacement de libc6 2.11.1-0ubuntu7 (en utilisant .../libc6_2.11.1-0ubuntu7_i386.deb) ...
Dépaquetage de la mise à jour de libc6 ...
dpkg: ../../src/archives.c :763 : tarobject: L'assertion « r == stab.st_size » a échoué.
E: Sub-process /usr/bin/dpkg exited unexpectedly
Peut importe la distribution, on fait tous partis de la grande famille du manchot !
Hors ligne
#7 Le 14/06/2011, à 13:05
- by5r4Dn
Re : Mise à jour par un chroot
Même problème.
Si quelqu'un a la solution je suis preneur
Dernière modification par by5r4Dn (Le 14/06/2011, à 13:06)
Hors ligne