Wie installiere ich eine 64-Bit-DEB-Datei auf einem 32-Bit-Computer?


17

Ich habe Ubuntu 14.04. Ich habe kürzlich Viber heruntergeladen . Die Viber-DEB-Datei weist eine 64-Bit-Architektur auf. Ich möchte es auf meinem Computer installieren, aber mein Computer unterstützt nur 32-Bit.

Die Ausgabe von running lscpuist wie folgt:

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
Wie können Sie sicher sein, dass 64-Bit nicht unterstützt wird? Wenn Sie 64-Bit-Programme ausführen müssen, müssen Sie ein 64-Bit-Betriebssystem installieren.
muru

Ich habe gehört, dass einige Softwares diesen Job machen ... Das ist, was ich
frage

Sie müssen VMs verwenden: askubuntu.com/questions/180761/…
muru

Was ist die Ausgabe von Laufen lscpuin Terminal?
αғsнιη

7
Ja, Ihr System ist 64-Bit-fähig, und Sie sollten es zum frühestmöglichen Zeitpunkt neu installieren, da Sie erneut auf dieses Problem stoßen und es noch schmerzhafter wird, es später zu beheben.
Michael Hampton

Antworten:


22

Vorausgesetzt, Ihre Hardware unterstützt 64-Bit, was Folgendes bewirkt:

CPU-Betriebsmodus (e): 32-Bit, 64-Bit

und das Paket wurde vorbereitet, um Multiarch zu verwenden, was auch zutrifft:

 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

Sie können einfach die erforderlichen 64-Bit-Bibliotheken und Binärdateien installieren, die von dem Paket abhängen (dazu später nichts mehr), das Sie zum Ausführen der Anwendung benötigen, und zwar praktisch ohne Auswirkungen auf die Leistung. In meinem Fall habe ich das Paket einfach installiert:

$ 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) ...

Und dann begannen Probleme ...

Die Paketmanager entschieden, dass sie keine Abhängigkeiten für ihr Paket auflisten sollten.

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

was sie eigentlich brauchen:

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

Sie müssen also die fehlenden Bibliotheken manuell finden und installieren ! Dies ist einfach, wenn Sie die richtigen Werkzeuge kennen. apt-filePraktisch ist hier auch die http://packages.ubuntu.com-Funktionalität "Inhalte von Paketen durchsuchen". Aber ich ging voran und suchte nach ihnen:

Diese Dateien sind bereits in meinem System installiert. Sie müssen nur den Paketnamen kopieren, der vor dem Doppelpunkt steht, der mit endet amd64. Sie sollten die Paketnamen wie folgt kopieren:

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

Diese hatte ich nicht installiert, die ich mit erhalten 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-fileEs war eine Zumutung, mir die 64-Bit-Pakete zu geben, also musste ich sudo apt-file -a amd64 updatesie zwingen, die 64-Bit-Dateiliste zu haben.

Lassen Sie mich nun erklären, was alles oben steht:

  • ldd /path/to/binary: Liest eine Binärdatei und teilt Ihnen mit, welche Bibliotheken, Symbole usw. benötigt werden.
  • dpkg -S: Suche nach Paketen, die eine bestimmte installierte Datei enthalten.
  • awk, sedund grep: modifizieren den Textstrom, um nur die interessanten Teile zu verarbeiten oder die gewünschte Ausgabe anzuzeigen.
  • |, $(...): Die erste Rohrleitung zu einem anderen ermöglicht mir die Ausgabe eines Befehls, und die später ermöglicht es mir , einen Befehl auszuführen / bewerten , bevor die wichtigsten sind ausgeführt wird.

TL; dr installiere einfach diese Pakete:

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

Sie müssen auch den 64-Bit-Kernel installieren.


root @ umar: / home / umar / Desktop # sudo dpkg -i viber.deb dpkg: Fehler beim Verarbeiten des Archivs viber.deb (--install): Paketarchitektur (amd64) stimmt nicht mit dem System überein (i386) Bei der Verarbeitung sind Fehler aufgetreten: viber.deb
A Umar Mukthar 20.08.14

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

Ich habe dein Kommando ausprobiert. Keine weiteren Fortschritte
A Umar Mukthar

2
Msgstr "Möglicherweise müssen Sie auch den 64 - Bit - Kernel installieren." - Das ist nicht wahrscheinlich, es ist 100% sicher. Ein 32-Bit-Kernel hat einfach nicht das Zeug, eine 64-Prozess-Umgebung einzurichten.
Mat


11

Es ist nicht möglich, eine Software zu installieren, die unter einem 32-Bit-Betriebssystem nur 64-Bit-Arch unterstützt, wohingegen das Gegenteil der Fall ist. Um eine 64-Bit-Software zu installieren, benötigen Sie eine Hardware, die 64-Bit unterstützt, und ein darauf laufendes 64-Bit-Betriebssystem.

