同じファイルを書き込む2つのパッケージをインストールする方法


14

/ usr / bin / ffprobeを作成する2つのパッケージがあります。それらの1つはDeb Multimediaリポジトリのffmpegで、もう1つはソースからビルドされたffmbc 0.7-rc5です。ハンドロールはビジネスに不可欠であり、以前は必要な場所からソースからインストールするだけでした。私はそれがffmpegファイルを破壊するだろうと仮定することができるだけで、悪影響はありませんでした。

理論的には、ffmbcパッケージがffmpegパッケージのファイルを上書きしても問題ありません。欠点は、ffmpegの更新がffmbcバイナリを上書きすることです。これを調整する簡単な方法はありますか?

回答:


12

Debianベースのシステムでは、DPKG(aptの下)にコマンドdpkg-divertを使用して迂回セットアップを設定できます。

dpkg-divertは、宛先変更リストのセットアップと更新に使用されるユーティリティです。

ファイルの宛先変更は、dpkg(1)にファイルをその場所にインストールするのではなく、宛先を変更した場所に強制する方法です。...システム管理者はこれを使用して、パッケージの構成ファイルを上書きしたり、それらのファイルを含むパッケージの新しいバージョンをインストールする際に、いくつかのファイル(「conffiles」としてマークされていない)をdpkgで保存する必要がある場合にも使用できます。

したがって、あなたの場合、このようなコマンドを使用して迂回を設定することができます。(私はテストしていません。manページをチェックし、これが正しいように見えることを確認してください。)

dpkg-divert --local --divert /usr/bin/ffprobe.ffmpeg --rename /usr/bin/ffprobe

8

私が見つけた別の解決策は、ffmbcパッケージの作成方法を変更することでした。一般に、インストールされたファイルの最終パスを変更する目的で、代替プレフィックスを渡すことができます。

./configure --prefix=/usr/local

Debianパッケージの場合、これは次のように$ {package} / debian / rulesファイルに含まれます。

override_dh_auto_configure:
    ./configure --enable-gpl --prefix=/usr/local

ffmbcファイルをに配置することにより/usr/local、ffmpegファイルを保持し、/usr各パッケージを個別に更新できるようにします。


3
パッケージには何もインストールしないでください/usr/local。これはポリシー違反です。/usr/localファイルをパッケージ管理下に置き、手動でインストールされたファイルを区別することの全体的なポイント。以下のFHS関連の説明を参照してください。unix.stackexchange.com
30

-1

同じファイルを提供するパッケージは互いに競合するはずです-それはバグではありません(そのようなケースの報告を検討してください)。ソースからソフトウェアをビルドし、make install(または同様の)を使用してインストールする場合は/usr/local、パッケージ管理との競合を避けるために行ってください。

ので、予めご了承くださいdeb-multimedia.orgは公式のパッケージとの競合をさせるための非公式リポジトリ悪名高い廃止されました。

必要なソフトウェアがDebian用にパッケージ化されていない場合は、パッケージングリクエストRFPを送信できますが、最初に既存のリクエストを確認してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.