Comment dire à Ubuntu où installer un programme et comment savoir où un programme existant a été installé?

10

Je suis totalement nouveau sur Ubuntu / Linux, j'utilise Ubuntu Server pour le moment. J'essaye juste de comprendre quelque chose de basique.

Comment savoir où vous installez un programme. Par exemple, je viens d'installer le moteur de recherche Sphinx en plaçant l'archive que j'ai téléchargée depuis leur site sur mon:

/home/sphinx

annuaire. J'ai créé le répertoire sphinx pour placer cette archive tar. Ensuite, j'ai exécuté ces commandes:

tar xvzf sphinx-0.9.8.1.tar.gz
cd sphinx-0.9.8.1/
./configure --with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib/mysql

puis ceux-ci:

make
sudo make install

Maintenant, j'ai beaucoup de fichiers dans le répertoire où j'ai exécuté ces commandes. S'agit-il de mon installation Spynx ou s'est-elle installée ailleurs?

Dans Windows, si vous exécutez un programme d'installation (fichier .exe) n'importe où, le programme sera toujours installé dans votre répertoire C: \ Program Files. Est-ce que quelque chose de similaire s'applique à Linux où tous les programmes sont installés dans un endroit central, ou pouvez-vous installer des programmes n'importe où sur le système.

Des questions

  1. Je préférerais garder tous mes programmes installés en un seul endroit, alors quel est le bon endroit pour cela en termes de meilleures pratiques. En d'autres termes, quel est l'équivalent Linux de C: \ Program Files?

  2. Et comment installer toujours à cet emplacement, s'agit-il simplement de placer l'archive tar et d'exécuter les commandes d'installation à partir de cet emplacement?

  3. Et si j'utilise sudo apt-get pour installer un paquet. Comment puis-je pointer vers cet emplacement pour dire à apt-get de toujours s'y installer?

JakeRow123
la source

Réponses:

15

Est-ce que quelque chose de similaire s'applique à Linux où tous les programmes sont installés dans un endroit central

Équivalents approximatifs des répertoires d'installation de Windows sous Linux

  • \Windows = /bin
  • \Windows\System32= /libet/sbin
  • \Program Files= /usr/binet/usr/lib

Je préférerais garder tous mes programmes installés en un seul endroit, alors quel est le bon endroit pour cela en termes de meilleures pratiques. En d'autres termes, quel est l'équivalent Linux de C: \ Program Files?

Ce serait les répertoires sous /usr, spécifiquement /usr/binet /usr/lib.

Et comment installer toujours à cet emplacement, s'agit-il simplement de placer l'archive tar et d'exécuter les commandes d'installation à partir de cet emplacement?

  • Non. Où que vous soyez lorsque vous exécutez les commandes d'installation n'a presque jamais d'importance.

  • Les programmes que vous installez via apt-get(ou aptitude) finiront presque toujours correctement /usr. Mais les programmes que vous compiler à partir des sources et make installse termineront plus souvent dans /usr/local/bin, /usr/local/lib, etc, et vous pouvez avoir des problèmes avec que depuis le chemin installé par l' utilisateur dans Debian / Ubuntu est /usret non /usr/local.

  • Lors de la compilation de la source, ajouter ce commutateur à configurer: ./configure --prefix=/usr. De cette façon, lorsque vous make installles fichiers se retrouveront dans le bon répertoire

  • Regardez également le checkinstallprogramme, qui garde la trace des fichiers compilés à partir des installations sources, crée un fichier deb et permet une désinstallation / réinstallation facile.

Et si j'utilise sudo apt-get pour installer un paquet. Comment puis-je pointer vers cet emplacement pour dire à apt-get de toujours s'y installer?

apt-get/ dpkgprendre soin de cela automatiquement. Vous pouvez utiliser dpkg -L name-of-packagepour voir tous les fichiers installés par un package et où ils ont été installés.

