Pourquoi / var / run a-t-il été migré vers / run?

66

De la aperçu technique d’Ubuntu 11.10 Oneiric :

  

Ubuntu 11.10 a migré de /var/run , /var/lock et /dev/shm et utilise désormais /run , /run/lock et /run/shm à la place (respectivement).

  • Je code ces chemins dans mes applications, pourquoi ce changement est-il fait pour Oneiric?
  • Que puis-je faire pour rendre mes applications compatibles avec les versions antérieures et futures? Existe-t-il un meilleur moyen que de vérifier d'abord l'existence de /run , puis de /var/run ?
posée Lekensteyn 16.08.2011 - 11:08
la source

5 réponses

57

L'intention est de réduire le nombre de systèmes de fichiers tmpfs . Le 11.04, il existe des systèmes de fichiers tmpfs distincts à /var/lock , /var/run et /dev/shm . Si ces répertoires se trouvaient tous dans un seul répertoire parent, seul un seul tmpfs serait nécessaire. Il fournit également un emplacement évident pour d'autres données d'état d'exécution qui ne devraient pas persister lors des redémarrages.

À moins que votre application ne dépende des chemins canoniques des fichiers, votre application doit fonctionner sans modification car les anciens emplacements seront liés par un lien symbolique aux nouveaux. Les règles AppArmor sont un cas qui dépend des vrais noms de chemin, c'est pourquoi il a été spécifiquement mentionné.

Les liens suivants devraient aider à expliquer la raison d'être:

réponse donnée James Henstridge 16.08.2011 - 11:56
la source
36
  1. /run est un nouvel emplacement tmpfs de distribution croisée pour le stockage des fichiers d'état transitoires, c'est-à-dire des fichiers contenant des informations d'exécution qui peuvent ou non devoir être écrites au début du processus de démarrage et qui ne nécessitent pas préserver à travers les redémarrages.

    Rendre le répertoire /run disponible nous rapproche du point où il est possible d'utiliser le système normalement avec le système de fichiers racine monté en lecture seule, sans nécessiter de solution de contournement telle que aufs/unionfs overlays.

    /run remplace plusieurs emplacements existants décrits dans le standard de hiérarchie du système de fichiers:

    • /var/run/run
    • /var/lock/run/lock
    • /dev/shm/run/shm [actuellement, seule Debian prévoit de le faire]
    • /tmp/run/tmp [facultatif; actuellement, seule Debian envisage de proposer cela]
    • /run remplace également certains autres emplacements utilisés pour les fichiers transitoires:

    • /lib/init/rw/run

    • /dev/.*/run/*
    • /dev/shm/*/run/*
    • fichiers inscriptibles sous /etc/run/*

    (vous pouvez donc vous attendre à ce que ceux-ci bougent aussi).

    Source: Objectifs de la version debian

  2. Je vous conseille de créer une partie de votre logiciel dans laquelle vous définissez ces répertoires dans des variables, modifiez votre code pour utiliser ces variables, puis modifiez les variables en fonction du système sur lequel il est utilisé (mais je parie que vous saviez ça déjà).

réponse donnée Rinzwind 16.08.2011 - 11:50
la source
5

D'après ce que j'ai lu, c'était l'explication initiale expliquant pourquoi / run avait été introduit. lien

    
réponse donnée gotunandan 16.08.2011 - 11:49
la source
3

Remarque: depuis l'introduction de / run, les petites configurations peuvent rencontrer des problèmes. Mon serveur Ubuntu est de 256 Mo de RAM et / run est défini par défaut sur 49 Mo.
Au démarrage, il remplit le système de fichiers jusqu'à saturation.
Faire des modifications dans fstab ne fonctionne pas pour augmenter la taille des tempfs / run. Les autres procédures que j'ai trouvées sur gg. J'ai trouvé la solution pour ajouter un script d'initialisation: /etc/rc.local la ligne      mount -t tmpfs tmpfs /run -o remount,size=85M étend au démarrage. (le 85M est pour ma conf.)

    
réponse donnée korrident 02.09.2012 - 14:48
la source
2

Vous ne devez pas coder en dur aucun de ces chemins /run !

  • Utilisez /var/run , car un lien symbolique sera mis en place sur /run le cas échéant
  • /var/lock est le même que ci-dessus
  • Ne codez pas en dur /dev/shm jamais, utilisez toujours shm_open etc (l'API posix)
réponse donnée ramslök 10.07.2012 - 13:45
la source

Lire d'autres questions sur les étiquettes