How to Choose Between x86_64 and i386 RPM Packages on CentOS/Virtuozzo


3 views

First, let's verify your system's architecture. Run this command in your terminal:

uname -m

Possible outputs and their meanings:

  • x86_64: 64-bit system
  • i386 or i686: 32-bit system

Your WHM shows CENTOS 6.5 i686 virtuozzo, which indicates:

  • Operating System: CentOS 6.5
  • Architecture: i686 (32-bit)
  • Virtualization: Virtuozzo

Key rules for package selection:

  • 32-bit systems (i386/i686) can only run 32-bit packages
  • 64-bit systems (x86_64) can run both 64-bit and 32-bit packages
  • Mixing architectures can lead to dependency conflicts

For your system with i686 architecture, you should install i386 packages. Here's how to check available package architectures:

yum provides */package-name

Example for installing the correct version of MySQL:

# For i686 systems
yum install mysql.i386

# For x86_64 systems
yum install mysql.x86_64

If you need 32-bit libraries on a 64-bit system, use:

yum install package-name.i686

To see all installed packages by architecture:

rpm -qa --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' | sort

Virtuozzo containers inherit the host's kernel architecture. Best practices:

  • Match the container's userland architecture with the host's kernel
  • Use vzctl exec CTID uname -m to check container architecture
  • Consider upgrading to 64-bit if possible for better compatibility

When your WHM shows CENTOS 6.5 i686 virtuozzo, this clearly indicates you're running a 32-bit operating system. The i686 designation specifically refers to the 32-bit x86 architecture (a subset of i386), while x86_64 indicates 64-bit architecture.

The fundamental distinction lies in memory addressing capabilities:

  • i386/i686: 32-bit architecture (max 4GB RAM addressable)
  • x86_64: 64-bit architecture (supports vastly more memory)

Run this terminal command to confirm:


uname -m

For your system, this will return either:

  • i686 - Install i386 packages
  • x86_64 - Install x86_64 packages

When installing packages via yum:


# For 32-bit systems:
yum install package_name.i386

# For 64-bit systems:
yum install package_name.x86_64

Some 64-bit systems support running 32-bit applications through multi-lib. To check compatibility:


yum provides */lib/ld-linux.so.2

If available, you can install 32-bit libraries alongside 64-bit ones.

If you accidentally install the wrong architecture, remove it with:


rpm -e --nodeps package_name.architecture

Your Virtuozzo container inherits the host's architecture. Even if the physical server is 64-bit, your container's architecture (i686) dictates package requirements.