64 비트 버전의 Ubuntu에서 32 비트 프로그램을 어떻게 실행합니까?


41

64 비트 버전의 Ubuntu 13.10이 있습니다. 32 비트 버전의 프로그램을 실행하고 싶습니다. 그러나 ia32-libs13.10에는 포함되어 있지 않습니다. 이것에 대한 대체 패키지가 있습니까?



@bain 이것은 중복되지 않습니다. 이 질문은 일반적인 상황에 관한 것이며, 특정 문제이며, 이것이 더 오래되고 더 나은 질문이라는 것은 말할 것도 없습니다.
Seth

그리고 Braiam의 대답은 굉장합니다 ! 따라서 어디에서나 속이는 경우 병합해야합니다.
Mateo

답변:


30

ia32-libsAPT 시스템을 사용하는 경우 더 이상 패키지 가 필요하지 않습니다 (정확히 12.04부터). 64 비트 시스템에 32 비트 패키지 설치에 대해 걱정할 필요가 없습니다. 이것은 데비안이 의존성을 관리하는 방식으로 데비안에서 가장 많은 게임 변경 정책 중 하나 인 multiarch를 도입 한 이후에 일어났습니다 . 이 방법을 사용하면 커널 아키텍처를 관리하지 않고도 동일한 시스템에서 서로 다른 이진 대상을 가질 수 있습니다. 이것은 준비없이 32 비트 패키지를 실행할 수 있다는 것을 의미하지는 않지만 라이브러리 / 바이너리를 설치하면 이론적으로 모든 응용 프로그램을 실행할 수 있습니다. 64 비트에서 32 비트로 또는 그 반대로 적용됩니다.

여기에 이미지 설명을 입력하십시오

이러한 방법을 사용하려면 APT 관리자를 사용하여 충족되지 않은 종속성을 방지하는 것이 좋습니다. 변경 로그 에는 변경 방법에 대한 작은 기록이 포함됩니다.

  1. 정확하게 패키지 를 비우고 전환 패키지를 만들었습니다 . 멀티 아치로 이동되지 않은 패키지에 대한 몇 가지 종속성이 추가되었습니다.
  2. 느리지 만 확실하게 모든 패키지는 멀티 아치 지원으로 다시 빌드되었으며 리버스 종속성은 삭제되거나 ia32-lib-multiarch로 변경되었습니다. 이러한 패키지가 ia34-libs 패키지를 필요로하지 않으면 종속성이 동시에 삭제됩니다. 종속성이 변경되었다 ia32-libspackage:arch있는 package필요한 라이브러리의 이름과 arch(스카 이프와 예를 들어이 아래) 아키텍처.
  3. 으로 마지막 릴리스ia32-libs-multiarch 패키지는 사전 문제 없습니다 릴리스에서 제거하고 ia32-libs건방진에 게시있어하지 않습니다. 모든 우분투 패키지는 다중 아키텍처 가능하며 시스템에 다른 아키텍처 패키지를 설치할 수 있습니다.

이제 32 비트 바이너리가 필요한 패키지를 설치할 때주의를 기울이지 않으면 패키지 관리자가 필요한 종속성을 자동으로 가져 오기 때문에 32 비트 패키지를 사용하고 있다는 것을 절대 알 수 없습니다.

sudo apt-get --no-install-recommends -q -y install skype
Reading package lists...
Building dependency tree...
Reading state information...
The following extra packages will be installed:
  libaudio2:i386 libjbig0:i386 liblcms1:i386 libmng1:i386 libqt4-dbus:i386 libqt4-declarative:i386
  libqt4-network:i386 libqt4-opengl:i386 libqt4-script:i386 libqt4-sql:i386 libqt4-xml:i386
  libqt4-xmlpatterns:i386 libqtcore4:i386 libqtgui4:i386 libqtwebkit4:i386 libssl1.0.0:i386 libtiff5:i386
  libxss1:i386 libxv1:i386 skype-bin:i386
