私のバイナリを配布し、依存関係をインストールします。

私のバイナリを配布し、依存関係をインストールします。

ユーザーにデプロイするバイナリがあり、ほとんどの依存関係はビルド中に静的にリンクされていますが、leveldbそのような依存関係をインストールする必要はほとんどありません。これらの依存関係はapt get installコマンドを使用してインストールされます。

これを展開する最良の方法は何ですか?私のアイデアは、debやdockerを使用するのではなく、バイナリを含む単純なzipファイルアーカイブです。あまりにも過度なようですが、依存関係のインストールをどのように「自動化」できますか?このようなbashファイルには、バイナリを実行する前に行をrun.sh含めることができますが、apt get installインストールする前に依存関係を使用できないことを確認するにはどうすればよいですか?

答え1

「最も良い」アプローチは、ターゲットオペレーティングシステムに適したパッケージングシステムを使用することです。パッケージのポイントは、説明する内容を正確に行うことです。 debやrpmなど、ユーザーがインストールしたいものをすべて作成してください。

他に主張する場合、別の一般的なアプローチは、バイナリとconfigure。これは通常、ソースコードをコンパイルするMakefileに付属していますが、あなたの場合、設定スクリプトは依存関係が存在することを確認し、必要に応じてインストールすることができます。あなたが言及したので、apt getDebianとDebianの派生システムのみをターゲットにしているとします。この場合、確認が必要なので、dpkg次のようにできます。

dpkg -l | awk '$1=="ii" && $2=="leveldb"' >/dev/null || apt install leveldb

しかし、これはすべて間違っているようです。 Debianベースのシステムでは、ユーザーはdebファイルを期待し、これがプログラムが配布される方法です。

関連情報