Linux

如何將具有過時庫集的軟體安裝到新系統中而不會發生衝突?

  • May 16, 2022

我對一些專有軟體有疑問:它是很久以前創建的,需要 RHEL5 和一組庫,如motif22pcre v1、fortran和類似的東西。它廣泛限制了我需要遵循的作業系統的選擇,因為 Centos/RHEL7 是我能夠在野外找到所需的庫集的最後一個。它們的數量很大(超過 200 個,有一些依賴項)。

現在,由於我有升級的想法,我有一個選擇:是安裝 RHEL/Centos 7,還是想辦法將專有軟體及其庫隔離在其容器中。軟體執行數學計算,與特殊硬體一起工作,並執行頻繁但低網路使用。

虛擬機的想法不是一個好的選擇,因為軟體是安裝它的工作站的唯一目的,所以我需要為軟體提供它的全部計算能力。

這裡最好的選擇是什麼?基本上我需要將舊的專有軟體和舊的庫(即使是 i686 架構)安裝到 x64 Linux 盒子中,但它應該與系統庫分開。我不需要其他任何東西來限製網路、CPU、GPU、RAM 或其他限制。只是安裝問題。

我在考慮flatpak設置的風格,但它需要徹底的理解和廣泛的測試——由於時間不夠,我現在買不起。那麼,請您建議我什麼可以適用於該目的?

謝謝你。

虛擬機的想法不是一個好的選擇,因為軟體是安裝它的工作站的唯一目的,所以我需要為軟體提供它的全部計算能力。

這是一個謬論:現代虛擬化非常有效。(您會注意到,AWS/Google 雲服務/阿里巴巴雲/Azure/Digital Ocean/Oracle 雲/……每年產生的 N·1000 億美元收入是提高效率的強大財務激勵。)

特別是如果它只是 i686,它並沒有利用 CPU 必須使計算更快的現代指令集。該軟體不擅長使用您的 CPU 能力,並且不在虛擬機中執行它不會使它變得更好!

此外,如果它在執行 RHEL5 的系統上執行,損失幾個百分點的性能(即使發生這種情況!)也沒什麼大不了的——現代電腦必須比最初執行軟體的機器快得多。

所以,是的,VM 確實是一種非常好的方法。

您還可以嘗試使用容器(閱讀:podmandocker)在現代核心上執行舊使用者區(Linux 發行版系統)。我會先試試;它的工作量非常低(假設 RHEL8/Centos/Fedora/Alma/Rocky Linux 或衍生產品):

sudo dnf install podman
podman run -it --rm centos:centos5

將為您提供一個系統,您可以在其中安裝您想要的任何 centos5/RHEL5 依賴項。它作為您的使用者在您的本機核心上執行,因此直接在您的主機作業系統上“正常”執行軟體和在容器中執行它之間真的沒有區別——容器只是看到不同的文件系統、使用者和 IPC 設置(如果你想要那個)。

但老實說,RHEL5 太老了,當您需要處理實際硬體時,VM 可能是您獲得的唯一機會)。

無論您做什麼,您都應該考慮滾動一個可以部署在任何機器上的標準化 VM 映像。否則,你有一天會醒來並且沒有仍然可以工作的參考系統,即使你想做一些非 VM 的事情!

從角度來看,您的軟體正在遭受所謂的比特腐爛. Motif22 清楚地表明,除了在幾年內啟動虛擬化 X 伺服器之外,您別無他法——例如,對於顯示硬體底層的假設,如今對於許多現代系統來說已經不再有效。如果這東西主要做數學計算,找人記錄 UI(是的,那可能只是一堆截圖——我不知道這東西有多複雜!),然後估計它需要多少努力將 UI 移植到現代的東西上。您還需要探勘實際數學常式的來源。你說它是 FORTRAN - 太棒了!很有可能相同的程式碼在現代編譯器上編譯得很好,而且執行得更快。將 GUI + Core 移植到現代系統仍然需要一些努力(去過那裡,做過),但它’ s 將是值得的 - 相對較少的努力就可以大大加快速度,並且可能會有更好的使用者體驗是您的回報。(以及直接在現代環境中執行的可能性,即使容器和微型虛擬機現在已經不是什麼大問題了。)

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