Suggested packages:
  nas:i386 liblcms-utils:i386 libqt4-declarative-folderlistmodel:i386 libqt4-declarative-gestures:i386
  libqt4-declarative-particles:i386 libqt4-declarative-shaders:i386 qt4-qmlviewer:i386 libqt4-dev:i386
  libthai0:i386 libicu48:i386 qt4-qtconfig:i386
Recommended packages:
  libqt4-sql-mysql:i386 libqt4-sql-odbc:i386 libqt4-sql-psql:i386 libqt4-sql-sqlite:i386 libcups2:i386
  sni-qt:i386 libasound2-plugins:i386
The following NEW packages will be installed:
  libaudio2:i386 libjbig0:i386 liblcms1:i386 libmng1:i386 libqt4-dbus:i386 libqt4-declarative:i386
  libqt4-network:i386 libqt4-opengl:i386 libqt4-script:i386 libqt4-sql:i386 libqt4-xml:i386
  libqt4-xmlpatterns:i386 libqtcore4:i386 libqtgui4:i386 libqtwebkit4:i386 libssl1.0.0:i386 libtiff5:i386
  libxss1:i386 libxv1:i386 skype skype-bin:i386
0 upgraded, 21 newly installed, 0 to remove and 0 not upgraded.
Need to get 33.9 MB/38.2 MB of archives.
After this operation, 118 MB of additional disk space will be used.
Preconfiguring packages ...
Selecting previously unselected package libssl1.0.0:i386.
(Reading database ... 208485 files and directories currently installed.)
Unpacking libssl1.0.0:i386 (from .../libssl1.0.0_1.0.1c-4ubuntu8.1_i386.deb) ...
Selecting previously unselected package libaudio2:i386.
Unpacking libaudio2:i386 (from .../libaudio2_1.9.3-5ubuntu0.13.04.1_i386.deb) ...
Selecting previously unselected package liblcms1:i386.
Unpacking liblcms1:i386 (from .../liblcms1_1.19.dfsg-1.2ubuntu2_i386.deb) ...
Selecting previously unselected package libmng1:i386.
Unpacking libmng1:i386 (from .../libmng1_1.0.10-3build1_i386.deb) ...
Selecting previously unselected package libqtcore4:i386.
Unpacking libqtcore4:i386 (from .../libqtcore4_4%3a4.8.4+dfsg-0ubuntu9.4_i386.deb) ...
Selecting previously unselected package libqt4-xml:i386.
Unpacking libqt4-xml:i386 (from .../libqt4-xml_4%3a4.8.4+dfsg-0ubuntu9.4_i386.deb) ...
Selecting previously unselected package libqt4-dbus:i386.
Unpacking libqt4-dbus:i386 (from .../libqt4-dbus_4%3a4.8.4+dfsg-0ubuntu9.4_i386.deb) ...
Selecting previously unselected package libqt4-network:i386.
Unpacking libqt4-network:i386 (from .../libqt4-network_4%3a4.8.4+dfsg-0ubuntu9.4_i386.deb) ...
Selecting previously unselected package libqt4-script:i386.
Unpacking libqt4-script:i386 (from .../libqt4-script_4%3a4.8.4+dfsg-0ubuntu9.4_i386.deb) ...
Selecting previously unselected package libqt4-sql:i386.
Unpacking libqt4-sql:i386 (from .../libqt4-sql_4%3a4.8.4+dfsg-0ubuntu9.4_i386.deb) ...
Selecting previously unselected package libqt4-xmlpatterns:i386.
Unpacking libqt4-xmlpatterns:i386 (from .../libqt4-xmlpatterns_4%3a4.8.4+dfsg-0ubuntu9.4_i386.deb) ...
Selecting previously unselected package libjbig0:i386.
Unpacking libjbig0:i386 (from .../libjbig0_2.0-2ubuntu1_i386.deb) ...
Selecting previously unselected package libtiff5:i386.
Unpacking libtiff5:i386 (from .../libtiff5_4.0.2-4ubuntu2.1_i386.deb) ...
Selecting previously unselected package libqtgui4:i386.
Unpacking libqtgui4:i386 (from .../libqtgui4_4%3a4.8.4+dfsg-0ubuntu9.4_i386.deb) ...
Selecting previously unselected package libqt4-declarative:i386.
Unpacking libqt4-declarative:i386 (from .../libqt4-declarative_4%3a4.8.4+dfsg-0ubuntu9.4_i386.deb) ...
Selecting previously unselected package libqt4-opengl:i386.
Unpacking libqt4-opengl:i386 (from .../libqt4-opengl_4%3a4.8.4+dfsg-0ubuntu9.4_i386.deb) ...
Selecting previously unselected package libqtwebkit4:i386.
Unpacking libqtwebkit4:i386 (from .../libqtwebkit4_2.3.0-0ubuntu2_i386.deb) ...
Selecting previously unselected package libxss1:i386.
Unpacking libxss1:i386 (from .../libxss1_1%3a1.2.2-1_i386.deb) ...
Selecting previously unselected package libxv1:i386.
Unpacking libxv1:i386 (from .../libxv1_2%3a1.0.7-1ubuntu0.13.04.1_i386.deb) ...
Selecting previously unselected package skype-bin.
Unpacking skype-bin (from .../skype-bin_4.2.0.11-0ubuntu0.12.04.2_i386.deb) ...
Selecting previously unselected package skype.
Unpacking skype (from .../skype_4.2.0.11-0ubuntu0.12.04.2_amd64.deb) ...
Processing triggers for desktop-file-utils ...
Processing triggers for gnome-menus ...
Processing triggers for hicolor-icon-theme ...
Setting up libssl1.0.0:i386 (1.0.1c-4ubuntu8.1) ...
Setting up libaudio2:i386 (1.9.3-5ubuntu0.13.04.1) ...
Setting up liblcms1:i386 (1.19.dfsg-1.2ubuntu2) ...
Setting up libmng1:i386 (1.0.10-3build1) ...
Setting up libqtcore4:i386 (4:4.8.4+dfsg-0ubuntu9.4) ...
Setting up libqt4-xml:i386 (4:4.8.4+dfsg-0ubuntu9.4) ...
Setting up libqt4-dbus:i386 (4:4.8.4+dfsg-0ubuntu9.4) ...
Setting up libqt4-network:i386 (4:4.8.4+dfsg-0ubuntu9.4) ...
Setting up libqt4-script:i386 (4:4.8.4+dfsg-0ubuntu9.4) ...
Setting up libqt4-sql:i386 (4:4.8.4+dfsg-0ubuntu9.4) ...
Setting up libqt4-xmlpatterns:i386 (4:4.8.4+dfsg-0ubuntu9.4) ...
Setting up libjbig0:i386 (2.0-2ubuntu1) ...
Setting up libtiff5:i386 (4.0.2-4ubuntu2.1) ...
Setting up libxss1:i386 (1:1.2.2-1) ...
Setting up libxv1:i386 (2:1.0.7-1ubuntu0.13.04.1) ...
Setting up libqtgui4:i386 (4:4.8.4+dfsg-0ubuntu9.4) ...
Setting up libqt4-declarative:i386 (4:4.8.4+dfsg-0ubuntu9.4) ...
Setting up libqt4-opengl:i386 (4:4.8.4+dfsg-0ubuntu9.4) ...
Setting up libqtwebkit4:i386 (2.3.0-0ubuntu2) ...
Setting up skype-bin (4.2.0.11-0ubuntu0.12.04.2) ...
Setting up skype (4.2.0.11-0ubuntu0.12.04.2) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place

