Quel est l'équivalent Linux de C: \ Program Files?

64

Je comprends que sous Windows, ainsi que Linux et Unix, un programme | application | logiciel peut être installé dans n’importe quel répertoire. De plus, si les packages sont installés à l'aide du système de packaging de la distribution, les fichiers seront placés à l'emplacement correct.

Mais parfois, une installation logicielle vous demande un chemin pour placer des fichiers. Dans le cas d’une distribution Linux, où se trouve cet endroit par défaut ( C:\Program Filesou l’ C:\progra~1équivalent)? Est-ce différent pour différentes distributions? Si oui, où serait - ce pour RHEL, Suseet Ubuntu?

Thomas
la source

Réponses:

60

Le projet de documentation Linux contient une description de la hiérarchie du système de fichiers Linux, dans laquelle ils expliquent les différents dossiers et leur signification (en partie historique).

Comme xenoterracide l’a déjà fait remarquer /bin, ce /optsont les répertoires standard que l’on peut comparer aux "Program Files" de Windows.

/bincontient plusieurs commandes utiles utiles aussi bien à l'administrateur système qu'aux utilisateurs non privilégiés. Il contient généralement des coquilles comme bash, csh, etc .... et couramment utilisés comme commandes cp, mv, rm, cat, ls.

( cité de TLDP )

/optest réservé à tous les logiciels et packages complémentaires qui ne font pas partie de l'installation par défaut. Par exemple, les packages StarOffice, Kylix, Netscape Communicator et WordPerfect se trouvent normalement ici.

( cité de TLDP )

Axel Knauf
la source
9
Est-ce que / opt n'est pas utilisé uniquement pour les paquets qui ne sont pas contenus dans le dépôt? Les dossiers d’application pour inkscape, gimp, rhythmbox, etc. se trouvent dans / usr / share. Ne serait-ce pas plutôt l'équivalent?
c76c3r8c42b347r8 le
5
Consultez linuxfoundation.org/fr/FHS pour des informations plus récentes sur la hiérarchie des systèmes de fichiers (FHS). (Remarque: le site est en panne pour le moment mais devrait être remis sous peu).
Jw013
@Toxicbits: Au moins sur Gentoo dans / opt, il existe des packages binaires, en particulier ceux qui ne peuvent pas être installés sur / usr en raison d'une hiérarchie non standard du système de fichiers.
Maciej Piechotka
TLDP semble génial! Eh bien, sur une note de côté; La première fois que j'ai vu TLDP, je me suis dit: "Trop longtemps, n'est-ce pas ... le pic? Quoi?"
Ege Özcan le
3
Ceci est une erreur. / bin ne contient que des programmes exécutables. Le répertoire Windows Program Files contient un sous-répertoire pour chaque application installée, contenant tous les exécutables, les DLL, les fichiers de données et tout le reste nécessaire à / fourni avec l'application.
psusi
45

Il n'y a pas d'équivalent direct. La structure du répertoire est très différente. Sous Windows, vous avez un seul répertoire pour chaque package / logiciel installé qui contient tous les fichiers liés à (par exemple C:\Program Files\MyProgram). Sous Linux, chaque logiciel est "dispersé" dans de nombreux répertoires en fonction du type de fichier et d'une autre règle.

A titre d'exemple, nous pouvons examiner où différents fichiers liés au xscreensaverprogramme sont installés:

/etc/pam.d/xscreensaver
/etc/xscreensaver
/etc/xscreensaver/README
/usr/bin/xscreensaver
/usr/bin/xscreensaver-command
/usr/bin/xscreensaver-demo
/usr/bin/xscreensaver-gl-helper
/usr/share/X11/app-defaults/XScreenSaver
/usr/share/applications/xscreensaver-properties.desktop
/usr/share/doc/packages/xscreensaver
/usr/share/doc/packages/xscreensaver/README
/usr/share/locale/ca/LC_MESSAGES/xscreensaver.mo
/usr/share/locale/da/LC_MESSAGES/xscreensaver.mo
/usr/share/locale/de/LC_MESSAGES/xscreensaver.mo
[ ... ]
/usr/share/locale/zh_TW/LC_MESSAGES/xscreensaver.mo
/usr/share/man/man1/xscreensaver-command.1.gz
/usr/share/man/man1/xscreensaver-demo.1.gz
/usr/share/man/man1/xscreensaver.1.gz
/usr/share/man/man6/xscreensaver-gl-helper.6x.gz
/usr/share/pixmaps/xscreensaver.xpm
/usr/share/xscreensaver
/usr/share/xscreensaver/glade
/usr/share/xscreensaver/glade/screensaver-cmndln.png
/usr/share/xscreensaver/glade/screensaver-colorselector.png
[ ... ]

Ne vous inquiétez pas, généralement quand un installateur demande où installer à, la bonne réponse est l' un des éléments suivants: /, /opt, /usr,/usr/local

Comme vous pouvez le constater, presque tous les fichiers (1) xscreensaversont installés sous /usrselon une règle simple: exécutables /usr/bin, pages de manuel /usr/share/man, documentation /usr/share/doc/packages/PROGRAMNAME, etc.

