Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 29-09-2014 15:19:05

Elzen
Membre
Distrib. : Debian Sid GNU/Linux
Noyau : 3.14-1-amd64
(G)UI : Touhy
Inscription : 01-07-2014

Home temporaire

Oy o/

Nouvelle petite question existentielle saugrenue, après celle-ci (toujours pas entièrement résolue).

J'en ai un peu marre d'avoir un $HOME rempli de fichiers de configurations divers et variés de logiciels que je n'ai jamais configuré moi-même et, pour la plupart, que je ne lance pas souvent, voire que je n'ai lancé qu'une fois avant de le désactiver. J'aimerais donc procéder à un grand nettoyage, ce qui est relativement simple, et surtout éviter que ça ne se re-remplisse par la suite, ce qui est plus dur.

Ma première idée était de créer un répertoire en tmpfs que j'utiliserais comme leurre, avec «HOME=fakehome programme», pour que le programme en question aille créer ses fichiers inutiles ailleurs que sur mon disque. Ça marche bien, moyennant la nécessité de placer quelques liens symboliques de retour pour que le programme trouve certains éléments de conf' qui sont gardés «en dur» (le thème GTK, par exemple).

Le soucis est que le nombre d'applications ayant tendance à polluer $HOME est tellement élevé que ça devient vite assez contraignant de devoir régler la variable d'environnement à tous bouts de champs. D'autant que ça ne marche pas dans certains cas (quand un programme en lance un autre, il arrive que la variable d'environnement ne soit pas passée correctement et que le programme secondaire se retrouve dans le vrai répertoire personnel).

Du coup, je commence à me dire qu'il serait plus intéressant de faire l'inverse, à savoir de mettre le véritable $HOME en tmpfs, et d'utiliser un autre répertoire pour stocker en dur la configuration que je tiens à garder.

Qu'en pensez-vous et, si vous essayiez de faire ça, comment procéderiez-vous?

Hors ligne

#2 29-09-2014 16:45:49

nIQnutn
Modérateur
Lieu : Lyon
Distrib. : Jessie
Noyau : Linux 3.16-amd64
(G)UI : XFCE
Inscription : 16-03-2012
Site Web

Re : Home temporaire

je comprends pas trop l'interet, j'ai des fichiers de configs qui datent de longtemps et ça ne pose pas de pb. Pour les appli que tu ne lances qu'une seule fois, il faudrait utiliser un programme qui te permet de voire les fichiers qui ont été crée puis de les supprimés aux besoins. Pour les fichiers de configs indésirables, j'utiliserai un symlink vers le tmpfs.

Je pense que c'est une perte de temps et n'apporte guère de comfort à l'usage mais tu fais bien comme tu as envie.

Hors ligne

#3 29-09-2014 17:31:51

vv222
Membre
Lieu : Bretagne
Distrib. : GNU/Linux Debian « Sid »
Noyau : >= Linux 4.5.0 (amd64)
(G)UI : Openbox + ROX
Inscription : 18-11-2013
Site Web

Re : Home temporaire

Le véritable $HOME en tmpfs, et deux appels à rsync : un à l’extinction de la machine, sauvegardant "en dur" les fichiers de conf que tu veux garder, un autre au démarrage copiant ces fichiers dans le tmpfs.
Je pense que c’est du côté du système d’init qu’il faut regarder pour l’appel de ces scripts.

Jouer sous Debian ? Facile !

Hors ligne

#4 29-09-2014 19:37:15

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : Home temporaire

Beuh…

Perso, je gère toute ma config dans un dépôt git ~/.local/
~/.config -> ~/.local/etc/
~/.cache -> ~/.local/tmp/
~/.bashrc -> ~/.local/etc/bash/bashrc

De temps en temps, je fais un « git status » et je vire tout ce que je ne veux pas, et met à jour ce que je veux garder.

Tu peux peut-être coupler cette idée à un git clone dans un tmpfs, puis git commit à l'extinction…

captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#5 29-09-2014 22:45:09

base10
Membre
Distrib. : Debian Wheezy + Backports
Noyau : Linux 3.16-0.bpo.2-amd64
(G)UI : mate
Inscription : 29-09-2014

Re : Home temporaire

Si c'est juste pour un test pourquoi ne pas faire un snapshot lvm (nécessite que le home soit dans une volume logique).
Faire le snapshot du home, monter le snapshot sur le home d'origine, utiliser l'appli, puis démonter et suprimé le snapshot.
Ou alors peut être voir du coté de unionfs, mais la je n'ai jamais utilisé.

À force de trop creuser le problème on se retrouve avec un gros trou.

Hors ligne

#6 30-09-2014 12:50:08

Elzen
Membre
Distrib. : Debian Sid GNU/Linux
Noyau : 3.14-1-amd64
(G)UI : Touhy
Inscription : 01-07-2014

Re : Home temporaire