skype는 i386 패키지입니다. apt-get을 사용하여 설치하면 나중에 두통을 피할 수 있습니다.

그러나 일부 사람들은 .deb패키지 를 사용하는 것을 선호합니다 . 시스템이 충족되지 않은 종속성으로 끝나지 않도록 수동으로 모든 종속성을 수동으로 설치해야합니다. 도움이되는 명령 dpkg-deb -I은 패키지의 정보를 보여 주기 때문입니다 .

dpkg-deb -I zynaddsubfx-dssi_2.4.3-3_amd64.deb 
 new debian package, version 2.0.
 size 266936 bytes: control archive=845 bytes.
     917 bytes,    19 lines      control              
     232 bytes,     3 lines      md5sums              
 Package: zynaddsubfx-dssi
 Source: zynaddsubfx
 Version: 2.4.3-3
 Architecture: amd64
 Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
 Original-Maintainer: Debian Multimedia Maintainers <pkg-multimedia-maintainers@lists.alioth.debian.org>
 Installed-Size: 633
 Depends: libasound2 (>= 1.0.16), libc6 (>= 2.15), libgcc1 (>= 1:4.1.1), libjack-jackd2-0 (>= 1.9.5~dfsg-14) | libjack-0.116, libmxml1, libstdc++6 (>= 4.6), zlib1g (>= 1:1.1.4)
