본문 바로가기

리눅스

우분투 멀티아크(Multiarch) 설정 및 패키지 설치와 원복 방법

728x90
반응형

우분투 Multiarch(Multiarch) 설정 및 패키지 설치와 원복 방법

1. 개요

멀티아크(Multiarch)는 우분투를 비롯한 Debian 계열 Linux에서 서로 다른 CPU 아키텍처의 패키지를 하나의 운영체제에 함께 설치하고 관리할 수 있도록 지원하는 패키지 관리 기능입니다.

 

일반적으로 64비트 우분투 시스템은 amd64 아키텍처를 사용합니다. 하지만 일부 레거시 프로그램이나 특정 소프트웨어는 여전히 32비트 라이브러리(i386)를 필요로 합니다.

 

이러한 경우 멀티아크를 활성화하면 기존 64비트 시스템 환경을 유지하면서 필요한 32비트 라이브러리를 추가로 설치하여 사용할 수 있습니다.

 

과거에는 64비트 시스템에서 32비트 프로그램을 실행하기 위해 별도의 실행 환경을 구성해야 하는 경우가 있었지만 멀티아크를 이용하면 운영체제의 패키지 관리 체계 안에서 필요한 라이브러리와 의존성을 함께 관리할 수 있습니다.

2. 주요 특징 및 장점

2.1. 서로 다른 아키텍처의 패키지 공존

기본 시스템은 64비트(amd64) 아키텍처를 유지하면서 특정 프로그램에 필요한 32비트(i386) 패키지를 함께 설치할 수 있습니다.

 

예를 들어 다음과 같이 동일한 라이브러리의 서로 다른 아키텍처 패키지를 구분하여 관리할 수 있습니다.

  • libc6:amd64 : 64비트 라이브러리
  • libc6:i386 : 32비트 라이브러리

패키지 이름 뒤에 :amd64, :i386과 같은 아키텍처 식별자를 지정하여 설치 및 관리할 수 있습니다.

 

2.2. 별도의 가상 환경 없이 32비트 라이브러리 사용

별도의 가상 머신이나 chroot 환경을 구성하지 않고도 호스트 운영체제에서 32비트 실행 파일과 라이브러리를 사용할 수 있습니다.

다만 프로그램의 실행 조건이나 운영체제 간 호환성에 따라 별도의 격리 환경이 필요한 경우도 있습니다.

 

2.3. 패키지 의존성 자동 관리

APT와 dpkg는 패키지의 아키텍처 정보를 구분하여 관리하며, 필요한 라이브러리와 의존성 패키지를 자동으로 처리합니다.

이를 통해 기존 64비트 패키지와 32비트 패키지를 함께 설치하고 관리할 수 있습니다.

3. 시스템 아키텍처 확인

멀티아크를 설정하기 전에 현재 시스템의 기본 아키텍처와 추가로 등록된 아키텍처를 확인합니다.

 

3.1. 기본 아키텍처 확인

dpkg --print-architecture
$ dpkg --print-architecture
amd64

amd64는 현재 시스템의 기본 아키텍처가 64비트임을 의미합니다.

 

3.2. 추가 아키텍처 확인

dpkg --print-foreign-architectures

현재 시스템에 추가로 등록된 외부 아키텍처 목록을 확인할 수 있습니다.

아직 별도의 아키텍처를 등록하지 않았다면 출력 결과가 없을 수 있습니다.

728x90

4. 멀티아크(Multiarch) 활성화 및 패키지 설치

우분투 24.04 LTS의 64비트(amd64) 시스템을 기준으로 32비트(i386) 아키텍처를 추가하고 기본적인 32비트 시스템 라이브러리인 libc6:i386 패키지를 설치합니다.

 

4.1. i386 아키텍처 추가

sudo dpkg --add-architecture i386

 

4.2. 패키지 저장소 정보 갱신

sudo apt update

 

4.3. 32비트 라이브러리 설치

sudo apt install -y libc6:i386

 

4.4. 설치된 32비트 패키지 확인

dpkg -l | grep ':i386'
$ dpkg -l | grep ':i386'
ii  gcc-14-base:i386      14.2.0-4ubuntu2~24.04.1  i386  GCC, the GNU Compiler Collection (base package)
ii  libc6:i386            2.39-0ubuntu8.9          i386  GNU C Library: Shared libraries
ii  libgcc-s1:i386        14.2.0-4ubuntu2~24.04.1  i386  GCC support library
ii  libidn2-0:i386        2.3.7-2build1.1          i386  Internationalized domain names (IDNA2008/TR46) library
ii  libunistring5:i386    1.1-2build1.1            i386  Unicode string library

5. 멀티아크(Multiarch) 설정 원복

32비트 라이브러리를 더 이상 사용하지 않는 경우에는 설치된 i386 패키지를 제거한 후 아키텍처 등록을 해제할 수 있습니다.

이때 패키지 의존성을 무시하고 강제로 삭제하기보다는 APT를 이용해 패키지와 관련 의존성을 정상적으로 제거하는 것이 안전합니다.

 

5.1. 설치된 i386 패키지 확인

dpkg -l | grep ':i386'

 

5.2. i386 패키지 전체 제거

sudo apt purge '.*:i386'
주의: 위 명령은 특정 라이브러리만 제거하는 것이 아니라 설치된 모든 i386 패키지를 대상으로 합니다.
Wine, Steam 등 다른 32비트 프로그램이 설치되어 있다면 함께 제거될 수 있으므로 실행 전에 대상 패키지를 반드시 확인해야 합니다.

 

5.3. 불필요한 의존성 패키지 정리

sudo apt autoremove --purge
더보기

---

32비트 패키지 강제 삭제 (--force-depends)

  • 다른 패키지와 얽혀 있는 의존성 경고를 무시하고, 지정한 32비트 패키지들을 강제로 삭제합니다.
sudo dpkg --purge --force-depends libc6:i386 libgcc-s1:i386 gcc-14-base:i386 \
  libidn2-0:i386 libunistring5:i386

보호된 패키지 강제 제거 (--force-remove-protected)

  • 시스템 안정성을 위해 dpkg가 일반적인 강제 삭제로도 지우지 못하도록 잠가 둔 핵심 보호 패키지(libgcc-s1:i386)를 보호 해제 옵션으로 억지로 제거합니다.
sudo dpkg --purge --force-remove-protected libgcc-s1:i386

---

5.4. i386 아키텍처 등록 해제

sudo dpkg --remove-architecture i386

 

5.5. 패키지 저장소 정보 갱신

sudo apt update

 

5.6. 원복 상태 확인

dpkg --print-architecture
dpkg --print-foreign-architectures
dpkg -l | grep ':i386'

6. 마무리

우분투의 멀티아크 기능을 사용하면 기존 64비트 운영체제 환경을 유지하면서 필요한 32비트 라이브러리를 추가로 설치하고 관리할 수 있습니다.

 

특히 레거시 애플리케이션이나 특정 32비트 바이너리 실행에 필요한 라이브러리를 제공해야 하는 환경에서 유용하게 활용할 수 있습니다.

 

다만 32비트 패키지를 제거할 때는 다른 프로그램이 해당 라이브러리에 의존하고 있는지 확인해야 하며 패키지 의존성을 무시한 강제 삭제는 가급적 피하는 것이 좋습니다.

 

운영 환경에서는 필요한 패키지만 설치하고 사용이 끝난 경우 APT를 통해 정상적으로 제거하는 방식으로 관리하는 것을 권장합니다.

 

참고URL

- wiki.debian.org : 멀티아크(Multiarch)

 

728x90
반응형