web-dev-qa-db-fra.com

Quel est l'équivalent Linux des programmes de Windows?

Sous Windows, la plupart des applications et de leurs données sont stockées dans un répertoire spécial appelé C:\Program Files (et occasionnellement C:\Program Files (x86)). Quel est l'équivalent Ubuntu/Linux de ce chemin? Y a-t-il même un?

174
user11154

/bin et /usr/bin est l'endroit où se trouvent les scripts qui lancent les programmes. L'équivalent direct de "Program Files" est probablement /usr/share. Ce répertoire contient les divers fichiers de support de la plupart des programmes.

Nautilus showing /usr/share

Il n’ya probablement pas d’équivalent direct cependant, car, par exemple, les fichiers de bibliothèque sont partagés sur le système (dans /lib) et les options sont spécifiées par l’utilisateur (dans le répertoire de base de l’utilisateur) ou universellement dans /etc.

Donc, installer un programme via un fichier deb, un référentiel ou une compilation placera probablement des fichiers dans tous ces emplacements.

[EDIT] Et comme d'autres le notent, il existe également /sbin et /usr/sbin. Plus /usr/local/bin, /opt/bin et même /usr/games/. Donc, certainement pas une comparaison directe avec c:\program files!

102
Scaine

EDIT: Voir aussi réponse de d4nyll ci-dessous pour une carte excellente et adaptée aux débutants!

Lisez ma réponse ci-dessous pour plus d'informations sur ce qu'est la variable d'environnement PATH, ce que sont les fichiers .desktop et comment trouver un programme spécifique à l'aide de différentes commandes linux.

Réponse originale:


Il n'y a pas de réponse facile.

/bin, /usr/bin et /usr/share

Comme mentionné dans les autres réponses, vous pouvez trouver la plupart des exécutables sous /bin ou /usr/bin, et les fichiers de support sont installés dans /usr/share.

/usr/local and /opt

Il existe cependant davantage de répertoires dans lesquels Ubuntu installe des applications. La variable PATH, qui détermine où rechercher une commande entrée, peut vous donner un indice, le mien ressemble à (echo $PATH dans un terminal):

/usr/local/cuda/bin:/usr/local/texlive/2012/bin/x86_64-linux:/usr/games:/home/gerhard/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Comme vous pouvez le constater, certains logiciels sont installés dans /usr/local et possèdent leur propre répertoire et bin. Un autre endroit où de nombreux programmes sont installés est /opt. Les propriétés de ces emplacements sont expliquées par le norme de hiérarchie du système de fichiers , qui est une très bonne lecture. Malheureusement, la différence entre /opt et /usr/local n'est pas très bien expliquée, quelqu'un sur le nix stackexchange avait une explication plus élaborée:

  • /usr/local est un emplacement pour installer les fichiers créés par l'administrateur, généralement à l'aide de la commande make. L'idée est d'éviter les conflits avec des fichiers faisant partie des systèmes d'exploitation qui pourraient être écrasés ou écrasés par des fichiers locaux. par exemple. /usr/bin/foo fait partie du système d'exploitation tandis que /usr/local/bin/foo est une alternative locale,
  • /opt est un répertoire pour installer des packages non regroupés, chacun dans son propre sous-répertoire. Ils constituent déjà des packages complets fournis par un distributeur de logiciels tiers indépendant. Par exemple, someapp serait installé dans /opt/someapp, une de ses commandes serait dans /opt/someapp/bin/foo [puis un lien symbolique serait généralement créé dans l'un des répertoires bin du PATH ou le programme est appelé à partir d'un fichier de bureau (voir ci-dessous)]. .

Trouver un programme ou une commande spécifique

.desktop fichiers

Pour savoir où un programme spécifique est installé, vous pouvez effectuer plusieurs étapes. Vous devez d’abord localiser son fichier .desktop. Les fichiers du bureau sont similaires aux raccourcis dans Windows. Pour les applications système, ils se trouvent dans /usr/share/applications. Les fichiers du bureau des applications uniquement disponibles pour l'utilisateur actuel se trouvent dans ~/.local/share/applications. Prenons l'exemple de Google Chrome, qui contient le fichier de bureau /usr/share/applications/google-chrome.desktop et recherche la ligne commençant par Exec=, qui détermine le démarrage de Google Chrome. Ça dit:

Exec=/opt/google/chrome/google-chrome

Donc, vous savez que Google Chrome se trouve dans /opt.

Passons maintenant à Mozilla Firefox, qui se trouve dans /usr/share/applications/firefox.desktop. Il dit simplement

Exec=firefox %u

Au début, cela ne semble pas beaucoup aider, mais vous réalisez ensuite que firefox doit se trouver dans un répertoire qui se trouve dans la variable PATH (très probablement un bin), et nous pouvons le rechercher (voir ci-dessous).

En levant les commandes

Pour rechercher des commandes, vous pouvez utiliser un ou plusieurs des éléments suivants: type, which et whereis (j'ai inclus un lien vers leurs pages de manuel en ligne).

  • type : il décrit une commande et indique comment elle serait interprétée si elle était utilisée comme nom de commande. Les types possibles pour une commande sont:

    1. alias (alias shell)
    2. fonction (fonction shell)
    3. construit (Shell intégré)
    4. fichier (fichier disque)
    5. mot-clé (mot réservé Shell)

    (tapez lui-même un shell intégré, essayez-le avec type type: P)

    Exécuter type firefox nous donne

    firefox is /usr/bin/firefox
    

    c'est ce que nous voulions savoir

Si une commande est un fichier (que vous avez coché avec type), vous pouvez également utiliser:

  • which : affiche le chemin complet de la commande,

    Exécuter which firefox nous donne

     /usr/bin/firefox
    
  • whereis : localisez les fichiers binaires, sources et manuels d'une commande.

    Exécuter whereis firefox nous donne

    firefox: /usr/bin/firefox /etc/firefox /usr/lib/firefox /usr/lib64/firefox /usr/bin/X11/firefox /usr/share/man/man1/firefox.1.gz
    

Bonus

Vous pouvez inspecter /usr/bin/firefox de plus près avec ls -l /usr/bin/firefox, ce qui donne:

/usr/bin/firefox -> ../lib/firefox/firefox.sh*

Il semble que /usr/bin/firefox est "uniquement" un lien symbolique vers le script /usr/lib/firefox/firefox.sh. Si vous inspectez le script, vous découvrez qu'il appelle /usr/lib/firefox/firefox.
Vous pouvez reposer en paix maintenant :)

80
Gerhard Burger

Réponse tardive - J'ai créé une feuille de route pour les débutants. S'ils recherchent un fichier mais ne savent pas où chercher, ils peuvent utiliser la carte pour naviguer approximativement. Vous pouvez télécharger un fichier PNG haute résolution ici . Vous pouvez trouver le post connexe ici . Je continuerai à mettre à jour le fichier et la publication lorsque le temps le permettra, en incorporant des commentaires utiles.

79
d4nyll

Il n'y a pas de répertoire unique qui soit l'équivalent exact du dossier Program Files. La manière dont Linux organise les choses est très différente de Windows.

Dans Windows, chaque programme que nous installons obtient son propre répertoire à l'intérieur du répertoire Program Files. Dans ce répertoire, d'autres sous-répertoires sont créés pour différents types de fichiers. Il n'y a pas de structure fixe pour les sous-répertoires. Les programmes décident eux-mêmes comment ils veulent appeler chaque répertoire et où ils veulent mettre quoi.

Mais sous Linux, lorsqu'un programme est installé, différents types de fichiers sont copiés dans différents emplacements. Les fichiers exécutables sont copiés dans / usr/bin, les fichiers de bibliothèque dans / usr/lib, la documentation dans un ou plusieurs des / usr/man, - / usr/info et / usr/doc. S'il existe des fichiers de configuration, ils se trouvent généralement dans le répertoire personnel de l'utilisateur ou dans / etc.

18
binW

Le dossier C:\Program Files serait /usr/bin dans Ubuntu. /bin ressemble plus à C:\windows.

Depuis le page de manuel de la hiérarchie du système de fichiers :

/bin      This directory contains executable programs which are needed  in
          single user mode and to bring the system up or repair it.
