コンパイルされたソースから複数のDebianパッケージを置き換える

コンパイルされたソースから複数のDebianパッケージを置き換える

ソースコードストアからライブラリバージョンをダウンロードしてインストールする必要があります。問題は、Kubuntuパッケージマネージャの他のパッケージにはこのライブラリをインストールする必要があることです。私は今ffmpegを使用していますが、以前もこれを行う必要がありました(例:OpenCV)。将来的には、これを行う最良の方法を探しています。

だから私がしたいのは、checkinstallを使ってdpkgと一緒にインストールできるDebianパッケージを作成することです。 debファイルを解凍して修正して動作させようとしました。

問題は、ffmpegがパッケージマネージャで複数のパッケージに分割されており、必要でない場合は、各パッケージを置き換えるために5/6パッケージを作成したくないことです。これらすべてのパッケージに必要なすべてが正しくコンパイルされていることを確認しました。

「require」と「replace」を使ってみましたが、うまくいかないようです。その後、VLCをインストールしようとすると、パッケージマネージャにすべてをインストールするように求められます。また、バージョン番号がパッケージマネージャのバージョン番号よりも最新であることを確認しました。

VLCの前提条件

これが私の deb 制御ファイルに書き込まれた内容です。私が知る限り、これはmuonパッケージマネージャですべて認識されます。

Package: ffmpeg
Priority: extra
Section: checkinstall
Installed-Size: 172216
Maintainer: root@skund
Architecture: amd64
Version: 8:1.2.1-git-2
Provides: ffmpeg,libav-tools,libpostproc52,libavdevice53,libavutil51,libavformat53,libavcodec53,libswscale2
Replaces: ffmpeg,libav-tools,libpostproc52,libavdevice53,libavutil51,libavformat53,libavcodec53,libswscale2
Description: Package created with checkinstall 1.6.2

ここではパッケージマネージャにインストールされます。

ffmpegパッケージマネージャ ffmpegパッケージマネージャ2

誰もが動作するというアイデアはありますか?

答え1

まず、Provides:指定されたバージョンの依存関係では機能しません。 ~からDebian Policy Manual、「仮想パッケージ - プロビジョニング」:

リレーションフィールドにバージョン番号が追加されている場合は実際のパッケージのみが考慮されます[...]。つまり、バージョン番号が指定されている場合は、そのパッケージ名のすべての提供を無視し、実際のパッケージのみを考慮する要求です。

ライブラリへの依存関係はほぼ常にバージョン管理されています。だからそれは動作しません。

代わりに、次のことができます。

  • Debianパッケージ(apt-get source PACKAGE)をダウンロードして最新のffmpegに更新します(実際に必要なパッチをDebianのバグトラッカーに送信することもできます)。もちろん、ライブラリの名前を更新する必要があり(ABIが変更された可能性があります)、おそらくffmpegに依存する多くのものを再構築する必要があります。 API が変更されると、一部はソースコードの変更が必要な場合があります。
  • または、簡単な方法:これらのいずれかを/usr/localビルドして別のパッケージ名を指定できます.deb(例local-ffmpeg:)。その後、上記のことを心配することなく、Debianが提供するffmpegを使用してインストールできます。stowを使用してインストールすることもできます/usr/local

関連情報