จะตรวจสอบว่ามีการติดตั้งไลบรารี่ที่แชร์ได้อย่างไร?


14

คำถามของฉันมาจากปัญหาของฉันในการเริ่ม ffmpeg ฉันติดตั้ง ffmpeg แล้วและมันจะแสดงขึ้นเมื่อติดตั้ง:

whereis ffmpeg 
ffmpeg: /usr/bin/ffmpeg /usr/bin/X11/ffmpeg /usr/share/ffmpeg /usr/share/man/man1/ffmpeg.1.gz

ต่อมาฉันก็พบว่าบางโปรแกรมขึ้นอยู่กับไลบรารีที่ไม่ได้มาพร้อมกับการติดตั้งเองดังนั้นฉันจึงตรวจสอบด้วยคำสั่ง ldd ว่ามีอะไรหายไปบ้าง:

# ldd /usr/bin/ffmpeg
    linux-vdso.so.1 =>  (0x00007fff71fe9000)
    libavfilter.so.0 => not found
    libpostproc.so.51 => not found
    libswscale.so.0 => not found
    libavdevice.so.52 => not found
    libavformat.so.52 => not found
    libavcodec.so.52 => not found
    libavutil.so.49 => not found
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f5f20bdf000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f5f209c0000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5f205fb000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f5f20f09000)

ตามที่ปรากฎว่า ffmpeg ของฉันถูกตัดออกจาก 7 ไลบรารี่เกินไป ฉันแรกคิดว่าแต่ละไลบรารีเหล่านั้นจะต้องติดตั้ง แต่กว่าฉันคิดออกว่าบางส่วนหรือทั้งหมดอาจถูกติดตั้ง แต่ที่ตั้งของพวกเขาไม่รู้จัก ffmpeg ฉันอ่านว่า /etc/ld.so.conf และ /etc/ld.so.cache มีเส้นทางไปยังห้องสมุด แต่ฉันสับสนเพราะมีเพียงบรรทัดเดียวใน

/etc/ld.so.conf
 cat /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf

/etc/ld.so.cacheแต่นานมาก

ตอนนี้ฉันอยู่ในจุดที่ฉันรู้สึกสูญเสียวิธีการตรวจสอบเพิ่มเติมมันอาจเป็นขั้นตอนต่อไปในการคิดออกว่าฉันจะทราบได้อย่างไรว่าห้องสมุดที่กำหนดนั้นได้รับการติดตั้งแน่นอนแม้ว่าจะไม่ทราบตำแหน่งของ ffmpeg ก็ตาม

