web-dev-qa-db-ja.com

Linuxでのソフトウェアのインストールパスを見つける方法は?

Linuxでは、たとえばfluidplotと入力してソフトウェアを起動します。このソフトウェアのインストールパスを見つけるにはどうすればよいですか?

80
user5997

以下を使用できます。

which fluidpoint

それがどこから実行されているかを確認します($ PATHにある場合)。または:

find / -name fluidpoint 2> /dev/null

fluipointという名前のファイルを探し、仮想ファイルシステム上のエラーをリダイレクトします。

通常は/sbin/usr/sbin/usr/local/binまたは~を隠しディレクトリとして。

マニュアルから:

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

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

完全なマニュアル: https://linux.die.net/man/1/which

70
n0pe

RPMベースのディストリビューション(CentOS、RHEL、SUSE、openSUSE)を使用している場合は、rpm -qlを使用できます。

例:

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

Linux/UNIXの世界では、Windows(およびMacでも)のように、物事はインストールされていません。彼らはより分散しています。バイナリは/binまたは/sbinにあり、ライブラリは/libにあり、アイコン/グラフィックス/ドキュメントは/ shareにあり、構成は/etcにあり、プログラムデータは/var

/bin/lib/sbinには起動に必要なコアアプリケーションが含まれ、/usrにはその他すべてのユーザーおよびシステムアプリケーションが含まれます。

14
djsumdog

whereisコマンドは、コマンドのバイナリファイル、ソースファイル、およびマニュアルページファイルを検索し、typeコマンドは、特定のコマンドを実行したときにシェルが何を実行するかを示します。

あなたのケースでwhereis -l fluidplotを試してください。 「fluidplot:」のみが返され、パスが返されない場合は、ソフトウェアがインストールされていません。これには、~/.local/share/(私の場合)のホームフォルダー内で非表示になっている可能性があるファイルは含まれません。

Linux Screw にあります

6
魔大农

@djsumdogの答えにいくつかのポイントを追加するために、UbuntuのようにDPKGベースのdistを使用している場合は、

dpkg --status some_package

それが何であるかを確認し、

dpkg --listfiles some_package

このファイルに含まれる/関連するファイルを確認します。 libnss3のように、実行するバイナリがないパッケージ用です。そして

dpkg --search some_file

このファイルが含まれているパッケージを検索します。

たとえば、dpkg --listfiles libnss3を指定すると、次のようになります。

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

フォルダはこのパッケージだけでなく、他のパッケージも所有していることに注意してください。ファイルを確認してください。

そして逆に、dpkg --search libnss3.soは私に与えます:

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

あなたは走ることを試みることができます:

ps aux | grep "THE_NAME_OF_A_PROGRAM"

プログラムへのパスが表示される可能性はかなり高いです(実行中の場合)。

0
user213527

whichを使用する代わりに( cshを使用していない限り、これはおそらく正しい選択ではありませんcommand -v fluidplotは、コマンドを実行するように依頼した場合に何をするかをシェルに指示するように、シェルを攻撃させます(この例ではfluidplot)。

私のためのいくつかの例:

$ 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

そのため、コマンドを見つけて実行を試みるかどうかをテストするためにも使用できます。私たちのほとんどはBourneのようなシェル(bashやzshなど)を使用しているため、これはwhichよりも望ましい場合が多い

0
Eric Renouf