Wie finde ich den Installationspfad für eine Software unter Linux?

71

Unter Linux starte ich eine Software, indem ich z. B. fluidplot eingebe. Wie finde ich den Installationspfad für diese Software?

user5997
quelle
Mögliches Duplikat von 18472
sakisk

Antworten:

62

Sie können verwenden:

which fluidpoint

um zu sehen, woher es ausgeführt wird (wenn es sich in Ihrem $ PATH befindet). Oder:

find / -name fluidpoint 2> /dev/null

um nach einer Datei mit dem Namen fluipoint zu suchen und Fehler auf virtuellen Dateisystemen umzuleiten.

Normalerweise sind sie in /sbin, /usr/sbin, /usr/local/binoder ~als ein verstecktes Verzeichnis.

Aus dem Handbuch:

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

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

Vollständiges Handbuch: https://linux.die.net/man/1/which

n0pe
quelle
4
oder überprüfen , um zu sehen , ob das Programm tatsächlich ein Alias ist, zum Beispiel alias fluidpoint,
Chad Feller
2
@Chad Einige Versionen von which(z. B. die in ZSH integrierte Version) erledigen das für Sie
Michael Mrozek
@Michael ausgezeichnet zu wissen. Aufgrund Ihres Kommentars habe ich gerade festgestellt, dass neuere Versionen von bash dies auch tun. +1 zu deinem Kommentar.
Chad Feller
Die Zeile "Normalerweise sind sie ..." ist ziemlich unaufrichtig, zusätzliche Software sollte in /opt/*oder sein /usr/local/bin. ~ist dein Heimatverzeichnis, ich bin verwirrt, warum du es "versteckt" nennst.
Steve-o
Tut mir leid, dass ich mehrdeutig bin ~/.dir. Das versteckte Verzeichnis befindet sich unterhalb des Basisverzeichnisses. Und ich habe /usr/local/binDop komplett vergessen .
Nr.
13

Wenn Sie eine RPM-basierte Distribution verwenden (CentOS, RHEL, SUSE, openSUSE), können Sie rpm -ql verwenden

Beispiel:

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

Dinge werden nicht an Orten in der Linux / UNIX-Welt installiert, wie sie in der Windows-Welt (und sogar etwas in der Mac-Welt) sind. Sie sind mehr verteilt. Binärdateien befinden sich in /binoder /sbin, Bibliotheken befinden sich in /lib, Symbole / Grafiken / Dokumente befinden sich in / Freigabe, Konfiguration befindet sich in /etcund Programmdaten befinden sich in /var.

Die /bin, /lib, /sbinenthalten die Kernanwendungen benötigt zum Booten und die über /usralle anderen Benutzer und Systemanwendungen.

djsumdog
quelle
5

Der whereisBefehl sucht die Binär-, Quell- und Handbuchdateien für einen Befehl und gibt an type, was genau die Shell ausführt, wenn Sie einen bestimmten Befehl ausführen.
Versuchen Sie es whereis -l fluidplotin Ihrem Fall.

Wenn nur "fluidplot:", aber kein Pfad zurückgegeben wird, bedeutet dies, dass die Software nicht installiert ist.

Beachten Sie, dass dies keine Dateien einschließt, die ~/.local/share/(in meinem Fall) im Basisordner unter versteckt sind .

Gefunden unter Linux Screw

魔 魔 大
quelle
Betreff: "das schließt nicht ein ...", es ist nicht klar, ob es sich um type , whereis oder beides handelt.
Agc
4

Nur um @ djsumdogs Antwort einen Punkt hinzuzufügen, wenn Sie DPKG-basierte dist verwenden, wie Ubuntu, können Sie verwenden

dpkg --status some_package

um zu überprüfen, worum es geht, und

dpkg --listfiles some_package

um zu überprüfen, welche Dateien in diesem Paket enthalten / relevant sind. Es ist für Pakete gedacht, die keine Binärdatei haben libnss3. Und

dpkg --search some_file

um herauszufinden, welches Paket diese Datei enthält.

Zum Beispiel dpkg --listfiles libnss3gibt mir:

/.
/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

Beachten Sie, dass die Ordner nicht nur diesen Paketen gehören, sondern auch anderen. Überprüfen Sie einfach die Dateien.

Und umgekehrt, dpkg --search libnss3.sogibt mir:

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
WesternGun
quelle
0

Anstatt zu verwenden which( was wahrscheinlich nicht die richtige Wahl ist, wenn Sie nicht csh verwenden ), können command -v fluidplotSie die Shell dazu bringen, sich wie eine Shell zu bewegen, um Ihnen mitzuteilen, was sie tun würde, wenn Sie sie auffordern würden, den Befehl auszuführen ( fluidplotin diesem Beispiel). .

Einige Beispiele für mich:

$ 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

Sie können damit auch testen, ob überhaupt ein Befehl gefunden und ausgeführt werden würde. Da die meisten von uns Bourne-ähnliche Shells verwenden (z. B. bash oder zsh), ist dies oft vorzuziehenwhich

Eric Renouf
quelle