Réponses:
Les "systèmes basés sur Unix" sont une catégorie beaucoup trop générale pour faire tout type de détermination d'application générale qui s'appliquera à tous les systèmes basés sur Unix. Le problème est que la structure du système de fichiers (et l'endroit "approprié" / "conventionnel" pour mettre les choses) est si incroyablement différente entre les différentes saveurs de "Unix" (si vous pouvez même l'appeler ainsi) que vous devez à peu près le gérer au cas par cas.
Quelques exemples:
La réponse est que la convention canonique, socialement acceptable et bien intégrée pour savoir où stocker quoi que ce soit sur n'importe quel système d'exploitation, que ce soit une distribution de Linux, BSD, Solaris, HP-UX, etc. dépend des circonstances exactes . Plus précisément:
apt-get
ou l' yum
installer directement sans télécharger un programme d'installation sur un site Web?Il n'y a pas de réponse directe à cela sans tenir compte de tous les facteurs. Cependant, pour Ubuntu 12.04 en particulier , si vous créez votre package dans un .deb
fichier à distribuer dans un PPA ou pour le soumettre aux propres référentiels de packages d'Ubuntu ( main
ou universe
), je recommanderais que le cache soit stocké dans /var/cache
. Mais ce n'est que pour Ubuntu et vous ne devez certainement pas appliquer l'hypothèse que chaque distribution ou système d'exploitation basé sur Unix considérera cela comme acceptable.
De plus, s'il n'y a aucun avantage à sauvegarder les données de cache entre les démarrages du système, je pense que cela pourrait aussi appartenir à / tmp.
Notez que vous allez rencontrer ces problèmes de convention de cheminement pour chaque type de fichier utilisé par votre programme: données partagées, fichiers exécutables, bibliothèques, fichiers d'aide, images, son, pages Web, et ainsi de suite. Je dois donc me demander, si vous posez des questions sur les fichiers cache, comment vous envisagez de gérer les autres types de fichiers. Faites-vous simplement des suppositions naïves et espérez-vous que personne ne soit en désaccord avec vous? Si vous n'avez lu aucune documentation ou norme Ubuntu suggérant où les mettre, c'est une mauvaise idée de supposer simplement une chose ou une autre. Par exemple, toujours coller des bibliothèques dans / usr / lib pourrait être une erreur, car selon la situation, elles peuvent appartenir ailleurs.
De plus, en tant que développeur de logiciels, je pense que la chose la plus responsable à faire est de permettre à l'utilisateur final de décider où placer ses fichiers. Vous pouvez définir des valeurs par défaut, mais les utilisateurs (et les distributeurs) peuvent et vont personnaliser la version pour l'adapter à leur distribution.
La façon la plus simple de le faire est de construire votre programme en utilisant GNU Autoconf . Autoconf est un système de build où l'utilisateur peut passer des arguments de ligne de commande au script de build pour changer les chemins des différents "types de répertoires" loin des valeurs par défaut. Presque chaque distribution a un script de construction pour chaque package Autoconf qui définit les répertoires conventionnels appropriés à la distribution pour chaque type. Ils ont même spécifiquement un type de répertoire pour le cache: sharedstatedir .
gem
outil. Cependant, il ne serait probablement pas approprié de créer des fichiers lors de l'exécution dans le même répertoire où votre application est téléchargée par la gemme. D'un autre côté, si vous exécutez l'application en tant qu'utilisateur, vous avez besoin d'un répertoire en lecture-écriture pour les utilisateurs , ce qui signifie soit changer les autorisations (ce qui nécessite encore plus de travail d'intégration système au moment de l'installation, comme la création d'un groupe etc), ou en utilisant un répertoire global en lecture-écriture, par exemple / tmp.
/usr
, /lib
ou /bin
de votre application.
/tmp
dossier. Les réponses à vos questions seraient (téléchargement, non, non, non, non, non, non). Cela semble probablement normal pour la plupart des gens,/tmp
mais je suis nouveau dans les systèmes Unix et les conventions basées sur Ubuntu OS ne me sont pas familières. Cela ouvre une idée intéressante pour gem pour permettre la mise en cache de disque agnostique (agnostique utilisateur). Merci, +1 de ma part.