Rhel

如何在 RHEL 8 上安裝多架構包

  • November 19, 2021

在 x86_64 Ubuntu 20.04 系統上,經過一些小的修改/etc/apt並執行dpkg --add-architecture s390x,我可以安裝foo-dev:s390x包和gcc-8-s390x-linux-gnu包,然後我可以針對包交叉編譯軟體foo-dev。同上arm64,ppc64le等架構。我建構的二進製文件可以轉移到其他架構上的 Ubuntu 20.04 平台上,並且可以按預期執行。

鑑於 RHEL 8 也可以在這些架構上執行,我希望我也可以這樣做。它肯定看起來是一個支持多架構的作業系統。例如,有 32 位和 64 位 x86 軟體包,例如openssl-devel

openssl-devel.x86_64 : Files for development of applications which will use OpenSSL
openssl-devel.i686 : Files for development of applications which will use OpenSSL

它們可以同時安裝。所以我希望它會像yum install openssl-devel.arm64或類似的那樣簡單。

但是經過很長一段時間的搜尋,我一直無法弄清楚我需要做什麼才能允許在 RHEL 8 上安裝開發包或交叉編譯器s390x, ppc6el4,arm64等。

這可能嗎?是否有一些文件解釋瞭如何進行必要的儲存庫配置以使這些其他架構成為開發目標?有人可以提供必要的yum//dnfrpm相關命令來啟用包安裝嗎?

RPM 有一個“兼容”架構的概念,它允許您i686在系統上安裝軟體包x86_64。但它不涵蓋外國架構,也不允許您交叉編譯超出gcc -m.

但是,可以使用qemu-user-static和為外國架構建構包mock:準備您的源 RPM,然後使用建構它mock,指定架構

mock -r fedora-35-aarch64 package.src.rpm

mock將檢測到它需要使用仿真,並使用 QEMU 來處理 chroot。這通常會比交叉編譯慢,但您不會遇到主機與目標二進製文件的問題。

引用自:https://unix.stackexchange.com/questions/678306