---------Output---of----apt-cache-policy-----request---------
apt-cache policy
Package files:
 100 /var/lib/dpkg/status
     release a=now
 500 http://archive.canonical.com/ubuntu/ trusty/partner Translation-en
 500 http://archive.canonical.com/ubuntu/ trusty/partner i386 Packages
     release v=14.04,o=Canonical,a=trusty,n=trusty,l=Partner archive,c=partner
     origin archive.canonical.com
 500 http://archive.canonical.com/ubuntu/ trusty/partner amd64 Packages
     release v=14.04,o=Canonical,a=trusty,n=trusty,l=Partner archive,c=partner
     origin archive.canonical.com
 500 http://security.ubuntu.com/ubuntu/ trusty-security/universe Translation-en
 500 http://security.ubuntu.com/ubuntu/ trusty-security/restricted Translation-en
 500 http://security.ubuntu.com/ubuntu/ trusty-security/multiverse Translation-en
 500 http://security.ubuntu.com/ubuntu/ trusty-security/main Translation-en
 500 http://security.ubuntu.com/ubuntu/ trusty-security/multiverse i386 Packages
     release v=14.04,o=Ubuntu,a=trusty-security,n=trusty,l=Ubuntu,c=multiverse
     origin security.ubuntu.com
 500 http://security.ubuntu.com/ubuntu/ trusty-security/universe i386 Packages
     release v=14.04,o=Ubuntu,a=trusty-security,n=trusty,l=Ubuntu,c=universe
     origin security.ubuntu.com
 500 http://security.ubuntu.com/ubuntu/ trusty-security/restricted i386 Packages
     release v=14.04,o=Ubuntu,a=trusty-security,n=trusty,l=Ubuntu,c=restricted
     origin security.ubuntu.com
 500 http://security.ubuntu.com/ubuntu/ trusty-security/main i386 Packages
     release v=14.04,o=Ubuntu,a=trusty-security,n=trusty,l=Ubuntu,c=main
     origin security.ubuntu.com
 500 http://security.ubuntu.com/ubuntu/ trusty-security/multiverse amd64 Packages
     release v=14.04,o=Ubuntu,a=trusty-security,n=trusty,l=Ubuntu,c=multiverse
     origin security.ubuntu.com
 500 http://security.ubuntu.com/ubuntu/ trusty-security/universe amd64 Packages
     release v=14.04,o=Ubuntu,a=trusty-security,n=trusty,l=Ubuntu,c=universe
     origin security.ubuntu.com
 500 http://security.ubuntu.com/ubuntu/ trusty-security/restricted amd64 Packages
     release v=14.04,o=Ubuntu,a=trusty-security,n=trusty,l=Ubuntu,c=restricted
     origin security.ubuntu.com
 500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages
     release v=14.04,o=Ubuntu,a=trusty-security,n=trusty,l=Ubuntu,c=main
     origin security.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty-updates/universe Translation-en
 500 http://archive.ubuntu.com/ubuntu/ trusty-updates/restricted Translation-en
 500 http://archive.ubuntu.com/ubuntu/ trusty-updates/multiverse Translation-en
 500 http://archive.ubuntu.com/ubuntu/ trusty-updates/main Translation-en
 500 http://archive.ubuntu.com/ubuntu/ trusty-updates/multiverse i386 Packages
     release v=14.04,o=Ubuntu,a=trusty-updates,n=trusty,l=Ubuntu,c=multiverse
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty-updates/universe i386 Packages
     release v=14.04,o=Ubuntu,a=trusty-updates,n=trusty,l=Ubuntu,c=universe
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty-updates/restricted i386 Packages
     release v=14.04,o=Ubuntu,a=trusty-updates,n=trusty,l=Ubuntu,c=restricted
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty-updates/main i386 Packages
     release v=14.04,o=Ubuntu,a=trusty-updates,n=trusty,l=Ubuntu,c=main
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty-updates/multiverse amd64 Packages
     release v=14.04,o=Ubuntu,a=trusty-updates,n=trusty,l=Ubuntu,c=multiverse
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty-updates/universe amd64 Packages
     release v=14.04,o=Ubuntu,a=trusty-updates,n=trusty,l=Ubuntu,c=universe
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty-updates/restricted amd64 Packages
     release v=14.04,o=Ubuntu,a=trusty-updates,n=trusty,l=Ubuntu,c=restricted
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages
     release v=14.04,o=Ubuntu,a=trusty-updates,n=trusty,l=Ubuntu,c=main
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty/universe Translation-en
 500 http://archive.ubuntu.com/ubuntu/ trusty/restricted Translation-en
 500 http://archive.ubuntu.com/ubuntu/ trusty/multiverse Translation-en
 500 http://archive.ubuntu.com/ubuntu/ trusty/main Translation-en
 500 http://archive.ubuntu.com/ubuntu/ trusty/multiverse i386 Packages
     release v=14.04,o=Ubuntu,a=trusty,n=trusty,l=Ubuntu,c=multiverse
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty/universe i386 Packages
     release v=14.04,o=Ubuntu,a=trusty,n=trusty,l=Ubuntu,c=universe
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty/restricted i386 Packages
     release v=14.04,o=Ubuntu,a=trusty,n=trusty,l=Ubuntu,c=restricted
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty/main i386 Packages
     release v=14.04,o=Ubuntu,a=trusty,n=trusty,l=Ubuntu,c=main
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty/multiverse amd64 Packages
     release v=14.04,o=Ubuntu,a=trusty,n=trusty,l=Ubuntu,c=multiverse
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty/universe amd64 Packages
     release v=14.04,o=Ubuntu,a=trusty,n=trusty,l=Ubuntu,c=universe
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty/restricted amd64 Packages
     release v=14.04,o=Ubuntu,a=trusty,n=trusty,l=Ubuntu,c=restricted
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
     release v=14.04,o=Ubuntu,a=trusty,n=trusty,l=Ubuntu,c=main
     origin archive.ubuntu.com
 700 http://extra.linuxmint.com/ rebecca/main i386 Packages
     release v=17.1,o=linuxmint,a=rebecca,n=rebecca,l=linuxmint,c=main
     origin extra.linuxmint.com
 700 http://extra.linuxmint.com/ rebecca/main amd64 Packages
     release v=17.1,o=linuxmint,a=rebecca,n=rebecca,l=linuxmint,c=main
     origin extra.linuxmint.com
 700 http://packages.linuxmint.com/ rebecca/import i386 Packages
     release v=17.1,o=linuxmint,a=rebecca,n=rebecca,l=linuxmint,c=import
     origin packages.linuxmint.com
 700 http://packages.linuxmint.com/ rebecca/upstream i386 Packages
     release v=17.1,o=linuxmint,a=rebecca,n=rebecca,l=linuxmint,c=upstream
     origin packages.linuxmint.com
 700 http://packages.linuxmint.com/ rebecca/main i386 Packages
     release v=17.1,o=linuxmint,a=rebecca,n=rebecca,l=linuxmint,c=main
     origin packages.linuxmint.com
 700 http://packages.linuxmint.com/ rebecca/import amd64 Packages
     release v=17.1,o=linuxmint,a=rebecca,n=rebecca,l=linuxmint,c=import
     origin packages.linuxmint.com
 700 http://packages.linuxmint.com/ rebecca/upstream amd64 Packages
     release v=17.1,o=linuxmint,a=rebecca,n=rebecca,l=linuxmint,c=upstream
     origin packages.linuxmint.com
 700 http://packages.linuxmint.com/ rebecca/main amd64 Packages
     release v=17.1,o=linuxmint,a=rebecca,n=rebecca,l=linuxmint,c=main
     origin packages.linuxmint.com
