web-dev-qa-db-ja.com

Ubuntuの複数バージョン用のDebianパッケージの作成

Debianパッケージとしてパックしたいライブラリといくつかのバイナリがあります。 libboost-log *、libprotobuf *などに依存しています。

Devパッケージ "libboost-all-dev"などに依存関係を追加したくないし、devパッケージ以外の依存関係を追加したくない。 ubuntuパッケージアーカイブを見ると、これらのライブラリの一部は異なるバージョンのubuntuで名前が変更されていることがわかりました。

libboost-filesystem1.65およびlibboost-filesystem1.58

各ubuntuバージョン(14、16、18など)に個別のパッケージを作成する必要がありますか?

また、私のバイナリはubuntu 18でコンパイルされ、最新バージョンのboost(1.65)にリンクされます。古いバージョン(ブーストのバージョンが1.58であるubuntu 16)に同じパッケージをインストールすると、バイナリの実行中にエラーが発生します。

myprog:共有ライブラリのロード中にエラーが発生しました:libboost_system.so.1.65.1:共有オブジェクトファイルを開けません:そのようなファイルまたはディレクトリはありません

Ubuntuのバージョンだけでバイナリでコンパイルし、パッケージがすべてのubuntuバージョンで動作するように依存関係を指定する方法はありますか?

2
ramesh chhaba

Ubuntuの1つのバージョンでバイナリでコンパイルし、パッケージがすべてのUbuntuバージョンで動作するように依存関係を指定する方法はありますか?

一般的には、いや、できません。 Ubuntuに同梱されている依存関係により、リリース間でABIが破損し、特定の依存関係が2つの特定のUbuntuリリース間に同梱されるバージョンに共通のABIを持たない場合があります。

Debsを使用してバックポートを維持する場合は、リリースごとにバックポートを個別に管理する必要があります。

依存関係を埋め込むことは、この問題を回避する方法です。詳細については、 Snaps を参照してください。理論的にはdebsでそれを行うこともできますが、おそらくスナップ(snapcraft)の周りのツールを使用すると、作成がはるかに簡単になります。スナップは制限された状態で実行されるため、ユーザーにとっても安全に使用できます。

1
Robie Basak