Je voudrais vous temoigner d une aventure assez malheureuse qui m est arrive, et qui aurait pu tres mal se finire. Mais ... j ai eu de la chance. Je suis utisateur convaincu de Debian SID depuis 4 ans. La machine dont je vais vous parler est mon ordinateur portable que j ai installe en janvier 2003. Suite a un bug mineur d une application que je ne nommerai pas, j ai decide de reinstaller l aplication en la telechargeant depuis le site officiel. Mais ce que ja i pu telecharger n etait qu un installeur ( en fait l installeur du binaire). Apres une installation en user, j etais satisfait de la nouvelle version. J ai donc repris le processus d installation en root. J ai alors precise le chemin d installation : /usr/bin . La, l installeur me signale que le dossier destination contient deja le programme ( la version buguee), et me propose de vider le dossier avant de continuer l installation. La j ai eu un doute sur la signification du terme 'vider le dossier', et je me suis dit : bon, y doit y avoir une erreur de syntaxe, ils ont du vouloire dire : suprimer du dossier le programme existant. J ai valide la chose. Quand j ai vu que l effacement a pris plus de 1s, la j ai doute. La seconde qui as suivi, j ai bascule dans une autre fenetre : ls /usr/bin -> vide. Donc la j avais bes et bien perdu /usr/bin/* Bilan : je ne peux plus lancer aucune application; tous mes services vont tomber les uns apres les autres. faites un ls /usr/bin .. et dites vous que tout ce qui apparait chez vous, je ne l ai plus : Eterm, xterm, kill, mozilla, *irc*, *ftp*, apt, dpkg ( les deux BASES pour proceder aux installes sous Debian ) ... bref ... plus rien. Ca encore, c est pas grave. Sauf que je suis la passerelle du reseau, que je n ai pas d autres UNIX dans le reseau; donc, si je redemarre, Linux ne rebootera pas. Par contre, si j essaye de me depatouiller avec ce qui est encore vivant ( 6 ou 7 terms, gaim, xmms, thunderbird et c est tout ), j ai une chance d y arriver. Vu que mon seul CD en stoque est un CD de net inst, que je suis en ADSL, et que le support des ADSL chez Sarge n est pas encore implemente, le CD me sert a rien. Si je tente un reboot sur le CD depuis un autre reseau pour proceder a l installation reseau, j en ai pour 24h de dl, 2j de conf, et une semaine de customisation. Donc tant que la machine roulle, je me dit que tout n est pas perdu. *** Je fais le bilan : j ai un CD de netints inutile, gaim, un client mail, xmms ( la musique adouci les moeurs ), et 5 Xterm. Ben y a pas 36 solutions. Depuis la 0.83 gaim supporte le dcc. La procedure est simple: pour installer quoi que ce soit, et restaurer ma machine, j ai besoin de apt et dpkg. J ai leurs version pakage sur CD, mais pas leurversion binaire pour les installer. Donc je demande sur IRC qu on m envoi la version binaire de dpkg ... et la Oh miracle ... chmod est dans /bin ... donc je peux le rendre executable ... je demande deux autres binaires sans importance dont dpkg depend ... puis j attaque les choses propres: je prend quelques pakages sur le CD ( dpkg, apt, wget, perl, findutils et surement d autres que j oublie ) ... je les downgrade en bon et due forme ... question d avoir au moins des programmes qui marchent. Muni de cette "base", je demande qu on me donne les URL de lynx ... et la je deviens autonome. Avec lynx, je peux enfin browser tout seul debian.org, recuperer deux trois bricoles ( dont le tres important gawk ) ... puis je peux faire mon premier update, puis un distupgrade ( pour que apt et dpkg repassent de la version Sarge ( du CD) a la SID ( homogene a mon system) ) Je passe sur les deux trois bugs de locales et Dialog bien utiles a dpkg ( mais pas essentiels ). Je me muni de quelques extras ( mplayer, xmms, gcc, make, vim, less ... ) et je peux enfin attaquer la phase longue: d un cote je reinstalle les programmes installes depuis les sources ( comme xorg qui devient de plus en plus instable ), et d un autre, on je demande comment lister tous les pakages qui 'devraient etre installes', et forcer la reinstallation. On me propose une commande magique : COLUMNS=200 dpkg -l |grep ii |awk '{print $2}' |xargs apt-get --yes --reinstall install Evidement, ca marche pas du premier coup ( le mec avait oublie --yes ), j ai des pakages qui ne sont plus disponibles sur les servers, des reinstallations impossibles a cause de dependances non compatibles ... bref, je degage 4 paquets qui genent, et la ... je pars pour 1h20 de dl. Ensuite, evidement apt trouve des tas d erreursfatales ... d ou : cd /var/cache/apt/archives/ for i in `ls` ; do dpkg -i $i || echo $i >> /root/dpkg-bug-list ; done bref ... apres avoir retelecharge tous les pakages, et vu que apt n arrive pas a les installer, il faut y aller brutte force : cd /var/cache/apt/archives for i in `ls` ; do dpkg -i $i || echo $i >> /root/dpkg-bug-list ; done # retirer le lock et le partial de la liste generee ... for i in `cat /root/dpkg-bug-list` ; do dpkg -i $i || echo $i >> /root/dpkg-bug-list2 ; done for i in `cat /root/dpkg-bug-list2` ; do dpkg -i $i || echo $i >> /root/dpkg-bug-list3 ; done # ... jusqu a ce que le dpkg ne genere plus d erreur. en yait ... le 5e log genere avait plus que 5 lignes ... un apt-get -f install a lesolu les pb, et pour ceux qui restaient ... c etait des pakages sans importance -> apt-get remove Resultat, j ai restaure ma machine, tout remarche a peu pres(surtout xorg qui m as saoule), je n ai rien eu a reconfigurer, pas de reboot,et les questions que dpkg me pose a la reinstallation, de toute facon il me les aurait pose si j avais reformatte. L un dans l autre, j ai perdu une journee, mais si j avais tout reformatte, j aurais perdu 4 a 10 jours "pour retrouver ma machine a l identique". Un autre truc bien utile: par exemple j ai besoin de find. Le pakage le contenant a ete installe, mais le binaire a disparu. Pour retrouver vite fait quoi faire : dpkg -S find | grep bin apt-get --reinstall install findutils *** Les points critiques : pendant la catastrophe, gaim etait deja lance, et le binaire de chmod ne reside pas dans /usr/bin. Ce fut ma chance; sans ca je crois bien que je m en sortais pas. Bon ... la les Windoziens vont me dire que sous windows, tu peut pas effacer un fichier ouvert ne serait ce qu en lecture. Mais je repond que si tu perd tout ou partie de C:\Program Files : - il n existe aucune base qui liste les softs qui y etaient installes - les aplis qui ne tournainte pas seront effacees - le fait de ne pas pouvoir suprimer un fichier .exe en cours d utilisation fait que le concepte d update de service en live ne peut pas exister : si on ne peut pas remplacer un fichier ouvert, pour mettre a jour un demon, il faut tuer le demon, mettre a jour, puis relancer. Je qui fait dans le meilleur des cas 10s de coupure de service. Et meme 10s dans certains cas c est inacceptable. Sous Linux, tu met a jour, tu lance un kill -1 pour faire reloader la conf, et tu relance a chaud le service sans interruption de service. Si je prends le cas Gentoo ou Slakware ... ce n est pas dpkg qu il me fallait, mais toute la suite de compilation gcc*, *make*, *conf* ... Conclusion : je suis heureux d utiliser Linux, et meme dans les cas extremes, le system sait rester stable, et donne TOUJOURS des portes de secours. Deja separer /bin /sbin /usr/bin et /usr/sbin ... ca permet dans les pires cas de limiter la casse. *** Si le system avait reboote pour raison inconnue, je pense que j aurais essaye de boot le CD, copier le binaire de dpkg du CD vers le disque, rebooter le dur ( ce qui est possible tant que /bin et /sbin sont intactes ) ... et me depatouiller de la meme maniere. Bref ... ne formattez pas votre Linux a la vas vite; reflechissez a deux fois. Je suis reste calme, tout est rentre assez vite dans l ordre. Doublehp contacts sur : http://www.demaine.info/contact.png