Pinned packages:

การกระจาย / OS ของคุณคืออะไร มีเหตุผลบางอย่างที่คุณไม่ได้ใช้ ffmpeg จากการแจกจ่ายของคุณหรือไม่?
Faheem Mitha

ฉันใช้ชื่อรหัส Linux มิ้นต์ Rebecca, ffmpeg ยังไม่ได้ติดตั้งในการกระจายของฉันเมื่อฉันพยายามติดตั้งโดย "apt-get install ffmpeg" ปรากฏว่าไม่มี ffmpeg (เฉพาะคำหลักในโปรแกรมอื่น ๆ ) ฉันเพิ่มที่เก็บ มันรวมอยู่และสามารถติดตั้งได้ แต่หลังจาก "ldd / usr / bin / ffmpeg" ฉันค้นพบว่า ffmpeg หายไปบางไลบรารีฉันพยายามติดตั้งไลบรารีเหล่านั้นโดยพิมพ์ชื่อใน apt-get แต่ไม่พบวิธีนี้
Abdul Al Hazred

เพียงแค่พูดว่า ffmpeg อาจเป็นความเจ็บปวดที่แท้จริงในการติดตั้ง มันจะดีกว่าที่จะใช้การติดตั้งแบบคงที่จากคอมไพล์ นี่คือสิ่งที่ถูกสร้างขึ้นโดยวิญญาณที่ใจดีที่จะช่วยให้คุณประหยัดจากอาการปวดหัว: johnvansickle.com/ffmpeg
Baazigar

มันจะช่วยถ้าคุณจะบอกเราว่าที่เก็บข้อมูลของคุณติดตั้งมาจากไหน :-) นอกจากนี้คุณสามารถวางผลลัพธ์apt-get -f installลงในคำถามของคุณได้ไหม หมายเหตุ: ubuntu ขึ้นอยู่กับ Ubuntu 14.04 ดังนั้นคุณสามารถดูได้ถ้า ffmpeg ไม่รวมอยู่ในการกระจายของคุณ
Faheem Mitha

ฉันจำชื่อของที่เก็บไม่ได้ แต่มันก็เหมือนกับชื่อนามสกุลที่ลงท้ายด้วยลูกชายเมื่อฉันพยายามค้นหาใน /etc/apt/sources.list /etc/apt/sources.list.d /
Abdul Al Hazred

คำตอบ:


5

ค้นหาใน / usr / lib และ / usr / lib64 สำหรับไลบรารีเหล่านั้น หากคุณพบว่า ffmpeg ตัวใดตัวหนึ่งหายไปให้เชื่อมโยงมันเข้ากับอีกไดเรกทอรีหนึ่ง

