web-dev-qa-db-fra.com

Comment trouver le chemin d'installation d'un logiciel sous Linux?

Sous Linux, je lance un logiciel en tapant, par exemple, fluidplot. Comment trouver le chemin d'installation de ce logiciel?

80
user5997

Vous pouvez utiliser:

which fluidpoint

pour voir d'où il s'exécute (s'il se trouve dans votre $ PATH). Ou:

find / -name fluidpoint 2> /dev/null

pour rechercher un fichier nommé fluipoint et rediriger les erreurs sur les systèmes de fichiers virtuels.

Ils sont généralement dans /sbin, /usr/sbin, /usr/local/bin ou ~ comme répertoire caché.

Du manuel:

NAME
       which - shows the full path of (Shell) commands.

SYNOPSIS
       which [options] [--] programname [...]

Manuel complet: https://linux.die.net/man/1/which

70
n0pe

Si vous utilisez une distribution basée sur RPM (CentOS, RHEL, SUSE, openSUSE), vous pouvez utiliser rpm -ql

Exemple:

rpm -ql findutils
/bin/find
/usr/bin/find
/usr/bin/xargs
/usr/share/doc/packages/findutils
/usr/share/doc/packages/findutils/AUTHORS
/usr/share/doc/packages/findutils/COPYING
/usr/share/doc/packages/findutils/NEWS
/usr/share/doc/packages/findutils/README
/usr/share/doc/packages/findutils/THANKS
/usr/share/doc/packages/findutils/TODO
/usr/share/info/find.info.gz
/usr/share/man/man1/find.1.gz

Les choses ne sont pas installées à des emplacements dans le monde Linux/UNIX comme ils le sont dans le monde Windows (et même un peu dans le Mac). Ils sont plus distribués. Les fichiers binaires sont dans /bin ou /sbin, les bibliothèques sont dans /lib, les icônes/graphiques/documents sont dans/share, la configuration est dans /etc et les données du programme sont dans /var.

Le /bin, /lib, /sbin contient les applications de base nécessaires au démarrage et /usr contient toutes les autres applications utilisateur et système.

14
djsumdog

La commande whereis localise les fichiers binaires, source et de page de manuel pour une commande, et la commande type indique exactement ce que le Shell exécute lorsque vous exécutez une certaine commande.

Essayez whereis -l fluidplot dans ton cas. S'il ne renvoie que "fluidplot:", mais pas de chemin, cela signifie que le logiciel n'est pas installé. Notez que cela n'inclut pas les fichiers qui peuvent être masqués dans le dossier de base sous ~/.local/share/ (dans mon cas).

Trouvé sur Linux Screw

6
魔大农

Juste pour ajouter un point à la réponse de @ djsumdog, si vous utilisez un dist basé sur DPKG, comme Ubuntu, vous pouvez utiliser

dpkg --status some_package

pour vérifier de quoi il s'agit, et

dpkg --listfiles some_package

pour vérifier quels fichiers sont inclus/pertinents pour ce package. C'est pour les paquets qui n'ont pas de binaire à exécuter, comme libnss3. Et

dpkg --search some_file

pour trouver quel package contient ce fichier.

Par exemple, dpkg --listfiles libnss3 Donne moi:

/.
/usr
/usr/lib
/usr/lib/i386-linux-gnu
/usr/lib/i386-linux-gnu/libssl3.so
/usr/lib/i386-linux-gnu/nss
/usr/lib/i386-linux-gnu/nss/libsoftokn3.chk
/usr/lib/i386-linux-gnu/nss/libnssckbi.so
/usr/lib/i386-linux-gnu/nss/libnsssysinit.so
/usr/lib/i386-linux-gnu/nss/libfreebl3.chk
/usr/lib/i386-linux-gnu/nss/libnssdbm3.chk
/usr/lib/i386-linux-gnu/nss/libnssdbm3.so
/usr/lib/i386-linux-gnu/nss/libsoftokn3.so
/usr/lib/i386-linux-gnu/nss/libfreebl3.so
/usr/lib/i386-linux-gnu/libnssutil3.so
/usr/lib/i386-linux-gnu/libsmime3.so
/usr/lib/i386-linux-gnu/libnss3.so
/usr/share
/usr/share/doc
/usr/share/doc/libnss3
/usr/share/doc/libnss3/copyright
/usr/share/doc/libnss3/changelog.Debian.gz
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/libnss3

Notez que les dossiers n'appartiennent pas seulement à ces packages, mais aussi à d'autres. Vérifiez simplement les fichiers.

Et inversement, dpkg --search libnss3.so Donne moi:

firefox: /usr/lib/firefox/libnss3.so
Thunderbird: /usr/lib/Thunderbird/libnss3.so
libnss3:i386: /usr/lib/i386-linux-gnu/libnss3.so
libnss3-1d:i386: /usr/lib/i386-linux-gnu/libnss3.so.1d
5
WesternGun

Vous pouvez essayer d'exécuter:

ps aux | grep "THE_NAME_OF_A_PROGRAM"

Il y a de bonnes chances que vous voyiez le chemin vers le programme (s'il est en cours d'exécution)

0
user213527

Au lieu d'utiliser which ( ce qui n'est probablement pas le bon choix sauf si vous utilisez csh ) vous pouvez utiliser command -v fluidplot pour amener le shell à boune comme Shell pour vous dire ce qu'il ferait si vous lui demandiez d'exécuter la commande (fluidplot dans cet exemple).

Quelques exemples pour moi:

$ command -v ls
alias ls='ls --color=auto'
$ command -v cat
/bin/cat
$ test_func() {
> :
> }
$ command -v test_func
test_func
$ which test_func
/usr/bin/which: no test_func in (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin)
$ if command -v noSuchFile; then echo "It exists"; else echo "does not exist"; fi
does not exist

vous pouvez donc également l'utiliser pour tester si une commande serait même trouvée et tentée de s'exécuter. Comme la plupart d'entre nous utilisent des shells de type Bourne (par exemple, bash ou zsh), cela est souvent préférable à which

0
Eric Renouf