Bagaimana menemukan jalur instalasi untuk perangkat lunak di linux?

71

Di linux, saya meluncurkan perangkat lunak dengan mengetik, misalnya, fluidplot. Bagaimana saya bisa menemukan jalur instalasi untuk perangkat lunak ini?

pengguna5997
sumber
Kemungkinan rangkap 18472
sakisk

Jawaban:

62

Anda dapat gunakan:

which fluidpoint

untuk melihat dari mana ia dieksekusi (jika itu dalam $ PATH Anda). Atau:

find / -name fluidpoint 2> /dev/null

untuk mencari file bernama fluipoint dan mengarahkan kesalahan pada sistem file virtual.

Biasanya mereka berada di /sbin, /usr/sbin, /usr/local/binatau ~sebagai direktori tersembunyi.

Dari Manual:

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

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

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

n0pe
sumber
4
atau periksa untuk melihat apakah program tersebut sebenarnya adalah alias, misalnya alias fluidpoint,
Chad Feller
2
@Chad Beberapa versi which(mis. Yang ada di ZSH) akan melakukannya untuk Anda
Michael Mrozek
@ Michael sangat baik untuk tahu. Karena komentar Anda, saya baru tahu bahwa versi bash yang lebih baru juga melakukan ini. Beri +1 pada komentar Anda.
Chad Feller
Baris "Biasanya mereka ..." sangat tidak jujur, perangkat lunak tambahan harus dalam /opt/*atau /usr/local/bin. ~adalah direktori home Anda, saya bingung mengapa Anda menyebutnya "tersembunyi".
Steve-o
Maaf karena ambigu, maksudku ~/.dir. Direktori tersembunyi di bawah direktori home. Dan saya benar-benar lupa tentang /usr/local/bindop.
n0pe
13

Jika Anda menggunakan distribusi berbasis RPM (CentOS, RHEL, SUSE, openSUSE) Anda dapat menggunakan rpm -ql

Contoh:

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

Hal-hal tidak diinstal ke lokasi di dunia Linux / UNIX seperti di dunia Windows (dan bahkan agak di Mac). Mereka lebih terdistribusi. Binari ada di /binatau /sbin, perpustakaan ada di /lib, ikon / grafik / dokumen ada di / bagikan, konfigurasi ada di dalam /etcdan data program ada di /var.

The /bin, /lib, /sbinmengandung aplikasi inti yang diperlukan untuk booting dan /usrberisi semua pengguna dan sistem aplikasi lain.

djsumdog
sumber
5

The whereisperintah menempatkan biner, sumber, dan manual-halaman file untuk perintah, dan typeperintah memberitahu apa sebenarnya shell mengeksekusi ketika Anda menjalankan perintah tertentu.
Coba whereis -l fluidplotdalam kasus Anda.

Jika hanya mengembalikan "fluidplot:", tetapi tidak ada jalur, itu berarti perangkat lunak tidak diinstal.

Perhatikan bahwa ini tidak termasuk file yang mungkin disembunyikan di dalam folder rumah di bawah ~/.local/share/(dalam kasus saya).

Ditemukan di Linux Screw

魔 大 农
sumber
Re: "ini tidak termasuk ...", tidak jelas apakah ini merujuk pada tipe , whereis , atau keduanya.
agc
4

Hanya dengan menambahkan beberapa titik pada jawaban @djsumdog, jika Anda menggunakan dist berbasis DPKG, seperti Ubuntu, Anda dapat menggunakan

dpkg --status some_package

untuk memeriksa tentang apa, dan

dpkg --listfiles some_package

untuk memeriksa file apa yang termasuk / relevan dengan paket ini. Ini untuk paket yang tidak memiliki biner untuk dijalankan libnss3. Dan

dpkg --search some_file

untuk menemukan paket apa yang termasuk file ini.

Misalnya, dpkg --listfiles libnss3beri saya:

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

Perhatikan bahwa folder tidak hanya dimiliki oleh paket ini, tetapi juga oleh orang lain. Periksa saja file-nya.

Dan sebaliknya, dpkg --search libnss3.somemberi saya:

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

Alih-alih menggunakan which( yang mungkin bukan pilihan yang tepat kecuali jika Anda menggunakan csh ) Anda dapat menggunakan command -v fluidplotuntuk mendapatkan shell untuk bouncing seperti shell untuk memberi tahu Anda apa yang akan dilakukan jika Anda memintanya untuk menjalankan perintah ( fluidplotdalam contoh ini) .

Beberapa contoh untuk saya:

$ 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

jadi Anda juga dapat menggunakannya untuk menguji apakah suatu perintah bahkan akan ditemukan dan berusaha dijalankan. Karena sebagian besar dari kita menggunakan cangkang mirip Bourne (misalnya, bash atau zsh) ini sering lebih disukaiwhich

Eric Renouf
sumber