在過時的生產機器上安裝最新軟體的有效方法是什麼?

在過時的生產機器上安裝最新軟體的有效方法是什麼?

我的公司使用一個小型過時的叢集(CentOS 5.4)來進行數字運算(更具體地說是有限元素計算)。他們使用的是商業軟體包,並且不了解 Linux。只要機器在運行,他們就不想更改機器上的任何內容,我認為這是節省時間的策略。我願意不是擁有行政管理權。

我可以讓他們安裝較小的軟體包,但不能將 python 版本從 2.4 更改為 2.6+,因此我決定編譯當前版本 ( ./configure --prefix=/home/mysuser/root2),並遇到了一些依賴項問題(例如 readline、zlib、curses 的版本錯誤) 、bz2 ...或未找到包包)。我還需要更新 gcc,它抱怨缺少GMP,MPFRMPC

這樣做的原因是我想編譯其他測試軟體以在這些機器上運行。我該如何有效地安裝所需的軟體包以編譯我需要使用的軟體?我在其他地方使用架構Linux並且會發現能夠沿著這條線做一些事情非常方便

pacman --root /home/myuser/root2 -S <package>

但我不知道這是否可能或聰明。

其他相關SE問題:gentoo 前綴軟體套件來源似乎不那麼容易(不過我可能是錯的)。

答案1

您的管理層明智地不要嘗試升級正在基於專有軟體包執行重要功能的工作集群。

向後移植包既耗時又危險,也就是說,並非總是可行。如果您可以在原始 CentOS 5.4 儲存庫或某些 CentOS 5.4 向後移植儲存庫中找到要安裝的軟體包,則可以避免時間損失。雖然一台主機上可以同時擁有多個版本的 GCC(嵌入式系統/交叉編譯人員一直在這樣做),但在單一執行時間環境中擁有多個 glibc 並不是一件小事。

因此,最好建議您在一個單獨的、較新的環境中工作,其中包含您需要的套件,並找到某種方法在新環境中測試舊環境的輸出。無論如何,不要冒險破壞舊環境中的任何內容,否則您可能需要所有 stackexchange.com 聲譽點來找到下一份工作;-)

答案2

當您沒有root 權限時,從發行版安裝軟體包通常很困難,因為它們採用固定的目錄佈局,並且依賴系統往往需要一些帶有setuid 或setgid 程式的軟體包,而您無法以非root 身份安裝這些軟體包。

從原始碼編譯通常是最簡單的方法。 (如果您追求速度,您可以為您的特定處理器型號選擇最佳編譯選項。)

要組織您編譯的套件(或透過提取 tarball 安裝),我建議使用存放或更強大但更複雜收起。它們的基本操作模式是將每個套件安裝在單獨的目錄中,然後建立符號連結將它們全部放在一起。這是使用 stow 的典型編譯和安裝會話:

tar xzf foobar-42.tar.gz
cd foobar-42
./configure --prefix=~/software/stow/foobar-42
make
make install
cd ~/software/stow
stow foobar-42

最後一個指令從 下的檔案和目錄建立符號~/software/stow連結~/software。例如,如果~/software/stow/foobar-42包含lib/foobar目錄和文件bin/foobarman/man1/foobar.1,那麼您最終將得到符號鏈接

~/software/bin/foobar -> ../stow/foobar-42/bin/foobar
~/software/lib/foobar -> ../stow/foobar-42/lib/foobar
~/software/man/man1/foobar.1 -> ../../stow/foobar-42/man/man1/foobar.1

若要卸載程序,請stow -D foobar-42在目錄中執行~/software/stow,然後刪除~/software/stow/foobar-42.要使程式暫時不可用(例如嘗試另一個版本),只需執行該stow -D部分即可。

也可以看看非根套件管理器;在 Ubuntu 10.04 中將 vim/gvim 升級到 7.3 的最佳方法?

相關內容