Où les logiciels installés sont-ils stockés sous Linux? [dupliquer]

11

Duplicata possible:
où est installé un programme Linux typique

Je suis nouveau sur Linux et je veux en savoir un peu plus sur les packages.

Sous Windows, je télécharge un .exefichier et l'installe. Lorsque j'installe, je définis le chemin où je veux que cette application soit stockée. Dans ce dossier, j'ai tous les fichiers requis pour l'application.

Cependant, lorsque j'installe un package sous Linux à l'aide de yumou apt-get, je ne sais pas où le package est installé et où les fichiers requis pour cette application sont stockés. J'ai vu que la plupart des configurations se trouvent dans le /etcrépertoire. Mais pourquoi Linux stocke-t-il les fichiers requis pour une application dans différents répertoires?

Quelqu'un peut-il me dire comment les packages sont installés, où et comment sont-ils stockés? Et si ma compréhension de la gestion des packages est erronée, veuillez me corriger.

Communauté
la source
Si votre distribution utilise rpm, vous pouvez utiliser rpm -q --whatprovidespour trouver le nom du package pour un fichier particulier, puis rpm -q -apour savoir quels fichiers un package installé.
David Schwartz
Avec apt-get, si le package est installé, utilisez dpkg -L PKGNAME, s'il n'est pas utilisé apt-file list.
Thor

Réponses:

14

De nombreux programmes (les binaires / scripts) se retrouvent dans /binou /usr/binavec d'autres parties dans divers répertoires de configuration (souvent dans / sous etc) comme vous l'avez déjà noté.

Pour toute commande spécifique, vous pouvez vérifier où est

whereis prog_name

et il vous donnera quelques informations sur l'emplacement de cette commande. Vous pouvez également essayer ce qui

which prog_name

De plus, ce graphique et cette explication / exemples pourraient être utiles.

Levon
la source
1
+1 pour whereis - très utile pour les
mais pourquoi simplement la configuration enregistrée dans un répertoire séparé?
@KOU Je ne connais pas l'historique de cela, mais cela pourrait être pour que les programmes puissent être mis à jour sans gâcher les informations de configuration car ils seraient dans un répertoire différent. De cette façon, différentes versions pourraient utiliser les mêmes informations de configuration (en supposant que le format, etc. n'a pas été modifié, c'est-à-dire qu'il était compatible). Je suppose juste ici. Il faudrait rechercher l'historique du système de fichiers Unix / Linux pour une réponse définitive.
Levon
1
Je ne suis pas sûr de l'historique de la décision de placer tous les fichiers de configuration à l'échelle du système /etc/, mais avoir un emplacement central pour les fichiers de configuration facilite la sauvegarde. (Imaginez la sauvegarde de fichiers de configuration à l'échelle du système dans Windows, où ils sont dispersés tout au long du système de fichiers et du registre ...)
Li-aung Yip
@ Li-aungYip Bon point
Levon
5

Sous Windows, en particulier les versions plus anciennes, il était courant que les programmes stockent des fichiers de configuration et des données non constantes dans leur C:\Program Filesrépertoire. Ceci est dérivé de la façon dont les programmes étaient généralement installés et exécutés sous DOS mono-utilisateur, non en réseau, sans autorisation de fichier.

Du point de vue de la sécurité, c'est une mauvaise idée. Les endroits où vit le code exécutable doivent être séparés des données modifiables. De cette façon, il est plus facile d'appliquer les autorisations de fichier appropriées pour empêcher la modification des fichiers binaires installés par des utilisateurs non autorisés. De même, les répertoires de bibliothèque qui peuvent être mis à jour séparément des principaux exécutables doivent également se trouver dans un répertoire séparé.

Avec l'avènement des ennuis Vista et UAC, cette tradition commence enfin à sérieusement perdre de l'adhérence.

UNIX et Linux, étant un système multi-utilisateur depuis bien plus tôt, avaient tendance à séparer les répertoires exécutables des autres répertoires beaucoup plus tôt, car il fallait empêcher les utilisateurs autres que root de modifier les binaires installés. C'est également la raison /usrpour laquelle il /sbinexiste parfois des partitions distinctes - un administrateur particulièrement soucieux de la sécurité peut monter ces partitions en lecture seule et les remonter en lecture / écriture lorsqu'une installation / désinstallation doit avoir lieu.

Les packages sont généralement installés à partir d'un gestionnaire de packages. Il existe différents gestionnaires de paquets, tels que aptitude(Debian et distributions dérivées), yum(Redhat et distributions dérivées), pacman(oubliez de quelle distribution il s'agit ...), et d'autres.

Le gestionnaire de packages vous permet de parcourir les référentiels, de télécharger, d'installer, d'interroger et de supprimer des logiciels, tout comme une «app store» sophistiquée (et gratuite). Il assume la responsabilité de s'assurer que les dépendances sont prises en charge et de suivre ce qui est actuellement installé.

