Làm cách nào để cài đặt tệp .deb 64 bit trên máy 32 bit?


17

Tôi có Ubuntu 14.04. Gần đây tôi đã tải xuống Viber . Tệp Viber .deb có kiến ​​trúc 64 bit. Tôi muốn cài đặt nó trên máy tính của mình, nhưng máy tính của tôi chỉ hỗ trợ 32-bit.

Đầu ra của việc chạy lscpunhư sau:

Architecture: i686
CPU op-mode(s): 32-bit, 64-bit 
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1 
Core(s) per socket: 2 
Socket(s): 1 
Vendor ID: GenuineIntel 
CPU family: 6 
Model: 23 
Stepping: 10 
CPU MHz: 2800.000 
BogoMIPS: 5586.12 
Virtualization: VT-x 
L1d cache: 32K 
L1i cache: 32K 
L2 cache: 2048K

3
Làm thế nào bạn có thể chắc chắn rằng nó không hỗ trợ 64-bit? Nếu bạn phải chạy các chương trình 64 bit, bạn phải cài đặt HĐH 64 bit.
muru

Tôi nghe nói rằng một số phần mềm làm công việc đó ... Đó là những gì tôi đang hỏi
Một Umar Mukthar

Bạn sẽ phải sử dụng máy ảo: askubfox.com/questions/180761/ mẹo
muru

Đầu ra của việc chạy lscputrong Terminal là gì?
αғsнιη

7
Vâng, hệ thống của bạn 64-bit có khả năng, và bạn nên cài đặt lại nó vào dịp sớm nhất, bởi vì bạn sẽ chạy vào vấn đề này một lần nữa và nó sẽ còn đau đớn hơn để đối phó với sau này.
Michael Hampton

Câu trả lời:


22

Với điều kiện phần cứng của bạn hỗ trợ 64 bit, có:

(Các) chế độ op của CPU: 32 bit, 64 bit

và gói đã được chuẩn bị để sử dụng multiarch, điều này cũng đúng:

 dpkg -I viber.deb
 new debian package, version 2.0. <--- here
 size 57046082 bytes: control archive=8024 bytes.
       0 bytes,     0 lines      0                    
    1210 bytes,    29 lines      control              
    9475 bytes,    33 lines   *  copyright            
    7404 bytes,    85 lines      md5sums              
      39 bytes,     2 lines   *  postinst             #!/bin/bash
     800 bytes,    35 lines   *  preinst              #!/bin/bash
     500 bytes,    24 lines   *  prerm                #!/bin/bash
 Package: viber
 Version: 4.2.2.6
 Section: non-free/net
 Priority: extra
 Architecture: amd64 <---- and here

bạn chỉ có thể cài đặt các thư viện và nhị phân 64 bit cần thiết phụ thuộc vào gói (không có gì nữa, về sau) mà bạn cần để chạy ứng dụng, với tác động hiệu suất ảo ảo. Trong trường hợp của tôi, tôi chỉ cần cài đặt gói tốt:

$ sudo dpkg --add-architecture amd64
## adding 64-bits architecture package, in my system I didn't need to
## but it's likely you have
$ sudo apt-get update # this downloads the package list for amd64 arch
$ sudo dpkg -i viber.deb
Selecting previously unselected package viber.
(Reading database ... 268703 files and directories currently installed.)
Preparing to unpack viber.deb ...
Unpacking viber (4.2.2.6) ...
Setting up viber (4.2.2.6) ...
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for gnome-menus (3.13.3-1) ...
Processing triggers for mime-support (3.56) ...
Processing triggers for desktop-file-utils (0.22-1) ...

Và rồi bắt đầu gặp vấn đề ...

Các nhà quản lý gói quyết định rằng họ không nên liệt kê bất kỳ sự phụ thuộc nào cho gói của họ,

 Installed-Size: 141336
 Conflicts: Viber (<< 4.2.2.6)
 Replaces: Viber (<< 4.2.2.6)
 Maintainer: Viber Media Inc <support@viber.com>

cái mà họ thực sự cần:

ldd /opt/viber/Viber | grep 'not found'
    libXcomposite.so.1 => not found
    libxslt.so.1 => not found
    libxml2.so.2 => not found
    libgstreamer-0.10.so.0 => not found
    libgstapp-0.10.so.0 => not found
    libgstbase-0.10.so.0 => not found
    libgstinterfaces-0.10.so.0 => not found
    libgstpbutils-0.10.so.0 => not found
    libgstvideo-0.10.so.0 => not found
    libsqlite3.so.0 => not found

vì vậy bạn phải tìm và cài đặt các thư viện bị thiếu bằng tay! Điều này là dễ dàng nếu bạn biết các công cụ chính xác. apt-filecũng có ích ở đây, chức năng http://packages.ubfox.com "Tìm kiếm nội dung của các gói" cũng ổn. Nhưng tôi đã đi trước và tìm kiếm chúng:

Các tệp này đã được cài đặt trong hệ thống của tôi, bạn chỉ cần sao chép tên gói, tên trước dấu hai chấm kết thúc amd64. Bạn nên sao chép tên gói như sau:

dpkg -S $(ldd /opt/viber/Viber | awk '{print $3}' | grep -vP 'not|viber')
libc6:amd64: /lib/x86_64-linux-gnu/libpthread.so.0
libc6:amd64: /lib/x86_64-linux-gnu/libdl.so.2
libc6:amd64: /lib/x86_64-linux-gnu/librt.so.1
libstdc++6:amd64: /usr/lib/x86_64-linux-gnu/libstdc++.so.6
libc6:amd64: /lib/x86_64-linux-gnu/libm.so.6
libgcc1:amd64: /lib/x86_64-linux-gnu/libgcc_s.so.1
libc6:amd64: /lib/x86_64-linux-gnu/libc.so.6
libx11-6:amd64: /usr/lib/x86_64-linux-gnu/libX11.so.6
libxext6:amd64: /usr/lib/x86_64-linux-gnu/libXext.so.6
zlib1g:amd64: /lib/x86_64-linux-gnu/libz.so.1
libgl1-mesa-glx:amd64: /usr/lib/x86_64-linux-gnu/libGL.so.1
libxrender1:amd64: /usr/lib/x86_64-linux-gnu/libXrender.so.1
libglib2.0-0:amd64: /lib/x86_64-linux-gnu/libglib-2.0.so.0
libglib2.0-0:amd64: /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
libxcb1:amd64: /usr/lib/x86_64-linux-gnu/libxcb.so.1
libglapi-mesa:amd64: /usr/lib/x86_64-linux-gnu/libglapi.so.0
libxdamage1:amd64: /usr/lib/x86_64-linux-gnu/libXdamage.so.1
libxfixes3:amd64: /usr/lib/x86_64-linux-gnu/libXfixes.so.3
libx11-xcb1:amd64: /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1
libxcb-glx0:amd64: /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0
libxcb-dri2-0:amd64: /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0
libxcb-dri3-0:amd64: /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0
libxcb-present0:amd64: /usr/lib/x86_64-linux-gnu/libxcb-present.so.0
libxcb-sync1:amd64: /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1
libxshmfence1:amd64: /usr/lib/x86_64-linux-gnu/libxshmfence.so.1
libxxf86vm1:amd64: /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1
libdrm2:amd64: /usr/lib/x86_64-linux-gnu/libdrm.so.2
libpcre3:amd64: /lib/x86_64-linux-gnu/libpcre.so.3
libffi6:amd64: /usr/lib/x86_64-linux-gnu/libffi.so.6
libxau6:amd64: /usr/lib/x86_64-linux-gnu/libXau.so.6
libxdmcp6:amd64: /usr/lib/x86_64-linux-gnu/libXdmcp.so.6

Những cái này tôi chưa cài đặt chúng, cái mà tôi có được bằng cách sử dụng ldd /opt/viber/Viber | grep 'not found' | awk '{printf "%s$\n", $1}' | apt-file search -x -a amd64 -f - | sed 's/\:/:amd64:/':

$ ldd /opt/viber/Viber | grep 'not found' | awk '{printf "%s$\n", $1}' | apt-file search -x -a amd64 -f - | sed 's/\:/:amd64:/'
libgstreamer-plugins-base0.10-0:amd64: /usr/lib/x86_64-linux-gnu/libgstapp-0.10.so.0
libgstreamer-plugins-base0.10-0:amd64: /usr/lib/x86_64-linux-gnu/libgstinterfaces-0.10.so.0
libgstreamer-plugins-base0.10-0:amd64: /usr/lib/x86_64-linux-gnu/libgstpbutils-0.10.so.0
libgstreamer-plugins-base0.10-0:amd64: /usr/lib/x86_64-linux-gnu/libgstvideo-0.10.so.0
libgstreamer0.10-0:amd64: /usr/lib/x86_64-linux-gnu/libgstbase-0.10.so.0
libgstreamer0.10-0:amd64: /usr/lib/x86_64-linux-gnu/libgstreamer-0.10.so.0
libsqlite3-0:amd64: /usr/lib/x86_64-linux-gnu/libsqlite3.so.0
libxcomposite1:amd64: /usr/lib/x86_64-linux-gnu/libXcomposite.so.1
libxml2:amd64: /usr/lib/x86_64-linux-gnu/libxml2.so.2
libxslt1.1:amd64: /usr/lib/x86_64-linux-gnu/libxslt.so.1

