2010-03-16 5 views
2

J'écris un script d'installation pour mon programme, qui est supposé fonctionner sous Linux/Unix. Quel est le répertoire par défaut pour les fichiers suivants:Répertoires Linux

  1. Fichiers exécutables (programmes). Le programme doit être exécuté en tapant son nom à partir de la ligne de commande.
  2. Bibliothèques partagées.
  3. Bibliothèques partagées tierces (le programme n'est pas open source, j'ai donc besoin de redistribuer les bibliothèques tierces).
  4. Fichiers de configuration de programme en lecture seule pour tous les utilisateurs.
  5. Données de configuration disponibles pour l'accès en lecture/écriture pour tous les utilisateurs.
+0

Utile: http://standards.freedesktop.org/basedir-spec/latest/, http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard –

+2

@Migrators: Cela ne semble pas approprié pour SuperUser, car il est sur comment * écrire un programme d'installation *. –

Répondre

3

La liste varie en fonction du système de fichiers Linux..

1) /bin, /usr/bin, /usr/local/bin

2/3) /lib, /usr/lib, /usr/local/lib

3. /usr/share/lib

4) /etc est un spot de lecture seule pour les données de configuration.

5) /usr/local/etc ou habituellement dans le répertoire /home sous le nom de répertoire de points, si le profil permet le répertoire bin à se trouver sous le /home/user_id/bin où « user_id » est l'identifiant de connexion correspondant ..pour un exemple pour l'utilisateur « jdoe », sa configuration pourrait être écrit à /home/jdoe/.configs ou ~/.configs

Ne vous fiez pas à ce sujet, pour la plupart le système de fichiers LSB dicte qu'il doit y avoir au minimum: /bin, /etc, /usr, /lib, /home

par exemple, le /usr pourrait être sur une autre partition, même la même chose pour /home

Edit: Merci àdtrosset pour pointer mon lapsus ....

+0

NON!/usr/share concerne les fichiers pouvant être partagés par plusieurs architectures (i686, amd64, ppc, armel ...) tels que des images ou de la documentation. Ce n'est pas pour les bibliothèques partagées qui devraient aller comme 2). –

+0

/etc est en lecture seule sur mon ordinateur Ubuntu, quel répertoire est disponible pour l'accès en lecture/écriture pour tous les utilisateurs, comme Documents et paramètres \ Tous les utilisateurs dans Win XP? –

+0

@Alex: L'autre point peut être/usr/local/etc – t0mm13b

1

Executable (binaire):

  • /bin/
  • /usr/bin/
  • /home/~ user/bin/

Shared:

  • /usr/share/

Autres:

  • /etc/

Je ne suis pas sûr qu'il serait sage d'écrire un script d'installation si vous ne connaissez pas la structure de fichier d'un * nix OS En outre, chaque distribution de * nix est légèrement différente quand il s'agit de l'endroit où les données sont stockées.

Je vous suggère de lire ceci: http://www.comptechdoc.org/os/linux/commands/linux_crfilest.html

^^

+2

NON!/usr/share concerne les fichiers pouvant être partagés par plusieurs architectures (i686, amd64, ppc, armel ...) tels que des images ou de la documentation. Ce n'est pas pour les bibliothèques partagées qui devraient aller comme 2). –

+1

+1 pour le lien mais vous devez mentionner que les programmes utilisateur ne doivent pas entrer dans/bin –

+0

Toutes mes excuses, première réponse du matin - s'il vous plaît pardonnez-moi: '(- Vive le +1 bien! –

1

Le moyen le plus simple est de créer un .rpm de votre application, puis d'utiliser par exemple alien pour en créer un .deb. Enfin j'ai fait un deb, c'était vraiment très simple. L'empaquetage vous permet également d'avoir une sorte de mise à jour automatique si vous voulez l'activer et vous n'aurez pas besoin de penser beaucoup aux procédures de désinstallation.

3
  1. $PREFIX/bin
  2. $PREFIX/lib
  3. $PREFIX/lib
  4. /etc
  5. $HOME/.config

$HOME est le répertoire de l'utilisateur exécutant l'application, déterminée lors de l'exécution. $PREFIX dépend de la méthode de distribution:

  • Si distribué en tant que source, $PREFIX devrait être configurable, mais par défaut à /usr/local;
  • S'il est distribué sous la forme d'une archive tar binaire, $PREFIX devrait normalement être /usr/local (mais /opt est également commun);
  • S'il est distribué en tant que package de distribution (par exemple RPM ou DPKG), $PREFIX doit être /usr.

La documentation et les autres fichiers indépendants de l'architecture doivent être entrés dans $PREFIX/share/doc; les fichiers générés par le programme et partagés entre les instances doivent aller dans /var/run (des choses comme lockfiles, pidfiles et sockets) ou /var/lib (des choses comme des bases de données binaires partagées).

+0

Droite. Et à propos des commentaires OPs, si vous n'avez pas de privilèges root vous installez dans $ HOME et mettez à jour votre variable path pour refléter cela. – dmckee

Questions connexes