亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

自動安裝 GFortran 和 Python3

自動安裝 GFortran 和 Python3

RISEBY 2022-12-20 12:06:34
我想編寫一個將在新用戶的 linux 機器上執行的 bash 腳本。該腳本應確保機器已準備好編譯和運行多個 fortran 和 python 腳本。我的目的是檢查 GCC,然后檢查 GCC 中的 gfortran,然后使用自制軟件安裝 gfortran 公式(如果不存在)。與 python 類似,如果 python 不是最新的,我會使用 pip 安裝 python3。在我開始之前,我需要一些建議。檢查程序并通過幕后 bash 腳本安裝它們的最佳做法是什么?有哪些注意事項?我意識到這個問題含糊不清,但實際上任何建議都非常感謝。
查看完整描述

1 回答

?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

一種可能的不同方法來考慮。

如果您想要的包可以通過您正在使用的 Linux 發行版的標準包管理器進行安裝,您可以構建一個元包,該包在安裝時將強制安裝所有組件。(元數據包本身不直接包含任何軟件,但它列出了包管理器在安裝它時需要滿足的一些依賴項。)

如果您還在包含您的元包的 http 服務器上設置了一個存儲庫,并將客戶端上的包管理器配置為指向它,那么如果您稍后決定在所有客戶端計算機上更新標準軟件套件中包含的包列表,您需要做的就是將元數據包的新版本發布到存儲庫,并讓客戶端計算機重新運行其操作系統的軟件更新程序。對于元數據包中列出的各個軟件組件,軟件更新將以普通方式獲取對這些組件的任何更新,前提是元數據包中的依賴信息未指定確切的版本(您可以使元數據包依賴于>=某個版本號).

這是根據這種方法在跨大量機器(包括計算集群的節點)建立和維護通用軟件平臺方面運行良好的經驗——盡管在標準包存儲庫中沒有所需軟件組件的情況下,然后有必要在本地為它構建一個包并將其發布到您的存儲庫;然后可以將其作為要求添加到您的元包中。

以上是籠統的說法,但以本經驗所基于的具體示例為例,如果客戶端機器運行 CentOS,那么您將創建一個元 RPM,它依賴于標準存儲庫(例如 base 和 EPEL)中的包以及任何您需要在本地構建的其他 RPM,將其發布到 http 服務器上的存儲庫并用于createrepo構建必要的存儲庫元數據,并/etc/yum.repo.d在客戶端上創建一個配置文件以指向您的存儲庫并運行yum install <your_meta_package>. 客戶端上的任何后續yum update操作都會獲取您推送到存儲庫的任何更改。http 服務器本身只是提供靜態內容,因此不需要特殊配置。

對于 Ubuntu 等,你可以做類似的事情,但使用 deb 包和 APT。

值得一提的是,以上內容針對的是一個相當同構的環境,其中所有客戶端機器都使用相同的操作系統。如果您想迎合更加異構的環境,那么另一種方法是使用 conda。您可以類似地維護一個包含元包的 conda 通道。


查看完整回答
反對 回復 2022-12-20
  • 1 回答
  • 0 關注
  • 201 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號