/usr/bin
          This is the primary directory  for  executable  programs.   Most
          programs  executed  by  normal  users  which  are not needed for
          booting or for repairing the system and which are not  installed
          locally should be placed in this directory.

Ubuntu a une structure différente de celle de Windows. Ubuntu place presque toutes les applications dans un répertoire, disons /usr/bin. Windows créerait un nouveau dossier, disons Mozilla Firefox, et y ajouterait une configuration, des exécutables, des DLL, des images, etc. Ubuntu les sépare, les exécutables vont dans /usr/bin, la configuration à l'échelle du système dans /etc, les objets partagés dans /usr/lib, les images dans /usr/share, ...

10
Lekensteyn

Les "programmes" de Linux sont dans la hiérarchie. Il peut s'agir de /usr/bin, /bin, /opt/... ou d'autres répertoires.

Je pense que vous allez trouver un fichier lié à votre application. Ensuite, j'ai une idée sur la façon de regarder les fichiers installés lors de l’installation du programme.

  1. Installez synaptic en émettant Sudo apt-get install synaptic sur le terminal.
  2. Cherchez le paquet que vous voulez, recherchez sur la saisie de texte de recherche.
  3. Cliquez avec le bouton droit sur le package et sélectionnez Properties.
  4. Déplacer vers l'onglet Installed File. Le résultat est identique à dpkg -L package_name.
  5. Vous y trouverez tous les fichiers installés pour le paquet.

C'est parce que linux déplace le fichier installé dans des répertoires séparés en fonction de leur type.

  • L'exécutable va à /usr/bin ou /bin.
  • L'icône va à /usr/share/icons ou à ~/.local/share/icons pour local.
  • Application entière (portable) sur /opt.
  • Raccourci généralement sur /usr/share/applications ou sur ~/.local/share/applications
  • Documentation sur /usr/share/doc
  • Bibliothèque/module sur /usr/lib

Et beaucoup d'autres annuaires. (CMIIW, acceptant la correction)

5
Abdillah

La manière dont les programmes Linux et Windows sont installés est très différente.

Le modèle commun dans Windows est pour un programme; ou un groupe de programmes, d'un fournisseur, va dans son propre sous-répertoire dans C:\programmes\vendeur ou quelque chose de similaire.

Sous Linux, vos fichiers sont répartis dans des sous-répertoires spécifiques en fonction de leur fonction. Il existe des répertoires pour les bibliothèques, les icônes, les pages de manuel, les fichiers journaux, la configuration, etc. Vous pouvez en utiliser certains, mais le système les gérera tous. Ils ne sont pas couplés ensemble, mais existent avec des fichiers similaires d'autres programmes.

Il n’ya donc pas d’équivalent réel à cette structure de répertoires Windows dans une implémentation Linux normale.

3
user unknown

Dans cette réponse, quand je dis Unix, je parle de systèmes d’exploitation similaires à Unix.

Ubuntu n'a pas vraiment de dossier de programmes contenant toutes les données de chaque programme. Dans les systèmes d'exploitation Unix et de type Unix, EVERYTHING est un fichier, même les commandes de terminal. Ce sont aussi des fichiers. La manière dont Unix gère les programmes peut être assez chaotique et organisée en même temps.

Les icônes des programmes sont stockées dans/usr/share/icons/*, les exécutables du programme sont généralement stockés dans/usr/bin,/bin et d’autres emplacements contenant des répertoires bin (bin est un raccourci pour binaire). Les bibliothèques dont dépendent les programmes sont dans/lib.

Ainsi, vous ne vous retrouvez pas avec un répertoire contenant toutes les données d'un programme, mais les données du programme s'étalent. Au début, cela semble très désorganisé, mais cela permet de partager des éléments standard tels que des bibliothèques et des icônes.

Grâce aux permissions accordées pour chaque fichier, l’idée que tout soit un fichier est très brillante pour être honnête. Cela rend Unix BEAUCOUP plus sécurisé que d’autres systèmes d’exploitation.

3
Thomas Boxley

Si vous installez vos propres programmes, je vous recommande 1 dossier:

2
Timo