为了账号安全,请及时绑定邮箱和手机立即绑定

自动安装 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 关注
  • 175 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信