Как найти путь установки программного обеспечения под Linux?


71

В Linux я запускаю программное обеспечение, набирая, например, FluidPlot. Как я могу найти путь установки для этого программного обеспечения?


Возможный дубликат 18472 года
Сакиск

Ответы:


62

Вы можете использовать:

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


4
или проверьте, является ли программа псевдонимом, например alias fluidpoint,
Чад Феллер

2
@Chad Некоторые версии which(например, встроенная в ZSH) сделают это за вас
Майкл Мрозек

@ Майкл, это прекрасно. Из-за вашего комментария я только что обнаружил, что более новые версии bash также делают это. +1 к вашему комментарию.
Чад Феллер

Строка "Обычно они ..." довольно неискренняя, дополнительное ПО должно быть в /opt/*или /usr/local/bin. ~это ваш домашний каталог, я запутался, почему вы называете его "скрытым".
Стив

Извините за неоднозначность, я имею в виду ~/.dir. Скрытый каталог находится под домашним каталогом. И я совсем забыл про /usr/local/binдоп.
n0pe

13

Если вы используете 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, значки / графика / документы находятся в / поделиться, конфигурация в /etcи данные программы в /var.

/bin, /lib, /sbinСодержат основные приложения , необходимые для загрузки и /usrсодержит все другие пользовательские приложения и системы.


5

Команда whereisнаходит двоичные файлы, исходные файлы и файлы справочных страниц для команды, и typeкоманда сообщает, что именно выполняет оболочка при выполнении определенной команды.
Попробуйте whereis -l fluidplotв вашем случае.

Если он возвращает только «FluidPlot:», но не путь, это означает, что программное обеспечение не установлено.

Обратите внимание, что это не включает файлы, которые могут быть скрыты в домашней папке в ~/.local/share/(в моем случае).

Найден на винте Linux


Re: «это не включает в себя ...», не ясно, относится ли это к типу , whereis , или оба.
agc

4

Просто чтобы добавить точку в ответ @ djsumdog, если вы используете dist на основе DPKG, например, Ubuntu, вы можете использовать

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

0

Вместо того, чтобы использовать 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

так что вы также можете использовать его, чтобы проверить, найдется ли команда и будет ли она выполнена. Поскольку большинство из нас использует оболочки типа Борна (например, bash или zsh), это часто предпочтительнееwhich

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.