Làm thế nào để tìm đường dẫn cài đặt cho một phần mềm trong linux?


71

Trong linux, tôi khởi chạy một phần mềm bằng cách gõ, ví dụ, liquidplot. Làm thế nào tôi có thể tìm thấy đường dẫn cài đặt cho phần mềm này?


Bản sao có thể có của 18472
sakisk

Câu trả lời:


62

Bạn có thể dùng:

which fluidpoint

để xem nó đang thực thi từ đâu (nếu nó nằm trong $ PATH của bạn). Hoặc là:

find / -name fluidpoint 2> /dev/null

để tìm một tệp có tên fluipoint và chuyển hướng lỗi trên các hệ thống tệp ảo.

Thông thường họ đang ở /sbin, /usr/sbin, /usr/local/binhoặc ~như một thư mục ẩn.

Từ hướng dẫn:

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

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

Hướng dẫn đầy đủ: https://linux.die.net/man/1/which


4
hoặc kiểm tra xem chương trình thực sự là một bí danh, ví dụ như alias fluidpoint,
Chad Feller

2
@Chad Một số phiên bản của which(ví dụ: phiên bản tích hợp trong ZSH) sẽ làm điều đó cho bạn
Michael Mrozek

@Michael tuyệt vời để biết. Vì nhận xét của bạn, tôi mới phát hiện ra rằng các phiên bản bash mới hơn cũng làm điều này. +1 để bình luận của bạn.
Chad Feller

Dòng "Thông thường chúng là ..." khá không rõ ràng, phần mềm bổ sung nên có trong /opt/*hoặc /usr/local/bin. ~là thư mục nhà của bạn, tôi bối rối tại sao bạn gọi nó là "ẩn".
Steve-o

Xin lỗi để mơ hồ, ý tôi là ~/.dir. Thư mục ẩn bên dưới thư mục chính. Và tôi hoàn toàn quên mất /usr/local/bindop.
n0pe

13

Nếu bạn sử dụng phân phối dựa trên RPM (CentOS, RHEL, SUSE, openSUSE), bạn có thể sử dụng vòng / phút

Thí dụ:

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

Mọi thứ không được cài đặt vào các vị trí trong thế giới Linux / UNIX giống như chúng ở trong thế giới Windows (và thậm chí là phần nào trong thế giới Mac). Chúng được phân phối nhiều hơn. Các nhị phân nằm trong /binhoặc /sbin, các thư viện nằm trong /lib, các biểu tượng / đồ họa / tài liệu nằm trong / chia sẻ, cấu hình nằm trong /etcvà dữ liệu chương trình nằm trong /var.

Các /bin, /lib, /sbinchứa các ứng dụng cốt lõi cần thiết để khởi động và /usrchứa tất cả các ứng dụng người dùng và hệ thống khác.


5

Các whereislệnh nằm nhị phân, nguồn, và bằng tay-page file cho một lệnh, và các typelệnh nói chính xác những gì shell thực hiện khi bạn chạy một lệnh nào đó.
Hãy thử whereis -l fluidplottrong trường hợp của bạn.

Nếu nó chỉ trả về "liquidplot:", nhưng không có đường dẫn, điều đó có nghĩa là phần mềm chưa được cài đặt.

Lưu ý rằng điều này không bao gồm các tệp có thể bị ẩn trong thư mục chính bên dưới ~/.local/share/(trong trường hợp của tôi).

Tìm thấy trên Linux Vít


Re: "điều này không bao gồm ...", không rõ liệu điều này đề cập đến loại , trong đó hoặc cả hai.
agc

4

Chỉ cần thêm một số điểm vào câu trả lời của @ djsumdog, nếu bạn đang sử dụng dist dựa trên DPKG, như Ubuntu, bạn có thể sử dụng

dpkg --status some_package

để kiểm tra xem nó nói về cái gì

dpkg --listfiles some_package

để kiểm tra những tập tin được bao gồm / có liên quan đến gói này. Đó là cho các gói không có nhị phân để chạy, như libnss3. Và

dpkg --search some_file

để tìm gói nào bao gồm tập tin này.

Ví dụ: dpkg --listfiles libnss3đưa cho tôi:

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

Lưu ý rằng các thư mục không chỉ được sở hữu bởi các gói này, mà còn bởi các gói khác. Chỉ cần kiểm tra các tập tin.

Và ngược lại, dpkg --search libnss3.socho tôi:

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

Thay vì sử dụng which( có lẽ không phải là lựa chọn đúng trừ khi bạn sử dụng csh ), bạn có thể sử dụng command -v fluidplotđể lấy shell thành boune như shell để cho bạn biết nó sẽ làm gì nếu bạn yêu cầu nó chạy lệnh ( fluidplottrong ví dụ này) .

Một số ví dụ cho tôi:

$ 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

vì vậy bạn cũng có thể sử dụng nó để kiểm tra nếu một lệnh thậm chí sẽ được tìm thấy và cố gắng chạy. Vì hầu hết chúng ta sử dụng các shell giống như Bourne (ví dụ: bash hoặc zsh), điều này thường được ưa thích hơnwhich

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.