¿Cómo encontrar la ruta de instalación de un software en Linux?

71

En Linux, ejecuto un software escribiendo, por ejemplo, fluidplot. ¿Cómo puedo encontrar la ruta de instalación para este software?

usuario5997
fuente
Posible duplicado de 18472
sakisk

Respuestas:

62

Puedes usar:

which fluidpoint

para ver desde dónde se está ejecutando (si está en su $ PATH). O:

find / -name fluidpoint 2> /dev/null

para buscar un archivo llamado fluipoint y redirigir errores en sistemas de archivos virtuales.

Por lo general, se encuentran en /sbin, /usr/sbin, /usr/local/bino ~como un directorio oculto.

Del manual:

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

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

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

n0pe
fuente
44
o verifique si el programa es realmente un alias, por ejemplo alias fluidpoint,
Chad Feller
2
@Chad Algunas versiones de which(por ejemplo, la integrada en ZSH) lo harán por usted
Michael Mrozek
@Michael excelente para saber. Debido a tu comentario, acabo de descubrir que las versiones más nuevas de bash también hacen esto. +1 a tu comentario
Chad Feller
La línea "Usualmente son ..." es bastante falsa, el software adicional debería estar en /opt/*o /usr/local/bin. ~es tu directorio personal, estoy confundido por qué lo llamas "oculto".
Steve-o
Perdón por ser ambiguo, quiero decir ~/.dir. El directorio oculto está debajo del directorio de inicio. Y me olvidé por completo del /usr/local/bindop.
n0pe
13

Si usa una distribución basada en RPM (CentOS, RHEL, SUSE, openSUSE) puede usar rpm -ql

Ejemplo:

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

Las cosas no están instaladas en ubicaciones en el mundo Linux / UNIX como lo están en el mundo Windows (e incluso en el mundo Mac). Están más distribuidos. Los binarios están en /bino /sbin, las bibliotecas están en /lib, los iconos / gráficos / documentos están en / compartir, la configuración está en /etcy los datos del programa están en /var.

El /bin, /lib, /sbincontienen las aplicaciones básicas necesarias para el arranque y la /usrcontiene todas las otras aplicaciones de usuario y del sistema.

djsumdog
fuente
5

El whereiscomando localiza los archivos binarios, de origen y de página manual para un comando, y el typecomando le dice exactamente qué ejecuta el shell cuando ejecuta un determinado comando.
Prueba whereis -l fluidploten tu caso.

Si solo devuelve "fluidplot:", pero no hay ruta, significa que el software no está instalado.

Tenga en cuenta que esto no incluye archivos que pueden estar ocultos dentro de la carpeta de inicio en ~/.local/share/(en mi caso).

Encontrado en Linux Screw

魔 大 农
fuente
Re: "esto no incluye ...", no está claro si esto se refiere a tipo , whereis o ambos.
agc
4

Solo para agregar algún punto a la respuesta de @ djsumdog, si está usando dist basado en DPKG, como Ubuntu, puede usar

dpkg --status some_package

para comprobar de qué se trata, y

dpkg --listfiles some_package

para verificar qué archivos están incluidos / relevantes para este paquete. Es para paquetes que no tienen un binario para ejecutar, como libnss3. Y

dpkg --search some_file

para encontrar qué paquete incluye este archivo.

Por ejemplo, dpkg --listfiles libnss3me da:

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

Tenga en cuenta que las carpetas no solo son propiedad de estos paquetes, sino también de otros. Solo revisa los archivos.

Y a la inversa, dpkg --search libnss3.some da:

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
fuente
0

En lugar de usar which( que probablemente no sea la opción correcta a menos que esté usando csh ), puede usar command -v fluidplotpara que el shell se sintonice como shell para decirle qué haría si le pidiera que ejecutara el comando ( fluidploten este ejemplo) .

Algunos ejemplos para mi:

$ 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

así que también puede usarlo para probar si un comando incluso se encontraría e intentaría ejecutarse. Como la mayoría de nosotros usamos shells tipo Bourne (por ejemplo, bash o zsh), esto es preferible awhich

Eric Renouf
fuente