apt-filelà một trêu chọc để cung cấp cho tôi các gói 64 bit vì vậy tôi phải làm sudo apt-file -a amd64 updateđể buộc nó có danh sách tệp 64 bit.

Bây giờ, hãy để tôi giải thích những gì ở trên:

  • ldd /path/to/binary: đọc tệp nhị phân và cho bạn biết các thư viện, ký hiệu được yêu cầu, v.v.
  • dpkg -S: tìm kiếm các gói cung cấp một tập tin cài đặt cụ thể.
  • awk, sedgrep: được sửa đổi dòng văn bản để xử lý chỉ là phần thú vị hoặc hiển thị các kết quả mong muốn.
  • |, $(...): cái đầu tiên cho phép tôi chuyển đầu ra của lệnh sang lệnh khác và cái sau cho phép tôi thực thi / đánh giá một lệnh trước khi các lệnh chính được thực thi.

TL; dr chỉ cần cài đặt các gói này:

sudo dpkg --add-architecture amd64 ## adding 64-bits architecture package
sudo apt-get update
sudo apt-get install libgstreamer-plugins-base0.10-0:amd64 libgstreamer-plugins-base0.10-0:amd64 libgstreamer-plugins-base0.10-0:amd64 libgstreamer-plugins-base0.10-0:amd64 libgstreamer0.10-0:amd64 libgstreamer0.10-0:amd64 libsqlite3-0:amd64 libxcomposite1:amd64 libxml2:amd64 libxslt1.1:amd64 libc6:amd64 libdrm2:amd64 libffi6:amd64 libgcc1:amd64 libgl1-mesa-glx:amd64 libglapi-mesa:amd64 libglib2.0-0:amd64 libpcre3:amd64 libstdc++6:amd64 libx11-6:amd64 libx11-xcb1:amd64 libxau6:amd64 libxcb1:amd64 libxcb-dri2-0:amd64 libxcb-dri3-0:amd64 libxcb-glx0:amd64 libxcb-present0:amd64 libxcb-sync1:amd64 libxdamage1:amd64 libxdmcp6:amd64 libxext6:amd64 libxfixes3:amd64 libxrender1:amd64 libxshmfence1:amd64 libxxf86vm1:amd64 zlib1g:amd64

Bạn cũng cần cài đặt kernel 64 bit.


root @ umar: / home / umar / Desktop # sudo dpkg -i viber.deb dpkg: lỗi xử lý lưu trữ viber.deb (--install): gói kiến ​​trúc (amd64) không khớp với hệ thống (i386) Đã gặp lỗi khi xử lý: viber.deb
Một Umar Mukthar

@AUmarMukthar sudo dpkg --add-architecture amd64.
Braiam

Tôi đã thử lệnh của bạn. Không tiến triển thêm
Một Umar Mukthar

2
"Có khả năng là bạn cũng cần cài đặt kernel 64 bit." - điều đó không thể xảy ra, chắc chắn 100%. Một hạt nhân 32 bit không có những gì nó cần để thiết lập môi trường xử lý 64.
Mat


11

Không thể cài đặt một phần mềm chỉ hỗ trợ vòm 64 bit trên HĐH 32 bit trong khi điều ngược lại là đúng. Để cài đặt phần mềm 64 bit, bạn sẽ cần một phần cứng hỗ trợ hệ điều hành 64 bit và hệ điều hành 64 bit chạy trên đỉnh của nó.

Ngoài ra tôi muốn đề cập rằng không thể cài đặt HĐH 64 bit dưới dạng máy ảo trên phần cứng chỉ hỗ trợ kiến ​​trúc 32 bit. Phần cứng của bạn nên hỗ trợ kiến ​​trúc 64 Bit cùng với hỗ trợ ảo hóa để tạo các máy ảo 64 Bit.


1
Bạn có thể cài đặt vm 64 bit trên máy 32 bit giống như bạn có thể cài đặt một trong bất kỳ kiến ​​trúc nào, xem ví dụ về qemu . Lưu ý tuy nhiên nó sẽ rất chậm.
Vality

@Vality Câu trả lời của bạn có vẻ tốt. Bạn có thể cải thiện hơn nữa câu trả lời.
Một Umar Mukthar

@AUmarMukthar Tôi có tiện không? Nếu nó vẫn còn thiếu xin vui lòng bình luận và tôi sẽ xem nếu tôi có thể cải thiện nó.
Vality

10

Tôi phải nói rằng bạn không đúng về

máy tính của tôi chỉ hỗ trợ 32-bit

Theo kết quả đầu ra của lscpuphiên bản Ubuntu đã cài đặt là 32 bit trong khi hệ thống của bạn có thể hỗ trợ ứng dụng 64 bit nếu bạn muốn cài đặt ứng dụng 64 bit, bạn phải cài đặt hệ điều hành Ubuntu 64 bit. xem dòng này dưới đây:

Architecture: i686              # <-- your kernel is 32 bit (32 bit Ubuntu)
CPU op-mode(s): 32-bit, 64-bit  # <-- your cpu can handle 32 or 64 bit instructions
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1 
Core(s) per socket: 2 
Socket(s): 1 
Vendor ID: GenuineIntel 
CPU family: 6 
Model: 23 
Stepping: 10 
CPU MHz: 2800.000 
BogoMIPS: 5586.12 
Virtualization: VT-x 
L1d cache: 32K 
L1i cache: 32K 
L2 cache: 2048K

Tải xuốngcài đặt 64 bit Ubuntu 14.04.1 và sau đó cài đặt Viber .


Điều đó đúng nếu tôi làm như vậy tôi sẽ mất các ứng dụng khác cho đến nay đã cài đặt .. Vì vậy, chỉ có tôi đang tìm kiếm một giải pháp. Bất kỳ cảm ơn cho thông tin của bạn. +1 cho những nỗ lực của bạn
Một Umar Mukthar

10

Bạn có thể cài đặt phần mềm 64 bit trên máy được xây dựng với phần cứng 32 bit giống như cách bạn có thể chạy phần mềm ARM trên mục tiêu x86, sử dụng bản dịch động.

Về cơ bản, một phần mềm như qemu nằm giữa các chương trình và máy tính của bạn, thực hiện một bản dịch từ lệnh AMD64 được đặt thành x86 (có thể là i686) (với hiệu năng rất nghiêm trọng được thừa nhận, trong trường hợp của bạn có thể là hoàn toàn có thể tránh được).

Vì bạn đang sử dụng Ubuntu, bạn có một tài liệu tuyệt vời về cách thiết lập nó . Về cơ bản, bạn có một trong hai lựa chọn, bạn có thể chạy chương trình trong môi trường VM 64 bit hoàn chỉnh với hạt nhân của chính nó hoặc, điều tôi nghĩ bạn muốn ở đây là trực quan hóa không gian người dùng, điều này sử dụng thông tin (tôi không nghĩ nó phổ biến được gọi là thunking những ngày này nhưng quên từ mới) để dịch các cuộc gọi hệ thống từ 64 bit sang 32 bit để bạn có thể sử dụng kernel của riêng mình.

Bây giờ hướng dẫn giải thích điều này tốt hơn tôi, nhưng tóm lại, bạn cần cài đặt các gói qemu và qemu-kvm-bổ sung-tĩnh sau đó sử dụng qemu-debootstrap để thiết lập môi trường và thư viện cho chương trình 64 bit của bạn. Sau đó, bạn cần sử dụng binfmt_misc và trình thông dịch qemu tĩnh (qemu-arch-static, trong trường hợp của bạn có lẽ là x86_64, x64 hoặc AMF64) để chạy chương trình của bạn trong môi trường của nó.

Lưu ý rằng tuy nhiên, CPU của bạn dường như hỗ trợ các hướng dẫn 64 bit để bạn có thể cài đặt Ubuntu 64 bit, bạn có thể không cần bất kỳ mô phỏng nào chạy mã x86 trên máy AMD64 và nếu bạn có thể làm điều này thì có thể dễ dàng hơn, mặt khác, nếu bạn muốn khám phá qemu và thế giới mô phỏng kiến ​​trúc (có thể đến sau nếu bạn có một chương trình được xây dựng để nói ... ARM chẳng hạn như một cái gì đó được xây dựng cho điện thoại) Tôi khuyên bạn nên tiếp tục nhưng hãy cẩn thận , mọi thứ đôi khi mất một chút khó khăn hoặc gỡ lỗi trước khi chúng sẽ hoạt động tốt.


5
Kiểu ảo hóa "dịch động" này sẽ rất chậm . Và vì anh ta có một hệ thống 64 bit ngay từ đầu, nên tốt nhất là chỉ cần cài đặt HĐH 64 bit.
Michael Hampton

@MichaelHampton Tôi biết rằng nó sẽ chậm và thực sự đã lưu ý rằng, tôi cũng đã lưu ý rằng anh ta có thể tốt hơn với hệ điều hành 64 bit, tuy nhiên tôi cũng muốn đưa ra câu trả lời sẽ trả lời câu hỏi được hỏi.
Vality

Tôi đã không nghĩ rằng "hit hit" giải thích thỏa đáng về việc nó sẽ chậm như thế nào. :)
Michael Hampton

@MichaelHampton Đúng. Đang hạnh phúc? ;)
Vality

Vâng, bây giờ tôi thích nó. :)
Michael Hampton


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.