คุณยังสามารถเรียกใช้การค้นหาสำหรับ 'libm.so.6' และดูว่าไฟล์นั้นอยู่ที่ใด มีโอกาสที่ดี ffmpeg กำลังค้นหาในไดเรกทอรีเดียวกันสำหรับสิ่งที่ขาดหายไป เชื่อมโยงพวกเขาไปที่นั่นเมื่อคุณพบพวกเขา

หากไม่มีอยู่ในเซิร์ฟเวอร์ของคุณให้ติดตั้งแพ็คเกจที่มี หากรวมอยู่ในแพ็คเกจ ffmpeg แต่คุณไม่เห็นให้ลองติดตั้ง ffmpeg ใหม่


ดังนั้นหากไม่มีอยู่ใน / usr / lib หรือ / usr / lib64 จะไม่ได้ติดตั้ง 100 เปอร์เซ็นต์แน่นอน?
Abdul Al Hazred

หากไม่มีอยู่ใน / usr / lib หรือ / usr / lib64 เป็นไปไม่ได้ที่จะติดตั้ง การติดตั้ง ffmpeg นั้นยากมากเพื่อให้ ffmpeg ทำงานได้ตามที่คนคาดหวังคุณมักจะต้อง ffmpeg และอย่างอื่น บางครั้งมีบางอย่าง ฉันขอแนะนำอย่างยิ่งให้ใช้การสร้างแบบคงที่ยกเว้นว่าคุณต้องการประสบผ่านการติดตั้งด้วยตนเองซึ่งเป็นที่เข้าใจได้
Baazigar

ฉันไม่ทราบว่าการสร้างแบบคงที่คือ ....
Abdul Al Hazred

1
การสร้างแบบคงที่หมายถึง ffmpeg และเครื่องมือที่เกี่ยวข้องได้รับการรวบรวมเพื่อทำงานร่วมกันทั้งหมดในไดเรกทอรีเดียว เมื่อคุณใช้คอมไพล์เพื่อดึงสิ่งนั้นลงในเซิร์ฟเวอร์ของคุณคุณมีทุกสิ่งในที่เดียวดังนั้นจึงไม่มีคำถามเกี่ยวกับไลบรารีหรืออะไรเลย มันมาใน 'กล่อง' เดียวดังนั้นการพูดสิ่งที่คุณต้องทำคือกำหนดคำสั่งให้ชี้ไปที่มัน ที่นี่คุณสามารถอ่านเพิ่มเติมเกี่ยวกับมันและรับมันได้: johnvansickle.com/ffmpeg
Baazigar

27

คุณสามารถใช้ได้:

ldconfig -p | grep libavfilter

หากไม่มีไลบรารีเอาต์พุตไม่ถูกติดตั้ง ฉันไม่แน่ใจว่านี่น่าเชื่อถือ 100% หรือไม่
อย่างน้อยใน man page ของldconfigสำหรับตัวเลือก -p:

พิมพ์รายชื่อของไดเรกทอรีและห้องสมุดผู้สมัครที่เก็บไว้ในแคชปัจจุบัน


1

ใช้คำสั่งfile `which ffmpeg`เพื่อพิจารณาว่าffmpegคอมไพล์แล้วสำหรับ 64- บิตหรือ 32- บิต หากเป็นแบบ 64 บิตให้ค้นหา/usr/lib64ไลบรารี่ใน หากเป็นแบบ 32 บิตให้ค้นหา/usr/libไลบรารี่ใน หากffmpegลิงก์แบบสแตติกไม่สำคัญ ... มันจะไม่ใช้ไลบรารีที่แบ่งใช้ใด ๆ และผลลัพธ์ของfileจะบอกคุณเช่นกัน

อย่าสัญลักษณ์เชื่อมโยงระหว่างห้องสมุดและ/usr/lib /usr/lib64สิ่งนี้จะไม่ช่วยคุณเพราะโปรแกรม 64 บิตจะต้องใช้ไลบรารี 64 บิต (พบใน/usr/lib64) และโปรแกรม 32 บิตจะต้องการไลบรารี 32 บิต (พบใน/usr/lib32)

หากไม่มีไลบรารีบนเซิร์ฟเวอร์ของคุณให้ติดตั้งแพ็กเกจที่จัดเตรียม (ตรวจสอบให้แน่ใจว่าคุณเลือกแพ็คเกจ 32 บิตหาก ffmpeg เป็น 32 บิต ฯลฯ )

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