web-dev-qa-db-ja.com

マルチアーキテクチャPPAを作成および管理する方法

すべてのUbuntuバージョンで再コンパイルする必要があるプログラムがあります。

現在、現在のディストリビューション用にUbuntuのPPAを使用してパッケージ化しています。

最終的に、以前のubuntuバージョンのパッケージを提供する必要があります。

これを達成する方法がわかりません。

Ubuntu PPAビルドサーバーはどのように機能しますか?(debian/changelogファイル内の)最新のchangelogエントリの配布フィールドを見て、パッケージをビルドするディストリビューションを決定しますか?

Debian仕様では、複数の分布を分布フィールドに追加できます。しかし、これは私を助けるために継ぎ目ではありません。

いくつかのubuntuドキュメント ディストリビューション名をバージョン番号にエンコードすることについて話します(debian changelogファイル内)。

しかし、これは実際にはどのように機能しますか?プログラムの新しいバージョンが利用可能になりましたが、それでは何ですかディストリビューションごとに新しいchangelogエントリを追加し、PPA buildserverは、ディストリビューションごとに新しいパッケージを作成した後、自動的にビルドしますか?または、PPA buildserverは最初の変更ログエントリだけを参照しますか?

12
maxschlepzig

行く方法はbuntuごとに1回バージョンをアップロードすることです。

Launchpadは、サポートされなくなったUbuntuバージョンのパッケージをビルドせず、Ubuntuの特定のバージョンのパッケージのみをビルドします。対象バージョンは(ご存じのとおり)changelogファイルで最新のエントリによって指定されています!

プログラムが依存するパッケージは、Ubuntuのすべてのバージョンで同じバージョンで使用できるとは限らないことに注意してください。

また、「マルチアーキテクチャ」(アーキテクチャ= xup、LPIA、AMD64などのCUPタイプ)についても説明します。これは、パッケージにArchitecture: anyがある限り、アップロードされるすべてのパッケージがすべての使用可能なアーキテクチャ用にビルドされるため、違いはありません定義(debian/control)ファイル。これにより、パッケージをアーキテクチャごとに異なるパッケージに依存させることもできます(パッケージを複数回定義する)

7
LassePoulsen

Launchpadには現在ベータ版の新機能があり、余分な作業をせずに一度に複数のubuntuバージョンのパッケージをビルドできます。パッケージを毎日自動的にビルドすることもできます。 https://help.launchpad.net/Packaging/SourceBuilds/GettingStarted alt text

10
Isaiah

命名規則に関して、標準は次のようなことをすることです。

  • Ubuntuの公式アーカイブに含まれるパッケージの場合は1.0-0ubuntu1
  • 1.0-0ubuntu1〜lucidppa1は、lucidのPPAに入れたそのパッケージのバージョン用です
  • Karmic用のそのパッケージのバージョンでは1.0-0ubuntu1〜karmicppa1

その理由は、バージョンフィールドの〜が、バージョン番号の「なし」を表すためです。したがって、誰かがKarmicでPPAを追加すると、〜karmicppa1パッケージが取得されます。その後、彼らがLucidにアップグレード(およびPPAを読み取り)すると、Lucid PPAパッケージに置き換えられます。その後、パッケージが公式アーカイブに入ると、PPAからの移行はスムーズに進みます。

もう1つの利点は、リリースをバージョンフィールドに入れると、ファイルが適用されるリリースが明確になることです(そして、リリースごとに1つアップロードすることを微妙に思い出させます)。たとえば、異なる依存関係がある場合のために、Ubuntuリリースごとに異なるブランチが必要になる場合もあります。

6
Scott Ritchie