複数のDebian / Ubuntuディストリビューション用のバイナリをビルドして公開する方法は?

複数のDebian / Ubuntuディストリビューション用のバイナリをビルドして公開する方法は?

独自のソフトウェアでは、複数のデプロイメント用に複数のバージョンのソフトウェアを構築してリリースしたいと思います。たとえば、1.0、1.1、スクイーズ、ガスプ、精度の2つのバージョンがあります。

ビルドは他のコンピュータで自動的に実行され、配布固有の.debファイルを生成します。ディストリビューションの方法は、ライブラリのディストリビューションバージョンにリンクすることです。たとえば、OpenSSL 0.9.8 は squeeze に使用され、1.0.1 は gasp に使用されます。ただし、これらのパッケージは同じバージョン番号とパッケージ名で構築されます。これが以下の問題の原因である可能性があります。

現在、私はrepreproとincludedebコマンドを使用してリポジトリにバイナリを追加しています。これは、2番目のリリース用に構築された同じパッケージバージョンを追加するまでうまく機能します。

Squeezeは素晴らしいリリースを提供します。

# reprepro -b ./repo --outdir ./wwwpub/repo includedeb squeeze /path/to/sqeezepackages/packagename-1.0.deb

しかし、wheezyに基づいて構築された同じバージョンのソフトウェアをリリースすることは失敗しました。

# reprepro -b ./repo --outdir ./wwwpub/repo includedeb wheezy /path/to/wheezypackages/packagename-1.0.deb 
/path/to/wheezypackages/packagename-1.0.deb: component guessed as 'main'
ERROR: '/path/to/wheezypackages/packagename-1.0.deb' cannot be included as 'pool/main/p/packagename/packagename_1.0_all.deb'.
Already existing files can only be included again, if they are the same, but:
md5 expected: e7df7cd2ca07f4f1ab415d457a6e1c13, got: 0fa924209085a5713f79e6a30649455f
sha1 expected: 947b41827bbac414baddf0648b9abecaad8de4fe, got: 1be168ff837f043bde17c0314341c84271047b31
sha256 expected: a883dafc480d466ee04e0d6da986bd78eb1fdd2178d04693723da3a8f95d42f4, got: a93dbf1e95ddc4cfa84e9cd3cfa6c9e0e14affd79812abde4bca688224430a65
size expected: 1234, got: 1235
There have been errors!

私のビルドには各リリースに固有のバージョン番号が必要であるとします。

  • これを達成する最も簡単な方法は何ですか?
  • 現在のバージョン番号にどのように追加できますか?1.1~wheezy、、、(増分)などを使用することをお勧めします1.1+wheezyか?将来的には、distアップグレード中にシステムがそれを認識したいと思います。 distro名を使用するだけでは、以前のようには機能せず、APTでは以前のバージョンとして認識されると思います。1.1-11.1+deb6jessiejw
  • バージョン番号を設定する方法を見つけたら、それをツールに追加しますか?debian/controlファイルが構築されたディストリビューションに関連するバージョン番号を取得するには、ファイルで経験的な方法を実行する必要があるようです。変更ログの場合は、dchそのバージョン番号と一致するように電話する必要があります。

ベストアンサー1

個人的には、リリースごとに1つのアーカイブのみを作成します。

これにより、問題が解決され、各アーカイブがより小さくなるという利点があります。 (クライアントはより速くダウンロードして解析します。)

おすすめ記事