代码之家  ›  专栏  ›  技术社区  ›  Luke404

如何使用rc从python应用程序构建FreeBSD pkg。d脚本?

  •  1
  • Luke404  · 技术社区  · 8 年前

    我有一个python应用程序 setup.py 安装起来效果很好 setuptools . 然后我用优秀的 Effing package management . 我还做了一些快速测试 setuptools-pkg 这似乎也奏效了。

    现在我需要分发包,包括启动/停止/管理服务的init脚本。我在源repo中有我的init脚本,根据 what seems to be best practice ,我没有在setuptools中使用它们,而是在特定于操作系统的打包中处理它们:对于基于debian的系统,我使用 --deb-init , --deb-upstart --deb-systemd 根据需要提供FPM选项。

    如何构建包含正确 rc.d 脚本,使用FPM或通过任何其他方式?

    我看到的所有例子都是添加了 钢筋混凝土。d 通过 ports collection 但这是一个内部应用程序,不会发布到端口或PyPi上。我希望能够签出FreeBSD系统上的存储库,启动一个命令,给我一个包,将其分发到其他FreeBSD系统,并使用 pkg 并将我的init脚本正确部署到 /usr/local/etc/rc.d/<myappname> . 没有必要继续使用FPM,只要它给我一个格式良好的包,任何东西都可以工作。

    2 回复  |  直到 6 年前
        1
  •  2
  •   nbari    8 年前

    我强烈建议您将包创建为任何其他端口,无论是否要发布。

    通过这样做,您可以继承的一个优点是,您还可以包括所有测试并自动化部署,为继续集成/交付设置提供现成的基础。

    退房 poudriere . 您确实可以使用自己的设置维护一组自定义端口,并在您的环境中分发它们,而无需任何麻烦:

    pkg install -r your-poudriere yourpkg
    

    如果这可能太多或不太适合您的用例,您可以随时回退到 ansible ,您可以在其中创建自定义 rc.d ansible role .

    如果您只是想构建和部署一些东西,比如说一个微服务,那么 pkg 不是最好的工具,也许你只需要一个可以在你所有平台上工作的主管( sysutils/immortal )因此,您可以只分发代码,并有一个启动/停止服务的方法。

        2
  •  0
  •   Luke404    5 年前

    nbari's answer 这可能是正确的方法,我可能会创建自己的“端口”,并使用它在中央主机上构建包。

    在我提出最初的问题时,为了完整起见,我采取了一种不同的方法,我在这里报告。

    我仍在构建应用程序包(即。 myapp-1.0.0.txz )使用 fpm -s python -t freebsd ,它基本上使用Python的setuptools基础结构来获取必要的信息,我不包括任何rc。d文件。

    我还构建 第二个包裹 我会打电话给你 myapp-init-1.0.0.txz 使用源目录类型(即。 fpm -s dir -t freebsd )我只在那个包中包含init脚本。

    这两个包都被分发到主机并安装,从而解决了我的分发问题。

    推荐文章