32 비트 컴퓨터에 64 비트 .deb 파일을 설치하는 방법은 무엇입니까?


17

우분투 14.04가 있습니다. 나는 최근에 Viber를 다운로드했다 . Viber .deb 파일에는 64 비트 아키텍처가 있습니다. 컴퓨터에 설치하고 싶지만 컴퓨터는 32 비트 만 지원합니다.

실행 결과 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를 설치해야합니다.
muru

나는 일부 소프트웨어가 그 일을하는 것을 들었다 ... 그게 내가 요구하는 것
Umar Mukthar

당신은 VM을 사용해야합니다 : askubuntu.com/questions/180761/...
muru

lscpu터미널에서 실행 한 결과는 무엇입니까 ?
αғsнιη

7
예, 시스템 64 비트를 지원 하므로이 문제가 다시 발생하여 나중에 처리하기가 훨씬 어려울 수 있으므로 최대한 빨리 다시 설치 해야합니다 .
Michael Hampton

답변:


22

하드웨어가 64 비트를 지원하는 경우 다음을 수행합니다.

CPU op-mode : 32 비트, 64 비트

패키지는 멀티 아치 (multiarch)를 사용하도록 준비되었으며, 이는 또한 사실입니다 :

 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

따라서 수동으로 누락 된 라이브러리를 찾아서 설치해야합니다 ! 올바른 도구를 알고 있으면 쉽습니다. http://packages.ubuntu.com 기능 apt-file도 편리 합니다. "패키지 내용 검색"도 좋습니다. 그러나 나는 계속해서 그들을 찾았습니다.

이 파일들은 이미 내 시스템에 설치되어 있습니다. 패키지 이름은 콜론 앞으로 끝나는 패키지 이름 만 복사하면됩니다 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 update64 비트 파일 목록을 갖도록해야했습니다.

이제 위의 내용을 모두 설명하겠습니다.

  • ldd /path/to/binary: 바이너리를 읽고 필요한 라이브러리, 심볼 등이 무엇인지 알려줍니다.
  • dpkg -S: 특정 패키지를 제공하는 패키지를 검색합니다.
  • awk, sedgrep다음 텍스트 스트림을 수정하기 만 재미있는 부분을 처리하거나 원하는 출력을 표시.
  • |, $(...): 첫 번째 명령을 사용하면 명령의 출력을 다른 명령으로 파이프 할 수 있고, 나중에 주 명령이 실행되기 전에 명령을 실행 / 평가할 수 있습니다.

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
우마르 Mukthar

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

나는 당신의 명령을 시도했습니다. 더 이상 진행하지
우마르 Mukthar

2
"64 비트 커널도 설치해야합니다." -가능성이 없습니다. 100 % 확실합니다. 32 비트 커널에는 64 개의 프로세스 환경을 설정하는 데 필요한 기능이 없습니다.
Mat


11

32 비트 OS에서는 64 비트 아치 만 지원하는 소프트웨어는 설치할 수 없지만 그 반대의 경우는 마찬가지입니다. 64 비트 소프트웨어를 설치하려면 64 비트 및 64 비트 OS를 지원하는 하드웨어가 필요합니다.

또한 32 비트 아키텍처 만 지원하는 하드웨어에는 64 비트 OS를 가상 머신으로 설치할 수 없습니다. 64 비트 가상 머신을 생성하려면 하드웨어가 가상화 지원과 함께 64 비트 아키텍처를 지원해야합니다.


1
아키텍처 중 하나를 설치할 수있는 것처럼 32 비트 시스템에 64 비트 vm을 설치할 수 있습니다 ( 예 : qemu) . 그러나 매우 느립니다.
Vality

@Vality 당신의 대답은 좋은 것 같습니다. 답을 더 향상시킬 수 있습니까?
Umar Mukthar

@AUmarMukthar 나는 그게 편리합니까? 여전히 부족한 경우 의견을 말하면 개선 할 수 있는지 확인할 것입니다.
Vality

10

나는 네가 진실이 아니라고 말해야한다

내 컴퓨터 는 32 비트 지원합니다

lscpu설치된 Ubuntu 버전을 실행 한 결과 32 비트 인 반면 64 비트 응용 프로그램을 설치하려는 경우 시스템에서 64 비트 응용 프로그램을 지원할 수 있으므로 64 비트 Ubuntu OS를 설치해야합니다. 아래의이 줄을보십시오 :

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

10

동적 변환을 사용하여 x86 대상에서 ARM 소프트웨어를 실행할 수있는 것과 같은 방식으로 32 비트 하드웨어로 구축 된 시스템에 64 비트 소프트웨어를 설치할 수 있습니다.

기본적으로, 소프트웨어의 조각 같은 QEMU가 로모그래퍼 (는 x86 (아마는 i686) 하나에 AMD64 명령어 세트에서 번역을 수행하는 프로그램과 컴퓨터의-사이에있는 매우 심각한 성능은 귀하의 경우 어떤 일 수 있었다, 틀림없이 히트 완전히 피할 수 있음).

우분투를 사용하고 있다면 이것을 설정하는 방법에 대한 훌륭한 문서가 있습니다. 기본적으로 두 가지 선택 중 하나를 선택할 수 있습니다. 독립 커널을 사용하여 완전한 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 비트 우분투를 설치하는 것이 가능할 수 있습니다. AMD64 컴퓨터에서 에뮬레이션을 실행하지 않고도 x86 코드를 실행할 수 있습니다. 반면에 qemu와 아키텍처 에뮬레이션의 세계를 발견하고 싶다면 (전화를 위해 만들어진 것과 같은 ARM을 위해 작성된 프로그램을 얻는다면 나중에 손을 잡고있을 수 있습니다.) 일이 잘 진행되기 전에 약간의 조정이나 디버깅이 필요한 경우가 있습니다.


5
이런 종류의 "동적 변환"가상화는 매우 느리게 진행 됩니다. 그리고 처음에는 64 비트 시스템이 있으므로 64 비트 OS 만 설치하는 것이 가장 좋습니다.
Michael Hampton

@MichaelHampton 느리다는 것을 알고 실제로 64 비트 OS에서 더 나을 수도 있다고 언급했지만 질문에 대한 답변을 줄 수있는 답변을 원했습니다.
Vality

나는 "성능 적중"이 얼마나 느리게 적절한 지 설명하지 않았다. :)
Michael Hampton

@MichaelHampton True입니다. 이제 행복해? ;)
Vality

예, 이제 마음에 듭니다. :)
Michael Hampton


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.