ish
la source
merci pour la réponse détaillée, juste une question. Puisque vous avez dit "Non. Où vous êtes lorsque vous exécutez les commandes d'installation n'a presque jamais d'importance.", Cela signifie-t-il maintenant que j'ai installé le programme que je peux supprimer en toute sécurité le dossier Sphinx dans / home / sphinx / que j'ai extrait de l'archive tar et exécuté l'installation et fait des commandes dans? Est-ce maintenant l'équivalent d'un programme d'installation que j'ai déjà exécuté pour installer un programme et qui n'a désormais aucune utilité?
JakeRow123
1
Oui, vous pouvez supprimer le dossier extrait de l'archive tar - c'est essentiellement comme un dossier "temp" dans lequel l'installateur a été extrait et est maintenant inutile. C'était une excellente question, je vais modifier la réponse pour inclure cette information.
ish
Vous pourriez, mais vous aurez alors des problèmes pour les désinstaller avec «make uninstall». Dans Debian / Ubuntu, vous ne devez jamais installer votre logiciel avec le préfixe / ou / usr, vous devez utiliser / usr / local. Pourquoi, parce que / usr / local est créé pour les administrateurs locaux, c'est vous JakeRow123, pour installer leurs propres programmes. / et / usr ne concernent que les paquets Debian. Si vous installez là-bas, les chances sont grandes que vous aurez des problèmes. Utilisez donc le commutateur '--prefix = / usr / local' pour la commande configure lorsque vous compilez le vôtre. Ensuite, faites; sudo make install 'y installera votre programme.
Anders
@Anders, make uninstalln'est PAS une fonctionnalité standard et ne se trouve pas dans de nombreuses sources de programmes. En outre, il /usr/localn'est souvent pas dans le chemin sur Ubuntu et peut provoquer des problèmes lors de l'exécution de programmes ou de la compilation (en raison des inclusions dans /usr/local).
ish
Vous ne devez PAS installer le logiciel au mauvais endroit, comme sous / usr et pas au bon endroit comme / usr / local. Vous devez corriger le problème avec le PATH si l'environnement ordinateur / utilisateurs n'est pas configuré correctement. L'installation sous / ou / usr vous causera des ennuis. Croyez-moi là-dessus. J'y suis allé et j'ai fait ça. Ce n'était PAS amusant. Du tout. Certains programmes, tous avec autoconfig, où vous avez configuré avec la commande configure ont obtenu une désinstallation. D'autres qui n'en ont pas ne sont pas utiles et devraient avoir un bug signalé ...
Anders
4

Habituellement, les programmes sont installés dans quelques répertoires sous un répertoire supérieur , appelé préfixe . Le répertoire supérieur à utiliser dépend de qui installe, à des fins sorcières et qui gérera le logiciel.

Le préfixe /usrest un logiciel utilisé fourni par votre distribution. Vous devez pas installer d'autres logiciels là - bas, car il va confondre la distribution lors de l' installation et le logiciel de mise à niveau emballé par la distribution. Veuillez donc ne pas y installer votre propre logiciel compilé. Ce n'est pas une bonne idée, à moins que vous ne sachiez vraiment ce que vous faites. Et à moins que vous ne soyez un développeur Debian ou Ubunut, ce n'est généralement pas le cas. Je ne ferais pas ça de toute façon.

Pour les logiciels commerciaux, le préfixe /optest utilisé. Il leur est réservé d'interférer le moins possible avec les distributions et l'administrateur système local.

Pour les logiciels que l'administrateur système installe pour tous les utilisateurs, le préfixe /usr/localest utilisé. Là, il est à l'écart de l'installation commerciale ou de distribution et n'interfèrera pas avec eux. Donc, en tant qu'administrateur système, vous utilisez cela (si vous avez des privilèges root, vous êtes administrateur système).

Si vous êtes un utilisateur ordinaire installant un logiciel pour vous-même, vous pouvez utiliser votre répertoire personnel comme préfixe, en utilisant l' --prefixoption configureavec le répertoire de préfixe " ~/" ou $HOME/. J'en ai beaucoup utilisé quand j'étais étudiant. :-)

Habituellement, les logiciels font la bonne chose lorsque vous exécutez configurel'option --prefixavec la bonne valeur, puis make; make install.

