# [boulette] Recuperer /etc apres suppression (resolu)

## ercete

Bonjour,

Alors ca, c'est pas banal !

Celle la, je l'avais jamais faite, il y a un debut a tout

```
rm /etc/*
```

Manque de sommeil ou bien gene de boulet pur sang, je vous laisse juger...

Apres un bon coup de flip, j'ai tente de recuperer les infos perdues par differents moyens (la partition est en reiserfs), j'ai passe la nuit dessus :/

helas n'ayant pu passer en readonly ma partition / a temps, les procedures de recuperation de reiserfs n'ont pas abouti...

Je me suis donc fait une raison : j'ai bien perdu /etc !!

Attention : je n'ai perdu que les fichiers de /etc/ et pas les répertoires !!

Reste que mon /etc est maintenant vide, et je cherche a le repeupler.

Pour le moment j'ai conserve

* une liste des fichiers perdus (sans l'inode, dommage)

* tous les REPERTOIRES de /etc (seuls les fichiers reguliers et les liens ont ete perdus.

Par contre j'ai ete contraint de redemarrer mon ordinateur et je suis actuellement en livecd/links (ca manque d'accents d'ailleurs).

Mon idee serait d'utiliser une archive bootstrap ou un stage1 pour repeupler un minimum /etc puis ensuite lancer un etc-update et me retaper toutes mes configs a la main...

Seulement je ne sais pas pour le moment ou trouver un /etc basique, et je me suis dis que quelqu'un aurait peut-etre une meilleure idee.

D'avance merci  :Wink: 

----------

## Enlight

Y'a probablement mieux, mais la première idée qui me vient serait de faire un quickpkg de tous les paquets suivi d'un emerge -ek world.

----------

## _droop_

Bonjour,

J'ai trouvé ca : https://forums.gentoo.org/viewtopic-t-230828.html. J' ai jamais essayé mais ca peut marcher.

Sinon (attention bourrin, y a peut être plus fin, mais ca évite de tout réinstaller) : tu prend l'archive stage 1, tu extrais juste l'etc, tu configures ce qu'il faut (make.conf ...). Tu lances un 

```
emerge -aev world
```

. Ca te récuperes tout l'etc qu'il va falloir remodifier... (en partie seulement).

Bon courage...

----------

## ercete

oui j'ai teste la technique du reiserfsck mais cela n'a rien donne...

tout juste un ou deux fichiers dont le fstab (c'est pas mal deja)

c'est pour ca que j'ai abandonne l'idee de recuperer les donnees

sinon, tu confirmes mon idee pour le stage1, je crois que je vais attaquer par la...

au passage, n'y a-t-il pas un moyen de "forcer" l'etc-update ? sans avoir a faire un 'emerge --emptytree'

je cherche a gagner du temps...  :Smile: 

EDIT: je percute que maintenant mais  quickpkg va me permettre de ne pas tout recompiler == gain enorme de temps ! merci @ vous  :Smile: 

----------

## _droop_

Re,

J'ai pensé à un petit truc :

dans /var/db/pkg/*/*/CONTENTS tu a le contenu de chaque paquets installes sur ton système, un petit script à base de find va permettre de trouver juste les paquets qui ont mis des fichiers dans /etc. Ca évitera de tout recompiler...

Voilà.

PS : si tu as besoin d'aide pour celà, je peux t'aider...

----------

## ercete

haha ! merci huggy pour ton tuyau  :Smile: 

je penses pouvoir m'en sortir @ coup de find/grep

merci !

----------

## _droop_

Re,

comme je l'ai fait pour ma culture perso... :

```
cd /var/db/pkg ; grep "obj /etc" */*/CONTENTS | awk -F: '{print $1}' | uniq | awk -F/ '{print $1"/"$2}'
```

Ca fait beaucoup moins que emerge -pe.

Voilà.

----------

## ercete

merci du coup de pouce mais j'en suis pas encore la... :/

apres avoir copie un /etc d'un stage3, monte les partitions et chroote dans mon environnement,

tout appel a emerge et meme env-update me cause une erreur :

```

/usr/bin/python: error while loading shared librairie: libstdc++.so.5: cannot open shared object file: No such file or directory
```

alors que

```
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.6/libstdc++.so.5
```

existe...

quel fichier manquant de /etc peut bien influer la dessus ?

EDIT: j'ai modifie tout les fichiers de la doc d'install correctement mais rien n'y fait :'(

----------

## ercete

EDIT: Le probleme de python venait de mon /etc/make.profile inexistant.

Vite resolu finalement

 *_droop_ wrote:*   

> Re,
> 
> comme je l'ai fait pour ma culture perso... :
> 
> ```
> ...

 

Ca fonctionne tres bien, @ la difference seul les fichiers de etc sont concernes pour moi et pas les sous repertoires...

j'ai essaye 

```
grep -P "obj /etc/[^/]*" */*/CONTENTS
```

qui a mon avis doit fonctionner, seulement 

```
grep: L'option -P n'est pas supportee
```

chuis maudit  :Razz: 

Il y a sans doute un moyen de faire la meme chose avec les motif grep par defaut mais je trouve pas  :Sad: 

----------

## fribadeau

Moi, je dirais que c'est ta variable LD_LIBRARY_PATH qui n'est plus initialisée correctement.

Fait la pointer vers le répertoire qui contient les librairies et ré-essaye pour voire.

N'ayant pas accès à ma Gentoo pour le moment, je ne peux t'en dire plus.

Désolé   :Confused: 

----------

## ercete

oui ca marche !

c'est ce que j'ai utilise  :Razz: 

y'avait aussi /etc/make.profile qui n'existait plus et que j'avais omis de recreer, cela devait sans doute etre la source du probleme "python"

je suis presque au bout merci a tous ^^

reste cette expression reguliere que je voudrais bien finaliser et ce sera bizence  :Smile: 

----------

## Enlight

Je me disais que c'est le genre de tip qu'on devrait garder au chaud pour ceux qui ont des coups durs à affronter.

----------

## ercete

Pourquoi pas...

mais dans mon cas c'est assez specifique a un 'rm /etc/*'

peut-etre serait-il possible de generaliser un peu plus.

En meme temps, cela donne une maniere de purger completement /etc  je ne sais pas si c'est vraiment utile... si certains voient une ligne de conduite generale a mon probleme, je veux bien transformer cela en un HOW-TO.

----------

## Enlight

En fait je pensais qu'ajouter une section récupération de données qui recencerait différents tips, au topic de kernel_senseï, serait pas mal! Faudrait voir avec lui.

----------

## ercete

Bon, j'ai reussi à rebooter la machine (youhou)

Je continue avec ma petite liste de désagrèments histoire de garder un trace de mes actions :

Recréer les fichier passwd/shadow avec 

```
pwconv
```

Le fichier locales.build pour glibc ne contenait plus 

```
fr_FR.UTF-8/UTF-8
```

----------

## ercete

J'ajoute à cela qu'il faut correctement régénérer la variable USE, sous peine de voir apparaitre plusieurs conflits pendant l'emerge.

Je n'ai pas trouvé de moyen de construire USE à partir des packages installés.

Si quelqu'un a une solution qui fonctionne, merci d'en faire part.

(pour moi je l'ai fait à la main  :Razz: )

Une des choses qui m'a sauvé est e sauvegarde d'un vieux fichier passwd pour faire fonctionner pwconv...

Hélas de nombreux utilisateurs sont manquants  :Confused: 

Je ne vois pas vraiment comment faire à part 

```
emerge --emptytree world
```

mais quoi qu'il en soit : le plus important est d'arriver à faire remarcher

----------

