Come trovare il percorso di installazione di un software su Linux?


Risposte:


62

Puoi usare:

which fluidpoint

per vedere da dove viene eseguito (se è nel tuo $ PATH). O:

find / -name fluidpoint 2> /dev/null

per cercare un file chiamato fluipoint e reindirizzare gli errori sui filesystem virtuali.

Di solito sono in /sbin, /usr/sbin, /usr/local/bino ~come una directory nascosta.

Dal manuale:

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

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

Manuale completo: https://linux.die.net/man/1/which


4
oppure verifica se il programma è effettivamente un alias, ad esempio alias fluidpoint,
Chad Feller,

2
@Chad Alcune versioni di which(ad esempio quella integrata in ZSH) lo faranno per te
Michael Mrozek

@Michael eccellente da sapere. Grazie al tuo commento, ho appena scoperto che anche le versioni più recenti di bash lo fanno. +1 al tuo commento.
Chad Feller,

La linea "Solitamente sono ..." è piuttosto disonesta, software aggiuntivo dovrebbe essere in /opt/*o /usr/local/bin. ~è la tua home directory, sono confuso perché lo chiami "nascosto".
Steve-o

Mi dispiace essere ambiguo, intendo ~/.dir. La directory nascosta si trova sotto la home directory. E mi ero completamente dimenticato del /usr/local/bindop.
n0pe

13

Se si utilizza una distribuzione basata su RPM (CentOS, RHEL, SUSE, openSUSE) è possibile utilizzare rpm -ql

Esempio:

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

Le cose non sono installate in posizioni nel mondo Linux / UNIX come se fossero nel mondo Windows (e persino in qualche modo nel Mac). Sono più distribuiti. I binari sono in /bino /sbin, le librerie sono in /lib, icone / grafici / documenti sono in / condividi, la configurazione è in /etce i dati del programma sono in /var.

La /bin, /lib, /sbincontengono le applicazioni di base necessarie per l'avvio e la /usrcontiene tutte le altre applicazioni utente e di sistema.


5

Il whereiscomando individua i file binari, di origine e della pagina del manuale per un comando e il typecomando indica esattamente cosa esegue la shell quando si esegue un determinato comando.
Prova whereis -l fluidplotnel tuo caso.

Se restituisce solo "fluidplot:", ma nessun percorso, significa che il software non è installato.

Nota che questo non include i file che potrebbero essere nascosti nella cartella home in ~/.local/share/(nel mio caso).

Trovato su Linux Screw


Ri: "questo non include ...", non è chiaro se questo si riferisca al tipo , a dove o ad entrambi.
agc,

4

Solo per aggiungere qualche punto alla risposta di @ djsumdog, se stai usando la dist basata su DPKG, come Ubuntu, puoi usare

dpkg --status some_package

per controllare di cosa si tratta, e

dpkg --listfiles some_package

per verificare quali file sono inclusi / rilevanti per questo pacchetto. È per i pacchetti che non hanno un binario da eseguire, come libnss3. E

dpkg --search some_file

per trovare quale pacchetto include questo file.

Ad esempio, dpkg --listfiles libnss3mi dà:

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

Si noti che le cartelle non sono solo di proprietà di questi pacchetti, ma anche di altri. Controlla i file.

E al contrario, dpkg --search libnss3.somi dà:

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

0

Invece di usare which( che probabilmente non è la scelta giusta a meno che tu non stia usando csh ) puoi usare command -v fluidplotper far sintonizzare la shell come shell per dirti cosa farebbe se gli chiedessi di eseguire il comando ( fluidplotin questo esempio) .

Alcuni esempi per me:

$ 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

quindi puoi anche usarlo per verificare se un comando sarebbe stato persino trovato e tentato di essere eseguito. Poiché la maggior parte di noi utilizza shell tipo Bourne (ad esempio, bash o zsh), è spesso preferibilewhich

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.