IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Organisation de fichiers


Sujet :

Linux

  1. #1
    Membre habitué Avatar de greg13
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 144
    Points : 156
    Points
    156
    Par défaut Organisation de fichiers
    Bonjour,
    J'aurais besoin d'une petite explication. Je programme un logiciel qui utilise SDL, et je dois charger des images qui sont sur le disque dur pour les afficher. Jusque la tout va bien. Mon logiciel doit normalement se compiler sur linux et sur windows.
    Mon problème :
    Les fichiers images que je dois charger; faut que je sache où ils se trouvent sur le disque evidemment. Si je fesais un programme que pour windows, je metterais les images dans un sous dossier par rapport à l'executable. Mais sous Linux, les fichiers sont séparé dans différents dossiers (bin, etc, share,...). Alors je me demande qu'elle est la méthode a appliquer pour que mon logiciel compile, s'installe et trouve les images là où elles sont.
    (en faite peut importe le type de fichier, faut les mettre où, et comment se souvenir où ils vont se retrouver apres le 'make install'.

    Merci d'avance.

  2. #2
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Sur mon projet j'ai résolu le problème avec une variable d'environnement (par exemple TETRIS_DATA_PATH).

    Dans l'implémentation de l'ouverture des ressources je fais ensuite une recherche :
    1) dans le répertoire courant, sinon
    2) dans le path.

    Ceci dit je suis preneur d'une solution plus jolie.

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Attention à ne pas confondre les 2 architectures... A priori Linux (et tous les sytèmes unixoides) est MULTI UTILISATEURS.

    Il y a donc (même si maintenant cela arrive avec Win) une grande différence.

    Il y a les répertoires pour TOUS les utilisateurs :

    en gros /usr, /var , /tmp.

    bin est à priori pour les binaires systèmes

    share est à priori pour les distribs "freeware"

    il y a aussi contrib

    Les répertoires /usr/include et /usr/lib sont pour les include et bibliothèques pour TOUT le système et TOUS les utilisateurs

    C'est l'équivalent du répertoire c:Windows et ses sous-répertoires.

    Maintenant, pour un utilisateur, il a normalement son propre répertoire.

    Libre à lui de l'organiser comme il veut.

    Tu peux par exemple te créer un sous-répertoire MonProjet, qui conteindra par exemple Source, Source/include, Source/c, Lib, Bin, Doc, Data

    Tes images, tu pourrais les mettre dans Data. Mais tu fais ce que tu veux.

    Par contre, essaye de ne rien mettre dans /usr (sauf si tu veux que ce soit dispo pour TOUS les utilisateurs)

    Admettons que tu t'appelles USER.

    Tu auras un répertoire par défaut /home/USER, dans lequel tu arrives par défaut quand tu te loggues.

    Là tu crées ce que tu veux...

    Et effectivement la définition d'une varaible d'environnement est une bonne formule pour définir ce chemin.

  4. #4
    Membre habitué Avatar de greg13
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 144
    Points : 156
    Points
    156
    Par défaut
    Merci pour ces infos déjà,

    En faite il m'a semblé que certrains logiciels (jeux entre autres) installaient quand même leurs fichiers executables dans bin ou /usr/bin pour pouvoir etre lancer par exemple directement rien quand tapant le nom du programme dans une console.
    Pour ca, y a une variable d'environnement pour les dossiers qui contiennent les binaires je pense?

    Un jeux comme Cube par exemple, quand on l'installe c'est directement pour tout les utilisateurs, je pense.

    Maintenant je suppose que c'est mieux d'installer le logiciel juste pour un utilisateur, mais si plusieurs utilisateurs utilise le logiciel ça fait autant de copie "inutile" sur le disque.

    Je pense tout de même que je vais opter pour une installation uniquement pour l'utilisateur dans son dossier personel, il s'agit d'un jeu d'échec (pas beaucoup d'espace disque).

    Comment on peut s'y prendre pour récupèrer le dossier courant de l'application. Je m'étais déjà renseigné mais il m'avait semblé que c'était assez difficile de le faire de manière fiable?

    Et dans le makefile.am, on s'y prend comment pour que le logiciel s'installe par défaut dans un sous dossier de l'utilisateur?

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par greg13 Voir le message
    ..En faite il m'a semblé que certrains logiciels (jeux entre autres) installaient quand même leurs fichiers executables dans bin ou /usr/bin pour pouvoir etre lancer par exemple directement rien quand tapant le nom du programme dans une console.
    Pour ca, y a une variable d'environnement pour les dossiers qui contiennent les binaires je pense?
    ..
    C'est ce que j'ai dit plus haut : pour un binaire utulisé par plusieurs utilisateurs, on peut le mettre dans /bin.

    La variable d'environnement est PATH (tu peux faire la commande printenv, tu verras toutes les variables d'environnement).

    Une autre manière de faire est soit de mettre le binaire n'importe où, définir la variable d'environnement correspondante, et dre aux utilisateurs qui voudraient l'utiliser d'initialiser cette variable, ou de modifier PATH en faisant

    PATH = $PATH ";nouveau chemin"

    Attention cependant : kes répertoires doivent être en mode lecture pour les autres utilsateurs, et ce binaire doit être en mode exécutable pour les autres utilisateurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chmod a+x nom_du_binaire

    Citation Envoyé par greg13 Voir le message
    Maintenant je suppose que c'est mieux d'installer le logiciel juste pour un utilisateur, mais si plusieurs utilisateurs utilise le logiciel ça fait autant de copie "inutile" sur le disque.
    Voir ci-dessus. Tu peux avoir une seule copie n'importe où, et que tous les utilisateurs l'utilisent.


    Citation Envoyé par greg13 Voir le message
    Comment on peut s'y prendre pour récupèrer le dossier courant de l'application. Je m'étais déjà renseigné mais il m'avait semblé que c'était assez difficile de le faire de manière fiable?
    soit la variable PWD (par référence dans un script $PWD) ou ./ , qui est le répertoire courant.

    Citation Envoyé par greg13 Voir le message
    Et dans le makefile.am, on s'y prend comment pour que le logiciel s'installe par défaut dans un sous dossier de l'utilisateur?
    Attention tu mélanges.. Un makefile est un utilitaire pour partir du source et fabriquer un binaire ou une bibliothèque. Il faudrait donc que tu fournisses le source, et que l'utilisateur compile le source pour en faire un binaire.

    Un script est quelque chose qui installera par exemple une distribution d'un package (ce qui me semble être ton cas).

  6. #6
    Membre habitué Avatar de greg13
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 144
    Points : 156
    Points
    156
    Par défaut
    si on met l'executable dans le dossier bin, on met où les autres fichiers?

    soit la variable PWD (par référence dans un script $PWD) ou ./ , qui est le répertoire courant.
    En faite j'ai des problèmes en utilisant ./, lorsque j'exécute le logiciel en cliquant dessus simplement dans konqueror. Et que j'utilise ./ il ne trouve pas les fichiers, je sais pas trop où il cherche, c'est bizarre.

    (amsn utilise un script spécial pour récupérer le dossier courant, je pense)

    En faite le logiciel est en GPL et doit pouvoir etre compilé pour les utilisateurs de linux. Eventuellement je fournirait des packages rpm pour certaines distrib. C'est pour ça qu'il faudrait qu'on puisse taper "make install" et que ça se mette au bon endroit.

  7. #7
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    De préférence on ne mets pas son logiciel peu répandu dans /bin ou /usr/bin comme ça (surtout pas dans /bin, /usr/bin est plus ouvert). On le met plutôt dans /usr/local/bin, va voir le FHS (Filesystem Hierarchy Standard) pour plus de détails et d'autres informations susceptibles de t'intéresser.

    --
    Jedaï

  8. #8
    Membre habitué Avatar de greg13
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 144
    Points : 156
    Points
    156
    Par défaut
    C'est parfait comme ça je sais tout merci beaucoup pour le lien.

    Vu que c'est un jeu mon logiciel.
    En résumé, j'installe mon binaire dans /usr/local/bin/ et je met les fichiers statiques complémentaire dans /usr/share/games/monjeux/. Et si j'ai des fichiers qui sont modifiés comme des scores, .., je les met dans /var/games/.

    Et cette organisation, elle est respectée sur toutes les distributions de linux?

    Et qu'elle genre de logiciel ne devrait pas etre installé dans le sous-dossier local? (a part tout les binaires système).

    The /usr/local hierarchy is for use by the system administrator when installing software locally

  9. #9
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    En général on ne touche jamais à /usr/(s)bin et /(s)bin, c'est réservé aux paquetages de ta distrib'.

    Il n'y a aucun logiciel qui ne devrait pas être installé dans les sous-répertoires de 'local'.

    En fait, tout ce que tu ajoutes toi même au systeme peut être mis là. D'ailleur si tu mets tes binaires dans /usr/local/bin, il vaut mieux mettres les ressources dans /usr/local/share (et non /usr/share). Enfin, le dossier share n'est pas prévu pour les freewares, il contient toutes les données (éventuellement 'partagées') des applis (icones, doc, etc.). Pour les freewares, je conseillerais le dossier /opt.

    Après, bien qu'il y ait des standard, chacun fait un peut comme il veut, ou comme il peut (parfois d'une distrib à l'autre il peut y avoir des variations).

  10. #10
    Membre habitué Avatar de greg13
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 144
    Points : 156
    Points
    156
    Par défaut
    Citation Envoyé par valefor Voir le message
    il vaut mieux mettres les ressources dans /usr/local/share (et non /usr/share).
    Il paraiterait que l'un soit lien symbolique de l'autre d'apres le lien FHS.

  11. #11
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par greg13 Voir le message
    Il paraiterait que l'un soit lien symbolique de l'autre d'apres le lien FHS.
    Tu as mal lu, il s'agit de /usr/local/share/man qui doit être un lien symbolique vers /usr/local/man (ça reste dans /usr/local remarque).

    --
    Jedaï

  12. #12
    Membre habitué Avatar de greg13
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 144
    Points : 156
    Points
    156
    Par défaut
    Oui c'est vrai, petite erreur. Merci.
    J metterai les fichiers complémentaires dans /usr/local/share et je m'arrangerai avec une variable d'environnements pour les petits comiques qui voudrait mettre les fichiers ailleurs. Et mon programme devrait fonctionner.
    Merci à tous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Système] Organisation des fichiers
    Par Prosis dans le forum Langage
    Réponses: 12
    Dernier message: 10/02/2008, 23h30
  2. organisation de fichiers dans tomcat
    Par horkets dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 24/05/2007, 16h45
  3. Organisation des fichiers du programme
    Par greg13 dans le forum Linux
    Réponses: 2
    Dernier message: 16/03/2007, 15h25
  4. Comment organiser ses fichiers ?
    Par paterson dans le forum Langage
    Réponses: 15
    Dernier message: 12/03/2007, 17h14
  5. Comment organiser les fichiers de projet ?
    Par Zen_Fou dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 03/05/2006, 17h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo