# [emerge] Fichiers de config écrasés lors d'un emerge (clos)

## PabOu

Bonjour à tous,

Sur une machine, j'ai l'habitude de préparer des paquets binaires (--buildpkg) et de les distribuer à d'autres machines.

Lors de l'emerge sur les machines, j'utilise la commande suivante :

```
emerge world -NuDavK
```

Et tout est sensé bien se passer. Hors ici, ce ne fut pas le cas et j'aimerais trouver la cause.

En effet, il m'a écrasé plusieurs fichiers dans /etc avant que je ne m'en rende compte car l'emerge de sandbox (même version, ce n'était pas une mise à jour) a commencé à avoir des ratés après avoir écrasé son propre fichier de config :

```
>>> Installing (35 of 201) sys-apps/sandbox-2.10-r1::gentoo

 * checking 15 files for package collisions

>>> Merging sys-apps/sandbox-2.10-r1 to /

--- /var/

--- /var/log/

--- /var/log/sandbox/

>>> /var/log/sandbox/.keep_sys-apps_sandbox-0

--- /etc/

--- /etc/env.d/

>>> /etc/env.d/09sandbox

>>> /etc/sandbox.conf

--- /etc/sandbox.d/

>>> /etc/sandbox.d/00default

--- /usr/

--- /usr/bin/

>>> /usr/bin/sandbox

--- /usr/share/

--- /usr/share/doc/

--- /usr/share/doc/sandbox-2.10-r1/

>>> /usr/share/doc/sandbox-2.10-r1/AUTHORS.bz2

>>> /usr/share/doc/sandbox-2.10-r1/README.bz2

>>> /usr/share/doc/sandbox-2.10-r1/ChangeLog.bz2

>>> /usr/share/doc/sandbox-2.10-r1/NEWS.bz2

>>> /usr/share/doc/sandbox-2.10-r1/ChangeLog.0.bz2

--- /usr/share/pixmaps/

>>> /usr/share/pixmaps/sandbox.svg

--- /usr/share/sandbox/

>>> /usr/share/sandbox/sandbox.bashrc

--- /usr/share/applications/

>>> /usr/share/applications/sandbox.desktop

--- /usr/lib32/

>>> /usr/lib32/libsandbox.so

--- /usr/lib64/

>>> /usr/lib64/libsandbox.so

>>> Safely unmerging already-installed instance...

No package files given... Grabbing a set.

--- replaced obj /var/log/sandbox/.keep_sys-apps_sandbox-0

--- replaced dir /var/log/sandbox

--- replaced dir /var/log

--- replaced dir /var

--- replaced obj /usr/share/sandbox/sandbox.bashrc

--- replaced dir /usr/share/sandbox

--- replaced obj /usr/share/pixmaps/sandbox.svg

--- replaced dir /usr/share/pixmaps

--- replaced obj /usr/share/doc/sandbox-2.10-r1/README.bz2

--- replaced obj /usr/share/doc/sandbox-2.10-r1/NEWS.bz2

--- replaced obj /usr/share/doc/sandbox-2.10-r1/ChangeLog.bz2

--- replaced obj /usr/share/doc/sandbox-2.10-r1/ChangeLog.0.bz2

--- replaced obj /usr/share/doc/sandbox-2.10-r1/AUTHORS.bz2

--- replaced dir /usr/share/doc/sandbox-2.10-r1

--- replaced dir /usr/share/doc

--- replaced obj /usr/share/applications/sandbox.desktop

--- replaced dir /usr/share/applications

--- replaced dir /usr/share

--- replaced obj /usr/lib64/libsandbox.so

--- replaced dir /usr/lib64

--- replaced obj /usr/lib32/libsandbox.so

--- replaced dir /usr/lib32

--- replaced obj /usr/bin/sandbox

--- replaced dir /usr/bin

--- replaced dir /usr

--- replaced obj /etc/sandbox.d/00default

--- replaced dir /etc/sandbox.d

--- replaced obj /etc/sandbox.conf

--- replaced obj /etc/env.d/09sandbox

--- replaced dir /etc/env.d

--- replaced dir /etc

>>> Regenerating /etc/ld.so.cache...

>>> Original instance of package unmerged safely.

>>> sys-apps/sandbox-2.10-r1 merged.

>>> Regenerating /etc/ld.so.cache...

 * ACCESS DENIED:  open_wr:      /dev/tty

 * ACCESS DENIED:  open_wr:      /dev/tty

 * ACCESS DENIED:  open_wr:      /dev/null

/usr/portage/profiles/base/profile.bashrc: line 5: /dev/null: Permission denied

 * ACCESS DENIED:  open_wr:      /dev/tty

 * ACCESS DENIED:  open_wr:      /dev/tty

 * ACCESS DENIED:  open_wr:      /dev/null

sh: /dev/null: Permission denied

 * --------------------------- ACCESS VIOLATION SUMMARY ---------------------------

 * LOG FILE: "/var/log/sandbox/sandbox-16975.log"

 * 

VERSION 1.0

FORMAT: F - Function called

FORMAT: S - Access Status

FORMAT: P - Path as passed to function

FORMAT: A - Absolute Path (not canonical)

FORMAT: R - Canonical Path

FORMAT: C - Command Line

F: open_wr

S: deny

P: /dev/tty

A: /dev/tty

R: /dev/tty

C: /bin/bash -rcfile /usr/share/sandbox/sandbox.bashrc -c /var/tmp/portage/._portage_reinstall_.E40QVb/bin/misc-functions.sh success_hooks 

F: open_wr

S: deny

P: /dev/tty

A: /dev/tty

R: /dev/tty

C: /bin/bash /var/tmp/portage/._portage_reinstall_.E40QVb/bin/misc-functions.sh success_hooks 

F: open_wr

S: deny

P: /dev/null

A: /dev/null

R: /dev/null

C: /bin/bash /var/tmp/portage/._portage_reinstall_.E40QVb/bin/misc-functions.sh success_hooks 

F: open_wr

S: deny

P: /dev/tty

A: /dev/tty

R: /dev/tty

C: /bin/bash /var/tmp/portage/._portage_reinstall_.E40QVb/bin/ebuild-ipc exit 1 

F: open_wr

S: deny

P: /dev/tty

A: /dev/tty

R: /dev/tty

C: sh -c uname -p 2> /dev/null 

F: open_wr

S: deny

P: /dev/null

A: /dev/null

R: /dev/null

C: sh -c uname -p 2> /dev/null 

 * --------------------------------------------------------------------------------
```

