64ビットの.debファイルを32ビットのマシンにインストールする方法は?


17

Ubuntu 14.04があります。最近Viberをダウンロードしました。Viber .debファイルには64ビットアーキテクチャがあります。コンピューターにインストールしたいのですが、コンピューターは32ビットしかサポートしていません。

runningの出力はlscpu次のとおりです。

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
64ビットをサポートしていないことをどのように確認できますか?64ビットプログラムを実行する必要がある場合は、64ビットOSをインストールする必要があります。
ムル14

私は聞いたいくつかのソフトウェアは、その仕事をすることに... thatsは何を求めている
AウマルMukthar

あなたは、VMを使用する必要があります:askubuntu.com/questions/180761/...
muru

lscpuターミナルで実行した場合の出力は何ですか?
αғsнιη

7
はい、お使いのシステム 64ビット対応です。この問題に再び遭遇し、後で対処するのがさらに苦痛になるため、できるだけ早く再インストールする必要があります。
マイケルハンプトン14

回答:


22

ハードウェアが64ビットをサポートしている場合:

CPU op-mode(s):32ビット、64ビット

また、パッケージはマルチアーチを使用する準備ができていました。

 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

アプリケーションの実行に必要なパッケージの依存関係である必要のない64ビットのライブラリとバイナリをインストールするだけで(どれも後ほど詳細になりません)、仮想的なパフォーマンスへの影響はありません。私の場合、パッケージをインストールしただけです。

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

そして、問題が発生し始めました...

パッケージマネージャーは、パッケージの依存関係を一覧表示しないことを決定しました。

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

実際に必要なもの:

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

そのため、不足しているライブラリを手動で見つけてインストールする必要があります正しいツールを知っていれば、これは簡単です。apt-fileここで便利になります。また、http://packages.ubuntu.comの機能「パッケージのコンテンツを検索する」もうまくいきます。しかし、私は先に進み、それらを検索しました:

これらのファイルはすでにシステムにインストールされています。パッケージ名をコピーする必要があるのは、コロンで終わるパッケージ名のみですamd64。パッケージ名はそのままコピーする必要があります。

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

これらはインストールされていませんでした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-file64ビットパッケージを提供するのはいじめだったのでsudo apt-file -a amd64 update、64ビットファイルリストを強制的に追加する必要がありました。

では、上記のすべてについて説明しましょう。

  • ldd /path/to/binary:バイナリを読み取り、必要なライブラリ、シンボルなどを通知します。
  • dpkg -S:特定のインストール済みファイルを提供するパッケージを検索します。
  • awksedおよびgrep:興味深い部分のみを処理するか、目的の出力を表示するようにテキストストリームを変更しています。
  • |$(...):最初に別のパイプにコマンドの出力を、私を可能にし、以降の主なものは、実行される前に、私は/実行コマンドを評価することができます。

TL; drはこれらのパッケージをインストールするだけです:

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

64ビットカーネルもインストールする必要があります。


root @ umar:/ home / umar / Desktop#sudo dpkg -i viber.deb dpkg:アーカイブ処理エラーviber.deb(--install):パッケージアーキテクチャ(amd64)がシステムと一致しません(i386)処理中にエラーが発生しました: viber.deb
Umar Mukthar 14

@AUmarMukthar sudo dpkg --add-architecture amd64
Braiam

あなたのコマンドを試しました。それ以上の進歩はありません
Umar Mukthar 14

2
「64ビットカーネルもインストールする必要がある可能性が高いです。」-それはありそうにない、100%確実です。32ビットカーネルには、64プロセス環境をセットアップするのに必要なものがありません。
マット14


11

32ビットOSで64ビットアーチのみをサポートするソフトウェアをインストールすることはできませんが、その逆は当てはまります。64ビットソフトウェアをインストールするには、64ビットをサポートするハードウェアと、その上で実行される64ビットOSが必要です。

