จะหาพา ธ การติดตั้งสำหรับซอฟต์แวร์ภายใต้ 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ไม่
Chad Feller

2
@Chad which(เช่นรุ่นที่สร้างใน ZSH) บางรุ่นจะทำเพื่อคุณ
Michael Mrozek

@ Michael ที่ยอดเยี่ยมที่จะรู้ เนื่องจากความคิดเห็นของคุณฉันเพิ่งค้นพบว่า bash รุ่นใหม่ยังทำเช่นนี้ +1 กับความคิดเห็นของคุณ
Chad Feller

ว่า "พวกเขามักจะเป็น ..." สายเลศนัยสวยซอฟต์แวร์เพิ่มเติมควรจะอยู่ในหรือ /opt/* เป็นไดเรกทอรีบ้านของคุณฉันสับสนว่าทำไมคุณถึงเรียกว่า "ซ่อน" /usr/local/bin~
Steve-o

~/.dirขออภัยที่จะคลุมเครือผมหมายถึง ไดเรกทอรีที่ซ่อนอยู่ด้านล่างไดเรกทอรีบ้าน และฉันก็ลืมเรื่อง/usr/local/bindop โดยสิ้นเชิง
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: "นี้ไม่รวมถึง ..." ก็ไม่ชัดเจนว่านี้หมายถึงการพิมพ์ , whereisหรือทั้งสองอย่าง
agc

4

เพียงเพิ่มบางประเด็นให้กับคำตอบของ @ djsumdog ถ้าคุณใช้ DPKG based dist เช่น 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เพื่อให้เชลล์เหมือน boune เพื่อบอกคุณว่าจะทำอย่างไรถ้าคุณขอให้เรียกใช้คำสั่ง ( 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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.