Habituellement, le gestionnaire de packages autorise également les mêmes opérations sur un package que vous avez téléchargé manuellement en dehors de tout référentiel. Des outils sont également disponibles si vous souhaitez créer le vôtre à partir d'un logiciel que vous avez créé ou compilé vous-même.

Étant donné que le package lui-même n'est PAS un fichier exécutable, vous n'avez pas besoin d'exécuter un exécutable non fiable dont vous ne savez pas vraiment ce qu'il fait. (Windows arrive enfin avec des mises à jour en distribuant des .msu'au lieu de .exe' - mais .msiça fait un moment ...)

LawrenceC
la source
1
Ré. pacman, c'est pour Arch Linux .
2

Vous pouvez obtenir une liste des fichiers qu'un yumpackage donné installe en faisant:

yum install yum-utils

Ensuite, vous pouvez l'exécuter comme suit:

repoquery --list yum-utils

(Évidemment, remplacez "yum-utils" dans ce second par le nom de ce paquet dont vous aimeriez voir la liste des fichiers.)

Pour apt-get, vous pouvez utiliser:

dpkg -L package-name
sblom
la source
1

Généralement sous /usr/bin, bien que cela dépende de l'application ou de la bibliothèque particulière que vous installez.

kprobst
la source
1

Sous Linux / Unix, la plupart des programmes ne se retrouvent généralement pas dans un seul répertoire, mais différentes parties de celui-ci (exécutables, fichiers de configuration, fichiers journaux, documentation, autres ressources) sont dispersées dans le système de fichiers - généralement via la liaison symbolique. L' article de Wikipedia décrit plus en détail la structure de répertoires standard sous une hiérarchie de système de fichiers normale, montrant les différents répertoires et ce que vous pouvez vous attendre à trouver dans chacun d'eux.

mgibsonbr
la source
0

Le /optrépertoire est réservé aux installations de type Windows où chaque package a sa propre arborescence de répertoires. Personne ne l'utilise. Je ne sais pas pourquoi; il se peut que l'ajout /opt/PACKAGE/binà $PATHchaque fois que vous installez un package soit trop ennuyeux.

Alan Curry
la source
/optsemble être principalement utilisé par des progiciels commerciaux / non libres, comme MATLAB.
Li-aung Yip
Sur mon Ubuntu 12.04, Google Chrome s'installe /optmais ensuite LibreOffice 3.5 que j'ai installé directement à partir d' ici .
0

Le logiciel sous Linux est un peu différent en paradigme de Windows ou Mac. Dans ceux-ci, un exécutable et tous ses fichiers de support sont installés dans un seul dossier: Windows les conserve normalement c:\Program Files\program name, Apple dedans /Applications/program.app. Sous Linux, il y a une structure plus ... commune. Les fichiers binaires sont généralement dans /usr/bin, la configuration à l'échelle du système est dans /etc, la configuration spécifique à l'utilisateur est généralement à ~/.program. Les bibliothèques sont dedans /usr/lib, les fichiers de support (par exemple les illustrations) sont souvent dedans /usr/share/program, etc. Il y a même une norme suggérant où aller.

Les programmes sont généralement installés par les gestionnaires de packages, rpmet dpkg; ils sont automatiquement recherchés et récupérés (y compris la gestion des dépendances) par yumet aptitude/ apt-get, respectivement. À un niveau plus technique, les packages sont de simples fichiers compressés (je pense que rpm et deb sont les deux .tar.gz). Ces archives contiennent un miroir des morceaux du système de fichiers à partir de la racine où les fichiers vont (par exemple, un fichier supposé être installé se /usr/bin/programtrouvera usr/bin/programdans le dossier approprié dans le package.

Pour trouver des informations sur un package particulier, utilisez le gestionnaire de packages de votre système, comme d'autres l'ont expliqué ici.

Kevin
la source
0

La page de manuel hier peut fournir des informations

AnonymousLurker
la source
2
Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien de référence. Les réponses de lien uniquement peuvent devenir invalides si la page liée change.
MaQleod
@MaQleod Si vous craignez que le lien devienne invalide, je l'ai lié juste pour plus de commodité. Je pourrais simplement écrire "man hier" en texte clair, puisque vous pouvez trouver cette page de manuel dans n'importe quelle distribution Linux traditionnelle, je suppose.
AnonymousLurker
2
"voir le manuel" n'est pas non plus une réponse appropriée, c'est un commentaire. Les réponses devraient en fait répondre à la question. Comment cela répond-il à la question posée? en quoi la hiérarchie est-elle significative? Pourquoi le PO (ou toute autre personne) devrait-il considérer cette réponse comme remarquable? Copiez les parties pertinentes du lien (ou de la page de manuel) et expliquez pourquoi elles sont importantes dans le contexte de la question, alors vous aurez répondu à la question et pas simplement fait un commentaire.
MaQleod