2017-12-10 14 views
1

私はそのsetup.pyで、setuptoolsをインストールするだけでうまく動作しているpythonアプリを持っています。私はその後、優秀なEffing package managementを使用して、DEBとPKGNGでパッケージ化しています。私もsetuptools-pkgで簡単なテストをしましたが、それもうまくいくようです。rc.dスクリプトを使ってPythonアプリケーションからFreeBSD pkgをビルドする方法は?

私はサービスを開始/停止/管理するためのinitスクリプトを含むパッケージを配布する必要があります。私はソースリポジトリに自分のinitスクリプトを持っており、what seems to be best practiceによれば、私はsetuptoolsで何もしていません。私はそれらをos固有のパッケージで扱います:debianベースのシステムの場合、私は--deb-init--deb-upstart--deb-systemd必要に応じてFPMオプション。

rc.dスクリプトを含むFreeBSDパッケージをFPMや他の方法でビルドするにはどうすればよいですか?

ports collectionでパッケージをビルドするときにrc.dスクリプトを追加していますが、これは内部アプリケーションであり、ポートまたはPyPiには公開されません。 FreeBSDシステムでリポジトリをチェックアウトし、パッケージを提供するコマンドを起動し、他のFreeBSDシステムに配布し、pkgを使用してインストールし、initスクリプトを/usr/local/etc/rc.d/<myappname>に正しく配置したいと考えています。そのためにFPMを使用する必要はありません。パッケージが整形されていれば何でも動作します。

+1

'rc.d'スクリプトは手書きで書かれていませんか?だからあなたは通常のファイルとしてインストールし、それは動作しますか? – arrowd

+0

@arrowdはい私たちはすでにrc.dスクリプトを持っています。 rc.dスクリプトの詳細については、[Practical rc.d scripting](https://www.freebsd.org/doc/en_US.ISO8859-1/articles/rc-scripting/)ガイドを参照してください。 。この問題は、それを動作させることではなく、配布部分については、アプリケーションと一緒にパッケージ化し、明示的に管理する必要はありません。 – Luke404

答えて

2

あなたのパッケージを他のポートとして公開するかどうかのように作成することを強くお勧めします。

これを行うことで継承できる利点の1つは、すべてのテストを含めることができ、そのままの状態で統合/配信セットアップを行うための基盤をすぐに使用できる展開です。

チェックアウトpoudriereあなたは確かに非常に独自の設定でカスタムポートのセットを維持し、任意の手間をかけずにあなたの環境全体に配布することもできます

pkg install -r your-poudriere yourpkg 

場合、これはおそらく多すぎるか、おそらくあなたのユースケースにうまく適応しません、 ansibleにいつでもフォールバックすることができ、rc.dというカスタムをansible roleのテンプレート内に作成することができます。

マイクロサービスと、おそらくpkgが最適なツールではない場合は、すべてのプラットフォーム(sysutils/immortal)で動作するスーパーバイザーが必要なだけかもしれませんあなたのコードとサービスの開始/停止のための単一のレシピがあります。

関連する問題