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

Вопрос или проблема

Под 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>

Выведет местоположение всех файлов, входящих в данный пакет

Просто введите команду в терминал Linux whereis toolsname. Я искал так: whereis ping
введите описание изображения здесь

Вместо использования 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"

Есть достаточно хорошие шансы, что вы увидите путь к программе (если она запущена)

Кажется, основная цель упущена, так как ссылки разбросаны, но само приложение находится в одном месте. Как найти?

  1. whereis “symlink”
    результат будет выглядеть так: /usr/bin/”symlink”
    посмотрите на местоположение символической ссылки, затем выполните

  2. ls -al /usr/bin |grep “symlink”
    это выведет строку, которая сообщит, где находится приложение, как, например

postman -> /opt/Postman/Postman

Зависит от вашей дистрибуции Linux или источника установки.

Так что я перечислю несколько из тех, которые я могу вспомнить, которые могут помочь вам сделать то, что вы спросили, практически для любой дистрибуции:

  1. which: Показывает путь к исполняемому файлу.
which fluidplot
  1. whereis: Предоставляет местоположения бинарного, исходного кода и файлов справочной страницы.
whereis fluidplot
  1. whatis: Дает краткое описание команды.
whatis fluidplot
  1. command -v: Показывает путь к исполняемому файлу, аналогично which.
command -v fluidplot
  1. command -V: Предоставляет более подробное описание, включая путь.
command -V fluidplot
  1. type: Показывает, как интерпретируется имя команды.
type fluidplot
  1. dpkg-query: Выводит информацию о установленных пакетах (дистрибутивы на базе Debian).
dpkg-query -L fluidplot
  1. dpkg -l: Выводит все установленные пакеты и их статусы (дистрибутивы на базе Debian).
dpkg -l | grep fluidplot
  1. rpm -ql: Для дистрибутивов на основе RPM, таких как Fedora, CentOS и RHEL, эта команда выводит все файлы, установленные пакетом.
rpm -ql fluidplot
  1. locate: Быстро находит путь к файлам и директориям, используя базу данных.
locate fluidplot

Это должно помочь найти путь установки и дополнительную информацию о почти всех программах в почти всех дистрибутивах Linux.

Надеюсь, это поможет!

Ответ или решение

Чтобы обнаружить путь установки программного обеспечения в Linux, есть несколько методов, которые могут быть полезны в зависимости от вашего дистрибутива и типа установленного ПО. Давайте рассмотрим наиболее распространенные команды и подходы:

  1. Команда which: Этот инструмент помогает определить, откуда именно в системе вызывается команда. Например:

    which fluidplot

    Если программа находится в вашем $PATH, команда выдаст полный путь к исполняемому файлу.

  2. Команда whereis: Позволяет получить расположение исполняемых файлов, исходников и man-страниц программы. Используйте команду следующим образом:

    whereis fluidplot
  3. Команда find: Очень полезна для поиска файлов по имени по всей файловой системе. Она может занять некоторое время, но эффективна при поиске. Пример использования:

    find / -name fluidplot 2> /dev/null

    Эта команда исключает ошибки, возникающие при доступе к виртуальным файловым системам.

  4. Пакетные менеджеры: В зависимости от вашего дистрибутива, вы можете узнать информацию о программе с помощью пакетных менеджеров.

    • Для дистрибутивов на базе Debian/Ubuntu: Используйте команду dpkg.

      dpkg --listfiles fluidplot

      Для поиска пакета по файлу:

      dpkg --search fluidplot
    • Для RPM-дистрибутивов (например, CentOS, RHEL): Используйте rpm.

      rpm -ql fluidplot
    • Для Arch-based систем:

      pacman -Ql fluidplot
  5. Команда type и command: Помогают выявить интерпретацию и путь исполнения команды в текущем окружении оболочки.

    type fluidplot
    command -v fluidplot
  6. Проверка на работающие процессы: Можно проверить, запущен ли процесс и какой путь к его исполняемому файлу:

    ps aux | grep fluidplot

Эти методы помогут вам определить как путь установки программы, так и ее исполняемые файлы в различных Linux-дистрибутивах. Следуя этим инструкциям, вы можете эффективно управлять своими программными ресурсами и лучше понимать структуру файлов вашей системы.

Оцените материал
Добавить комментарий

Капча загружается...