[...]

보시다시피, 종속성이 나열되어 있으므로 종속성이 있어야 sudo apt-get install합니다 sudo dpkg -i. 다시 한번, 리포지토리에서 소프트웨어를 다운로드하고 수동으로 설치하는 대신 리포지토리에서 소프트웨어를 설치하는 것이 dpkg -i좋습니다.

이제 개발중인 경우 apt-get구문을 사용하여 모든 라이브러리를 설치할 수 있습니다 . :i386다운로드하려는 라이브러리에 추가 하고 완료하십시오. 리포지토리에서 소프트웨어를 설치하는 경우이 작업을 수동으로 수행 할 필요가 없습니다.

결론 : 아니오, ia32-libs저장소에서 패키지를 더 잘 설치하면 설치 하지 않고 32 비트 패키지를 실행할 수 있습니다 . 개발중인 경우 항상 APT 시스템을 사용하십시오.


ia32-libs 패키지가 설치되어 있는지 확인하는 .bin 설치 프로그램으로 무엇을 할 수 있습니까? 내가 아는 한, 올바른 종속성을 수동으로 설치하더라도 .bin은 ia32-libs 패키지를 검색하기 때문에 여전히 설치에 실패합니다. ia32-libs가 설치되었다고 생각하는 설치 프로그램을 "속이는"방법이 있습니까?
Galgalesh

1
@ 갈 갈레 쉬 (Galgalesh)는 관리자에게 그들의 물건을 고치라고 요청한다. 그들은 과거에 있었다.
Braiam

ia32-libs를 제거하는 유일한 문제는 32 비트 라이브러리를 사용하여 32 비트 Windows 프로그램을 실행하려고하는 PlayOnLinux와 같은 프로그램이있을 때입니다. 그런 다음 이것은 비 호환성 문제입니다.
AlexLordThorsen

@Rawrgulmuffins 변경해야 ... OpenSUSE 및 Red Hat은 이미 LSB 및 FHS 표준을 준수 했으며, ia32-libs 패키지를 통해 변경 사항을 쉽게 관리 할 수 ​​없었습니다. 건축물. 대신 개발자는 멀티 아키 텍 소개를 따라 패키지를 다시 패키지해야합니다. 지난 3 년이 지나지 않았다면 게으르고 있습니다.
Braiam

@Braiam 따라서 결함은 이전 버전과의 호환성을 깨기위한 LSB 및 FHS 표준을 따릅니다. 이것은 lib32에 의존하는 모든 패키지를 깨뜨리기 때문에 개발자가 다시 패키지해야한다고 말하는 것은 어리석은 것처럼 보입니다.
AlexLordThorsen

12

i386 아키텍처를 추가해야합니다. 그렇지 않으면 32 비트 패키지를 설치할 수 없습니다.

sudo dpkg --add-architecture i386
sudo apt-get update

패키지 문제 해결 안내서를 확인하십시오 : https://help.ubuntu.com/community/PackageManagerTroubleshootingProcedure


위의 두 명령은 32 비트 패키지를 설치하지 않았습니다. 내가 무엇을 놓치고 있습니까?
e40

2
: OK, 나를 위해, 나는 두 개의 추가 명령을해야했다 apt-get install libc6:i386하고 apt-get install libgtk2.0-0:i386(그것이 GTK 응용 프로그램이기 때문에 후자를).
e40
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.