For Override packages: https://sourceware.org/glibc/wiki/FAQ
For Multi-Arch System packages: https://wiki.debian.org/Multiarch/HOWTO
The reason for overriding the current glibc is for testing. This will allow the compiler to run on a different directory from the system and not interfere or brake other users or files on that system. The system can only have one version of glibc installed.
Mutli-Arch System Packages:
Multi-arch allow libraries to be installed on a machine/system with the ability to code or communicate with multiple architectures like arch64, x86_64, etc.
The libraries are the same for the architectures but the machine will have to rely on dependencies to run correctly. This will force each architecture to provide an up-to-date list of dependencies for the multi-arch configuration to work.
Apparently the word ‘architecture’ means ‘ABI'(Application Binary Interface’ and not an ‘ISA’ (Instruction Set).
An example the source provides: ‘armel’ architecture and ‘armhf’ architecture are similar with the same instruction set but have different Application Binary Interface.
A basic example is an Internet Browser: Microsoft Internet Explorer, Mozilla Firefox, Google Chrome, etc. All of these browsers have the basic function of accessing webpages and websites but are coded differently.
Multi-arch packages are separated into three categories:
This label will allow the package to be installed on a different architecture.
This label will allow the package to be installed with multiple versions of the same package
This label will act as either Multi-Arch:foreign or Multi-Arch:same depending on dependency required. This is kinda of like a combination or ‘full’ package of that dependency compared to the other two types of Multi-Arch packaging.
For Debian: apt version 0.9 and earlier causes the installation of dependencies to fail unless Multi-Arch was turned off. The gcc library can have multiple packages installed on the machine and relies on the Multi-Arch packages to be installed to run all the different libraries of the glibc library.
For Debian: in some case the compiler will require cross-dependencies packages to run. This will require the use of another architectures set of instructions to be used in that architecture’s native code/program and then imported to be used by the compiler to run the program/ application on your specific architecture. For example: arm64 importing packages from arch64 architecture.
-This example will force the compiler to get the packages from the arch64 and then import it to the arm64 architecture maybe because the arm64 architecture does not have the processing capabilities of the arch64 architecture. It is also maybe because of the better performance or lower bug risk when using the different package than the machine’s own architecture.
Override vs Multi-Arch system
Multi-arch system seems more flexible in error handing compared to override. Override can brake the entire system if not configured correctly.