Sous l'un de ces préfixes, vous trouverez généralement ces répertoires dans une installation standard.

  • bin - les programmes exécutables, les binaires.
  • sbin - les binaires système, qui ne devraient généralement pas être exécutés par des utilisateurs ordinaires.
  • man - pages de manuel pour les programmes, bibliothèques et fichiers de configuration, etc.
  • etc - fichiers de configuration avec des valeurs par défaut pour le logiciel.
  • lib - des bibliothèques de programmes et des fichiers de données qui dépendent de l'architecture (comme le processeur) de votre ordinateur.
  • share - des fichiers de données qui ne sont pas différents sur différentes architectures et peuvent être partagés entre différents ordinateurs.
  • var- répertoires avec des données qui changent pendant l'exécution du programme. Comme les fichiers journaux, etc.

La plupart de ces répertoires peuvent être utilisés avec des systèmes de fichiers protégés en écriture pour accroître la sécurité. Le seul que les utilisateurs doivent écrire est le var/répertoire. Lorsque le logiciel est mis à jour, ces répertoires doivent évidemment (?) Avoir des droits d'écriture. Cela peut être fait avec un remontage avec des privilèges d'écriture pendant l'installation, puis remonté en lecture seule après l'installation. Mais c'est avancé, et je ne le donne qu'à titre d'exemple de gestion avancée de packages.

Il y a aussi quelques répertoires directement sous /(le répertoire racine) qui n'existe pas sous tout autre préfixe, comme /dev, /tmp, /procet /srv(pour les répertoires de données du serveur, mais ils sont généralement sous /var/libou /var/wwwet répertoires comme ça, vous devez changer la configuration de utiliser ce répertoire. Je vous recommande de le faire lorsque vous exécutez un serveur. Utilisez uniquement /var/pour tester une installation standard).

  1. Linux n'est pas MS Windows. Il existe de nombreux endroits où placer les programmes que vous installez. Cela dépend de qui installer et pour qui. Lisez-le dans mon post. Remarquer. RedHat utilise /usrcomme Debian / Ubuntu utilise /usr/local. Apprenez votre distribution.
  2. Différents programmes ont différentes méthodes d'installation. --prefixsont utiles pour les programmes utilisant configure. La meilleure façon de savoir est probablement de lire le README.txtfichier ou quelque chose comme ça, qui vous est probablement fourni dans l'archive tar. L'archive tar peut être extraite n'importe où, comme votre répertoire personnel. Une fois l'installation terminée, vous pouvez supprimer l'archive tar extraite, si vous manquez de stockage. Mais ne le faites pas trop tôt, sauf si vous avez correctement testé votre installation.
  3. Les programmes installés avec apt-getou aptitudesont toujours installés au bon endroit pour la distribution. Vous ne pouvez pas changer cet endroit.
Anders
la source
2

Lorsque vous installez des programmes à partir d'un référentiel à l'aide de l'installation normale, il s'installe au bon endroit, crée des fichiers de configuration au bon endroit (fonctionnellement similaire au registre Windows) et crée automatiquement des entrées de menu.

Lorsque vous téléchargez un fichier (non préféré, mais souvent nécessaire lorsque l'application n'est pas dans un référentiel), la première chose que vous avez faite a été d'exécuter tar, ce qui équivaut à décompresser sous Windows. Cela crée les fichiers que vous voyez le plus probablement.

Ensuite, lorsque vous exécutez make install, cela mettra généralement les résultats au bon endroit, peut-être créera des menus, mais cela n'effacera pas les fichiers non goudronnés. Vous pouvez probablement le faire, mais vous pouvez les enregistrer temporairement au cas où.

Voici un article intéressant sur la structure des répertoires Debian .

Marty Fried
la source
Bel article, sauf qu'il ne faisait aucune référence à / usr / local où vous installez votre propre logiciel pour ne pas entrer en conflit avec les logiciels installés par le système et vos packages de distribution (comme Ubuntu). Installer son propre logiciel sous / ou / usr, c'est poser des problèmes, problèmes qui ne sont probablement que la solution, c'est de réinstaller le système à partir de zéro ...
Anders