เพราะเหตุใดระบบ 64 บิตของฉันจึงมองหา repos 32 บิต


19

ฉันได้ติดตั้ง 64-bit 12.10 บนแล็ปท็อปของฉัน เมื่อรันการอัพเดต apt-get มันจะดาวน์โหลดรายการแพ็กเกจสำหรับแพ็คเกจ 32- บิต (รวมถึงรายการแพ็กเกจต้นทางและ 64 บิต) เหตุใดจึงมองหารายการแพคเกจ 32 บิตในระบบ 64 บิต ฉันได้รวมหนึ่งในรายการที่พยายามค้นหาด้านล่าง

http://us.archive.ubuntu.com/ubuntu/dists/quantal-backports/multiverse/binary-i386/Packages

คำตอบ:


28

สับสนใช่มั้ย ขออธิบายหน่อย

ทำไม?

  • ซอฟต์แวร์แบบ 32 บิตทำงานได้ดีบนเคอร์เนล 64 บิตพร้อมฮาร์ดแวร์ที่รองรับ 64 บิต
  • ซอฟต์แวร์บางตัวยังคงต้องใช้ไลบรารี 32 บิต นี่ไม่ดี แต่บางครั้งเราไม่มีอำนาจที่จะเปลี่ยนแปลงสิ่งนี้
  • ซอฟต์แวร์แบบ 32 บิตจะต้องมีอยู่ในระบบเพื่อให้เป็นไปตามการพึ่งพาดังนั้นจึงใช้ที่เก็บแบบ 32 บิตเช่นกัน

ฉันมาจากต้นปี 2554 เกิดอะไรขึ้น

ใน Ubuntu รุ่น 64 บิตก่อน 11.10 ชุดของไลบรารี 32 บิตทั่วไปบางชุดถูกรวมอยู่ในia32-libsแพ็คเกจเดียวที่แสดงถึง APT / Dpkg ว่าเป็น 64 บิตและอยู่ในตำแหน่งดังกล่าวในที่เก็บ หากคุณเกิดขึ้นต้องมีห้องสมุดเดียวสำหรับโปรแกรมที่มันจะขึ้นอยู่กับ 150 + MB ของห้องสมุด 32 บิต1 เห็นได้ชัดว่านี่ไม่ใช่การออกแบบที่ดี

สถาปัตยกรรมหลาย ๆ

แนวคิดใหม่นี้คือการแนะนำความสามารถ "Multiarch" ให้กับ APT / Dpkg และเครื่องมือรอบ ๆ นี้ถูกนำเสนอในหลายพิมพ์เขียวใน Launchpad, ที่นี่เป็นหนึ่งในนั้น Oneiric (11.10) กลายเป็นรุ่นแรกที่รองรับ Multiarch

มันทำงานยังไง?

คุณสามารถบอก Dpkg ว่าสถาปัตยกรรมของระบบของคุณสามารถทำงานได้ ในการติดตั้ง 64- บิต 64.0 ของฉันนี่คือที่นี่:

$ cat /etc/dpkg/dpkg.cfg.d/multiarch 
foreign-architecture i386

มันเปิดโลกทั้งโลกของi386แพคเกจโดยamd64ยังคงเป็นค่าเริ่มต้น:

$ apt-cache show libqt4-core                   | grep -E "^(Filename|Architecture)"
Architecture: amd64
Filename: pool/universe/q/qt4-x11/libqt4-core_4.8.1-0ubuntu4.3_amd64.deb

$ apt-cache show libqt4-core:i386              | grep -E "^(Filename|Architecture)"
Architecture: i386
Filename: pool/universe/q/qt4-x11/libqt4-core_4.8.1-0ubuntu4.3_i386.deb

ดังกล่าวข้างต้นแสดงให้เห็นตัวอย่างที่ Multiarch ช่วยดูแลแพคเกจที่จะเพียงแค่ทำให้แพคเกจของพวกเขาขึ้นอยู่กับlibqt4-core:i386ตัวอย่างและทำให้มันเป็นไปได้ที่จะติดตั้งใด ๆ 32 บิตห้องสมุด / แพ็กเกจ (และทำให้การติดตั้งแพคเกจใด ๆ ที่ขึ้นอยู่กับห้องสมุด 32 บิตใด ๆ / แพคเกจ) แทนที่จะเป็นชุดที่เลือกไว้ล่วงหน้า

ia32-libs ความเข้ากันได้

ในกรณีที่คุณคุ้นเคยกับการติดตั้งia32-libsแพคเกจเป็นแพ็คเกจความสะดวกในการติดตั้งชุดพื้นฐานของไลบรารี 32- บิตพื้นฐานตอนนี้คุณสามารถใช้งานได้แล้ว นี่เป็น metapackage ที่เรียบง่ายขึ้นอยู่กับชุดของไลบรารี (หรืออย่างน้อยที่คล้ายกันมาก) แต่จะถูกติดตั้งด้วยขุมพลังของ Multiarchia32-libs-multiarch ติดตั้ง ia32-libs-multiarch

การอ่านที่เกี่ยวข้องเพิ่มเติม

1 สำหรับ Lucid (10.04) ขนาดการติดตั้งia32-libsแพ็กเกจคือ 155,812.0 kB


5
ผมขอแนะนำให้ทำงานdpkg --print-foreign-architecturesมากกว่า /etc/dpkg/dpkg.cfg.d/multiarchcatting ไม่มีอยู่หลังจาก 12.04
tumbleweed

ฉันเพิ่งตั้งค่า apt-mirror ที่บ้านและหวังว่าจะเป็นเพียง repo แบบ 64 บิต โชคไม่ดีที่ฉันทำไม่ได้ แต่ฉันเข้าใจว่าทำไมตอนนี้และมันสมเหตุสมผลด้วยวิธีนี้ ตอบรับแล้ว!
tgm4883

@ tgm4883 คุณสามารถลบการกำหนดค่าสถาปัตยกรรมต่างประเทศได้หากคุณต้องการเรียกใช้amd64เท่านั้น คล้ายกับการเรียกใช้ Ubuntu รุ่นเก่าที่ไม่มีia32-libsให้ใช้งาน
gertvdijk

1
ผมเริ่มอ่านและในใจของฉันก็กล่าวว่า: อืมลักษณะเช่นโพสต์จาก gertvdijk A: +) Goede โพสต์;)
Rinzwind
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.