gdebi vs dpkg: gdebi จะหายไปโดยอัตโนมัติได้อย่างไร? ฉันสามารถใช้ gdebi สำหรับการติดตั้งแพ็คเกจ. deb อื่น ๆ ได้หรือไม่?


15

เมื่อเร็ว ๆ นี้ฉันเพิ่งติดตั้ง Ubuntu ของฉันไปที่ Lubuntu 15.04 ดังนั้นฉันจึงค้นหาการติดตั้ง Skype และได้รับการสอนที่ดีนี้

มันเจ๋งจริงๆ มันดาวน์โหลดแพ็คเกจอย่างเป็นทางการของ skype deb จากที่นี่

เนื่องจากฉันยังไม่ได้gdebiติดตั้งฉันจึงติดตั้งโดยใช้sudo su -c apt-get install gdebi

จากนั้นติดตั้งskype-ubuntu-precise_4.3.0.37-1_i386.debโดยใช้คำสั่ง gdebisudo su -c gdebi skype-ubuntu*4*.deb

ว้าว gdebi ทำทุกอย่างให้ฉันสิ่งที่ไม่ยุ่งยากโดยไม่ต้องใช้การเชื่อมโยงคู่มือ Apt PPA แบบดั้งเดิมซึ่งอาจทำให้การอัปเดตระบบ / การติดตั้งซอฟต์แวร์ของฉันแย่ลงเช่นกัน ..

แต่ถ้าลองติดตั้งก็ลองใช้ดู dpkg -i

dpkg -i skype-ubuntu-precise_4.3.0.37-1_i386.deb
Selecting previously unselected package skype.
(Reading database ... 86449 files and directories currently installed.)
Preparing to unpack skype-ubuntu-precise_4.3.0.37-1_i386.deb ...
Unpacking skype (4.3.0.37-1) ...
dpkg: dependency problems prevent configuration of skype:
 skype depends on libc6 (>= 2.3.6-6~).
 skype depends on libc6 (>= 2.7).
 skype depends on libgcc1 (>= 1:4.1.1).
 skype depends on libqt4-dbus (>= 4:4.5.3).
 skype depends on libqt4-network (>= 4:4.8.0).
 skype depends on libqt4-xml (>= 4:4.5.3).
 skype depends on libqtcore4 (>= 4:4.7.0~beta1).
 skype depends on libqtgui4 (>= 4:4.8.0).
 skype depends on libqtwebkit4 (>= 2.2~2011week36).
 skype depends on libstdc++6 (>= 4.2.1).
 skype depends on libx11-6.
 skype depends on libxext6.
 skype depends on libxss1.
 skype depends on libxv1.
 skype depends on libssl1.0.0.
 skype depends on libpulse0.
 skype depends on libasound2-plugins.

dpkg: error processing package skype (--install):
 dependency problems - leaving unconfigured
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for mime-support (3.55ubuntu1.1) ...
Processing triggers for desktop-file-utils (0.22-1ubuntu2) ...
Processing triggers for dbus (1.8.8-1ubuntu2.1) ...
Errors were encountered while processing:
 skype

ปัญหาการพึ่งพาอาศัยกันมากมาย โอ้ฉันเพิ่ง googled GDebi และ wikipedia ได้

GDebi เป็นเครื่องมือ APT ซึ่งสามารถใช้ใน command-line และบน GUI [44] GDebi สามารถติดตั้งไฟล์. deb แบบโลคัลผ่านบรรทัดรับคำสั่งเช่นคำสั่ง dpkg แต่ด้วยการเข้าถึงที่เก็บเพื่อแก้ไขการขึ้นต่อกัน

ความสงสัยของฉันคือ

(1) gdebi ติดตั้งแพคเกจ. deb กับการพึ่งพาโดยไม่ใช้ลิงก์ Apt PPA ที่เพิ่มด้วยตนเองในไฟล์กำหนดค่าอย่างไร