また、32ビットアーキテクチャのみをサポートするハードウェアに64ビットOSを仮想マシンとしてインストールすることはできません。64ビット仮想マシンを作成するには、ハードウェアが仮想化サポートとともに64ビットアーキテクチャをサポートする必要があります。


1
任意のアーキテクチャのいずれかをインストールできるように、32ビットマシンに64ビットvmをインストールできます。たとえば、qemuを見てください。ただし、非常に遅いことに注意してください。
バリティ14

@Valityあなたの答えは良いようです。答えをさらに改善してください。
AウマルMukthar

@AUmarMukthar私はとても便利ですか?まだ足りない場合はコメントしてください。改善できるかどうか確認します。
バリティ14

10

私はあなたが真実ではないと言わなければなりません

私のコンピューターは32ビットのみをサポートしています

lscpu64ビットアプリケーションをインストールする場合、システムは64ビットアプリケーションをサポートできますが、64ビットアプリケーションをインストールする必要がある場合、インストールしたUbuntuバージョンの実行結果は32ビットです。以下の行を参照してください。

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

64ビットUbuntu 14.04.1をダウンロードしてインストールしてから、Viberもインストールします。


そうすれば、今までにインストールした他のアプリケーションが失われます。だから私はソリューションを探しています。あなたの情報に感謝します。あなたの努力のために+1
Umar Mukthar 14

10

動的変換を使用して、x86ターゲットでARMソフトウェアを実行するのと同じ方法で、32ビットハードウェアで構築されたマシンに64ビットソフトウェアをインストールできます。

基本的に、qemuなどのソフトウェアは、プログラムとコンピューターの間に位置し、AMD64命令セットからx86(おそらくi686)命令セットへの変換を実行します(非常に深刻なパフォーマンスヒットがあります。完全に回避可能)。

あなたがubuntuを使用していることを考えると、これを設定する方法に関する優れたドキュメントがあります。基本的に2つの選択肢のいずれかがあり、独自のカーネルを備えた完全な64ビットVM環境でプログラムを実行するか、ここで欲しいと思うのはユーザースペースの視覚化で、これはサンキングを使用します(私はそれが一般的ではないと思います最近ではサンクと呼ばれていますが、新しい単語を忘れて)、システムコールを64ビットから32ビットに変換して、独自のカーネルを使用できるようにします。

今、ガイドはこれを私よりもうまく説明していますが、要するにqemuとqemu-kvm-extras-staticパッケージをインストールし、qemu-debootstrapを使用して64ビットプログラムの環境とライブラリをセットアップする必要があります。次に、binfmt_miscと静的qemuインタープリター(qemu-arch-static、場合によってはx86_64、x64、またはAMF64)を使用して、環境内でプログラムを実行する必要があります。

ただし、CPUは64ビット命令をサポートしているようであるため、64ビットubuntuをインストールできる場合があります。AMD64マシンでエミュレーションなしでx86コードを実行できます。これを行うことができる場合は、一方、qemuとアーキテクチャエミュレーションの世界を発見したい場合(たとえば、電話用にビルドされたものなど、ARM用にビルドされたプログラムを入手した場合は、後で手に入るかもしれません)、先に進むことをお勧めしますが、注意してください、うまく動作する前に、少し手間をかけたりデバッグしたりすることがあります。


5
この種の「動的変換」仮想化は非常に遅くなります。そして、そもそも64ビットシステムを持っているので、64ビットOSをインストールするのが最善です。
マイケルハンプトン14

@MichaelHampton私はそれが遅いことを知っており、実際に彼が64ビットOSでうまくいくかもしれないことに注意しましたが、私はまた質問に答える答えを与えたいと思いました。
バリティ14

「パフォーマンスヒット」がそれがどれほど遅いかを適切に説明するとは思わなかった。:)
マイケルハンプトン14

@MichaelHamptonはい。今幸せです?;)
バリティ14

はい、今は気に入っています。:)
マイケルハンプトン14


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.