ฉันจะเรียกใช้ Firefox บน Linux อย่างไร้ความปราณีได้อย่างไร (เช่นโดยไม่ต้องใช้ libgtk-x11-2.0.so.0)


17

ฉันใช้โฮสติ้งโฮสติ้งที่แชร์กับโฮสติ้งแล้วและฉันพยายามเรียกใช้ Firefox 3.0 โดยที่ไม่ต้องใช้งานกับ Selenium

เมื่อฉันพยายามเรียกใช้ ( ~/local/bin/firefox/firefox) ฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:

error while loading shared libraries: libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory

ฉันจะเรียกใช้ Firefox บน Linux โดยไม่ต้องใช้ไฟล์วัตถุที่ใช้ร่วมกันนี้ได้อย่างไร

คำตอบ:


8

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

ในฐานะของ Firefox 57 คุณสามารถเรียกใช้ในโหมดหัวขาดเพียงแค่ติดตั้ง Firefox และทำงาน:

firefox -headless http://test.com/

ดูเอกสาร Firefox dev ที่นี่


ยอดเยี่ยม - ขอบคุณสำหรับการเพิ่มคำตอบที่ทันสมัยและมีคุณภาพ นั่นคือสิ่งที่ Stack Exchange ได้รับการออกแบบมาสำหรับ
Paul D. Waite

14

คุณไม่สามารถเรียกใช้ Firefox หากไม่มีไลบรารี Gtk ทั้งหมดที่ต้องการ แต่ก็แก้ไขได้อย่างง่ายดายโดยการติดตั้งไลบรารี โดยปกติคุณจะติดตั้ง Firefox ผ่านระบบการจัดการแพคเกจและสิ่งนี้จะดึงในไลบรารีที่จำเป็นทั้งหมด

ในการใช้ Firefox ตามปกติคุณต้องมีเซิร์ฟเวอร์ X (นั่นคือส่วนที่แสดงหน้าต่างและเนื้อหาของพวกเขาซึ่งตรงข้ามกับสิ่งต่างๆเช่น Gtk ซึ่งเป็นห้องสมุดที่การสมัครใช้เพื่อสร้างเนื้อหา) นั่นคือสิ่งที่คุณมักจะไม่เรียกใช้บนเซิร์ฟเวอร์ มีบางสิ่งที่คุณสามารถทำได้ใน Firefox โดยไม่มีเซิร์ฟเวอร์ X ฉันไม่รู้ว่า Selenium เป็นหนึ่งในนั้นหรือไม่

หากต้องการใช้ Firefox บนเซิร์ฟเวอร์ของคุณให้เรียกใช้เซิร์ฟเวอร์ X“ เสมือน” แบบง่าย ๆ คือ Xvfb ( v irtual f rame b uffer X server) มันเป็นในการจำหน่ายเซิร์ฟเวอร์ X.org ตัวอย่างการใช้งาน:

Xvfb :19 -screen 0 1024x768x16 &
export DISPLAY=:19
firefox &

1
ยอดเยี่ยมไชโย Gilles ที่ทำมัน ฉันพบว่าบทความเหล่านี้มีประโยชน์สำหรับการเรียกใช้ Xvfb: alittlemadness.com/2008/03/05/running-selenium-headlessและblog.kabisa.nl/2010/05/24/ ......
Paul D. Waite

7

คุณทำไม่ได้ มันเชื่อมโยงกับไลบรารีไคลเอ็นต์ X และ Gtk + และฉันไม่คิดว่ามันจะเป็นไปได้ที่จะสร้างมันหากไม่มีพวกเขา

แม้จะอยู่ในรุ่นหัวขาด Firefox, GTK + ยังคงเป็นสิ่งจำเป็น


2

เนื่องจากซีลีเนียมเป็นเครื่องมือทดสอบ GUI ฉันจะพบว่ามันยากที่จะเชื่อว่ามันสามารถทำงานได้โดยไม่ต้องใช้ X

ดังนั้นฉันเดาดีที่สุดคือเซิร์ฟเวอร์หัวขาดของคุณต้องการการติดตั้ง X เช่นที่ Gilles แนะนำ มีหลายทางเลือกที่คล้ายกัน


2

คุณสามารถ

  • ใช้ Firefox ใน framebuffer เสมือน: xvfb-run -a firefox
  • ใช้SlimerJS (ตัวตุ๊กแก / เอนจิ้นการเรนเดอร์จาก Firefox) ด้วย xcfb
  • ใช้PhantomJSเป็น WebKit แบบฝังโดยไม่จำเป็นต้องมีการสนับสนุนการแสดงผลและซีลีเนียมผ่านGhostDriver - ถ้า WebKit สามารถใช้ได้สำหรับคุณ

ฉันคิดว่าคุณหมายถึง 'xvfb-run -a ... ' และไม่ใช่ xvfb ใช่ไหม
Kutzi

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