Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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