Điều gì đã xảy ra với gói ia32-libs?


104

Các ia32-libsgói không còn hiện diện trong Ubuntu 12.04 kho cho một hệ thống 64bit. Có bất kỳ gói thay thế có sẵn để tải về?



2
+1, sẽ chỉ hỏi chính xác cùng một câu hỏi. SO có đề nghị câu hỏi thực sự tuyệt vời!
ulidtko

Câu trả lời:


97

Gói ia32-libs là một bản hack để cài đặt các gói 32 bit trên bản cài đặt 64 bit. Kể từ phiên bản Ubuntu 11.10 (Oneiric), Multi Arch đã được thêm vào. Một trong những mục tiêu cho nó là loại bỏ ia32-libsgói. Thay vào đó, bạn phải cài đặt các thư viện 32 bit của gói với:

sudo apt-get install package-name:i386

Bạn không phải lo lắng về điều này đối với các gói trong kho lưu trữ tiêu chuẩn (ví dụ: winegói). Đối với phần mềm bên ngoài, khó khăn hơn một chút vì bạn phải tìm phụ thuộc thủ công. Trong trường hợp đó, sử dụng công cụ tìm kiếm yêu thích của bạn để tìm thư viện nào bạn cần.

Có vẻ như ia32-libs vẫn tồn tại, nhưng chỉ là một gói tiện lợi để bao gồm các thư viện 32 bit phổ biến. Gói này hiện sử dụng Multi Arch để cài đặt các gói 32 bit một cách chính xác.


17
Chà, làm thế nào mà người ta có thể tìm thấy tất cả các phụ thuộc và cài đặt đầu tiên: i386 trong số đó?
117

10
@wingman Chạy ldd, chuyển một đường dẫn đến nhị phân làm đối số. Nếu đầu ra chứa một dòng như thế libz.so.1 => not found, thì bạn cần tìm libz.so.1. Bạn có thể sử dụng gói.ubfox.com hoặc apt-file searchđể tìm gói chứa tệp đó. Trong ví dụ tôi đã đưa ra, bạn cần cài đặt zlib1g:i386.
Lekensteyn

1
tôi đang ở trong một máy tính có Ubuntu 10.10. Theo một số hướng dẫn về phát triển Android tôi phải cài đặt ia32-libs. Câu trả lời của bạn nói về 11.10, nhưng đối với máy tính này? tôi phải làm gì?
nkint

1
@nkint 10.10 không được hỗ trợ nữa. Nếu bạn muốn tiến hành, bạn cần thay đổi nguồn gói của bạn . Trong 10.10, bạn cần cài đặt ia32-libs. Nhưng ngay cả sau đó không có gì đảm bảo rằng SDK Android hoạt động với điều đó.
Lekensteyn

1
@FelipeMicaroniLalli Bạn cần thay thế package-namebằng tên thật. Sử dụng lddđể tìm ra, xem bình luận thứ hai ở trên.
Lekensteyn

43

Ubuntu 13.10

Chuyện gì đã xảy ra?

Các ia32-libsgói đã được thay thế hoàn toàn bởi lib32z1 lib32ncurses5 lib32bz2-1.0. Đây không phải là một vấn đề vì chức năng của nó vẫn còn đó, chỉ trong các gói khác. Tuy nhiên, chúng tôi không sống trong một thế giới lý tưởng nơi mọi người duy trì các gói của họ và tất cả phần mềm là FLOSS, vì vậy một số gói vẫn phụ thuộc vào ia32-libs.

Làm cách nào tôi có thể cài đặt gói x phụ thuộc vào ia32-libs

Có 2 cách:

  1. Bạn có thể đóng gói lại bằng tay để nó không phụ thuộc vào ia32-libsnữa. (ưu tiên)
  2. Bạn có thể cài đặt ia32-libs từ kho lưu trữ Ubuntu 13.04 (Rared Ringtail) (hoàn toàn không được ưa thích!, Chỉ khi phương thức đầu tiên không hoạt động )

1. Đóng gói lại các gói cũ

Tôi sẽ sử dụng trình nhận citrix làm ví dụ, nhưng bạn có thể sử dụng phương thức này cho bất kỳ gói .deb nào:

Đầu tiên, tải xuống gói .deb của citrix từ trang web của họ và tạo một thư mục tạm thời để thực hiện hack.

mkdir ica_temp

Giải nén gói

dpkg-deb -x icaclient_13.0.0.256735_amd64.deb ica_temp
dpkg-deb --control icaclient_13.0.0.256735_amd64.deb ica_temp/DEBIAN

Mở tệp trong gedit (hoặc trình chỉnh sửa yêu thích của bạn)

sudo -H gedit ica_temp/DEBIAN/control

Tìm dòng bắt đầu bằng Depends:.... loại bỏ ia32-libsvà thêmlib32z1 lib32ncurses5 lib32bz2-1.0