Ich möchte auch erwähnen, dass es nicht möglich ist, ein 64-Bit-Betriebssystem als virtuelle Maschine auf einer Hardware zu installieren, die nur eine 32-Bit-Architektur unterstützt. Ihre Hardware sollte die 64-Bit-Architektur zusammen mit der Virtualisierungsunterstützung unterstützen, um virtuelle 64-Bit-Maschinen zu erstellen.


1
Sie können eine 64-Bit-VM auf einer 32-Bit-Maschine genauso installieren wie eine beliebige Architektur, siehe z. B. qemu . Beachten Sie jedoch, dass es außerordentlich langsam sein wird.
Vality

@ Qualität Ihre Antwort scheint gut zu sein. Könnten Sie die Antwort weiter verbessern?
Ein Umar Mukthar

@AUmarMukthar ich das überhaupt handlich? Wenn es immer noch fehlt, kommentieren Sie bitte und ich werde sehen, ob ich es verbessern kann.
Vality

10

Ich muss sagen, dass Sie nicht wahr sind

Mein Computer unterstützt nur 32-Bit

Entsprechend der Ausgabe lscpuIhrer installierten Ubuntu-Version ist 32 Bit, während Ihr System 64-Bit-Anwendungen unterstützen kann. Wenn Sie 64-Bit-Anwendungen installieren möchten, müssen Sie 64-Bit-Versionen von Ubuntu OS installieren. siehe diese Zeilen unten:

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

Laden Sie Ubuntu 14.04.1 (64 Bit) herunter und installieren Sie es. Installieren Sie dann auch Viber .


Das ist richtig, wenn ich das tue, werde ich andere Anwendungen verlieren, die bisher installiert wurden. Also bin nur ich auf der Suche nach einer Lösung. Wie auch immer, danke für deine Infos. +1 für deine Bemühungen
A Umar Mukthar

10

Sie können 64-Bit-Software auf einem Computer mit 32-Bit-Hardware genauso installieren wie beispielsweise ARM-Software auf einem x86-Ziel mithilfe dynamischer Übersetzung.

Grundsätzlich befindet sich eine Software wie qemu zwischen den Programmen und Ihrem Computer und führt eine Übersetzung vom AMD64-Befehlssatz zum x86-Befehlssatz (wahrscheinlich i686) durch ( was in Ihrem Fall allerdings sehr schwerwiegend sein könnte) völlig vermeidbar).

Unter der Voraussetzung, dass Sie Ubuntu verwenden, verfügen Sie über eine hervorragende Dokumentation zur Einrichtung . Grundsätzlich haben Sie eine von zwei Möglichkeiten: Sie können das Programm entweder in einer vollständigen 64-Bit-VM-Umgebung mit eigenem Kernel ausführen oder, wie ich finde, in der User-Space-Visualisierung Thunking verwenden (ich glaube nicht, dass dies üblich ist) Heutzutage Thunking genannt, aber vergessen Sie das neue Wort), um Systemaufrufe von 64 Bit auf 32 Bit zu übersetzen, damit Sie Ihren eigenen Kernel verwenden können.

Jetzt erklärt der Leitfaden dies besser als ich, aber kurz gesagt, Sie müssen qemu und die Pakete qemu-kvm-extras-static installieren und dann mit dem qemu-debootstrap eine Umgebung und Bibliotheken für Ihr 64-Bit-Programm einrichten. Dann müssen Sie binfmt_misc und den statischen qemu-Interpreter (qemu-arch-static, in Ihrem Fall wahrscheinlich x86_64, x64 oder AMF64) verwenden, um Ihr Programm in seiner Umgebung auszuführen.

Beachten Sie jedoch, dass Ihre CPU offenbar 64-Bit-Anweisungen unterstützt, sodass Sie möglicherweise 64-Bit-Ubuntu installieren können. Sie können x86-Code ohne Emulation auf einem AMD64-Computer ausführen. Wenn Sie dies tun können, ist dies möglicherweise einfacher. Wenn Sie andererseits qemu und die Welt der Architekturemulation entdecken möchten (möglicherweise später, wenn Sie ein Programm erstellen lassen, für das beispielsweise ... ARM erstellt wurde, z. B. für ein Telefon), empfehle ich Ihnen, weiterzumachen, aber seien Sie vorsichtig Manchmal dauert es ein bisschen, bis die Dinge richtig funktionieren.


5
Diese Art der "dynamischen Übersetzung" der Virtualisierung wird schmerzhaft langsam sein . Und da er in erster Linie über ein 64-Bit-System verfügt, ist es am besten, nur ein 64-Bit-Betriebssystem zu installieren.
Michael Hampton

@MichaelHampton Ich weiß, es wird langsam und habe in der Tat bemerkt, dass ich auch bemerkt habe, dass er mit einem 64-Bit-Betriebssystem besser dran ist, aber ich wollte auch eine Antwort geben, die die gestellte Frage beantworten würde.
Vality

Ich dachte nicht, dass "Leistungstreffer" ausreichend erklärt, wie langsam es sein wird. :)
Michael Hampton

@ MichaelHampton Wahr. Jetzt glücklich? ;)
Vality

Ja, jetzt gefällt es mir. :)
Michael Hampton


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.