Вопрос или проблема
Под Linux я запускаю программу, вводя, например, fluidplot. Как я могу найти путь установки этой программы?
Вы можете использовать:
which fluidpoint
чтобы увидеть, откуда она выполняется (если она в вашем $PATH). Или:
find / -name fluidpoint 2> /dev/null
чтобы найти файл с именем fluipoint и перенаправить ошибки с виртуальных файловых систем.
Обычно они находятся в /sbin
, /usr/sbin
, /usr/local/bin
или ~
как скрытая директория.
Из Руководства:
NAME
which - показывает полный путь (shell) команд.
SYNOPSIS
which [options] [--] programname [...]
Полное руководство: https://linux.die.net/man/1/which
Если вы используете дистрибутив на основе 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
Вещи устанавливаются не так, как в мире Windows (и даже в какой-то степени в мире Mac). Они более распределены. Бинарные файлы находятся в /bin
или /sbin
, библиотеки в /lib
, иконки/графика/документы в /share, конфигурация в /etc
, а данные программ в /var
.
/bin
, /lib
, /sbin
содержат основные приложения, необходимые для загрузки, а /usr
содержит все остальные пользовательские и системные приложения.
Добавляем к ответу @djsumdog, если вы используете дистрибутив основанный на 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
Команда whereis
определяет местонахождение файлов бинарного, исходного кода и файлов справочной страницы для команды, а команда type
показывает, что именно выполняет оболочка при запуске определенной команды.
Попробуйте whereis -l fluidplot
в вашем случае. Если он возвращает только “fluidplot:”, но без пути, это означает, что программа не установлена. Обратите внимание, что это не включает файлы, которые могут быть скрыты в домашней папке под ~/.local/share/
(в моем случае).
Найдено на Linux Screw
На системах на основе Arch:
pacman -Qo <somefile>
Выведет пакет, которому принадлежит somefile.
pacman -Ql <package>
Выведет местоположение всех файлов, входящих в данный пакет
Вместо использования which
(вероятно, не лучший выбор, если вы не используете csh) вы можете использовать command -v fluidplot
, чтобы оболочка наподобие Bourne сообщила, что она сделает, если вы попросите ее запустить команду (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
Вы можете попробовать выполнить:
ps aux | grep "THE_NAME_OF_A_PROGRAM"
Есть достаточно хорошие шансы, что вы увидите путь к программе (если она запущена)
Кажется, основная цель упущена, так как ссылки разбросаны, но само приложение находится в одном месте. Как найти?
-
whereis “symlink”
результат будет выглядеть так: /usr/bin/”symlink”
посмотрите на местоположение символической ссылки, затем выполните -
ls -al /usr/bin |grep “symlink”
это выведет строку, которая сообщит, где находится приложение, как, например
postman -> /opt/Postman/Postman
Зависит от вашей дистрибуции Linux или источника установки.
Так что я перечислю несколько из тех, которые я могу вспомнить, которые могут помочь вам сделать то, что вы спросили, практически для любой дистрибуции:
- which: Показывает путь к исполняемому файлу.
which fluidplot
- whereis: Предоставляет местоположения бинарного, исходного кода и файлов справочной страницы.
whereis fluidplot
- whatis: Дает краткое описание команды.
whatis fluidplot
- command -v: Показывает путь к исполняемому файлу, аналогично which.
command -v fluidplot
- command -V: Предоставляет более подробное описание, включая путь.
command -V fluidplot
- type: Показывает, как интерпретируется имя команды.
type fluidplot
- dpkg-query: Выводит информацию о установленных пакетах (дистрибутивы на базе Debian).
dpkg-query -L fluidplot
- dpkg -l: Выводит все установленные пакеты и их статусы (дистрибутивы на базе Debian).
dpkg -l | grep fluidplot
- rpm -ql: Для дистрибутивов на основе RPM, таких как Fedora, CentOS и RHEL, эта команда выводит все файлы, установленные пакетом.
rpm -ql fluidplot
- locate: Быстро находит путь к файлам и директориям, используя базу данных.
locate fluidplot
Это должно помочь найти путь установки и дополнительную информацию о почти всех программах в почти всех дистрибутивах Linux.
Надеюсь, это поможет!
Ответ или решение
Чтобы обнаружить путь установки программного обеспечения в Linux, есть несколько методов, которые могут быть полезны в зависимости от вашего дистрибутива и типа установленного ПО. Давайте рассмотрим наиболее распространенные команды и подходы:
-
Команда
which
: Этот инструмент помогает определить, откуда именно в системе вызывается команда. Например:which fluidplot
Если программа находится в вашем
$PATH
, команда выдаст полный путь к исполняемому файлу. -
Команда
whereis
: Позволяет получить расположение исполняемых файлов, исходников и man-страниц программы. Используйте команду следующим образом:whereis fluidplot
-
Команда
find
: Очень полезна для поиска файлов по имени по всей файловой системе. Она может занять некоторое время, но эффективна при поиске. Пример использования:find / -name fluidplot 2> /dev/null
Эта команда исключает ошибки, возникающие при доступе к виртуальным файловым системам.
-
Пакетные менеджеры: В зависимости от вашего дистрибутива, вы можете узнать информацию о программе с помощью пакетных менеджеров.
-
Для дистрибутивов на базе Debian/Ubuntu: Используйте команду
dpkg
.dpkg --listfiles fluidplot
Для поиска пакета по файлу:
dpkg --search fluidplot
-
Для RPM-дистрибутивов (например, CentOS, RHEL): Используйте
rpm
.rpm -ql fluidplot
-
Для Arch-based систем:
pacman -Ql fluidplot
-
-
Команда
type
иcommand
: Помогают выявить интерпретацию и путь исполнения команды в текущем окружении оболочки.type fluidplot
command -v fluidplot
-
Проверка на работающие процессы: Можно проверить, запущен ли процесс и какой путь к его исполняемому файлу:
ps aux | grep fluidplot
Эти методы помогут вам определить как путь установки программы, так и ее исполняемые файлы в различных Linux-дистрибутивах. Следуя этим инструкциям, вы можете эффективно управлять своими программными ресурсами и лучше понимать структуру файлов вашей системы.