使用Puppet编译和安装软件的工作流

使用Puppet编译和安装软件的工作流,puppet,Puppet,我需要使用Puppet清单手动编译和安装FFMPEG作为我的依赖项之一。我想自己做这件事来定制FFMPEG的配置,以满足项目的需要 我不知道如何用类来构造整个过程。逻辑应该是这样的: 如果/usr/local/bin/ffmpeg不存在,请编译: 从apt get安装构建依赖项 为库源创建目录/tmp/ffmpeg 下载并编译Yasm汇编程序 下载 摘录 配置 制造 安装 下载并编译x264 克隆源代码 配置 制造 安装 下载并编译fdk aac: 我可以很容易地将所有这些分支到它们

我需要使用Puppet清单手动编译和安装FFMPEG作为我的依赖项之一。我想自己做这件事来定制FFMPEG的配置,以满足项目的需要

我不知道如何用类来构造整个过程。逻辑应该是这样的:

  • 如果
    /usr/local/bin/ffmpeg
    不存在,请编译:
  • 从apt get安装构建依赖项
  • 为库源创建目录
    /tmp/ffmpeg
  • 下载并编译Yasm汇编程序
  • 下载
  • 摘录
  • 配置
  • 制造
  • 安装
  • 下载并编译x264
  • 克隆源代码
  • 配置
  • 制造
  • 安装
  • 下载并编译fdk aac:
  • 我可以很容易地将所有这些分支到它们自己的模块中,并将它们声明为FFMPEG的依赖项,这不是问题所在

    我的主要问题是,只有在系统中还没有每个模块时,才理解如何为每个模块执行整个下载/提取/编译过程


    如何构造类,使其仅在软件尚未安装时起作用?

    无论您如何操作,都需要一种方法来检查自定义安装是否已安装

    常用的方法包括

    • 仅当文件不存在时才检查文件并运行命令:

    • 仅当另一个命令返回0时才运行命令:(或者,
      除非
      属性)


    您正在使用ffmpeg的包管理器;包管理器将处理所需的依赖项。我没有将包管理器用于FFMPEG。我需要为我需要的编解码器自己编译它,否则
    package{“ffmpeg”:sure=>present}
    将完成我需要的一切。不,那太容易了。