debパッケージを作成するときにファイルを強制的に上書きする方法は?

debパッケージを作成するときにファイルを強制的に上書きする方法は?

programX.Yのdebパッケージを作成しようとしていますが、次の内容でdebパッケージを作成すると、ターゲットシステムに同じプログラムですが、異なるバージョン(programX.Z)が存在する可能性があります。

dpkg-buildpackage -us -uc --source-option=--include-binaries --source-option=-isession

異なるバージョンのプログラム(programX.Z)があるシステムにパッケージをインストールしようとすると、次のメッセージが表示されます。

dpkg: error processing programX.Y.deb (--install):
    trying to overwrite `/usr/lib/XXX', which is also in package programX.Z

--force-overwriteを渡すことで問題を解決できることがわかりますが、その解決策は望ましくありません。

問題は、システムにインストールされ、プログラムのバージョンを自動的に強制的に無視できるdebパッケージを作成する方法です。代表的なのがPythonだ。 Python3にはさまざまなバージョン(3.1、3.2、3.3、3.4、3.5...)があります。 python3.4がすでにインストールされているシステムにカスタムPythonパッケージバージョン3.6をインストールしたいと思います。

可能ですか?

ベストアンサー1

同等のパッケージを作成することはできませんが、--force-overwrite他の解決策があります。

  • パッケージは、競合するファイルを別の場所に移動することができ、それをトランスポートと呼び、以下を使用して処理されます。dpkg-divert
  • 2つのパッケージに共通のファイル(衝突させる)は、通常3番目のパッケージで提供されます(同じと仮定)。これは/usr/lib/XXXあなたの問題に適した解決策かもしれません。
  • 複数のバージョンのパッケージを同時にインストールでき、必要に応じて代替パッケージまたは「デフォルト」パッケージを使用してデフォルト値を選択できます。これはPythonインタプリタパッケージであるGCCコンパイラが取るアプローチです。現在、Debian が不安定な状態では Python 3.5 と 3.6 を使用でき、並べてインストールできます。デフォルトのPython 3(3.5)は、python3パッケージのシンボリックリンクを使用して決定されます。セット。

おすすめ記事