Un truc à base d'UnionFS pourrait effectivement être super intéressant, mais ça n'a pas l'air évident à mettre en place, il faudrait que je creuse. Le truc idéal serait de mettre tout en tmpfs sauf une poignée de répertoires spécifiés qui seraient, eux, sauvegardés en dur.

Sinon, j'aime effectivement bien le coup du dépôt git, même si le fait de conserver l'historique des modifs n'est pas particulièrement intéressant dans ce cas; et ça risque de prendre de la place. Y a moyen de dire à git de ne pas garder d'historique et de ne conserver que la dernière version du dépôt, en l'état?
En tout cas, passer par un système avec indexage sera sans doute plus pratique à gérer qu'un rsync. Et ça permettrait également de gérer les sauvegardes vers mon serveur…

Pour le coup du déclenchement, un clonage du dépôt au démarrage du système devrait effectivement faire l'affaire. Ça doit en effet se regarder du côté du système d'init.
Pour la fermeture, je ne pense pas qu'il y ait besoin d'un déclenchement automatique à l'extinction de la machine: la fermeture de session suffira (j'éteinds rarement la machine de manière brute, et à part l'historique d'Iceweasel et d'autres dépôts gits que je pourrais sauvegarder à part, je n'ai pas grand chose dans mon répertoire personnel qui bouge d'une fois sur l'autre.

Présentement, mon $HOME est placé à la mode BSD, dans /var/home, /home étant un lien symbolique. Je pourrais laisser les fichiers en dur à cette endroit, mais remettre un vrai /home en place en tmpfs…

Edit: dans l'idéal, il faudrait que la version en dur du répertoire personnel soit, par exemple, dans /var/home, et que la version temporaire soit, par exemple, dans /home, configurée de telle sorte que, si on cherche à accéder à un fichier qui n'existe pas dans le tmpfs, il aille chercher sur le disque. Il suffirait alors de faire un mv depuis l'un vers l'autre pour que la conf' soit enregistrée sur le disque et conservée.

Dernière modification par Elzen (30-09-2014 12:54:49)

Hors ligne

#7 02-10-2014 05:22:23

D@mien
Membre
Distrib. : Gnoulinusque
Noyau : Linux 4\.[7-9]+(\.\d+)?-[1-9]+-custom
(G)UI : i3
Inscription : 22-03-2014

Re : Home temporaire

Salut,
Peut être avec btrfs ?
Je connais pas pas bien toutes les spécificités de se fs,  mais on doit pouvoir faire des montages sympa avec les snapshots et subvolumes.

% cat /usr/include/sys/errno.h
#define EPERM           1               /* Operation not permitted */
[...]
#define EMACS           666             /* Too many macros */

Hors ligne

#8 31-12-2014 16:09:06

Elzen
Membre
Distrib. : Debian Sid GNU/Linux
Noyau : 3.14-1-amd64
(G)UI : Touhy
Inscription : 01-07-2014

Re : Home temporaire

Histoire de vous tenir au courant: le truc est désormais en place chez moi, fait «à la main», avec les moyens du bord (donc pas de systèmes de fichiers exotiques).

Mon /home est désormais un tmpfs, les données que je veux conserver étaient enregistrées en dur dans /var/home, qui lui est sur le disque (avec une partition dédiée). Au démarrage de la machine, un script maison crée les répertoires /home/login requis, avec chacun son .local/share et son .config; puis crée des liens symboliques vers tous les répertoires de config' en dur. Ainsi, toutes les applis créant des tas de fichiers de conf' totalement inutiles se contentent de polluer la RAM, et je n'utilise plus mon disque que pour ce que j'ai vraiment envie de garder.

Ça fait quelques redémarrages que le truc est en place, et tout fonctionne correctement.


Le script d'init utilisé (sous sysvinit):

#! /bin/sh
### BEGIN INIT INFO
# Provides:          fakehome
# Required-Start:    mountall
# Required-Stop:
# Default-Start:     S
# Default-Stop:
# Short-Description: fake home in tmpfs.
# Description:
### END INIT INFO

real=/var/home/
fake=/home/

case "$1" in
  start|"")
  for user in root seth
   do
      mkdir -p $fake$user/.local/share $fake$user/.config
      for path in / /.config/ /.local/ /.local/share/
       do
          for file in $(ls -A $real$user$path)
           do
              if test ! -e $fake$user$path$file
                 then ln -s $real$user$path$file $fake$user$path$file
              fi
           done
      done
      chown -R $user:$user $fake$user
  done
  ;;
  restart|reload|force-reload)
  echo "Error: argument '$1' not supported" >&2
  exit 3
  ;;
  stop|status)
  # No-op
  ;;
  *)
  echo "Usage: fakehome.sh [start|stop]" >&2
  exit 3
  ;;
esac

:

Dernière modification par Elzen (31-12-2014 16:11:14)

Hors ligne

Pied de page des forums