Tại sao hệ thống 64 bit của tôi tìm kiếm repos 32 bit?


19

Tôi đã cài đặt 64.10 bit trên máy tính xách tay của mình. Khi chạy cập nhật apt-get, nó tải xuống danh sách gói cho các gói 32 bit (cũng như danh sách gói nguồn và 64 bit). Tại sao nó tìm danh sách gói 32 bit trên hệ thống 64 bit? Tôi đã bao gồm một trong những mục mà nó cố gắng tìm bên dưới.

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

Câu trả lời:


28

Nhầm lẫn phải không? Hãy để tôi giải thích một chút.

Tại sao?

  • Phần mềm 32 bit chạy tốt trên kernel 64 bit với phần cứng có khả năng 64 bit.
  • Một số phần mềm vẫn dựa vào các thư viện 32 bit cụ thể. Điều này không tốt, nhưng đôi khi chúng ta không có khả năng thay đổi điều này.
  • Phần mềm 32 bit phải có sẵn cho hệ thống để đáp ứng các phụ thuộc, vì vậy nó cũng sử dụng kho 32 bit.

Tôi từ đầu năm 2011. Chuyện gì đã xảy ra?

Trong các phiên bản 64 bit của Ubuntu trước ngày 11.10, một số thư viện 32 bit phổ biến đã được đóng gói trong một ia32-libsgói duy nhất được biểu thị cho APT / Dpkg là 64 bit và ở vị trí như vậy trong kho lưu trữ. Nếu bạn tình cờ cần một thư viện duy nhất cho một ứng dụng, nó sẽ phụ thuộc vào hơn 150 MB thư viện 32 bit 1 . Rõ ràng, đây không phải là một thiết kế đẹp.

Nhiều kiến ​​trúc?

Ý tưởng mới là giới thiệu cái gọi là khả năng "Multiarch" cho APT / Dpkg và các công cụ xung quanh nó. Điều này đã được trình bày trong một số bản thiết kế trên Launchpad, đây là một trong số đó . Oneiric (11.10) trở thành bản phát hành đầu tiên hỗ trợ Multiarch.

Làm thế nào nó hoạt động?

Bạn có thể nói với Dpkg những kiến ​​trúc mà hệ thống của bạn có khả năng chạy. Trong bản cài đặt 12.04 64 bit của tôi, đây là:

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

Nó mở ra toàn bộ thế giới của i386các gói, amd64vẫn là mặc định:

$ 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

Ví dụ trên cho thấy Multiarch cho phép các nhà bảo trì gói chỉ đơn giản làm cho các gói của họ phụ thuộc vào libqt4-core:i386ví dụ và cho phép cài đặt bất kỳ thư viện / gói 32 bit nào (và do đó để cài đặt bất kỳ gói nào phụ thuộc vào bất kỳ thư viện / gói 32 bit nào) , thay vì một bộ được chọn trước.

ia32-libs khả năng tương thích

Trong trường hợp bạn đã được sử dụng để cài đặt ia32-libsgói như một gói tiện lợi để cài đặt một bộ thư viện 32 bit cơ bản phổ biến, bây giờ bạn có thể sử dụng . Đây là một siêu dữ liệu đơn giản tùy thuộc vào cùng một bộ thư viện (hoặc ít nhất là rất giống nhau), nhưng nó sẽ được cài đặt với sức mạnh của Multiarch.ia32-libs-multiarch Cài đặt ia32-libs-multiarch

Bài đọc liên quan

1 Đối với Lucid (10.04), kích thước cài đặt ia32-libsgói là 155.812.0 kB.


5
Tôi khuyên bạn nên chạy dpkg --print-foreign-architectureschứ không phải là đi /etc/dpkg/dpkg.cfg.d/multiarch. Nó không tồn tại sau ngày 12.04.
tumbleweed

Tôi vừa thiết lập apt-mirror ở nhà và hy vọng sẽ chỉ phản chiếu repo 64 bit. Thật không may là tôi không thể làm điều đó, nhưng tôi hiểu tại sao bây giờ và nó có ý nghĩa theo cách này. Trả lời chấp nhận!
tgm4883

@ tgm4883 Bạn có thể xóa cấu hình kiến ​​trúc nước ngoài nếu bạn thực sự chỉ muốn chạy amd64. Nó tương tự như chạy Ubuntu cũ hơn mà không ia32-libscó sẵn.
gertvdijk

1
Tôi bắt đầu đọc và trong tâm trí tôi nói: hmm trông giống như một bài đăng từ gertvdijk: +) Bài đăng trên
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.