Як знайти шлях установки для програмного забезпечення під Linux?


71

Під Linux я запускаю програмне забезпечення, ввівши, наприклад, fluidplot. Як знайти шлях встановлення цього програмного забезпечення?


Можливий дублікат 18472
sakisk

Відповіді:


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) зроблять це для вас
Michael Mrozek

@Michael чудово знати. Через ваш коментар я щойно виявив, що новіші версії 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 Screw


Re: "це не включає ...", незрозуміло, чи відноситься це до типу , де або обох.
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.