Lorsqu'un installateur demande une installation prefix, il souhaite généralement maintenant le chemin de base sous lequel installer le programme. Dans mon xscreensaverexemple, c'est /usr.

En règle simple: /ne doit contenir que les programmes nécessaires au démarrage du système (en tant que C:\windows\system32), /usr/localdoit contenir les programmes nécessaires uniquement sur cet ordinateur unique, /opt(2) tous les programmes facultatifs ayant une structure de répertoire non standard et /usrtous les logiciels standard .

Dans tous les cas, il existe une norme qui définit toutes ces règles en détail: Norme de hiérarchie de système de fichiers

(1) Les fichiers de configuration du système doivent résider dans /etc

(2) assez obsolète sous Linux

Andcoz
la source
/optest préférable pour les logiciels tiers /usr/localpendant un certain temps.
Steve-o
7
Une simple explication /usr/shareest appelée "partage" car elle est partagée entre différentes architectures (documentation, scripts, images), alors qu’elle /usr/lib*s’applique aux fichiers dépendants de l’architecture (et non aux exécutables, lesquels /usr/bin).
eudoxos le
12

Ususually, /bin, /usr/bin, /usr/local/binou /opt/bin. Je pense /usr/binet suis /opt/binle plus proche de Program Files, car ils sont généralement destinés à des binaires non critiques installés par l'administrateur système, bien que, contrairement à Windows, ils contiennent tous deux des programmes installés avec un gestionnaire de packages. Où /usr/local/binest pour le logiciel non distribué distro. /binest pour les binaires critiques du système comme /bin/sh.

xénoterracide
la source
pourquoi quatre options? /bin, /usr/bin, /usr/local/binOu /opt/bin. N'y a-t-il pas un emplacement standard? La raison pour laquelle je pose cette question est que j'installe des logiciels sur quelques ordinateurs virtuels et que l'emplacement par défaut correspond à la partition qui dispose du plus grand espace. Je veux changer l'espace de partition dans le répertoire où le logiciel va habituellement et ne pas placer le logiciel différemment dans toutes les VM.
Thomas le
1
la norme spécifie plusieurs emplacements idk pourquoi pathname est arrêté, mais voici un lien vers le FHS mis en cache qui donne une définition plus précise de ce qu’ils sont et qui dépend vraiment beaucoup de ce que vous installez. RHEL, Suse et Ubuntu étant également différents, ils peuvent placer la même chose dans des emplacements légèrement différents. /optpar exemple, est généralement utilisé pour les logiciels propriétaires.
xenoterracide
De plus, généralement, généralement, ceux-ci se trouvent tous sur la même partition, parfois /usr/une partition séparée.
Xenoterracide
1
Certaines personnes (par exemple le projet Hurd) soutiennent que le /binet la /usr/bindiscrimination est maintenant obsolète; historiquement, le système critique des choses serait /bin, /lib... (directement à la racine), tandis que /usr(avec /usr/bin, /usr/lib...) serait monté plus tard (peut - être sur le réseau), ne pas être nécessaire pour la fonctionnalité du système de base.
eudoxos le
1
@Thomas, /optne devrait pas sortir. Certaines personnes pensaient autrefois que c'était une bonne idée d'installer certaines applications à un emplacement différent de celui de toutes les autres applications. /binest sur la partition racine. Étant donné que sur certains systèmes, l'espace sur la partition racine est limité, les fichiers binaires non essentiels (c'est-à-dire toutes les applications utilisateur) ont été déplacés /usr/bin.
Jan
8

Jetez un coup d'œil à man hierla "Description de la hiérarchie du système de fichiers".

vasily-vm
la source
3

Comme d'autres l'ont souligné, les programmes installés via le gestionnaire de paquets sont répartis sur plusieurs répertoires. Bien que le fichier binaire soit généralement trouvé /usr/bin, les fichiers de configuration du système sont présents /etc, etc.

Si une application n'est pas installée via le gestionnaire de packages, les fichiers doivent être installés à un endroit où ils n'interféreront pas avec le gestionnaire de packages. Cet endroit est /usr/local.

Si on vous demande un chemin d’installation, le choix le plus courant serait: /usr/local/appname

Jan
la source
3

Tapez echo $PATHvotre terminal pour voir le (s) chemin (s) dans lequel le shell va chercher une commande. Il vérifie la présence d’un fichier dans l’ordre dans lequel il est imprimé.

Jaseem
la source
1
Cela ne répond pas à ce que le PO a demandé.
Francesco Turco
1

Eh bien, vous ne trouverez pas toutes vos solutions /binet sbinparce qu'elles contiennent principalement des commandes système (c'est-à-dire les commandes utilisées par le système).

/usr/binpeut être appelé idéalement le "Program Files"monde Unix. En ce qui concerne /opttrès peu de paquets qui choisissent d’utiliser cet emplacement pour l’installation, il en va de même pour les paquets utilisant /etc/ou en /vartant qu’emplacement.

Pankajdoharey
la source