この質問はPPA/packagesメンテナーを対象としています
私は2つのパッケージでPPAを持っています:
現在、mypackageの制御ファイルには次のものがあります。
Depends: mypackagelib
2つのパッケージをバージョン '2'に更新したい(mypackageバージョン2およびmypackagelibバージョン2)。
ユーザーが「mypackage」を更新したときに2つのパッケージが更新されることを確認するにはどうすればよいですか?
参考までに、「依存」フィールドを次のように変更します。
Depends: mypackagelib (>= 2)
動作せず、次のエラーを返します。
mypackage : Depends: mypackagelib (>= 2) but mypackagelib-2~ppa1~quantal is to be installed
バージョン番号に一貫性がありません。バージョン番号の順序関係は非常に複雑です。 Debianポリシーマニュアル で説明されています。特に:
最初に、すべて数字以外の文字で構成される各文字列の最初の部分が決定されます。これらの2つの部分(1つは空の場合もあります)は、字句的に比較されます。違いが見つかった場合は、それが返されます。字句比較は、ASCII値を比較して、すべての文字がすべての非文字よりも早くソートされるようにし、チルダが何かの前でも、パートの終わりでもソートされるようにします。 、次の部分は最も古いものから順に並べられています:~~、~~ a、〜、空の部分、a。
特に、3.196~ppa1~quantal
は3.196
よりも古いと見なされます。 ~
の典型的な使用例はベータ版です:1.42~beta3
は1.42
の前にあります。 dpkg --compare-versions
を実行すると、Debianパッケージのバージョン番号の理解度を確認できます。
$ dpkg --compare-versions '3.196~ppa1~quantal' '>=' '3.196'; echo $?
1
0は順序関係が満たされることを意味し、1は満たされないことを意味します。
PPAパッケージングヘルプ には、バージョン番号に関するいくつかの不完全なアドバイスがあります。パッケージはUbuntuにないので、~
サフィックスは必要ありません。 3.196ppa1
のようなバージョン番号を使用する必要があります。ソースの依存関係は、3.196のいずれかのリリースで(>= 3.196)
になるか、少なくとも特定のパッケージリリースが必要な場合は(>= 3.196ppa5)
のようになります。
~
をここに保持する場合は、ソースの依存関係(>= 3.196~ppa1~quantal)
にも配置する必要があります。 「少なくともメインパッケージと同じバージョン」と言うには、
Depends: mypackagelib (>= ${binary:Version})
別の可能性( thanks totumbleweed は、3.196~
(数字とチルダなど)への依存関係を宣言することです。これは、3.196~anything
。
(これはあなたには当てはまりませんが、将来の訪問者に当てはまる可能性があります。libmypackage
に共有ライブラリ(.so
)が含まれる場合、以下が適用されます。)
ちなみに、ライブラリの命名規則はlibmypackage1
とlibmypackage2
です。 mypackagelib-1
で始めた場合、そのままにしておきますが、次のバージョンではlibmypackage2
に切り替えます。
古いライブラリを使用しているプログラムと、新しいライブラリを使用しているプログラムが同時にインストールされている場合、2つのライブラリパッケージmypackagelib-1
とmypackagelib-2
が共存する可能性があります。管理者がライブラリパッケージのインストールを明示的に要求しない限り(たとえば、/usr/local
など、ライブラリを必要とするパッケージ化されていないプログラムがある場合のみ)、古いライブラリパッケージは自動的にインストール済みとしてマークされます。 、依存関係がない場合は自動的にアンインストールされます。
ライブラリをパッケージ化する方法の詳細については、 Debian Library Packaging guide をお読みください。 DebianのポリシーはUbuntu PPAに必須ではありませんが、従うことをお勧めします。Debianパッケージツールを使用するためのベストプラクティスを示しています。