Xây dựng lại gói sửa đổi

dpkg -b ica_temp icaclient-modified.deb

Và cài đặt nó

sudo dpkg -i icaclient-modified.deb
sudo apt-get install -f

Cài đặt bộ thu citrix cũng yêu cầu một số hack. Bạn có thể tìm hướng dẫn cài đặt đầy đủ trên wiki Ubuntu

Bạn có thể làm điều này với bất kỳ gói .deb cũ nào vẫn phụ thuộc vào ia32-libs.

2. Cài đặt ia32-libs từ kho lưu trữ hiếm

Xin lưu ý rằng đó là thực tế rất xấu để cài đặt các gói cũ! Đáng buồn thay, đối với một số trình cài đặt nhị phân, bạn không có lựa chọn nào khác.

Bạn có thể tải xuống gói ia32-libs từ kho lưu trữ hiếm . Tải về và cài đặt thủ công, sau đó các phụ thuộc sẽ được giải quyết.



1
@Elipticalview "Nguồn mở và miễn phí". Thay đổi nó thành FLOSS (Phần mềm miễn phí / Libre và nguồn mở), phổ biến hơn.
Galgalesh

"Đóng gói lại các gói cũ" hoạt động chủ yếu cho Ubuntu 16.04 Xenial - bạn chỉ cần thêm một vài điều chỉnh cho tên gói, thường thêm tên ": i386" vào cuối tên gói. Một số gói cũng có các tên khác nhau, như libbz2-1.0: i386
Christian Benke

6

Tôi đọc rằng bạn có nghĩa vụ phải cài đặt ia32-libs-multiarchgói thay thế. Tuy nhiên nó không hoạt động với tôi và tôi gặp lỗi này

ia32-libs-multiarch:i386 : Depends: libgphoto2-2:i386 but it is not going to be installed.

Giải pháp hiệu quả với tôi là cài đặt các gói sau:

sudo apt-get install libc6:i386 libgcc1:i386 gcc-4.6-base:i386 libstdc++5:i386 libstdc++6:i386

Hoạt động cho hệ điều hành tiểu học cũng
camelCaseD

4

Nếu bạn gặp lỗi đó, hãy thử:

sudo apt-get update

Sau đó thử lại:

sudo apt-get install ia32-libs

Tôi mới thực hiện cài đặt mới 12.04, gói đó vẫn có sẵn trong kho. Trong thực tế, tôi đã nhận được lỗi đó trước khi tôi chạy cập nhật. Sau đó, nó hoạt động tốt.


1

Tôi tin rằng trường hợp sử dụng cụ thể này đã được thay thế bằng các gói "lib32z1 lib32ncurses5 lib32bz2-1.0 lib32asound2", đây có thể là một câu trả lời cụ thể và hữu ích hơn so với nói "bạn có thể sử dụng đa vòm".


2
Gì? Không có trường hợp sử dụng cụ thể trong câu hỏi này.
gertvdijk

1
@gertvdijk: Bản thân gói đại diện cho trường hợp sử dụng hạn chế; Đối với mục đích chung hơn, bạn có thể đa vòm, nhưng đối với những người đã sử dụng một gói cụ thể này trước đây, dường như nó đã được thay thế bằng "lib32z1 lib32ncurses5 lib32bz2-1.0 lib32asound2", mà bạn có thể cài đặt mà không phải sử dụng đa vòm : bao gồm các trường hợp sử dụng tương tự như gói trước. Về bản chất, tôi thấy những câu trả lời này không có ích gì, vì đa vòm quá mức vì lý do ia32-libs tồn tại, thật ngạc nhiên khi không có sự thay thế trực tiếp nào nữa, và tôi đã thất vọng khi nghiên cứu thêm.
saurik

Đây là câu trả lời đơn giản nhất đã giải quyết một vấn đề tương tự cho tôi. Mặc dù các lib chỉ ra dường như không có gì để làm với việc bắt đầu một nhị phân chung, nó đã hoạt động.
Per Knytt

-2

Tôi đã cài đặt ia32-libs như thế này (Tôi chạy Ubuntu 13.04 Rared Ringtail trên máy 64 bit):

Kiểm tra kiến ​​trúc riêng:

$ dpkg --print-architecture

Kiểm tra nếu một kiến ​​trúc nước ngoài được cài đặt:

$ dpkg --print-foreign-architectures

Tùy thuộc vào kết quả của hai lệnh trên, ba lệnh sau có thể hoạt động (mất nhiều thời gian để xử lý trong trường hợp của tôi):

$ sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install ia32-libs

4
Tôi nhận được:Package ia32-libs is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source However the following packages replace it: lib32z1 lib32ncurses5 lib32bz2-1.0
foobarbiru
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.