Je me suis retrouvé avec un /etc/sandbox.conf contenant la seule ligne

```
# empty file because --include-config=n when `quickpkg` was used
```

J'ai eu quelques ennuis car d'autres fichiers (dont /etc/inittab) ont aussi été effacés mais rien de trop grave (ça ne bootait plus mais bon ^^). Maintenant, j'aimerais éviter que cela ne se reproduise sur d'autres machines mais je ne comprends pas pourquoi il m'a fait ça. Je viens de réessayer l'emerge de ce même paquet binaire, et il m'a installé correctement le nouveau fichier de config dans  /etc/._cfg0000_sandbox.conf. Pourquoi pas la première fois ?

Pour info, j'ai bien un CONFIG_PROTECT qui me semble correct :

```
CONFIG_PROTECT="/etc /etc/stunnel/stunnel.conf /usr/share/gnupg/qualified.txt /var/vpopmail/domains /var/vpopmail/etc"

CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5.4/ext-active/ /etc/php/apache2-php5.5/ext-active/ /etc/php/apache2-php5.6/ext-active/ /etc/php/apache2-php7.0/ext-active/ /etc/php/cgi-php5.4/ext-active/ /etc/php/cgi-php5.5/ext-active/ /etc/php/cgi-php5.6/ext-active/ /etc/php/cgi-php7.0/ext-active/ /etc/php/cli-php5.4/ext-active/ /etc/php/cli-php5.5/ext-active/ /etc/php/cli-php5.6/ext-active/ /etc/php/cli-php7.0/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
```

Merci de vos idées, pistes, solutions :-)

----------

## netfab

Salut,

Je fais la même chose : buildpkg sur un système, déploiement sur d'autres. Jamais eu ce problème.

Cela t'est-t-il déjà  arrivé d'utiliser directement quickpkg pour créer certains de ces paquets ?

Bug 464662 - quickpkg --include-config=y breaks config file protection

----------

## PabOu

Bonjour,

Oui, cela m'arrive de faire un quickpkg pour être certain d'avoir tous les paquets en binaire, malgré le buildpkg dans mon FEATURES. Cela dit, je n'utilise pas --include-config=y. Je pense que pour ces binaires ici, ils ont été créés avec quickpkg. Le bug que tu remontes ne semble pas être ce qui s'applique chez moi.

J'ai refait quelques tests sur cette même machine (avec une copie préalable de mon /etc) : la commande emerge @world -NuDavK écrase tous les fichiers de config dans /etc (je n'ai pas utilisé --emptytree). Un simple emerge -avK en précisant l'atom (par exemple emerge -avK sys-apps/sandbox) n'écrase pas mes fichiers de config.

Ça ressemble à un bug, non ?

----------

## netfab

Oui, çà y ressemble. Quelle version de portage utilises-tu ?

De mon côté je t'utilise pas -K, mais l'option -k, pour être sûr d'être parfaitement à jour dans mes paquets.

Si tu essayes, cela fait t'il une différence ?

----------

## PabOu

Je suis à jour sur portage, je fais toujours un emerge portage avant tout le reste. C'était la 2.2.28 la semaine passée lors du bug.

Je n'utilise pas -k car ce sont des serveurs à moitié ou complètement en production avec une charge importante, ils sont sensibles sur le cpu, en accès disque et en ram. Je ne prends pas le risque de devoir recompiler quelque chose.

J'ai travaillé d'une autre façon en attendant et je ne peux plus ré-essayer ce problème pour le moment. Je vais clôturer le sujet.

----------