(2) ฉันสามารถใช้คำสั่ง gdebi เดียวกัน ( sudo su -c gdebi my.deb) เพื่อติดตั้งแพคเกจ. deb อื่น ๆ ทั้งหมดโดยไม่ต้องเพิ่ม Apt PPA หรือฉันต้องเปลี่ยนรูปแบบดังนี้: sudo su -c my*n*.debที่ไหน n เป็นเวอร์ชั่นของซอฟต์แวร์ ฯลฯ

โปรดอธิบายในแง่คนธรรมดาเพื่อที่ฉันจะได้รับมัน

คำตอบ:


10

ที่จริงgdebiเป็นเพียงหน้าสิ้นไปdpkgด้วยการเพิ่มฟังก์ชั่นที่จะสามารถตรวจสอบแพ็กเกจการพึ่งพาในที่เก็บและสามารถติดตั้งไว้ในหนึ่งในการดำเนินการในขณะที่dpkg -iต้องใช้ทั้งสองดำเนินการด้วยตนเอง (ต่อมาเป็นapt-get -f install)

คำถามที่ 1:

1) gdebi ทำเช่นนี้ได้อย่างไร ติดตั้งแพคเกจ. deb กับการอ้างอิงโดยไม่ต้องใช้ลิงค์ Apt PPA ที่เพิ่มเข้ามาด้วยตนเองในไฟล์กำหนดค่าหรือไม่

เป็นdpkgfront-end dpkgก็สามารถใช้ทั้งหมดของการทำงานของ เนื่องจาก.debไฟล์แพ็กเกจทุกไฟล์มีข้อมูลเมตา (ที่ระบุว่าไม่เสียหาย) เกี่ยวกับไฟล์ deb นั้น (เช่นชื่อแพคเกจผู้ดูแลการอ้างอิง ฯลฯ ) จึงสามารถตรวจสอบการขึ้นต่อกันของไฟล์นี้ได้อย่างง่ายดาย

ตัวอย่างเช่นคุณสามารถตรวจสอบข้อมูลเมตาของไฟล์. deb โดยใช้ dpkg --info package-name.deb

จากนั้นจะใช้ข้อมูลเหล่านี้เพื่อสร้างแผนที่การพึ่งพาและทำเครื่องหมายไฟล์. deb ที่มีอยู่ในเครื่องเป็นการดาวน์โหลดแล้วและดาวน์โหลด.debไฟล์อื่นจากอินเทอร์เน็ต

รับทราบว่าแพคเกจเสริมที่จำเป็นเหล่านั้นจะต้องพร้อมใช้งาน (พร้อมรุ่นที่เหมาะสม) ในที่เก็บอย่างน้อยหนึ่งแห่งซึ่งมีการกำหนดค่าในระบบ

จากนั้นจะดำเนินการเช่นการติดตั้งฉลาดปกติ ข้อแตกต่างคือมันไม่ได้ดาวน์โหลดไฟล์. deb หลักอีกครั้ง

คำถามที่ 2:

(2) ฉันสามารถใช้คำสั่ง gdebi เดียวกัน ( sudo su -c gdebi my.deb) เพื่อติดตั้งแพ็คเกจ deb อื่น ๆ ทั้งหมดโดยไม่ต้องเพิ่ม PPA หรือฉันต้องเปลี่ยนรูปแบบsudo su -c myn.debที่ n เป็นเวอร์ชั่นของซอฟต์แวร์ ฯลฯ ?

สัญญาซื้อขายไฟฟ้ามีอยู่ด้วยเหตุผล เหตุผลหลักคือพวกเขามีแพ็คเกจล่าสุด และแพ็คเกจที่สูงกว่าเหล่านี้มักจะขึ้นอยู่กับแพ็คเกจย่อยที่สูงกว่าเช่นกันซึ่งโดยปกติจะให้บริการจาก PPA ไม่ใช่จากที่เก็บมาตรฐานของ Ubuntu

ตัวอย่างสถานการณ์:

สมมติว่าแพคเกจชื่อแม่แพคเกจมีรุ่นสูงสุดของ2.0ในที่เก็บมาตรฐานอูบุนตูและนี่แม่แพคเกจขึ้นอยู่กับแพคเกจชื่อเด็กแพคเกจรุ่น 2 นอกจากนี้ยังคิดว่าบาง PPA ให้แม่แพคเกจรุ่น3.0ที่ต้องใช้ในchild-packageการ3.0ทั้งคู่สามารถใช้งานได้ผ่านที่เก็บ PPA

ปัญหาคือถ้าคุณดาวน์โหลดmother-package-3.0.debจากหน้าพื้นที่เก็บข้อมูลและลองติดตั้งด้วยgdebiคุณจะ (หรือgdebi) ล้มเหลว

เพราะการตรวจสอบแม่แพคเกจ 3.0.debไฟล์gdebiรู้ว่านี้แม่แพคเกจความต้องการของเด็กแพคเกจรุ่น3.0หรือสูงกว่า 2.0แต่มันเท่านั้นที่รู้ว่าสถานที่ตั้งของรุ่น ไม่ทราบว่าจะดึงรุ่น3.0ของชุดเด็กจากที่ใด นี่เป็นสิ่งที่คาดหวังเพราะคุณไม่ได้บอกระบบว่าคุณได้รับชุดแม่ล่าสุดนี้จากที่ไหน คุณไม่ได้กำหนดค่ารายการที่เก็บเพื่อรวม PPA นั้น

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

ส่วนที่สองของคำถามที่สองไม่ได้ทำให้รู้สึกถึงฉัน


5

ฉันมีปัญหาเดียวกันกับแอพพลิเคชั่นบางตัวโดยที่ skype เป็นหนึ่งในนั้นขึ้นอยู่กับแพ็คเกจภายนอกหรือไฟล์ไลบรารีที่ต้องติดตั้งด้วยตนเอง

ในการแก้ไขปัญหาที่ฉันใช้:

sudo dpkg -i skype.deb

แล้วหลังจากได้รับพร้อมท์สำหรับไลบรารีภายนอกเหมือนที่คุณมีในผลลัพธ์ของคุณฉันพิมพ์ใน:

sudo apt-get install -f

นี่เป็นการดาวน์โหลดแพ็คเกจที่จำเป็นและติดตั้ง skype ด้วยตัวเอง


2

ในทุกแพคเกจ. deb มีรายการของการอ้างอิง (พร้อมหมายเลขรุ่นที่เข้ากันได้)

ฉันไม่ใช่ผู้อ่าน Python แต่ดูเหมือนว่าซอร์สโค้ดจะเรียกaptเพื่อรับรายการนั้น เห็นได้ชัดว่ามันต้องลงมาซ้ำ ๆ เพื่อค้นหาการพึ่งพาของการพึ่งพา แต่ก็aptสามารถทำได้เช่นกัน

เมื่อการอ้างอิงทั้งหมดได้ผลและวางไว้ในลำดับที่ถูกต้อง (การอ้างอิงบางอย่างจำเป็นต้องติดตั้งก่อนที่จะสามารถติดตั้งการพึ่งพาอื่น ๆ ได้) ระบบaptจะขอให้คุณติดตั้งการพึ่งพา จากนั้นแพ็คเกจที่ได้รับเป็นอาร์กิวเมนต์สำหรับ Gdebi จะถูกติดตั้ง

การอ้างอิงและแพคเกจเป้าหมายถูกติดตั้งในสองการดำเนินการด้วยเหตุผลสองประการ ก่อนอื่นรูปแบบของการเรียก apt เพื่อติดตั้ง local .deb นั้นแตกต่างจาก apt call เพื่อติดตั้ง dependencies จาก repository ประการที่สองการแยกการโทรเพื่อให้มั่นใจว่ามีการติดตั้งการอ้างอิงทั้งหมดก่อนแพคเกจเป้าหมาย

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